Merge staging-next into staging
This commit is contained in:
commit
782ff21ae3
@ -46,7 +46,7 @@ rec {
|
||||
|
||||
armv7a-android-prebuilt = {
|
||||
config = "armv7a-unknown-linux-androideabi";
|
||||
sdkVer = "24";
|
||||
sdkVer = "29";
|
||||
ndkVer = "18b";
|
||||
platform = platforms.armv7a-android;
|
||||
useAndroidPrebuilt = true;
|
||||
@ -54,7 +54,7 @@ rec {
|
||||
|
||||
aarch64-android-prebuilt = {
|
||||
config = "aarch64-unknown-linux-android";
|
||||
sdkVer = "24";
|
||||
sdkVer = "29";
|
||||
ndkVer = "18b";
|
||||
platform = platforms.aarch64-multiplatform;
|
||||
useAndroidPrebuilt = true;
|
||||
|
@ -3394,10 +3394,14 @@
|
||||
name = "Hlodver Sigurdsson";
|
||||
};
|
||||
hugoreeves = {
|
||||
email = "hugolreeves@gmail.com";
|
||||
email = "hugo@hugoreeves.com";
|
||||
github = "hugoreeves";
|
||||
githubId = 20039091;
|
||||
name = "Hugo Reeves";
|
||||
keys = [{
|
||||
longkeyid = "rsa4096/0x49FA39F8A7F735F9";
|
||||
fingerprint = "78C2 E81C 828A 420B 269A EBC1 49FA 39F8 A7F7 35F9";
|
||||
}];
|
||||
};
|
||||
hodapp = {
|
||||
email = "hodapp87@gmail.com";
|
||||
@ -7351,6 +7355,12 @@
|
||||
githubId = 1153271;
|
||||
name = "Sander van der Burg";
|
||||
};
|
||||
sarcasticadmin = {
|
||||
email = "rob@sarcasticadmin.com";
|
||||
github = "sarcasticadmin";
|
||||
githubId = 30531572;
|
||||
name = "Robert James Hernandez";
|
||||
};
|
||||
sargon = {
|
||||
email = "danielehlers@mindeye.net";
|
||||
github = "sargon";
|
||||
@ -9484,6 +9494,12 @@
|
||||
github = "fzakaria";
|
||||
githubId = 605070;
|
||||
};
|
||||
nagisa = {
|
||||
name = "Simonas Kazlauskas";
|
||||
email = "nixpkgs@kazlauskas.me";
|
||||
github = "nagisa";
|
||||
githubId = 679122;
|
||||
};
|
||||
yevhenshymotiuk = {
|
||||
name = "Yevhen Shymotiuk";
|
||||
email = "yevhenshymotiuk@gmail.com";
|
||||
|
@ -204,6 +204,16 @@ GRANT ALL PRIVILEGES ON *.* TO 'mysql'@'localhost' WITH GRANT OPTION;
|
||||
Note: Password support is only avaiable in GRUB version 2.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Following its deprecation in 20.03, the Perl NixOS test driver has been removed.
|
||||
All remaining tests have been ported to the Python test framework.
|
||||
Code outside nixpkgs using <filename>make-test.nix</filename> or
|
||||
<filename>testing.nix</filename> needs to be ported to
|
||||
<filename>make-test-python.nix</filename> and
|
||||
<filename>testing-python.nix</filename> respectively.
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</section>
|
||||
|
||||
@ -223,6 +233,11 @@ GRANT ALL PRIVILEGES ON *.* TO 'mysql'@'localhost' WITH GRANT OPTION;
|
||||
<para>
|
||||
There is a new <xref linkend="opt-security.doas.enable"/> module that provides <command>doas</command>, a lighter alternative to <command>sudo</command> with many of the same features.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<link xlink:href="https://hercules-ci.com">Hercules CI</link> Agent is a specialized build agent for projects built with Nix. See the <link xlink:href="https://nixos.org/nixos/options.html#services.hercules-ci-agent">options</link> and <link xlink:href="https://docs.hercules-ci.com/hercules-ci/getting-started/#deploy-agent">setup</link>.
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
|
||||
|
@ -1,75 +0,0 @@
|
||||
package Logger;
|
||||
|
||||
use strict;
|
||||
use Thread::Queue;
|
||||
use XML::Writer;
|
||||
use Encode qw(decode encode);
|
||||
use Time::HiRes qw(clock_gettime CLOCK_MONOTONIC);
|
||||
|
||||
sub new {
|
||||
my ($class) = @_;
|
||||
|
||||
my $logFile = defined $ENV{LOGFILE} ? "$ENV{LOGFILE}" : "/dev/null";
|
||||
my $log = new XML::Writer(OUTPUT => new IO::File(">$logFile"));
|
||||
|
||||
my $self = {
|
||||
log => $log,
|
||||
logQueue => Thread::Queue->new()
|
||||
};
|
||||
|
||||
$self->{log}->startTag("logfile");
|
||||
|
||||
bless $self, $class;
|
||||
return $self;
|
||||
}
|
||||
|
||||
sub close {
|
||||
my ($self) = @_;
|
||||
$self->{log}->endTag("logfile");
|
||||
$self->{log}->end;
|
||||
}
|
||||
|
||||
sub drainLogQueue {
|
||||
my ($self) = @_;
|
||||
while (defined (my $item = $self->{logQueue}->dequeue_nb())) {
|
||||
$self->{log}->dataElement("line", sanitise($item->{msg}), 'machine' => $item->{machine}, 'type' => 'serial');
|
||||
}
|
||||
}
|
||||
|
||||
sub maybePrefix {
|
||||
my ($msg, $attrs) = @_;
|
||||
$msg = $attrs->{machine} . ": " . $msg if defined $attrs->{machine};
|
||||
return $msg;
|
||||
}
|
||||
|
||||
sub nest {
|
||||
my ($self, $msg, $coderef, $attrs) = @_;
|
||||
print STDERR maybePrefix("$msg\n", $attrs);
|
||||
$self->{log}->startTag("nest");
|
||||
$self->{log}->dataElement("head", $msg, %{$attrs});
|
||||
my $now = clock_gettime(CLOCK_MONOTONIC);
|
||||
$self->drainLogQueue();
|
||||
eval { &$coderef };
|
||||
my $res = $@;
|
||||
$self->drainLogQueue();
|
||||
$self->log(sprintf("(%.2f seconds)", clock_gettime(CLOCK_MONOTONIC) - $now));
|
||||
$self->{log}->endTag("nest");
|
||||
die $@ if $@;
|
||||
}
|
||||
|
||||
sub sanitise {
|
||||
my ($s) = @_;
|
||||
$s =~ s/[[:cntrl:]\xff]//g;
|
||||
$s = decode('UTF-8', $s, Encode::FB_DEFAULT);
|
||||
return encode('UTF-8', $s, Encode::FB_CROAK);
|
||||
}
|
||||
|
||||
sub log {
|
||||
my ($self, $msg, $attrs) = @_;
|
||||
chomp $msg;
|
||||
print STDERR maybePrefix("$msg\n", $attrs);
|
||||
$self->drainLogQueue();
|
||||
$self->{log}->dataElement("line", $msg, %{$attrs});
|
||||
}
|
||||
|
||||
1;
|
@ -1,734 +0,0 @@
|
||||
package Machine;
|
||||
|
||||
use strict;
|
||||
use threads;
|
||||
use Socket;
|
||||
use IO::Handle;
|
||||
use POSIX qw(dup2);
|
||||
use FileHandle;
|
||||
use Cwd;
|
||||
use File::Basename;
|
||||
use File::Path qw(make_path);
|
||||
use File::Slurp;
|
||||
use Time::HiRes qw(clock_gettime CLOCK_MONOTONIC);
|
||||
|
||||
|
||||
my $showGraphics = defined $ENV{'DISPLAY'};
|
||||
|
||||
my $sharedDir;
|
||||
|
||||
|
||||
sub new {
|
||||
my ($class, $args) = @_;
|
||||
|
||||
my $startCommand = $args->{startCommand};
|
||||
|
||||
my $name = $args->{name};
|
||||
if (!$name) {
|
||||
$startCommand =~ /run-(.*)-vm$/ if defined $startCommand;
|
||||
$name = $1 || "machine";
|
||||
}
|
||||
|
||||
if (!$startCommand) {
|
||||
# !!! merge with qemu-vm.nix.
|
||||
my $netBackend = "-netdev user,id=net0";
|
||||
my $netFrontend = "-device virtio-net-pci,netdev=net0";
|
||||
|
||||
$netBackend .= "," . $args->{netBackendArgs}
|
||||
if defined $args->{netBackendArgs};
|
||||
|
||||
$netFrontend .= "," . $args->{netFrontendArgs}
|
||||
if defined $args->{netFrontendArgs};
|
||||
|
||||
$startCommand =
|
||||
"qemu-kvm -m 384 $netBackend $netFrontend \$QEMU_OPTS ";
|
||||
|
||||
if (defined $args->{hda}) {
|
||||
if ($args->{hdaInterface} eq "scsi") {
|
||||
$startCommand .= "-drive id=hda,file="
|
||||
. Cwd::abs_path($args->{hda})
|
||||
. ",werror=report,if=none "
|
||||
. "-device scsi-hd,drive=hda ";
|
||||
} else {
|
||||
$startCommand .= "-drive file=" . Cwd::abs_path($args->{hda})
|
||||
. ",if=" . $args->{hdaInterface}
|
||||
. ",werror=report ";
|
||||
}
|
||||
}
|
||||
|
||||
$startCommand .= "-cdrom $args->{cdrom} "
|
||||
if defined $args->{cdrom};
|
||||
$startCommand .= "-device piix3-usb-uhci -drive id=usbdisk,file=$args->{usb},if=none,readonly -device usb-storage,drive=usbdisk "
|
||||
if defined $args->{usb};
|
||||
$startCommand .= "-bios $args->{bios} "
|
||||
if defined $args->{bios};
|
||||
$startCommand .= $args->{qemuFlags} || "";
|
||||
}
|
||||
|
||||
my $tmpDir = $ENV{'TMPDIR'} || "/tmp";
|
||||
unless (defined $sharedDir) {
|
||||
$sharedDir = $tmpDir . "/xchg-shared";
|
||||
make_path($sharedDir, { mode => 0700, owner => $< });
|
||||
}
|
||||
|
||||
my $allowReboot = 0;
|
||||
$allowReboot = $args->{allowReboot} if defined $args->{allowReboot};
|
||||
|
||||
my $self = {
|
||||
startCommand => $startCommand,
|
||||
name => $name,
|
||||
allowReboot => $allowReboot,
|
||||
booted => 0,
|
||||
pid => 0,
|
||||
connected => 0,
|
||||
socket => undef,
|
||||
stateDir => "$tmpDir/vm-state-$name",
|
||||
monitor => undef,
|
||||
log => $args->{log},
|
||||
redirectSerial => $args->{redirectSerial} // 1,
|
||||
};
|
||||
|
||||
mkdir $self->{stateDir}, 0700;
|
||||
|
||||
bless $self, $class;
|
||||
return $self;
|
||||
}
|
||||
|
||||
|
||||
sub log {
|
||||
my ($self, $msg) = @_;
|
||||
$self->{log}->log($msg, { machine => $self->{name} });
|
||||
}
|
||||
|
||||
|
||||
sub nest {
|
||||
my ($self, $msg, $coderef, $attrs) = @_;
|
||||
$self->{log}->nest($msg, $coderef, { %{$attrs || {}}, machine => $self->{name} });
|
||||
}
|
||||
|
||||
|
||||
sub name {
|
||||
my ($self) = @_;
|
||||
return $self->{name};
|
||||
}
|
||||
|
||||
|
||||
sub stateDir {
|
||||
my ($self) = @_;
|
||||
return $self->{stateDir};
|
||||
}
|
||||
|
||||
|
||||
sub start {
|
||||
my ($self) = @_;
|
||||
return if $self->{booted};
|
||||
|
||||
$self->log("starting vm");
|
||||
|
||||
# Create a socket pair for the serial line input/output of the VM.
|
||||
my ($serialP, $serialC);
|
||||
socketpair($serialP, $serialC, PF_UNIX, SOCK_STREAM, 0) or die;
|
||||
|
||||
# Create a Unix domain socket to which QEMU's monitor will connect.
|
||||
my $monitorPath = $self->{stateDir} . "/monitor";
|
||||
unlink $monitorPath;
|
||||
my $monitorS;
|
||||
socket($monitorS, PF_UNIX, SOCK_STREAM, 0) or die;
|
||||
bind($monitorS, sockaddr_un($monitorPath)) or die "cannot bind monitor socket: $!";
|
||||
listen($monitorS, 1) or die;
|
||||
|
||||
# Create a Unix domain socket to which the root shell in the guest will connect.
|
||||
my $shellPath = $self->{stateDir} . "/shell";
|
||||
unlink $shellPath;
|
||||
my $shellS;
|
||||
socket($shellS, PF_UNIX, SOCK_STREAM, 0) or die;
|
||||
bind($shellS, sockaddr_un($shellPath)) or die "cannot bind shell socket: $!";
|
||||
listen($shellS, 1) or die;
|
||||
|
||||
# Start the VM.
|
||||
my $pid = fork();
|
||||
die if $pid == -1;
|
||||
|
||||
if ($pid == 0) {
|
||||
close $serialP;
|
||||
close $monitorS;
|
||||
close $shellS;
|
||||
if ($self->{redirectSerial}) {
|
||||
open NUL, "</dev/null" or die;
|
||||
dup2(fileno(NUL), fileno(STDIN));
|
||||
dup2(fileno($serialC), fileno(STDOUT));
|
||||
dup2(fileno($serialC), fileno(STDERR));
|
||||
}
|
||||
$ENV{TMPDIR} = $self->{stateDir};
|
||||
$ENV{SHARED_DIR} = $sharedDir;
|
||||
$ENV{USE_TMPDIR} = 1;
|
||||
$ENV{QEMU_OPTS} =
|
||||
($self->{allowReboot} ? "" : "-no-reboot ") .
|
||||
"-monitor unix:./monitor -chardev socket,id=shell,path=./shell " .
|
||||
"-device virtio-serial -device virtconsole,chardev=shell " .
|
||||
"-device virtio-rng-pci " .
|
||||
($showGraphics ? "-serial stdio" : "-nographic") . " " . ($ENV{QEMU_OPTS} || "");
|
||||
chdir $self->{stateDir} or die;
|
||||
exec $self->{startCommand};
|
||||
die "running VM script: $!";
|
||||
}
|
||||
|
||||
# Process serial line output.
|
||||
close $serialC;
|
||||
|
||||
threads->create(\&processSerialOutput, $self, $serialP)->detach;
|
||||
|
||||
sub processSerialOutput {
|
||||
my ($self, $serialP) = @_;
|
||||
while (<$serialP>) {
|
||||
chomp;
|
||||
s/\r$//;
|
||||
print STDERR $self->{name}, "# $_\n";
|
||||
$self->{log}->{logQueue}->enqueue({msg => $_, machine => $self->{name}}); # !!!
|
||||
}
|
||||
}
|
||||
|
||||
eval {
|
||||
local $SIG{CHLD} = sub { die "QEMU died prematurely\n"; };
|
||||
|
||||
# Wait until QEMU connects to the monitor.
|
||||
accept($self->{monitor}, $monitorS) or die;
|
||||
|
||||
# Wait until QEMU connects to the root shell socket. QEMU
|
||||
# does so immediately; this doesn't mean that the root shell
|
||||
# has connected yet inside the guest.
|
||||
accept($self->{socket}, $shellS) or die;
|
||||
$self->{socket}->autoflush(1);
|
||||
};
|
||||
die "$@" if $@;
|
||||
|
||||
$self->waitForMonitorPrompt;
|
||||
|
||||
$self->log("QEMU running (pid $pid)");
|
||||
|
||||
$self->{pid} = $pid;
|
||||
$self->{booted} = 1;
|
||||
}
|
||||
|
||||
|
||||
# Send a command to the monitor and wait for it to finish. TODO: QEMU
|
||||
# also has a JSON-based monitor interface now, but it doesn't support
|
||||
# all commands yet. We should use it once it does.
|
||||
sub sendMonitorCommand {
|
||||
my ($self, $command) = @_;
|
||||
$self->log("sending monitor command: $command");
|
||||
syswrite $self->{monitor}, "$command\n";
|
||||
return $self->waitForMonitorPrompt;
|
||||
}
|
||||
|
||||
|
||||
# Wait until the monitor sends "(qemu) ".
|
||||
sub waitForMonitorPrompt {
|
||||
my ($self) = @_;
|
||||
my $res = "";
|
||||
my $s;
|
||||
while (sysread($self->{monitor}, $s, 1024)) {
|
||||
$res .= $s;
|
||||
last if $res =~ s/\(qemu\) $//;
|
||||
}
|
||||
return $res;
|
||||
}
|
||||
|
||||
|
||||
# Call the given code reference repeatedly, with 1 second intervals,
|
||||
# until it returns 1 or a timeout is reached.
|
||||
sub retry {
|
||||
my ($coderef) = @_;
|
||||
my $n;
|
||||
for ($n = 899; $n >=0; $n--) {
|
||||
return if &$coderef($n);
|
||||
sleep 1;
|
||||
}
|
||||
die "action timed out after $n seconds";
|
||||
}
|
||||
|
||||
|
||||
sub connect {
|
||||
my ($self) = @_;
|
||||
return if $self->{connected};
|
||||
|
||||
$self->nest("waiting for the VM to finish booting", sub {
|
||||
|
||||
$self->start;
|
||||
|
||||
my $now = clock_gettime(CLOCK_MONOTONIC);
|
||||
local $SIG{ALRM} = sub { die "timed out waiting for the VM to connect\n"; };
|
||||
alarm 600;
|
||||
readline $self->{socket} or die "the VM quit before connecting\n";
|
||||
alarm 0;
|
||||
|
||||
$self->log("connected to guest root shell");
|
||||
# We're interested in tracking how close we are to `alarm`.
|
||||
$self->log(sprintf("(connecting took %.2f seconds)", clock_gettime(CLOCK_MONOTONIC) - $now));
|
||||
$self->{connected} = 1;
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
sub waitForShutdown {
|
||||
my ($self) = @_;
|
||||
return unless $self->{booted};
|
||||
|
||||
$self->nest("waiting for the VM to power off", sub {
|
||||
waitpid $self->{pid}, 0;
|
||||
$self->{pid} = 0;
|
||||
$self->{booted} = 0;
|
||||
$self->{connected} = 0;
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
sub isUp {
|
||||
my ($self) = @_;
|
||||
return $self->{booted} && $self->{connected};
|
||||
}
|
||||
|
||||
|
||||
sub execute_ {
|
||||
my ($self, $command) = @_;
|
||||
|
||||
$self->connect;
|
||||
|
||||
print { $self->{socket} } ("( $command ); echo '|!=EOF' \$?\n");
|
||||
|
||||
my $out = "";
|
||||
|
||||
while (1) {
|
||||
my $line = readline($self->{socket});
|
||||
die "connection to VM lost unexpectedly" unless defined $line;
|
||||
#$self->log("got line: $line");
|
||||
if ($line =~ /^(.*)\|\!\=EOF\s+(\d+)$/) {
|
||||
$out .= $1;
|
||||
$self->log("exit status $2");
|
||||
return ($2, $out);
|
||||
}
|
||||
$out .= $line;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
sub execute {
|
||||
my ($self, $command) = @_;
|
||||
my @res;
|
||||
$self->nest("running command: $command", sub {
|
||||
@res = $self->execute_($command);
|
||||
});
|
||||
return @res;
|
||||
}
|
||||
|
||||
|
||||
sub succeed {
|
||||
my ($self, @commands) = @_;
|
||||
|
||||
my $res;
|
||||
foreach my $command (@commands) {
|
||||
$self->nest("must succeed: $command", sub {
|
||||
my ($status, $out) = $self->execute_($command);
|
||||
if ($status != 0) {
|
||||
$self->log("output: $out");
|
||||
die "command `$command' did not succeed (exit code $status)\n";
|
||||
}
|
||||
$res .= $out;
|
||||
});
|
||||
}
|
||||
|
||||
return $res;
|
||||
}
|
||||
|
||||
|
||||
sub mustSucceed {
|
||||
succeed @_;
|
||||
}
|
||||
|
||||
|
||||
sub waitUntilSucceeds {
|
||||
my ($self, $command) = @_;
|
||||
$self->nest("waiting for success: $command", sub {
|
||||
retry sub {
|
||||
my ($status, $out) = $self->execute($command);
|
||||
return 1 if $status == 0;
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
sub waitUntilFails {
|
||||
my ($self, $command) = @_;
|
||||
$self->nest("waiting for failure: $command", sub {
|
||||
retry sub {
|
||||
my ($status, $out) = $self->execute($command);
|
||||
return 1 if $status != 0;
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
sub fail {
|
||||
my ($self, $command) = @_;
|
||||
$self->nest("must fail: $command", sub {
|
||||
my ($status, $out) = $self->execute_($command);
|
||||
die "command `$command' unexpectedly succeeded"
|
||||
if $status == 0;
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
sub mustFail {
|
||||
fail @_;
|
||||
}
|
||||
|
||||
|
||||
sub getUnitInfo {
|
||||
my ($self, $unit, $user) = @_;
|
||||
my ($status, $lines) = $self->systemctl("--no-pager show \"$unit\"", $user);
|
||||
return undef if $status != 0;
|
||||
my $info = {};
|
||||
foreach my $line (split '\n', $lines) {
|
||||
$line =~ /^([^=]+)=(.*)$/ or next;
|
||||
$info->{$1} = $2;
|
||||
}
|
||||
return $info;
|
||||
}
|
||||
|
||||
sub systemctl {
|
||||
my ($self, $q, $user) = @_;
|
||||
if ($user) {
|
||||
$q =~ s/'/\\'/g;
|
||||
return $self->execute("su -l $user -c \$'XDG_RUNTIME_DIR=/run/user/`id -u` systemctl --user $q'");
|
||||
}
|
||||
|
||||
return $self->execute("systemctl $q");
|
||||
}
|
||||
|
||||
# Fail if the given systemd unit is not in the "active" state.
|
||||
sub requireActiveUnit {
|
||||
my ($self, $unit) = @_;
|
||||
$self->nest("checking if unit ‘$unit’ has reached state 'active'", sub {
|
||||
my $info = $self->getUnitInfo($unit);
|
||||
my $state = $info->{ActiveState};
|
||||
if ($state ne "active") {
|
||||
die "Expected unit ‘$unit’ to to be in state 'active' but it is in state ‘$state’\n";
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
# Wait for a systemd unit to reach the "active" state.
|
||||
sub waitForUnit {
|
||||
my ($self, $unit, $user) = @_;
|
||||
$self->nest("waiting for unit ‘$unit’", sub {
|
||||
retry sub {
|
||||
my $info = $self->getUnitInfo($unit, $user);
|
||||
my $state = $info->{ActiveState};
|
||||
die "unit ‘$unit’ reached state ‘$state’\n" if $state eq "failed";
|
||||
if ($state eq "inactive") {
|
||||
# If there are no pending jobs, then assume this unit
|
||||
# will never reach active state.
|
||||
my ($status, $jobs) = $self->systemctl("list-jobs --full 2>&1", $user);
|
||||
if ($jobs =~ /No jobs/) { # FIXME: fragile
|
||||
# Handle the case where the unit may have started
|
||||
# between the previous getUnitInfo() and
|
||||
# list-jobs.
|
||||
my $info2 = $self->getUnitInfo($unit);
|
||||
die "unit ‘$unit’ is inactive and there are no pending jobs\n"
|
||||
if $info2->{ActiveState} eq $state;
|
||||
}
|
||||
}
|
||||
return 1 if $state eq "active";
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
sub waitForJob {
|
||||
my ($self, $jobName) = @_;
|
||||
return $self->waitForUnit($jobName);
|
||||
}
|
||||
|
||||
|
||||
# Wait until the specified file exists.
|
||||
sub waitForFile {
|
||||
my ($self, $fileName) = @_;
|
||||
$self->nest("waiting for file ‘$fileName’", sub {
|
||||
retry sub {
|
||||
my ($status, $out) = $self->execute("test -e $fileName");
|
||||
return 1 if $status == 0;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
sub startJob {
|
||||
my ($self, $jobName, $user) = @_;
|
||||
$self->systemctl("start $jobName", $user);
|
||||
# FIXME: check result
|
||||
}
|
||||
|
||||
sub stopJob {
|
||||
my ($self, $jobName, $user) = @_;
|
||||
$self->systemctl("stop $jobName", $user);
|
||||
}
|
||||
|
||||
|
||||
# Wait until the machine is listening on the given TCP port.
|
||||
sub waitForOpenPort {
|
||||
my ($self, $port) = @_;
|
||||
$self->nest("waiting for TCP port $port", sub {
|
||||
retry sub {
|
||||
my ($status, $out) = $self->execute("nc -z localhost $port");
|
||||
return 1 if $status == 0;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
# Wait until the machine is not listening on the given TCP port.
|
||||
sub waitForClosedPort {
|
||||
my ($self, $port) = @_;
|
||||
retry sub {
|
||||
my ($status, $out) = $self->execute("nc -z localhost $port");
|
||||
return 1 if $status != 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
sub shutdown {
|
||||
my ($self) = @_;
|
||||
return unless $self->{booted};
|
||||
|
||||
print { $self->{socket} } ("poweroff\n");
|
||||
|
||||
$self->waitForShutdown;
|
||||
}
|
||||
|
||||
|
||||
sub crash {
|
||||
my ($self) = @_;
|
||||
return unless $self->{booted};
|
||||
|
||||
$self->log("forced crash");
|
||||
|
||||
$self->sendMonitorCommand("quit");
|
||||
|
||||
$self->waitForShutdown;
|
||||
}
|
||||
|
||||
|
||||
# Make the machine unreachable by shutting down eth1 (the multicast
|
||||
# interface used to talk to the other VMs). We keep eth0 up so that
|
||||
# the test driver can continue to talk to the machine.
|
||||
sub block {
|
||||
my ($self) = @_;
|
||||
$self->sendMonitorCommand("set_link virtio-net-pci.1 off");
|
||||
}
|
||||
|
||||
|
||||
# Make the machine reachable.
|
||||
sub unblock {
|
||||
my ($self) = @_;
|
||||
$self->sendMonitorCommand("set_link virtio-net-pci.1 on");
|
||||
}
|
||||
|
||||
|
||||
# Take a screenshot of the X server on :0.0.
|
||||
sub screenshot {
|
||||
my ($self, $filename) = @_;
|
||||
my $dir = $ENV{'out'} || Cwd::abs_path(".");
|
||||
$filename = "$dir/${filename}.png" if $filename =~ /^\w+$/;
|
||||
my $tmp = "${filename}.ppm";
|
||||
my $name = basename($filename);
|
||||
$self->nest("making screenshot ‘$name’", sub {
|
||||
$self->sendMonitorCommand("screendump $tmp");
|
||||
system("pnmtopng $tmp > ${filename}") == 0
|
||||
or die "cannot convert screenshot";
|
||||
unlink $tmp;
|
||||
}, { image => $name } );
|
||||
}
|
||||
|
||||
# Get the text of TTY<n>
|
||||
sub getTTYText {
|
||||
my ($self, $tty) = @_;
|
||||
|
||||
my ($status, $out) = $self->execute("fold -w\$(stty -F /dev/tty${tty} size | awk '{print \$2}') /dev/vcs${tty}");
|
||||
return $out;
|
||||
}
|
||||
|
||||
# Wait until TTY<n>'s text matches a particular regular expression
|
||||
sub waitUntilTTYMatches {
|
||||
my ($self, $tty, $regexp) = @_;
|
||||
|
||||
$self->nest("waiting for $regexp to appear on tty $tty", sub {
|
||||
retry sub {
|
||||
my ($retries_remaining) = @_;
|
||||
if ($retries_remaining == 0) {
|
||||
$self->log("Last chance to match /$regexp/ on TTY$tty, which currently contains:");
|
||||
$self->log($self->getTTYText($tty));
|
||||
}
|
||||
|
||||
return 1 if $self->getTTYText($tty) =~ /$regexp/;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
# Debugging: Dump the contents of the TTY<n>
|
||||
sub dumpTTYContents {
|
||||
my ($self, $tty) = @_;
|
||||
|
||||
$self->execute("fold -w 80 /dev/vcs${tty} | systemd-cat");
|
||||
}
|
||||
|
||||
# Take a screenshot and return the result as text using optical character
|
||||
# recognition.
|
||||
sub getScreenText {
|
||||
my ($self) = @_;
|
||||
|
||||
system("command -v tesseract &> /dev/null") == 0
|
||||
or die "getScreenText used but enableOCR is false";
|
||||
|
||||
my $text;
|
||||
$self->nest("performing optical character recognition", sub {
|
||||
my $tmpbase = Cwd::abs_path(".")."/ocr";
|
||||
my $tmpin = $tmpbase."in.ppm";
|
||||
|
||||
$self->sendMonitorCommand("screendump $tmpin");
|
||||
|
||||
my $magickArgs = "-filter Catrom -density 72 -resample 300 "
|
||||
. "-contrast -normalize -despeckle -type grayscale "
|
||||
. "-sharpen 1 -posterize 3 -negate -gamma 100 "
|
||||
. "-blur 1x65535";
|
||||
my $tessArgs = "-c debug_file=/dev/null --psm 11 --oem 2";
|
||||
|
||||
$text = `convert $magickArgs $tmpin tiff:- | tesseract - - $tessArgs`;
|
||||
my $status = $? >> 8;
|
||||
unlink $tmpin;
|
||||
|
||||
die "OCR failed with exit code $status" if $status != 0;
|
||||
});
|
||||
return $text;
|
||||
}
|
||||
|
||||
|
||||
# Wait until a specific regexp matches the textual contents of the screen.
|
||||
sub waitForText {
|
||||
my ($self, $regexp) = @_;
|
||||
$self->nest("waiting for $regexp to appear on the screen", sub {
|
||||
retry sub {
|
||||
my ($retries_remaining) = @_;
|
||||
if ($retries_remaining == 0) {
|
||||
$self->log("Last chance to match /$regexp/ on the screen, which currently contains:");
|
||||
$self->log($self->getScreenText);
|
||||
}
|
||||
|
||||
return 1 if $self->getScreenText =~ /$regexp/;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
# Wait until it is possible to connect to the X server. Note that
|
||||
# testing the existence of /tmp/.X11-unix/X0 is insufficient.
|
||||
sub waitForX {
|
||||
my ($self, $regexp) = @_;
|
||||
$self->nest("waiting for the X11 server", sub {
|
||||
retry sub {
|
||||
my ($status, $out) = $self->execute("journalctl -b SYSLOG_IDENTIFIER=systemd | grep 'Reached target Current graphical'");
|
||||
return 0 if $status != 0;
|
||||
($status, $out) = $self->execute("[ -e /tmp/.X11-unix/X0 ]");
|
||||
return 1 if $status == 0;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
sub getWindowNames {
|
||||
my ($self) = @_;
|
||||
my $res = $self->mustSucceed(
|
||||
q{xwininfo -root -tree | sed 's/.*0x[0-9a-f]* \"\([^\"]*\)\".*/\1/; t; d'});
|
||||
return split /\n/, $res;
|
||||
}
|
||||
|
||||
|
||||
sub waitForWindow {
|
||||
my ($self, $regexp) = @_;
|
||||
$self->nest("waiting for a window to appear", sub {
|
||||
retry sub {
|
||||
my @names = $self->getWindowNames;
|
||||
|
||||
my ($retries_remaining) = @_;
|
||||
if ($retries_remaining == 0) {
|
||||
$self->log("Last chance to match /$regexp/ on the the window list, which currently contains:");
|
||||
$self->log(join(", ", @names));
|
||||
}
|
||||
|
||||
foreach my $n (@names) {
|
||||
return 1 if $n =~ /$regexp/;
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
sub copyFileFromHost {
|
||||
my ($self, $from, $to) = @_;
|
||||
my $s = `cat $from` or die;
|
||||
$s =~ s/'/'\\''/g;
|
||||
$self->mustSucceed("echo '$s' > $to");
|
||||
}
|
||||
|
||||
|
||||
my %charToKey = (
|
||||
'A' => "shift-a", 'N' => "shift-n", '-' => "0x0C", '_' => "shift-0x0C", '!' => "shift-0x02",
|
||||
'B' => "shift-b", 'O' => "shift-o", '=' => "0x0D", '+' => "shift-0x0D", '@' => "shift-0x03",
|
||||
'C' => "shift-c", 'P' => "shift-p", '[' => "0x1A", '{' => "shift-0x1A", '#' => "shift-0x04",
|
||||
'D' => "shift-d", 'Q' => "shift-q", ']' => "0x1B", '}' => "shift-0x1B", '$' => "shift-0x05",
|
||||
'E' => "shift-e", 'R' => "shift-r", ';' => "0x27", ':' => "shift-0x27", '%' => "shift-0x06",
|
||||
'F' => "shift-f", 'S' => "shift-s", '\'' => "0x28", '"' => "shift-0x28", '^' => "shift-0x07",
|
||||
'G' => "shift-g", 'T' => "shift-t", '`' => "0x29", '~' => "shift-0x29", '&' => "shift-0x08",
|
||||
'H' => "shift-h", 'U' => "shift-u", '\\' => "0x2B", '|' => "shift-0x2B", '*' => "shift-0x09",
|
||||
'I' => "shift-i", 'V' => "shift-v", ',' => "0x33", '<' => "shift-0x33", '(' => "shift-0x0A",
|
||||
'J' => "shift-j", 'W' => "shift-w", '.' => "0x34", '>' => "shift-0x34", ')' => "shift-0x0B",
|
||||
'K' => "shift-k", 'X' => "shift-x", '/' => "0x35", '?' => "shift-0x35",
|
||||
'L' => "shift-l", 'Y' => "shift-y", ' ' => "spc",
|
||||
'M' => "shift-m", 'Z' => "shift-z", "\n" => "ret",
|
||||
);
|
||||
|
||||
|
||||
sub sendKeys {
|
||||
my ($self, @keys) = @_;
|
||||
foreach my $key (@keys) {
|
||||
$key = $charToKey{$key} if exists $charToKey{$key};
|
||||
$self->sendMonitorCommand("sendkey $key");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
sub sendChars {
|
||||
my ($self, $chars) = @_;
|
||||
$self->nest("sending keys ‘$chars’", sub {
|
||||
$self->sendKeys(split //, $chars);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
# Sleep N seconds (in virtual guest time, not real time).
|
||||
sub sleep {
|
||||
my ($self, $time) = @_;
|
||||
$self->succeed("sleep $time");
|
||||
}
|
||||
|
||||
|
||||
# Forward a TCP port on the host to a TCP port on the guest. Useful
|
||||
# during interactive testing.
|
||||
sub forwardPort {
|
||||
my ($self, $hostPort, $guestPort) = @_;
|
||||
$hostPort = 8080 unless defined $hostPort;
|
||||
$guestPort = 80 unless defined $guestPort;
|
||||
$self->sendMonitorCommand("hostfwd_add tcp::$hostPort-:$guestPort");
|
||||
}
|
||||
|
||||
|
||||
1;
|
@ -1,191 +0,0 @@
|
||||
#! /somewhere/perl -w
|
||||
|
||||
use strict;
|
||||
use Machine;
|
||||
use Term::ReadLine;
|
||||
use IO::File;
|
||||
use IO::Pty;
|
||||
use Logger;
|
||||
use Cwd;
|
||||
use POSIX qw(_exit dup2);
|
||||
use Time::HiRes qw(clock_gettime CLOCK_MONOTONIC);
|
||||
|
||||
$SIG{PIPE} = 'IGNORE'; # because Unix domain sockets may die unexpectedly
|
||||
|
||||
STDERR->autoflush(1);
|
||||
|
||||
my $log = new Logger;
|
||||
|
||||
|
||||
# Start vde_switch for each network required by the test.
|
||||
my %vlans;
|
||||
foreach my $vlan (split / /, $ENV{VLANS} || "") {
|
||||
next if defined $vlans{$vlan};
|
||||
# Start vde_switch as a child process. We don't run it in daemon
|
||||
# mode because we want the child process to be cleaned up when we
|
||||
# die. Since we have to make sure that the control socket is
|
||||
# ready, we send a dummy command to vde_switch (via stdin) and
|
||||
# wait for a reply. Note that vde_switch requires stdin to be a
|
||||
# TTY, so we create one.
|
||||
$log->log("starting VDE switch for network $vlan");
|
||||
my $socket = Cwd::abs_path "./vde$vlan.ctl";
|
||||
my $pty = new IO::Pty;
|
||||
my ($stdoutR, $stdoutW); pipe $stdoutR, $stdoutW;
|
||||
my $pid = fork(); die "cannot fork" unless defined $pid;
|
||||
if ($pid == 0) {
|
||||
dup2(fileno($pty->slave), 0);
|
||||
dup2(fileno($stdoutW), 1);
|
||||
exec "vde_switch -s $socket --dirmode 0700" or _exit(1);
|
||||
}
|
||||
close $stdoutW;
|
||||
print $pty "version\n";
|
||||
readline $stdoutR or die "cannot start vde_switch";
|
||||
$ENV{"QEMU_VDE_SOCKET_$vlan"} = $socket;
|
||||
$vlans{$vlan} = $pty;
|
||||
die unless -e "$socket/ctl";
|
||||
}
|
||||
|
||||
|
||||
my %vms;
|
||||
my $context = "";
|
||||
|
||||
sub createMachine {
|
||||
my ($args) = @_;
|
||||
my $vm = Machine->new({%{$args}, log => $log, redirectSerial => ($ENV{USE_SERIAL} // "0") ne "1"});
|
||||
$vms{$vm->name} = $vm;
|
||||
$context .= "my \$" . $vm->name . " = \$vms{'" . $vm->name . "'}; ";
|
||||
return $vm;
|
||||
}
|
||||
|
||||
foreach my $vmScript (@ARGV) {
|
||||
my $vm = createMachine({startCommand => $vmScript});
|
||||
}
|
||||
|
||||
|
||||
sub startAll {
|
||||
$log->nest("starting all VMs", sub {
|
||||
$_->start foreach values %vms;
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
# Wait until all VMs have terminated.
|
||||
sub joinAll {
|
||||
$log->nest("waiting for all VMs to finish", sub {
|
||||
$_->waitForShutdown foreach values %vms;
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
# In interactive tests, this allows the non-interactive test script to
|
||||
# be executed conveniently.
|
||||
sub testScript {
|
||||
eval "$context $ENV{testScript};\n";
|
||||
warn $@ if $@;
|
||||
}
|
||||
|
||||
|
||||
my $nrTests = 0;
|
||||
my $nrSucceeded = 0;
|
||||
|
||||
|
||||
sub subtest {
|
||||
my ($name, $coderef) = @_;
|
||||
$log->nest("subtest: $name", sub {
|
||||
$nrTests++;
|
||||
eval { &$coderef };
|
||||
if ($@) {
|
||||
$log->log("error: $@", { error => 1 });
|
||||
} else {
|
||||
$nrSucceeded++;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
sub runTests {
|
||||
if (defined $ENV{tests}) {
|
||||
$log->nest("running the VM test script", sub {
|
||||
eval "$context $ENV{tests}";
|
||||
if ($@) {
|
||||
$log->log("error: $@", { error => 1 });
|
||||
die $@;
|
||||
}
|
||||
}, { expanded => 1 });
|
||||
} else {
|
||||
my $term = Term::ReadLine->new('nixos-vm-test');
|
||||
$term->ReadHistory;
|
||||
while (defined ($_ = $term->readline("> "))) {
|
||||
eval "$context $_\n";
|
||||
warn $@ if $@;
|
||||
}
|
||||
$term->WriteHistory;
|
||||
}
|
||||
|
||||
# Copy the kernel coverage data for each machine, if the kernel
|
||||
# has been compiled with coverage instrumentation.
|
||||
$log->nest("collecting coverage data", sub {
|
||||
foreach my $vm (values %vms) {
|
||||
my $gcovDir = "/sys/kernel/debug/gcov";
|
||||
|
||||
next unless $vm->isUp();
|
||||
|
||||
my ($status, $out) = $vm->execute("test -e $gcovDir");
|
||||
next if $status != 0;
|
||||
|
||||
# Figure out where to put the *.gcda files so that the
|
||||
# report generator can find the corresponding kernel
|
||||
# sources.
|
||||
my $kernelDir = $vm->mustSucceed("echo \$(dirname \$(readlink -f /run/current-system/kernel))/.build/linux-*");
|
||||
chomp $kernelDir;
|
||||
my $coverageDir = "/tmp/xchg/coverage-data/$kernelDir";
|
||||
|
||||
# Copy all the *.gcda files.
|
||||
$vm->execute("for d in $gcovDir/nix/store/*/.build/linux-*; do for i in \$(cd \$d && find -name '*.gcda'); do echo \$i; mkdir -p $coverageDir/\$(dirname \$i); cp -v \$d/\$i $coverageDir/\$i; done; done");
|
||||
}
|
||||
});
|
||||
|
||||
$log->nest("syncing", sub {
|
||||
foreach my $vm (values %vms) {
|
||||
next unless $vm->isUp();
|
||||
$vm->execute("sync");
|
||||
}
|
||||
});
|
||||
|
||||
if ($nrTests != 0) {
|
||||
$log->log("$nrSucceeded out of $nrTests tests succeeded",
|
||||
($nrSucceeded < $nrTests ? { error => 1 } : { }));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
# Create an empty raw virtual disk with the given name and size (in
|
||||
# MiB).
|
||||
sub createDisk {
|
||||
my ($name, $size) = @_;
|
||||
system("qemu-img create -f raw $name ${size}M") == 0
|
||||
or die "cannot create image of size $size";
|
||||
}
|
||||
|
||||
|
||||
END {
|
||||
$log->nest("cleaning up", sub {
|
||||
foreach my $vm (values %vms) {
|
||||
if ($vm->{pid}) {
|
||||
$log->log("killing " . $vm->{name} . " (pid " . $vm->{pid} . ")");
|
||||
kill 9, $vm->{pid};
|
||||
}
|
||||
}
|
||||
});
|
||||
$log->close();
|
||||
}
|
||||
|
||||
my $now1 = clock_gettime(CLOCK_MONOTONIC);
|
||||
|
||||
runTests;
|
||||
|
||||
my $now2 = clock_gettime(CLOCK_MONOTONIC);
|
||||
|
||||
printf STDERR "test script finished in %.2fs\n", $now2 - $now1;
|
||||
|
||||
exit ($nrSucceeded < $nrTests ? 1 : 0);
|
@ -1,258 +0,0 @@
|
||||
{ system
|
||||
, pkgs ? import ../.. { inherit system config; }
|
||||
# Use a minimal kernel?
|
||||
, minimal ? false
|
||||
# Ignored
|
||||
, config ? {}
|
||||
# Modules to add to each VM
|
||||
, extraConfigurations ? [] }:
|
||||
|
||||
with import ./build-vms.nix { inherit system pkgs minimal extraConfigurations; };
|
||||
with pkgs;
|
||||
|
||||
rec {
|
||||
|
||||
inherit pkgs;
|
||||
|
||||
|
||||
testDriver = lib.warn ''
|
||||
Perl VM tests are deprecated and will be removed for 20.09.
|
||||
Please update your tests to use the python test driver.
|
||||
See https://github.com/NixOS/nixpkgs/pull/71684 for details.
|
||||
'' stdenv.mkDerivation {
|
||||
name = "nixos-test-driver";
|
||||
|
||||
buildInputs = [ makeWrapper perl ];
|
||||
|
||||
dontUnpack = true;
|
||||
|
||||
preferLocalBuild = true;
|
||||
|
||||
installPhase =
|
||||
''
|
||||
mkdir -p $out/bin
|
||||
cp ${./test-driver/test-driver.pl} $out/bin/nixos-test-driver
|
||||
chmod u+x $out/bin/nixos-test-driver
|
||||
|
||||
libDir=$out/${perl.libPrefix}
|
||||
mkdir -p $libDir
|
||||
cp ${./test-driver/Machine.pm} $libDir/Machine.pm
|
||||
cp ${./test-driver/Logger.pm} $libDir/Logger.pm
|
||||
|
||||
wrapProgram $out/bin/nixos-test-driver \
|
||||
--prefix PATH : "${lib.makeBinPath [ qemu_test vde2 netpbm coreutils ]}" \
|
||||
--prefix PERL5LIB : "${with perlPackages; makePerlPath [ TermReadLineGnu XMLWriter IOTty FileSlurp ]}:$out/${perl.libPrefix}"
|
||||
'';
|
||||
};
|
||||
|
||||
|
||||
# Run an automated test suite in the given virtual network.
|
||||
# `driver' is the script that runs the network.
|
||||
runTests = driver:
|
||||
stdenv.mkDerivation {
|
||||
name = "vm-test-run-${driver.testName}";
|
||||
|
||||
requiredSystemFeatures = [ "kvm" "nixos-test" ];
|
||||
|
||||
buildCommand =
|
||||
''
|
||||
mkdir -p $out
|
||||
|
||||
LOGFILE=/dev/null tests='eval $ENV{testScript}; die $@ if $@;' ${driver}/bin/nixos-test-driver
|
||||
|
||||
for i in */xchg/coverage-data; do
|
||||
mkdir -p $out/coverage-data
|
||||
mv $i $out/coverage-data/$(dirname $(dirname $i))
|
||||
done
|
||||
'';
|
||||
};
|
||||
|
||||
|
||||
makeTest =
|
||||
{ testScript
|
||||
, makeCoverageReport ? false
|
||||
, enableOCR ? false
|
||||
, name ? "unnamed"
|
||||
, ...
|
||||
} @ t:
|
||||
|
||||
let
|
||||
# A standard store path to the vm monitor is built like this:
|
||||
# /tmp/nix-build-vm-test-run-$name.drv-0/vm-state-machine/monitor
|
||||
# The max filename length of a unix domain socket is 108 bytes.
|
||||
# This means $name can at most be 50 bytes long.
|
||||
maxTestNameLen = 50;
|
||||
testNameLen = builtins.stringLength name;
|
||||
|
||||
testDriverName = with builtins;
|
||||
if testNameLen > maxTestNameLen then
|
||||
abort ("The name of the test '${name}' must not be longer than ${toString maxTestNameLen} " +
|
||||
"it's currently ${toString testNameLen} characters long.")
|
||||
else
|
||||
"nixos-test-driver-${name}";
|
||||
|
||||
nodes = buildVirtualNetwork (
|
||||
t.nodes or (if t ? machine then { machine = t.machine; } else { }));
|
||||
|
||||
testScript' =
|
||||
# Call the test script with the computed nodes.
|
||||
if lib.isFunction testScript
|
||||
then testScript { inherit nodes; }
|
||||
else testScript;
|
||||
|
||||
vlans = map (m: m.config.virtualisation.vlans) (lib.attrValues nodes);
|
||||
|
||||
vms = map (m: m.config.system.build.vm) (lib.attrValues nodes);
|
||||
|
||||
ocrProg = tesseract4.override { enableLanguages = [ "eng" ]; };
|
||||
|
||||
imagemagick_tiff = imagemagick_light.override { inherit libtiff; };
|
||||
|
||||
# Generate onvenience wrappers for running the test driver
|
||||
# interactively with the specified network, and for starting the
|
||||
# VMs from the command line.
|
||||
driver = runCommand testDriverName
|
||||
{ buildInputs = [ makeWrapper];
|
||||
testScript = testScript';
|
||||
preferLocalBuild = true;
|
||||
testName = name;
|
||||
}
|
||||
''
|
||||
mkdir -p $out/bin
|
||||
echo "$testScript" > $out/test-script
|
||||
ln -s ${testDriver}/bin/nixos-test-driver $out/bin/
|
||||
vms=($(for i in ${toString vms}; do echo $i/bin/run-*-vm; done))
|
||||
wrapProgram $out/bin/nixos-test-driver \
|
||||
--add-flags "''${vms[*]}" \
|
||||
${lib.optionalString enableOCR
|
||||
"--prefix PATH : '${ocrProg}/bin:${imagemagick_tiff}/bin'"} \
|
||||
--run "export testScript=\"\$(cat $out/test-script)\"" \
|
||||
--set VLANS '${toString vlans}'
|
||||
ln -s ${testDriver}/bin/nixos-test-driver $out/bin/nixos-run-vms
|
||||
wrapProgram $out/bin/nixos-run-vms \
|
||||
--add-flags "''${vms[*]}" \
|
||||
${lib.optionalString enableOCR "--prefix PATH : '${ocrProg}/bin'"} \
|
||||
--set tests 'startAll; joinAll;' \
|
||||
--set VLANS '${toString vlans}' \
|
||||
${lib.optionalString (builtins.length vms == 1) "--set USE_SERIAL 1"}
|
||||
''; # "
|
||||
|
||||
passMeta = drv: drv // lib.optionalAttrs (t ? meta) {
|
||||
meta = (drv.meta or {}) // t.meta;
|
||||
};
|
||||
|
||||
test = passMeta (runTests driver);
|
||||
report = passMeta (releaseTools.gcovReport { coverageRuns = [ test ]; });
|
||||
|
||||
nodeNames = builtins.attrNames nodes;
|
||||
invalidNodeNames = lib.filter
|
||||
(node: builtins.match "^[A-z_][A-z0-9_]+$" node == null) nodeNames;
|
||||
|
||||
in
|
||||
if lib.length invalidNodeNames > 0 then
|
||||
throw ''
|
||||
Cannot create machines out of (${lib.concatStringsSep ", " invalidNodeNames})!
|
||||
All machines are referenced as perl variables in the testing framework which will break the
|
||||
script when special characters are used.
|
||||
|
||||
Please stick to alphanumeric chars and underscores as separation.
|
||||
''
|
||||
else
|
||||
(if makeCoverageReport then report else test) // {
|
||||
inherit nodes driver test;
|
||||
};
|
||||
|
||||
runInMachine =
|
||||
{ drv
|
||||
, machine
|
||||
, preBuild ? ""
|
||||
, postBuild ? ""
|
||||
, ... # ???
|
||||
}:
|
||||
let
|
||||
vm = buildVM { }
|
||||
[ machine
|
||||
{ key = "run-in-machine";
|
||||
networking.hostName = "client";
|
||||
nix.readOnlyStore = false;
|
||||
virtualisation.writableStore = false;
|
||||
}
|
||||
];
|
||||
|
||||
buildrunner = writeText "vm-build" ''
|
||||
source $1
|
||||
|
||||
${coreutils}/bin/mkdir -p $TMPDIR
|
||||
cd $TMPDIR
|
||||
|
||||
exec $origBuilder $origArgs
|
||||
'';
|
||||
|
||||
testScript = ''
|
||||
startAll;
|
||||
$client->waitForUnit("multi-user.target");
|
||||
${preBuild}
|
||||
$client->succeed("env -i ${bash}/bin/bash ${buildrunner} /tmp/xchg/saved-env >&2");
|
||||
${postBuild}
|
||||
$client->succeed("sync"); # flush all data before pulling the plug
|
||||
'';
|
||||
|
||||
vmRunCommand = writeText "vm-run" ''
|
||||
xchg=vm-state-client/xchg
|
||||
${coreutils}/bin/mkdir $out
|
||||
${coreutils}/bin/mkdir -p $xchg
|
||||
|
||||
for i in $passAsFile; do
|
||||
i2=''${i}Path
|
||||
_basename=$(${coreutils}/bin/basename ''${!i2})
|
||||
${coreutils}/bin/cp ''${!i2} $xchg/$_basename
|
||||
eval $i2=/tmp/xchg/$_basename
|
||||
${coreutils}/bin/ls -la $xchg
|
||||
done
|
||||
|
||||
unset i i2 _basename
|
||||
export | ${gnugrep}/bin/grep -v '^xchg=' > $xchg/saved-env
|
||||
unset xchg
|
||||
|
||||
export tests='${testScript}'
|
||||
${testDriver}/bin/nixos-test-driver ${vm.config.system.build.vm}/bin/run-*-vm
|
||||
''; # */
|
||||
|
||||
in
|
||||
lib.overrideDerivation drv (attrs: {
|
||||
requiredSystemFeatures = [ "kvm" ];
|
||||
builder = "${bash}/bin/sh";
|
||||
args = ["-e" vmRunCommand];
|
||||
origArgs = attrs.args;
|
||||
origBuilder = attrs.builder;
|
||||
});
|
||||
|
||||
|
||||
runInMachineWithX = { require ? [], ... } @ args:
|
||||
let
|
||||
client =
|
||||
{ ... }:
|
||||
{
|
||||
inherit require;
|
||||
imports = [
|
||||
../tests/common/auto.nix
|
||||
];
|
||||
virtualisation.memorySize = 1024;
|
||||
services.xserver.enable = true;
|
||||
test-support.displayManager.auto.enable = true;
|
||||
services.xserver.displayManager.defaultSession = "none+icewm";
|
||||
services.xserver.windowManager.icewm.enable = true;
|
||||
};
|
||||
in
|
||||
runInMachine ({
|
||||
machine = client;
|
||||
preBuild =
|
||||
''
|
||||
$client->waitForX;
|
||||
'';
|
||||
} // args);
|
||||
|
||||
|
||||
simpleTest = as: (makeTest as).test;
|
||||
|
||||
}
|
@ -262,6 +262,7 @@
|
||||
./services/continuous-integration/buildbot/worker.nix
|
||||
./services/continuous-integration/buildkite-agents.nix
|
||||
./services/continuous-integration/hail.nix
|
||||
./services/continuous-integration/hercules-ci-agent/default.nix
|
||||
./services/continuous-integration/hydra/default.nix
|
||||
./services/continuous-integration/gitlab-runner.nix
|
||||
./services/continuous-integration/gocd-agent/default.nix
|
||||
|
@ -23,11 +23,17 @@ in
|
||||
default = [];
|
||||
description = "List of packages to be added to apparmor's include path";
|
||||
};
|
||||
parserConfig = mkOption {
|
||||
type = types.str;
|
||||
default = "";
|
||||
description = "AppArmor parser configuration file content";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
environment.systemPackages = [ pkgs.apparmor-utils ];
|
||||
environment.etc."apparmor/parser.conf".text = cfg.parserConfig;
|
||||
|
||||
boot.kernelParams = [ "apparmor=1" "security=apparmor" ];
|
||||
|
||||
|
@ -0,0 +1,213 @@
|
||||
/*
|
||||
|
||||
This file is for options that NixOS and nix-darwin have in common.
|
||||
|
||||
Platform-specific code is in the respective default.nix files.
|
||||
|
||||
*/
|
||||
|
||||
{ config, lib, options, pkgs, ... }:
|
||||
|
||||
let
|
||||
inherit (lib) mkOption mkIf types filterAttrs literalExample mkRenamedOptionModule;
|
||||
|
||||
cfg =
|
||||
config.services.hercules-ci-agent;
|
||||
|
||||
format = pkgs.formats.toml {};
|
||||
|
||||
settingsModule = { config, ... }: {
|
||||
freeformType = format.type;
|
||||
options = {
|
||||
baseDirectory = mkOption {
|
||||
type = types.path;
|
||||
default = "/var/lib/hercules-ci-agent";
|
||||
description = ''
|
||||
State directory (secrets, work directory, etc) for agent
|
||||
'';
|
||||
};
|
||||
concurrentTasks = mkOption {
|
||||
description = ''
|
||||
Number of tasks to perform simultaneously, such as evaluations, derivations.
|
||||
|
||||
You must have a total capacity across agents of at least 2 concurrent tasks on <literal>x86_64-linux</literal>
|
||||
to allow for import from derivation.
|
||||
'';
|
||||
type = types.int;
|
||||
default = 4;
|
||||
};
|
||||
workDirectory = mkOption {
|
||||
description = ''
|
||||
The directory in which temporary subdirectories are created for task state. This includes sources for Nix evaluation.
|
||||
'';
|
||||
type = types.path;
|
||||
default = config.baseDirectory + "/work";
|
||||
defaultText = literalExample ''baseDirectory + "/work"'';
|
||||
};
|
||||
staticSecretsDirectory = mkOption {
|
||||
description = ''
|
||||
This is the default directory to look for statically configured secrets like <literal>cluster-join-token.key</literal>.
|
||||
'';
|
||||
type = types.path;
|
||||
default = config.baseDirectory + "/secrets";
|
||||
defaultText = literalExample ''baseDirectory + "/secrets"'';
|
||||
};
|
||||
clusterJoinTokenPath = mkOption {
|
||||
description = ''
|
||||
Location of the cluster-join-token.key file.
|
||||
'';
|
||||
type = types.path;
|
||||
default = config.staticSecretsDirectory + "/cluster-join-token.key";
|
||||
defaultText = literalExample ''staticSecretsDirectory + "/cluster-join-token.key"'';
|
||||
# internal: It's a bit too detailed to show by default in the docs,
|
||||
# but useful to define explicitly to allow reuse by other modules.
|
||||
internal = true;
|
||||
};
|
||||
binaryCachesPath = mkOption {
|
||||
description = ''
|
||||
Location of the binary-caches.json file.
|
||||
'';
|
||||
type = types.path;
|
||||
default = config.staticSecretsDirectory + "/binary-caches.json";
|
||||
defaultText = literalExample ''staticSecretsDirectory + "/binary-caches.json"'';
|
||||
# internal: It's a bit too detailed to show by default in the docs,
|
||||
# but useful to define explicitly to allow reuse by other modules.
|
||||
internal = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
checkNix =
|
||||
if !cfg.checkNix
|
||||
then ""
|
||||
else if lib.versionAtLeast config.nix.package.version "2.4.0"
|
||||
then ""
|
||||
else pkgs.stdenv.mkDerivation {
|
||||
name = "hercules-ci-check-system-nix-src";
|
||||
inherit (config.nix.package) src patches;
|
||||
configurePhase = ":";
|
||||
buildPhase = ''
|
||||
echo "Checking in-memory pathInfoCache expiry"
|
||||
if ! grep 'struct PathInfoCacheValue' src/libstore/store-api.hh >/dev/null; then
|
||||
cat 1>&2 <<EOF
|
||||
|
||||
You are deploying Hercules CI Agent on a system with an incompatible
|
||||
nix-daemon. Please
|
||||
- either upgrade Nix to version 2.4.0 (when released),
|
||||
- or set option services.hercules-ci-agent.patchNix = true;
|
||||
- or set option nix.package to a build of Nix 2.3 with this patch applied:
|
||||
https://github.com/NixOS/nix/pull/3405
|
||||
|
||||
The patch is required for Nix-daemon clients that expect a change in binary
|
||||
cache contents while running, like the agent's evaluator. Without it, import
|
||||
from derivation will fail if your cluster has more than one machine.
|
||||
We are conservative with changes to the overall system, which is why we
|
||||
keep changes to a minimum and why we ask for confirmation in the form of
|
||||
services.hercules-ci-agent.patchNix = true before applying.
|
||||
|
||||
EOF
|
||||
exit 1
|
||||
fi
|
||||
'';
|
||||
installPhase = "touch $out";
|
||||
};
|
||||
|
||||
patchedNix = lib.mkIf (!lib.versionAtLeast pkgs.nix.version "2.4.0") (
|
||||
if lib.versionAtLeast pkgs.nix.version "2.4pre"
|
||||
then lib.warn "Hercules CI Agent module will not patch 2.4 pre-release. Make sure it includes (equivalently) PR #3043, commit d048577909 or is no older than 2020-03-13." pkgs.nix
|
||||
else pkgs.nix.overrideAttrs (
|
||||
o: {
|
||||
patches = (o.patches or []) ++ [ backportNix3398 ];
|
||||
}
|
||||
)
|
||||
);
|
||||
|
||||
backportNix3398 = pkgs.fetchurl {
|
||||
url = "https://raw.githubusercontent.com/hercules-ci/hercules-ci-agent/hercules-ci-agent-0.7.3/for-upstream/issue-3398-path-info-cache-ttls-backport-2.3.patch";
|
||||
sha256 = "0jfckqjir9il2il7904yc1qyadw366y7xqzg81sp9sl3f1pw70ib";
|
||||
};
|
||||
in
|
||||
{
|
||||
imports = [
|
||||
(mkRenamedOptionModule ["services" "hercules-ci-agent" "extraOptions"] ["services" "hercules-ci-agent" "settings"])
|
||||
(mkRenamedOptionModule ["services" "hercules-ci-agent" "baseDirectory"] ["services" "hercules-ci-agent" "settings" "baseDirectory"])
|
||||
(mkRenamedOptionModule ["services" "hercules-ci-agent" "concurrentTasks"] ["services" "hercules-ci-agent" "settings" "concurrentTasks"])
|
||||
];
|
||||
|
||||
options.services.hercules-ci-agent = {
|
||||
enable = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Enable to run Hercules CI Agent as a system service.
|
||||
|
||||
<link xlink:href="https://hercules-ci.com">Hercules CI</link> is a
|
||||
continuous integation service that is centered around Nix.
|
||||
|
||||
Support is available at <link xlink:href="mailto:help@hercules-ci.com">help@hercules-ci.com</link>.
|
||||
'';
|
||||
};
|
||||
patchNix = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Fix Nix 2.3 cache path metadata caching behavior. Has the effect of <literal>nix.package = patch pkgs.nix;</literal>
|
||||
|
||||
This option will be removed when Hercules CI Agent moves to Nix 2.4 (upcoming Nix release).
|
||||
'';
|
||||
};
|
||||
checkNix = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = ''
|
||||
Whether to make sure that the system's Nix (nix-daemon) is compatible.
|
||||
|
||||
If you set this to false, please keep up with the change log.
|
||||
'';
|
||||
};
|
||||
package = mkOption {
|
||||
description = ''
|
||||
Package containing the bin/hercules-ci-agent executable.
|
||||
'';
|
||||
type = types.package;
|
||||
default = pkgs.hercules-ci-agent;
|
||||
defaultText = literalExample "pkgs.hercules-ci-agent";
|
||||
};
|
||||
settings = mkOption {
|
||||
description = ''
|
||||
These settings are written to the <literal>agent.toml</literal> file.
|
||||
|
||||
Not all settings are listed as options, can be set nonetheless.
|
||||
|
||||
For the exhaustive list of settings, see <link xlink:href="https://docs.hercules-ci.com/hercules-ci/reference/agent-config/"/>.
|
||||
'';
|
||||
type = types.submoduleWith { modules = [ settingsModule ]; };
|
||||
};
|
||||
|
||||
/*
|
||||
Internal and/or computed values.
|
||||
|
||||
These are written as options instead of let binding to allow sharing with
|
||||
default.nix on both NixOS and nix-darwin.
|
||||
*/
|
||||
tomlFile = mkOption {
|
||||
type = types.path;
|
||||
internal = true;
|
||||
defaultText = "generated hercules-ci-agent.toml";
|
||||
description = ''
|
||||
The fully assembled config file.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
nix.extraOptions = lib.addContextFrom checkNix ''
|
||||
# A store path that was missing at first may well have finished building,
|
||||
# even shortly after the previous lookup. This *also* applies to the daemon.
|
||||
narinfo-cache-negative-ttl = 0
|
||||
'';
|
||||
nix.package = mkIf cfg.patchNix patchedNix;
|
||||
services.hercules-ci-agent.tomlFile =
|
||||
format.generate "hercules-ci-agent.toml" cfg.settings;
|
||||
};
|
||||
}
|
@ -0,0 +1,86 @@
|
||||
/*
|
||||
|
||||
This file is for NixOS-specific options and configs.
|
||||
|
||||
Code that is shared with nix-darwin goes in common.nix.
|
||||
|
||||
*/
|
||||
|
||||
{ pkgs, config, lib, ... }:
|
||||
|
||||
let
|
||||
|
||||
inherit (lib) mkIf mkDefault;
|
||||
|
||||
cfg = config.services.hercules-ci-agent;
|
||||
|
||||
command = "${cfg.package}/bin/hercules-ci-agent --config ${cfg.tomlFile}";
|
||||
testCommand = "${command} --test-configuration";
|
||||
|
||||
in
|
||||
{
|
||||
imports = [
|
||||
./common.nix
|
||||
(lib.mkRenamedOptionModule ["services" "hercules-ci-agent" "user"] ["systemd" "services" "hercules-ci-agent" "serviceConfig" "User"])
|
||||
];
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
|
||||
systemd.services.hercules-ci-agent = {
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
after = [ "network-online.target" ];
|
||||
wants = [ "network-online.target" ];
|
||||
path = [ config.nix.package ];
|
||||
serviceConfig = {
|
||||
User = "hercules-ci-agent";
|
||||
ExecStart = command;
|
||||
ExecStartPre = testCommand;
|
||||
Restart = "on-failure";
|
||||
RestartSec = 120;
|
||||
StartLimitBurst = 30 * 1000000; # practically infinite
|
||||
};
|
||||
};
|
||||
|
||||
# Changes in the secrets do not affect the unit in any way that would cause
|
||||
# a restart, which is currently necessary to reload the secrets.
|
||||
systemd.paths.hercules-ci-agent-restart-files = {
|
||||
wantedBy = [ "hercules-ci-agent.service" ];
|
||||
pathConfig = {
|
||||
Unit = "hercules-ci-agent-restarter.service";
|
||||
PathChanged = [ cfg.settings.clusterJoinTokenPath cfg.settings.binaryCachesPath ];
|
||||
};
|
||||
};
|
||||
systemd.services.hercules-ci-agent-restarter = {
|
||||
serviceConfig.Type = "oneshot";
|
||||
script = ''
|
||||
# Wait a bit, with the effect of bundling up file changes into a single
|
||||
# run of this script and hopefully a single restart.
|
||||
sleep 10
|
||||
if systemctl is-active --quiet hercules-ci-agent.service; then
|
||||
if ${testCommand}; then
|
||||
systemctl restart hercules-ci-agent.service
|
||||
else
|
||||
echo 1>&2 "WARNING: Not restarting agent because config is not valid at this time."
|
||||
fi
|
||||
else
|
||||
echo 1>&2 "Not restarting hercules-ci-agent despite config file update, because it is not already active."
|
||||
fi
|
||||
'';
|
||||
};
|
||||
|
||||
# Trusted user allows simplified configuration and better performance
|
||||
# when operating in a cluster.
|
||||
nix.trustedUsers = [ config.systemd.services.hercules-ci-agent.serviceConfig.User ];
|
||||
services.hercules-ci-agent.settings.nixUserIsTrusted = true;
|
||||
|
||||
users.users.hercules-ci-agent = {
|
||||
home = cfg.settings.baseDirectory;
|
||||
createHome = true;
|
||||
group = "hercules-ci-agent";
|
||||
description = "Hercules CI Agent system user";
|
||||
isSystemUser = true;
|
||||
};
|
||||
|
||||
users.groups.hercules-ci-agent = {};
|
||||
};
|
||||
}
|
@ -322,7 +322,7 @@ https://nixos.org/nixpkgs/manual/#sec-modify-via-packageOverrides
|
||||
If you want, you can tweak the Emacs package itself from your
|
||||
<filename>emacs.nix</filename>. For example, if you want to have a
|
||||
GTK 3-based Emacs instead of the default GTK 2-based binary and remove the
|
||||
automatically generated <filename>emacs.desktop</filename> (useful is you
|
||||
automatically generated <filename>emacs.desktop</filename> (useful if you
|
||||
only use <command>emacsclient</command>), you can change your file
|
||||
<filename>emacs.nix</filename> in this way:
|
||||
</para>
|
||||
|
@ -106,11 +106,28 @@ in rec {
|
||||
(onFullSupported "nixos.tests.networking.scripted.bridge")
|
||||
(onFullSupported "nixos.tests.networking.scripted.dhcpOneIf")
|
||||
(onFullSupported "nixos.tests.networking.scripted.dhcpSimple")
|
||||
(onFullSupported "nixos.tests.networking.scripted.link")
|
||||
(onFullSupported "nixos.tests.networking.scripted.loopback")
|
||||
(onFullSupported "nixos.tests.networking.scripted.macvlan")
|
||||
(onFullSupported "nixos.tests.networking.scripted.privacy")
|
||||
(onFullSupported "nixos.tests.networking.scripted.routes")
|
||||
(onFullSupported "nixos.tests.networking.scripted.sit")
|
||||
(onFullSupported "nixos.tests.networking.scripted.static")
|
||||
(onFullSupported "nixos.tests.networking.scripted.virtual")
|
||||
(onFullSupported "nixos.tests.networking.scripted.vlan")
|
||||
(onFullSupported "nixos.tests.networking.networkd.bond")
|
||||
(onFullSupported "nixos.tests.networking.networkd.bridge")
|
||||
(onFullSupported "nixos.tests.networking.networkd.dhcpOneIf")
|
||||
(onFullSupported "nixos.tests.networking.networkd.dhcpSimple")
|
||||
(onFullSupported "nixos.tests.networking.networkd.link")
|
||||
(onFullSupported "nixos.tests.networking.networkd.loopback")
|
||||
(onFullSupported "nixos.tests.networking.networkd.macvlan")
|
||||
(onFullSupported "nixos.tests.networking.networkd.privacy")
|
||||
(onFullSupported "nixos.tests.networking.networkd.routes")
|
||||
(onFullSupported "nixos.tests.networking.networkd.sit")
|
||||
(onFullSupported "nixos.tests.networking.networkd.static")
|
||||
(onFullSupported "nixos.tests.networking.networkd.virtual")
|
||||
(onFullSupported "nixos.tests.networking.networkd.vlan")
|
||||
(onFullSupported "nixos.tests.systemd-networkd-ipv6-prefix-delegation")
|
||||
(onFullSupported "nixos.tests.nfs3.simple")
|
||||
(onFullSupported "nixos.tests.nfs4.simple")
|
||||
|
@ -49,6 +49,7 @@ in
|
||||
ceph-multi-node = handleTestOn ["x86_64-linux"] ./ceph-multi-node.nix {};
|
||||
certmgr = handleTest ./certmgr.nix {};
|
||||
cfssl = handleTestOn ["x86_64-linux"] ./cfssl.nix {};
|
||||
charliecloud = handleTest ./charliecloud.nix {};
|
||||
chromium = (handleTestOn ["x86_64-linux"] ./chromium.nix {}).stable or {};
|
||||
cjdns = handleTest ./cjdns.nix {};
|
||||
clickhouse = handleTest ./clickhouse.nix {};
|
||||
|
43
nixos/tests/charliecloud.nix
Normal file
43
nixos/tests/charliecloud.nix
Normal file
@ -0,0 +1,43 @@
|
||||
# This test checks charliecloud image construction and run
|
||||
|
||||
import ./make-test-python.nix ({ pkgs, ...} : let
|
||||
|
||||
dockerfile = pkgs.writeText "Dockerfile" ''
|
||||
FROM nix
|
||||
RUN mkdir /home /tmp
|
||||
RUN touch /etc/passwd /etc/group
|
||||
CMD ["true"]
|
||||
'';
|
||||
|
||||
in {
|
||||
name = "charliecloud";
|
||||
meta = with pkgs.stdenv.lib.maintainers; {
|
||||
maintainers = [ bzizou ];
|
||||
};
|
||||
|
||||
nodes = {
|
||||
host = { ... }: {
|
||||
environment.systemPackages = [ pkgs.charliecloud ];
|
||||
virtualisation.docker.enable = true;
|
||||
users.users.alice = {
|
||||
isNormalUser = true;
|
||||
extraGroups = [ "docker" ];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
host.start()
|
||||
host.wait_for_unit("docker.service")
|
||||
host.succeed(
|
||||
'su - alice -c "docker load --input=${pkgs.dockerTools.examples.nix}"'
|
||||
)
|
||||
host.succeed(
|
||||
"cp ${dockerfile} /home/alice/Dockerfile"
|
||||
)
|
||||
host.succeed('su - alice -c "ch-build -t hello ."')
|
||||
host.succeed('su - alice -c "ch-builder2tar hello /var/tmp"')
|
||||
host.succeed('su - alice -c "ch-tar2dir /var/tmp/hello.tar.gz /var/tmp"')
|
||||
host.succeed('su - alice -c "ch-run /var/tmp/hello -- echo Running_From_Container_OK"')
|
||||
'';
|
||||
})
|
@ -1,9 +0,0 @@
|
||||
f: {
|
||||
system ? builtins.currentSystem,
|
||||
pkgs ? import ../.. { inherit system; config = {}; },
|
||||
...
|
||||
} @ args:
|
||||
|
||||
with import ../lib/testing.nix { inherit system pkgs; };
|
||||
|
||||
makeTest (if pkgs.lib.isFunction f then f (args // { inherit pkgs; inherit (pkgs) lib; }) else f)
|
@ -531,6 +531,12 @@ let
|
||||
(attrs.nativeBuildInputs or [ ]) ++ [ external.git ];
|
||||
}));
|
||||
|
||||
orgit-forge = super.orgit-forge.overrideAttrs (attrs: {
|
||||
# searches for Git at build time
|
||||
nativeBuildInputs =
|
||||
(attrs.nativeBuildInputs or [ ]) ++ [ external.git ];
|
||||
});
|
||||
|
||||
# tries to write to $HOME
|
||||
php-auto-yasnippets = super.php-auto-yasnippets.overrideAttrs (attrs: {
|
||||
HOME = "/tmp";
|
||||
|
26
pkgs/applications/editors/gophernotes/default.nix
Normal file
26
pkgs/applications/editors/gophernotes/default.nix
Normal file
@ -0,0 +1,26 @@
|
||||
{ lib
|
||||
, buildGoModule
|
||||
, fetchFromGitHub
|
||||
}:
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "gophernotes";
|
||||
version = "0.7.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "gopherdata";
|
||||
repo = "gophernotes";
|
||||
rev = "v${version}";
|
||||
sha256 = "0hs92bdrsjqafdkhg2fk3z16h307i32mvbm9f6bb80bgsciysh27";
|
||||
};
|
||||
|
||||
vendorSha256 = "1ylqf1sx0h2kixnq9f3prn3sha43q3ybd5ay57yy5z79qr8zqvxs";
|
||||
|
||||
meta = with lib; {
|
||||
description = "Go kernel for Jupyter notebooks";
|
||||
homepage = "https://github.com/gopherdata/gophernotes";
|
||||
license = licenses.mit;
|
||||
maintainers = [ maintainers.costrouc ];
|
||||
platforms = platforms.all;
|
||||
};
|
||||
}
|
@ -10,7 +10,7 @@ let
|
||||
[ qscintilla-qt5 gdal jinja2 numpy psycopg2
|
||||
chardet dateutil pyyaml pytz requests urllib3 pygments pyqt5 sip owslib six ];
|
||||
in mkDerivation rec {
|
||||
version = "3.10.7";
|
||||
version = "3.10.9";
|
||||
pname = "qgis";
|
||||
name = "${pname}-unwrapped-${version}";
|
||||
|
||||
@ -18,7 +18,7 @@ in mkDerivation rec {
|
||||
owner = "qgis";
|
||||
repo = "QGIS";
|
||||
rev = "final-${lib.replaceStrings ["."] ["_"] version}";
|
||||
sha256 = "0z593n5g3zwhlzhs0z7nlpblz6z2rl3y7y3j1wf1rdx76i8p3qgf";
|
||||
sha256 = "0d646hvrhhgsw789qc2g3iblmsvr64qh15jck1jkaljzrj3qbml6";
|
||||
};
|
||||
|
||||
passthru = {
|
||||
|
53
pkgs/applications/graphics/odafileconverter/default.nix
Normal file
53
pkgs/applications/graphics/odafileconverter/default.nix
Normal file
@ -0,0 +1,53 @@
|
||||
{ lib, stdenv, mkDerivation, dpkg, fetchurl, qtbase }:
|
||||
|
||||
let
|
||||
# To obtain the version you will need to run the following command:
|
||||
#
|
||||
# dpkg-deb -I ${odafileconverter.src} | grep Version
|
||||
version = "21.7.0.0";
|
||||
rpath = "$ORIGIN:${lib.makeLibraryPath [ stdenv.cc.cc qtbase ]}";
|
||||
|
||||
in mkDerivation {
|
||||
pname = "oda-file-converter";
|
||||
inherit version;
|
||||
nativeBuildInputs = [ dpkg ];
|
||||
|
||||
src = fetchurl {
|
||||
# NB: this URL is not stable (i.e. the underlying file and the corresponding version will change over time)
|
||||
url = "https://download.opendesign.com/guestfiles/ODAFileConverter/ODAFileConverter_QT5_lnxX64_7.2dll.deb";
|
||||
sha256 = "0sa21nnwzqb6g7gl0z43smqgcd9h3xipj3cq2cl7ybfh3cvcxfi9";
|
||||
};
|
||||
|
||||
unpackPhase = ''
|
||||
dpkg -x $src oda_unpacked
|
||||
sourceRoot=$PWD/oda_unpacked
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/bin $out/lib
|
||||
cp -vr $sourceRoot/usr/bin/ODAFileConverter_${version} $out/libexec
|
||||
cp -vr $sourceRoot/usr/share $out/share
|
||||
'';
|
||||
|
||||
dontWrapQtApps = true;
|
||||
fixupPhase = ''
|
||||
echo "setting interpreter"
|
||||
patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" $out/libexec/ODAFileConverter
|
||||
patchelf --set-rpath '${rpath}' $out/libexec/ODAFileConverter
|
||||
wrapQtApp $out/libexec/ODAFileConverter
|
||||
mv $out/libexec/ODAFileConverter $out/bin
|
||||
|
||||
find $out/libexec -type f -executable | while read file; do
|
||||
echo "patching $file"
|
||||
patchelf --set-rpath '${rpath}' $file
|
||||
done
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "For converting between different versions of .dwg and .dxf";
|
||||
homepage = "https://www.opendesign.com/guestfiles/oda_file_converter";
|
||||
license = licenses.unfree;
|
||||
maintainers = with maintainers; [ nagisa ];
|
||||
platforms = [ "x86_64-linux" ];
|
||||
};
|
||||
}
|
@ -2,16 +2,16 @@
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "navi";
|
||||
version = "2.8.0";
|
||||
version = "2.9.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "denisidoro";
|
||||
repo = "navi";
|
||||
rev = "v${version}";
|
||||
sha256 = "0w63yx4c60r05nfswv61jw3l3zbl5n1s396a6f4ayn52fb6rxwg1";
|
||||
sha256 = "16rwhpyk0zqks9z9bv2a1a8vww2m6867kg33bjbr29hawjg68jql";
|
||||
};
|
||||
|
||||
cargoSha256 = "06xpk04nxkm7h4nn235x8a4gi0qhscj8kkl2f9gqphlfmm56kjfn";
|
||||
cargoSha256 = "19w9gm389lj1zwhyjifhc2fzkvrvqvyc80lwxz070cnj11ir2l9m";
|
||||
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
|
||||
|
@ -91,19 +91,19 @@ let
|
||||
fteLibPath = makeLibraryPath [ stdenv.cc.cc gmp ];
|
||||
|
||||
# Upstream source
|
||||
version = "9.5.3";
|
||||
version = "9.5.4";
|
||||
|
||||
lang = "en-US";
|
||||
|
||||
srcs = {
|
||||
x86_64-linux = fetchurl {
|
||||
url = "https://dist.torproject.org/torbrowser/${version}/tor-browser-linux64-${version}_${lang}.tar.xz";
|
||||
sha256 = "1kqvr0sag94xdkq85k426qq1hz2b52m315yz51w6hvc87d8332b4";
|
||||
sha256 = "sha256-XW2B2wTgqMU2w9XhPJNcUjGLrHykQIngMcG/fFTWb04=";
|
||||
};
|
||||
|
||||
i686-linux = fetchurl {
|
||||
url = "https://dist.torproject.org/torbrowser/${version}/tor-browser-linux32-${version}_${lang}.tar.xz";
|
||||
sha256 = "179g00xw964d6x11wvzs84r7d6rcczx7ganqrxrs499yklscc46b";
|
||||
sha256 = "sha256-EyDyAxB5Og1Cn04tuBF9ob8BxqULy2Ur07BuDxZlmqQ=";
|
||||
};
|
||||
};
|
||||
in
|
||||
|
@ -1,15 +1,14 @@
|
||||
{ stdenv
|
||||
, pkgconfig
|
||||
, python3
|
||||
, fetchhg
|
||||
, fetchpatch
|
||||
, fetchFromGitLab
|
||||
, gtk3
|
||||
, glib
|
||||
, gdbm
|
||||
, gtkspell3
|
||||
, ofono
|
||||
, itstool
|
||||
, libappindicator-gtk3
|
||||
, libayatana-appindicator-gtk3
|
||||
, perlPackages
|
||||
, glibcLocales
|
||||
, meson
|
||||
@ -18,22 +17,16 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "modem-manager-gui";
|
||||
version = "0.0.19.1";
|
||||
version = "0.0.20";
|
||||
|
||||
src = fetchhg {
|
||||
url = "https://linuxonly@bitbucket.org/linuxonly/modem-manager-gui";
|
||||
rev = "version ${version}";
|
||||
sha256 = "11iibh36567814h2bz41sa1072b86p1l13xyj670pwkh9k8kw8fd";
|
||||
src = fetchFromGitLab {
|
||||
domain = "salsa.debian.org";
|
||||
owner = "debian";
|
||||
repo = "modem-manager-gui";
|
||||
rev = "upstream%2F${version}";
|
||||
sha256 = "1pjx4rbsxa7gcs628yjkwb0zqrm5xq8pkmp0cfk4flfk1ryflmgr";
|
||||
};
|
||||
|
||||
patches = [
|
||||
# Fix docs build
|
||||
(fetchpatch {
|
||||
url = "https://bitbucket.org/linuxonly/modem-manager-gui/commits/68fb09c12413b7de9b7477cbf4241c3527568325/raw";
|
||||
sha256 = "033nrlhjlk0zvadv5g9n2id53ajagswf77mda0ixnrskyi7wiig7";
|
||||
})
|
||||
];
|
||||
|
||||
nativeBuildInputs = [
|
||||
pkgconfig
|
||||
python3
|
||||
@ -49,7 +42,7 @@ stdenv.mkDerivation rec {
|
||||
gdbm
|
||||
gtkspell3
|
||||
ofono
|
||||
libappindicator-gtk3
|
||||
libayatana-appindicator-gtk3
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
@ -66,7 +59,7 @@ stdenv.mkDerivation rec {
|
||||
'';
|
||||
homepage = "https://linuxonly.ru/page/modem-manager-gui";
|
||||
license = licenses.gpl3;
|
||||
maintainers = with maintainers; [ ahuzik ];
|
||||
maintainers = with maintainers; [ ahuzik galagora ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
||||
|
@ -9,11 +9,11 @@ let
|
||||
|
||||
in stdenv.mkDerivation rec {
|
||||
pname = "msmtp";
|
||||
version = "1.8.11";
|
||||
version = "1.8.12";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://marlam.de/${pname}/releases/${pname}-${version}.tar.xz";
|
||||
sha256 = "0q0fg235qk448l1xjcwyxr7vcpzk6w57jzhjbkb0m7nffyhhypzj";
|
||||
sha256 = "0m33m5bc7ajmgy7vivnzj3mhybg37259hx79xypj769kfyafyvx8";
|
||||
};
|
||||
|
||||
patches = [
|
||||
|
49
pkgs/applications/networking/p2p/tremc/default.nix
Normal file
49
pkgs/applications/networking/p2p/tremc/default.nix
Normal file
@ -0,0 +1,49 @@
|
||||
{ stdenv, fetchFromGitHub, python3Packages
|
||||
, x11Support ? !stdenv.isDarwin
|
||||
, xclip ? null
|
||||
, pbcopy ? null
|
||||
, useGeoIP ? false # Require /var/lib/geoip-databases/GeoIP.dat
|
||||
}:
|
||||
let
|
||||
wrapperPath = with stdenv.lib; makeBinPath (
|
||||
optional x11Support xclip ++
|
||||
optional stdenv.isDarwin pbcopy
|
||||
);
|
||||
in
|
||||
python3Packages.buildPythonPackage rec {
|
||||
version = "0.9.1";
|
||||
pname = "tremc";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "tremc";
|
||||
repo = pname;
|
||||
rev = "0.9.1";
|
||||
sha256 = "1yhwvlcyv1s830p5a7q5x3mkb3mbvr5cn5nh7y62l5b6iyyynlvm";
|
||||
};
|
||||
|
||||
buildInputs = with python3Packages; [
|
||||
python
|
||||
wrapPython
|
||||
];
|
||||
|
||||
pythonPath = with python3Packages; [
|
||||
ipy
|
||||
pyperclip
|
||||
] ++
|
||||
stdenv.lib.optional useGeoIP GeoIP;
|
||||
|
||||
phases = [ "unpackPhase" "installPhase" ];
|
||||
|
||||
makeWrapperArgs = ["--prefix PATH : ${wrapperPath}"];
|
||||
|
||||
installPhase = ''
|
||||
make DESTDIR=$out install
|
||||
wrapPythonPrograms
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "Curses interface for transmission";
|
||||
homepage = "https://github.com/tremc/tremc";
|
||||
license = licenses.gpl3;
|
||||
};
|
||||
}
|
@ -2,29 +2,27 @@
|
||||
|
||||
let
|
||||
pname = "alt-ergo";
|
||||
version = "2.3.2";
|
||||
version = "2.3.3";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://alt-ergo.ocamlpro.com/http/alt-ergo-${version}/alt-ergo-${version}.tar.gz";
|
||||
sha256 = "130hisjzkaslygipdaaqib92spzx9rapsd45dbh5ssczjn5qnhb9";
|
||||
sha256 = "124k2a4ikk4wdpmvgjpgl97x9skvr9qznk8m68dzsynzpv6yksaj";
|
||||
};
|
||||
|
||||
preConfigure = "patchShebangs ./configure";
|
||||
|
||||
nativeBuildInputs = [ which ];
|
||||
|
||||
in
|
||||
|
||||
let alt-ergo-lib = ocamlPackages.buildDunePackage rec {
|
||||
pname = "alt-ergo-lib";
|
||||
inherit version src preConfigure nativeBuildInputs;
|
||||
inherit version src nativeBuildInputs;
|
||||
configureFlags = pname;
|
||||
propagatedBuildInputs = with ocamlPackages; [ num ocplib-simplex stdlib-shims zarith ];
|
||||
}; in
|
||||
|
||||
let alt-ergo-parsers = ocamlPackages.buildDunePackage rec {
|
||||
pname = "alt-ergo-parsers";
|
||||
inherit version src preConfigure nativeBuildInputs;
|
||||
inherit version src nativeBuildInputs;
|
||||
configureFlags = pname;
|
||||
buildInputs = with ocamlPackages; [ menhir ];
|
||||
propagatedBuildInputs = [ alt-ergo-lib ] ++ (with ocamlPackages; [ camlzip psmt2-frontend ]);
|
||||
@ -32,7 +30,7 @@ let alt-ergo-parsers = ocamlPackages.buildDunePackage rec {
|
||||
|
||||
ocamlPackages.buildDunePackage {
|
||||
|
||||
inherit pname version src preConfigure nativeBuildInputs;
|
||||
inherit pname version src nativeBuildInputs;
|
||||
|
||||
configureFlags = pname;
|
||||
|
||||
|
@ -1,22 +1,32 @@
|
||||
{ stdenv, fetchFromGitHub, python }:
|
||||
{ stdenv, fetchFromGitHub, python3, python3Packages, docker, autoreconfHook, coreutils, makeWrapper, gnused, gnutar, gzip, findutils, sudo, nixosTests }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
|
||||
version = "0.12";
|
||||
version = "0.18";
|
||||
pname = "charliecloud";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "hpc";
|
||||
repo = "charliecloud";
|
||||
rev = "v${version}";
|
||||
sha256 = "177rcf1klcxsp6x9cw75cmz3y2izgd1hvi1rb9vc6iz9qx1nmk3v";
|
||||
sha256 = "0x2kvp95ld0yii93z9i0k9sknfx7jkgy4rkw9l369fl7f73ghsiq";
|
||||
};
|
||||
|
||||
buildInputs = [ python ];
|
||||
nativeBuildInputs = [ autoreconfHook makeWrapper ];
|
||||
buildInputs = [
|
||||
docker
|
||||
(python3.withPackages (ps: [ ps.lark-parser ps.requests ]))
|
||||
];
|
||||
|
||||
configureFlags = let
|
||||
pythonEnv = python3.withPackages (ps: [ ps.lark-parser ps.requests ]);
|
||||
in [
|
||||
"--with-python=${pythonEnv}/bin/python3"
|
||||
];
|
||||
|
||||
preConfigure = ''
|
||||
substituteInPlace Makefile --replace '/bin/bash' '${stdenv.shell}'
|
||||
patchShebangs test/
|
||||
substituteInPlace configure.ac --replace "/usr/bin/env" "${coreutils}/bin/env"
|
||||
'';
|
||||
|
||||
makeFlags = [
|
||||
@ -24,12 +34,16 @@ stdenv.mkDerivation rec {
|
||||
"LIBEXEC_DIR=lib/charliecloud"
|
||||
];
|
||||
|
||||
# Charliecloud calls some external system tools.
|
||||
# Here we wrap those deps so they are resolved inside nixpkgs.
|
||||
postInstall = ''
|
||||
mkdir -p $out/share/charliecloud
|
||||
mv $out/lib/charliecloud/examples $out/share/charliecloud
|
||||
mv $out/lib/charliecloud/test $out/share/charliecloud
|
||||
for file in $out/bin/* ; do \
|
||||
wrapProgram $file --prefix PATH : ${stdenv.lib.makeBinPath [ coreutils docker gnused gnutar gzip findutils sudo ]}
|
||||
done
|
||||
'';
|
||||
|
||||
passthru.tests.charliecloud = nixosTests.charliecloud;
|
||||
|
||||
meta = {
|
||||
description = "User-defined software stacks (UDSS) for high-performance computing (HPC) centers";
|
||||
longDescription = ''
|
||||
|
@ -136,8 +136,13 @@ rec {
|
||||
|
||||
extraPath = optionals (stdenv.isLinux) (makeBinPath [ iproute iptables e2fsprogs xz xfsprogs procps utillinux git ]);
|
||||
|
||||
installPhase = optionalString (stdenv.isLinux) ''
|
||||
installPhase = ''
|
||||
cd ./go/src/${goPackagePath}
|
||||
install -Dm755 ./components/cli/docker $out/libexec/docker/docker
|
||||
|
||||
makeWrapper $out/libexec/docker/docker $out/bin/docker \
|
||||
--prefix PATH : "$out/libexec/docker:$extraPath"
|
||||
'' + optionalString (stdenv.isLinux) ''
|
||||
install -Dm755 ./components/engine/bundles/dynbinary-daemon/dockerd $out/libexec/docker/dockerd
|
||||
|
||||
makeWrapper $out/libexec/docker/dockerd $out/bin/dockerd \
|
||||
@ -153,11 +158,6 @@ rec {
|
||||
# systemd
|
||||
install -Dm644 ./components/engine/contrib/init/systemd/docker.service $out/etc/systemd/system/docker.service
|
||||
'' + ''
|
||||
install -Dm755 ./components/cli/docker $out/libexec/docker/docker
|
||||
|
||||
makeWrapper $out/libexec/docker/docker $out/bin/docker \
|
||||
--prefix PATH : "$out/libexec/docker:$extraPath"
|
||||
|
||||
# completion (cli)
|
||||
installShellCompletion --bash ./components/cli/contrib/completion/bash/docker
|
||||
installShellCompletion --fish ./components/cli/contrib/completion/fish/docker.fish
|
||||
|
27
pkgs/applications/window-managers/windowchef/default.nix
Normal file
27
pkgs/applications/window-managers/windowchef/default.nix
Normal file
@ -0,0 +1,27 @@
|
||||
{ stdenv, fetchFromGitHub, libxcb, libXrandr
|
||||
, xcbutil, xcbutilkeysyms, xcbutilwm, xcbproto
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "windowchef";
|
||||
version = "0.5.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "tudurom";
|
||||
repo = "windowchef";
|
||||
rev = "v${version}";
|
||||
sha256 = "02fvb8fxnkpzb0vpbsl6rf7ssdrvw6mlm43qvl2sxq7zb88zdw96";
|
||||
};
|
||||
|
||||
buildInputs = [ libxcb libXrandr xcbutil xcbutilkeysyms xcbutilwm xcbproto];
|
||||
|
||||
makeFlags = [ "PREFIX=$(out)" ];
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "A stacking window manager that cooks windows with orders from the Waitron";
|
||||
homepage = "https://github.com/tudurom/windowchef";
|
||||
maintainers = with maintainers; [ bhougland ];
|
||||
license = licenses.isc;
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
@ -68,7 +68,17 @@ done
|
||||
|
||||
mkdir -p $out/lib/firmware
|
||||
for module in $(cat closure); do
|
||||
for i in $(modinfo -F firmware $module); do
|
||||
# for builtin modules, modinfo will reply with a wrong output looking like:
|
||||
# $ modinfo -F firmware unix
|
||||
# name: unix
|
||||
#
|
||||
# There is a pending attempt to fix this:
|
||||
# https://github.com/NixOS/nixpkgs/pull/96153
|
||||
# https://lore.kernel.org/linux-modules/20200823215433.j5gc5rnsmahpf43v@blumerang/T/#u
|
||||
#
|
||||
# For now, the workaround is just to filter out the extraneous lines out
|
||||
# of its output.
|
||||
for i in $(modinfo -b $kernel --set-version "$version" -F firmware $module | grep -v '^name:'); do
|
||||
mkdir -p "$out/lib/firmware/$(dirname "$i")"
|
||||
echo "firmware for $module: $i"
|
||||
cp "$firmware/lib/firmware/$i" "$out/lib/firmware/$i" 2>/dev/null || if test -z "$allowMissing"; then exit 1; fi
|
||||
|
@ -1,10 +1,13 @@
|
||||
{ lib, fetchurl, unzip }:
|
||||
|
||||
{ crateName
|
||||
{ crateName ? args.pname
|
||||
, pname ? null
|
||||
, version
|
||||
, sha256
|
||||
, ... } @ args:
|
||||
|
||||
assert pname == null || pname == crateName;
|
||||
|
||||
lib.overrideDerivation (fetchurl ({
|
||||
|
||||
name = "${crateName}-${version}.tar.gz";
|
||||
@ -30,6 +33,6 @@ lib.overrideDerivation (fetchurl ({
|
||||
fi
|
||||
mv "$unpackDir/$fn" "$out"
|
||||
'';
|
||||
} // removeAttrs args [ "crateName" "version" ]))
|
||||
} // removeAttrs args [ "crateName" "pname" "version" ]))
|
||||
# Hackety-hack: we actually need unzip hooks, too
|
||||
(x: {nativeBuildInputs = x.nativeBuildInputs++ [unzip];})
|
||||
|
@ -1,12 +1,12 @@
|
||||
{ lib, fetchzip }:
|
||||
|
||||
let
|
||||
version = "1.059";
|
||||
version = "1.062";
|
||||
in
|
||||
fetchzip {
|
||||
name = "recursive-${version}";
|
||||
|
||||
url = "https://github.com/arrowtype/recursive/releases/download/${version}/Recursive-${version}.zip";
|
||||
url = "https://github.com/arrowtype/recursive/releases/download/${version}/ArrowType-Recursive-${version}.zip";
|
||||
|
||||
postFetch = ''
|
||||
mkdir -p $out/share/fonts/
|
||||
@ -15,7 +15,7 @@ fetchzip {
|
||||
unzip -j $downloadedFile \*.woff2 -d $out/share/fonts/woff2
|
||||
'';
|
||||
|
||||
sha256 = "0dlv8nrcqdn5vn3s918in5ph6kx6rg607kgp66p6ibpbg2s8ljy7";
|
||||
sha256 = "06qilfa0c897shh7m7rpwia02nay8cjwnizzzba27ylzy5pwd96r";
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "https://recursive.design/";
|
||||
|
@ -30,4 +30,34 @@
|
||||
androidndk = androidComposition.ndk-bundle;
|
||||
targetAndroidndkPkgs = targetPackages.androidndkPkgs_18b;
|
||||
};
|
||||
|
||||
"21" =
|
||||
let
|
||||
ndkVersion = "21.0.6113669";
|
||||
|
||||
buildAndroidComposition = buildPackages.buildPackages.androidenv.composeAndroidPackages {
|
||||
includeNDK = true;
|
||||
inherit ndkVersion;
|
||||
};
|
||||
|
||||
androidComposition = androidenv.composeAndroidPackages {
|
||||
includeNDK = true;
|
||||
inherit ndkVersion;
|
||||
};
|
||||
in
|
||||
import ./androidndk-pkgs.nix {
|
||||
inherit (buildPackages)
|
||||
makeWrapper;
|
||||
inherit (pkgs)
|
||||
stdenv
|
||||
runCommand wrapBintoolsWith wrapCCWith;
|
||||
# buildPackages.foo rather than buildPackages.buildPackages.foo would work,
|
||||
# but for splicing messing up on infinite recursion for the variants we
|
||||
# *dont't* use. Using this workaround, but also making a test to ensure
|
||||
# these two really are the same.
|
||||
buildAndroidndk = buildAndroidComposition.ndk-bundle;
|
||||
androidndk = androidComposition.ndk-bundle;
|
||||
targetAndroidndkPkgs = targetPackages.androidndkPkgs_21;
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -6,6 +6,7 @@ let
|
||||
let files = builtins.attrNames (builtins.readDir dir);
|
||||
in map (f: dir + ("/" + f)) files;
|
||||
in {
|
||||
mkFlutter = mkFlutter;
|
||||
stable = mkFlutter rec {
|
||||
pname = "flutter";
|
||||
channel = "stable";
|
||||
|
@ -62,8 +62,15 @@ let
|
||||
endif
|
||||
DYNAMIC_GHC_PROGRAMS = ${if enableShared then "YES" else "NO"}
|
||||
INTEGER_LIBRARY = ${if enableIntegerSimple then "integer-simple" else "integer-gmp"}
|
||||
'' + stdenv.lib.optionalString (targetPlatform != hostPlatform) ''
|
||||
Stage1Only = ${if targetPlatform.system == hostPlatform.system then "NO" else "YES"}
|
||||
''
|
||||
# We only need to build stage1 on most cross-compilation because
|
||||
# we will be running the compiler on the native system. In some
|
||||
# situations, like native Musl compilation, we need the compiler
|
||||
# to actually link to our new Libc. The iOS simulator is a special
|
||||
# exception because we can’t actually run simulators binaries
|
||||
# ourselves.
|
||||
+ stdenv.lib.optionalString (targetPlatform != hostPlatform) ''
|
||||
Stage1Only = ${if (targetPlatform.system == hostPlatform.system && !targetPlatform.isiOS) then "NO" else "YES"}
|
||||
CrossCompilePrefix = ${targetPrefix}
|
||||
HADDOCK_DOCS = NO
|
||||
BUILD_SPHINX_HTML = NO
|
||||
|
@ -59,8 +59,15 @@ let
|
||||
endif
|
||||
DYNAMIC_GHC_PROGRAMS = ${if enableShared then "YES" else "NO"}
|
||||
INTEGER_LIBRARY = ${if enableIntegerSimple then "integer-simple" else "integer-gmp"}
|
||||
'' + stdenv.lib.optionalString (targetPlatform != hostPlatform) ''
|
||||
Stage1Only = ${if targetPlatform.system == hostPlatform.system then "NO" else "YES"}
|
||||
''
|
||||
# We only need to build stage1 on most cross-compilation because
|
||||
# we will be running the compiler on the native system. In some
|
||||
# situations, like native Musl compilation, we need the compiler
|
||||
# to actually link to our new Libc. The iOS simulator is a special
|
||||
# exception because we can’t actually run simulators binaries
|
||||
# ourselves.
|
||||
+ stdenv.lib.optionalString (targetPlatform != hostPlatform) ''
|
||||
Stage1Only = ${if (targetPlatform.system == hostPlatform.system && !targetPlatform.isiOS) then "NO" else "YES"}
|
||||
CrossCompilePrefix = ${targetPrefix}
|
||||
HADDOCK_DOCS = NO
|
||||
BUILD_SPHINX_HTML = NO
|
||||
|
@ -59,8 +59,15 @@ let
|
||||
endif
|
||||
DYNAMIC_GHC_PROGRAMS = ${if enableShared then "YES" else "NO"}
|
||||
INTEGER_LIBRARY = ${if enableIntegerSimple then "integer-simple" else "integer-gmp"}
|
||||
'' + stdenv.lib.optionalString (targetPlatform != hostPlatform) ''
|
||||
Stage1Only = ${if targetPlatform.system == hostPlatform.system then "NO" else "YES"}
|
||||
''
|
||||
# We only need to build stage1 on most cross-compilation because
|
||||
# we will be running the compiler on the native system. In some
|
||||
# situations, like native Musl compilation, we need the compiler
|
||||
# to actually link to our new Libc. The iOS simulator is a special
|
||||
# exception because we can’t actually run simulators binaries
|
||||
# ourselves.
|
||||
+ stdenv.lib.optionalString (targetPlatform != hostPlatform) ''
|
||||
Stage1Only = ${if (targetPlatform.system == hostPlatform.system && !targetPlatform.isiOS) then "NO" else "YES"}
|
||||
CrossCompilePrefix = ${targetPrefix}
|
||||
HADDOCK_DOCS = NO
|
||||
BUILD_SPHINX_HTML = NO
|
||||
|
@ -62,8 +62,15 @@ let
|
||||
endif
|
||||
DYNAMIC_GHC_PROGRAMS = ${if enableShared then "YES" else "NO"}
|
||||
INTEGER_LIBRARY = ${if enableIntegerSimple then "integer-simple" else "integer-gmp"}
|
||||
'' + stdenv.lib.optionalString (targetPlatform != hostPlatform) ''
|
||||
Stage1Only = ${if targetPlatform.system == hostPlatform.system then "NO" else "YES"}
|
||||
''
|
||||
# We only need to build stage1 on most cross-compilation because
|
||||
# we will be running the compiler on the native system. In some
|
||||
# situations, like native Musl compilation, we need the compiler
|
||||
# to actually link to our new Libc. The iOS simulator is a special
|
||||
# exception because we can’t actually run simulators binaries
|
||||
# ourselves.
|
||||
+ stdenv.lib.optionalString (targetPlatform != hostPlatform) ''
|
||||
Stage1Only = ${if (targetPlatform.system == hostPlatform.system && !targetPlatform.isiOS) then "NO" else "YES"}
|
||||
CrossCompilePrefix = ${targetPrefix}
|
||||
HADDOCK_DOCS = NO
|
||||
BUILD_SPHINX_HTML = NO
|
||||
|
@ -62,8 +62,15 @@ let
|
||||
endif
|
||||
DYNAMIC_GHC_PROGRAMS = ${if enableShared then "YES" else "NO"}
|
||||
INTEGER_LIBRARY = ${if enableIntegerSimple then "integer-simple" else "integer-gmp"}
|
||||
'' + stdenv.lib.optionalString (targetPlatform != hostPlatform) ''
|
||||
Stage1Only = ${if targetPlatform.system == hostPlatform.system then "NO" else "YES"}
|
||||
''
|
||||
# We only need to build stage1 on most cross-compilation because
|
||||
# we will be running the compiler on the native system. In some
|
||||
# situations, like native Musl compilation, we need the compiler
|
||||
# to actually link to our new Libc. The iOS simulator is a special
|
||||
# exception because we can’t actually run simulators binaries
|
||||
# ourselves.
|
||||
+ stdenv.lib.optionalString (targetPlatform != hostPlatform) ''
|
||||
Stage1Only = ${if (targetPlatform.system == hostPlatform.system && !targetPlatform.isiOS) then "NO" else "YES"}
|
||||
CrossCompilePrefix = ${targetPrefix}
|
||||
HADDOCK_DOCS = NO
|
||||
BUILD_SPHINX_HTML = NO
|
||||
|
@ -38,7 +38,7 @@
|
||||
, # Whether to build terminfo.
|
||||
enableTerminfo ? !stdenv.targetPlatform.isWindows
|
||||
|
||||
, version ? "8.11.20200731"
|
||||
, version ? "8.11.20200824"
|
||||
, # What flavour to build. An empty string indicates no
|
||||
# specific flavour and falls back to ghc default values.
|
||||
ghcFlavour ? stdenv.lib.optionalString (stdenv.targetPlatform != stdenv.hostPlatform)
|
||||
@ -69,7 +69,7 @@ let
|
||||
DYNAMIC_GHC_PROGRAMS = ${if enableShared then "YES" else "NO"}
|
||||
BIGNUM_BACKEND = ${if enableNativeBignum then "native" else "gmp"}
|
||||
'' + stdenv.lib.optionalString (targetPlatform != hostPlatform) ''
|
||||
Stage1Only = ${if targetPlatform.system == hostPlatform.system then "NO" else "YES"}
|
||||
Stage1Only = ${if (targetPlatform.system == hostPlatform.system && !targetPlatform.isiOS) then "NO" else "YES"}
|
||||
CrossCompilePrefix = ${targetPrefix}
|
||||
HADDOCK_DOCS = NO
|
||||
BUILD_SPHINX_HTML = NO
|
||||
@ -110,8 +110,8 @@ stdenv.mkDerivation (rec {
|
||||
|
||||
src = fetchgit {
|
||||
url = "https://gitlab.haskell.org/ghc/ghc.git/";
|
||||
rev = "380638a33691ba43fdcd2e18bca636750e5f66f1";
|
||||
sha256 = "029cgiyhddvwnx5zx31i0vgj13zsvzb8fna99zr6ifscz6x7rid1";
|
||||
rev = "3f50154591ada9064351ccec4adfe6df53ca2439";
|
||||
sha256 = "1w2p5bc74aswspzvgvrhcb95hvj5ky38rgqqjvrri19z2qyiky6d";
|
||||
};
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
@ -1,11 +1,14 @@
|
||||
{ haskellLib }:
|
||||
|
||||
let inherit (haskellLib) doJailbreak dontHaddock;
|
||||
let inherit (haskellLib) doJailbreak dontHaddock dontCheck;
|
||||
in self: super: {
|
||||
ghcjs = super.ghcjs.override {
|
||||
shelly = super.shelly_1_8_1;
|
||||
};
|
||||
ghc-api-ghcjs = super.ghc-api-ghcjs.override
|
||||
{
|
||||
happy = self.happy_1_19_5;
|
||||
};
|
||||
haddock-library-ghcjs = doJailbreak super.haddock-library-ghcjs;
|
||||
haddock-library-ghcjs = doJailbreak (dontCheck super.haddock-library-ghcjs);
|
||||
haddock-api-ghcjs = doJailbreak (dontHaddock super.haddock-api-ghcjs);
|
||||
}
|
||||
|
@ -102,7 +102,6 @@ in stdenv.mkDerivation {
|
||||
|
||||
inherit passthru;
|
||||
|
||||
meta.broken = true; # build does not succeed
|
||||
meta.platforms = lib.platforms.none; # passthru.bootPkgs.ghc.meta.platforms;
|
||||
meta.platforms = passthru.bootPkgs.ghc.meta.platforms;
|
||||
meta.maintainers = [lib.maintainers.elvishjerricco];
|
||||
}
|
||||
|
25
pkgs/development/compilers/kcc/default.nix
Normal file
25
pkgs/development/compilers/kcc/default.nix
Normal file
@ -0,0 +1,25 @@
|
||||
{ stdenv, fetchFromGitHub, cmake, bison, flex, boost }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "kcc";
|
||||
|
||||
version = "4.0.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "KnightOS";
|
||||
repo = "kcc";
|
||||
rev = version;
|
||||
sha256 = "1cd226nqbxq32mppkljavq1kb74jqfqns9r7fskszr42hbygynk4";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake bison flex ];
|
||||
|
||||
buildInputs = [ boost ];
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
homepage = "https://knightos.org/";
|
||||
description = "KnightOS C compiler";
|
||||
license = licenses.gpl2Plus;
|
||||
maintainers = with maintainers; [ siraben ];
|
||||
};
|
||||
}
|
@ -375,6 +375,7 @@ self: super: {
|
||||
tickle = dontCheck super.tickle;
|
||||
tpdb = dontCheck super.tpdb;
|
||||
translatable-intset = dontCheck super.translatable-intset;
|
||||
trifecta = if pkgs.stdenv.hostPlatform.isAarch64 then dontCheck super.trifecta else super.trifecta; # affected by this bug https://gitlab.haskell.org/ghc/ghc/-/issues/15275#note_295461
|
||||
ua-parser = dontCheck super.ua-parser;
|
||||
unagi-chan = dontCheck super.unagi-chan;
|
||||
wai-logger = dontCheck super.wai-logger;
|
||||
@ -920,7 +921,12 @@ self: super: {
|
||||
# Generate cli completions for dhall.
|
||||
dhall = generateOptparseApplicativeCompletion "dhall" super.dhall;
|
||||
dhall-json = generateOptparseApplicativeCompletions ["dhall-to-json" "dhall-to-yaml"] super.dhall-json;
|
||||
dhall-nix = generateOptparseApplicativeCompletion "dhall-to-nix" (super.dhall-nix);
|
||||
dhall-nix = generateOptparseApplicativeCompletion "dhall-to-nix" (
|
||||
super.dhall-nix.overrideScope (self: super: {
|
||||
dhall = super.dhall_1_34_0;
|
||||
repline = self.repline_0_4_0_0;
|
||||
haskeline = self.haskeline_0_8_1_0;
|
||||
}));
|
||||
|
||||
# https://github.com/haskell-hvr/netrc/pull/2#issuecomment-469526558
|
||||
netrc = doJailbreak super.netrc;
|
||||
@ -1155,13 +1161,6 @@ self: super: {
|
||||
# 2020-06-22: NOTE: QuickCheck upstreamed https://github.com/phadej/binary-instances/issues/7
|
||||
binary-instances = dontCheck super.binary-instances;
|
||||
|
||||
# Disabling the test suite lets the build succeed on older CPUs
|
||||
# that are unable to run the generated library because they
|
||||
# lack support for AES-NI, like some of our Hydra build slaves
|
||||
# do. See https://github.com/NixOS/nixpkgs/issues/81915 for
|
||||
# details.
|
||||
cryptonite = dontCheck super.cryptonite;
|
||||
|
||||
# The test suite depends on an impure cabal-install installation in
|
||||
# $HOME, which we don't have in our build sandbox.
|
||||
cabal-install-parsers = dontCheck super.cabal-install-parsers;
|
||||
@ -1333,6 +1332,12 @@ self: super: {
|
||||
# https://github.com/ennocramer/monad-dijkstra/issues/4
|
||||
monad-dijkstra = dontCheck (doJailbreak super.monad-dijkstra);
|
||||
|
||||
# Fixed upstream but not released to Hackage yet:
|
||||
# https://github.com/k0001/hs-libsodium/issues/2
|
||||
libsodium = overrideCabal super.libsodium (drv: {
|
||||
libraryToolDepends = (drv.libraryToolDepends or []) ++ [self.c2hs];
|
||||
});
|
||||
|
||||
# https://github.com/kowainik/policeman/issues/57
|
||||
policeman = doJailbreak super.policeman;
|
||||
|
||||
@ -1415,12 +1420,12 @@ self: super: {
|
||||
});
|
||||
|
||||
# Testsuite trying to run `which haskeline-examples-Test`
|
||||
haskeline_0_8_0_0 = dontCheck super.haskeline_0_8_0_0;
|
||||
haskeline_0_8_1_0 = dontCheck super.haskeline_0_8_1_0;
|
||||
|
||||
# Requires repline 0.4 which is the default only for ghc8101, override for the rest
|
||||
zre = super.zre.override {
|
||||
repline = self.repline_0_4_0_0.override {
|
||||
haskeline = self.haskeline_0_8_0_0;
|
||||
haskeline = self.haskeline_0_8_1_0;
|
||||
};
|
||||
};
|
||||
|
||||
@ -1441,26 +1446,35 @@ self: super: {
|
||||
|
||||
# Tests rely on `Int` being 64-bit: https://github.com/hspec/hspec/issues/431.
|
||||
# Also, we need QuickCheck-2.14.x to build the test suite, which isn't easy in LTS-16.x.
|
||||
# So let's not go there any just disable the tests altogether.
|
||||
# So let's not go there and just disable the tests altogether.
|
||||
hspec-core = dontCheck super.hspec-core;
|
||||
|
||||
# github.com/ucsd-progsys/liquidhaskell/issues/1729
|
||||
liquidhaskell = super.liquidhaskell.override { Diff = self.Diff_0_3_4; };
|
||||
Diff_0_3_4 = dontCheck super.Diff_0_3_4;
|
||||
|
||||
# We want the latest version of cryptonite. This is a first step towards
|
||||
# resolving https://github.com/NixOS/nixpkgs/issues/81915.
|
||||
cryptonite = self.cryptonite_0_27;
|
||||
|
||||
# INSERT NEW OVERRIDES ABOVE THIS LINE
|
||||
|
||||
} // (let
|
||||
hlsScopeOverride = self: super: {
|
||||
# haskell-language-server uses its own fork of ghcide
|
||||
# Test disabled: it seems to freeze (is it just that it takes a long time ?)
|
||||
ghcide = dontCheck self.hls-ghcide;
|
||||
ghcide = dontCheck super.hls-ghcide;
|
||||
# we are faster than stack here
|
||||
hie-bios = dontCheck self.hie-bios_0_6_2;
|
||||
lsp-test = dontCheck self.lsp-test_0_11_0_4;
|
||||
hie-bios = dontCheck super.hie-bios_0_7_0;
|
||||
lsp-test = dontCheck super.lsp-test_0_11_0_4;
|
||||
# fourmolu can‘t compile with an older aeson
|
||||
aeson = dontCheck super.aeson_1_5_2_0;
|
||||
# brittany has an aeson upper bound of 1.5
|
||||
brittany = doJailbreak super.brittany;
|
||||
};
|
||||
in {
|
||||
haskell-language-server = dontCheck (super.haskell-language-server.overrideScope hlsScopeOverride);
|
||||
# jailbreaking for hie-bios 0.7.0 (upstream PR: https://github.com/haskell/haskell-language-server/pull/357)
|
||||
haskell-language-server = dontCheck (doJailbreak (super.haskell-language-server.overrideScope hlsScopeOverride));
|
||||
hls-ghcide = dontCheck (super.hls-ghcide.overrideScope hlsScopeOverride);
|
||||
fourmolu = super.fourmolu.overrideScope hlsScopeOverride;
|
||||
}
|
||||
|
@ -62,14 +62,16 @@ self: super: {
|
||||
|
||||
# Jailbreak to fix the build.
|
||||
base-noprelude = doJailbreak super.base-noprelude;
|
||||
pandoc = doJailbreak super.pandoc;
|
||||
system-fileio = doJailbreak super.system-fileio;
|
||||
unliftio-core = doJailbreak super.unliftio-core;
|
||||
|
||||
# Use the latest version to fix the build.
|
||||
dhall = self.dhall_1_34_0;
|
||||
lens = self.lens_4_19_2;
|
||||
optics = self.optics_0_3;
|
||||
optics-core = self.optics-core_0_3_0_1;
|
||||
optics-extra = self.optics-extra_0_3;
|
||||
optics-th = self.optics-th_0_3_0_2;
|
||||
repline = self.repline_0_4_0_0;
|
||||
singletons = self.singletons_2_7;
|
||||
th-desugar = self.th-desugar_1_11;
|
||||
@ -117,4 +119,10 @@ self: super: {
|
||||
executableHaskellDepends = drv.executableToolDepends or [] ++ [ self.repline ];
|
||||
}));
|
||||
|
||||
# We want the latest version of Pandoc.
|
||||
pandoc = self.pandoc_2_10_1;
|
||||
pandoc-citeproc = self.pandoc-citeproc_0_17_0_2;
|
||||
pandoc-plot = self.pandoc-plot_0_9_2_0;
|
||||
pandoc-types = self.pandoc-types_1_21;
|
||||
|
||||
}
|
||||
|
@ -64,7 +64,7 @@ core-packages:
|
||||
#
|
||||
# WARNING: This list is generated semiautomatically based on the most recent
|
||||
# LTS package set. If you want to add entries to it, you must do so before the
|
||||
# comment saying "# LTS Haskell x.y". Any changes after that commend will be
|
||||
# comment saying "# LTS Haskell x.y". Any changes after that comment will be
|
||||
# lost the next time `update-stackage.sh` runs.
|
||||
default-package-overrides:
|
||||
# This was only intended for ghc-7.0.4, and has very old deps, one hidden behind a flag
|
||||
@ -72,7 +72,7 @@ default-package-overrides:
|
||||
# gi-gdkx11-4.x requires gtk-4.x, which is still under development and
|
||||
# not yet available in Nixpkgs
|
||||
- gi-gdkx11 < 4
|
||||
# LTS Haskell 16.10
|
||||
# LTS Haskell 16.11
|
||||
- abstract-deque ==0.3
|
||||
- abstract-par ==0.3.3
|
||||
- AC-Angle ==1.0
|
||||
@ -207,7 +207,7 @@ default-package-overrides:
|
||||
- amazonka-workspaces ==1.6.1
|
||||
- amazonka-xray ==1.6.1
|
||||
- amqp ==0.20.0
|
||||
- amqp-utils ==0.4.4.0
|
||||
- amqp-utils ==0.4.4.1
|
||||
- annotated-wl-pprint ==0.7.0
|
||||
- ansi-terminal ==0.10.3
|
||||
- ansi-wl-pprint ==0.6.9
|
||||
@ -262,7 +262,7 @@ default-package-overrides:
|
||||
- attoparsec-path ==0.0.0.1
|
||||
- audacity ==0.0.2
|
||||
- aur ==7.0.3
|
||||
- aura ==3.1.7
|
||||
- aura ==3.1.8
|
||||
- authenticate ==1.3.5
|
||||
- authenticate-oauth ==1.6.0.1
|
||||
- auto ==0.4.3.1
|
||||
@ -366,7 +366,7 @@ default-package-overrides:
|
||||
- bv ==0.5
|
||||
- bv-little ==1.1.1
|
||||
- byteable ==0.1.1
|
||||
- byte-count-reader ==0.10.0.1
|
||||
- byte-count-reader ==0.10.1.1
|
||||
- bytedump ==1.0
|
||||
- byte-order ==0.1.2.0
|
||||
- byteorder ==1.0.4
|
||||
@ -760,7 +760,7 @@ default-package-overrides:
|
||||
- extended-reals ==0.2.4.0
|
||||
- extensible-effects ==5.0.0.1
|
||||
- extensible-exceptions ==0.1.1.4
|
||||
- extra ==1.7.5
|
||||
- extra ==1.7.6
|
||||
- extractable-singleton ==0.0.1
|
||||
- extrapolate ==0.4.2
|
||||
- fail ==4.9.0.0
|
||||
@ -808,7 +808,7 @@ default-package-overrides:
|
||||
- floatshow ==0.2.4
|
||||
- flow ==1.0.21
|
||||
- flush-queue ==1.0.0
|
||||
- fmlist ==0.9.3
|
||||
- fmlist ==0.9.4
|
||||
- fmt ==0.6.1.2
|
||||
- fn ==0.3.0.2
|
||||
- focus ==1.0.1.3
|
||||
@ -1277,7 +1277,7 @@ default-package-overrides:
|
||||
- jwt ==0.10.0
|
||||
- kan-extensions ==5.2
|
||||
- kanji ==3.4.1
|
||||
- katip ==0.8.4.0
|
||||
- katip ==0.8.5.0
|
||||
- kawhi ==0.3.0
|
||||
- kazura-queue ==0.1.0.4
|
||||
- kdt ==0.2.4
|
||||
@ -1348,7 +1348,7 @@ default-package-overrides:
|
||||
- linux-file-extents ==0.2.0.0
|
||||
- linux-namespaces ==0.1.3.0
|
||||
- List ==0.6.2
|
||||
- ListLike ==4.7.1
|
||||
- ListLike ==4.7.2
|
||||
- list-predicate ==0.1.0.1
|
||||
- listsafe ==0.1.0.1
|
||||
- list-singleton ==1.0.0.4
|
||||
@ -1433,7 +1433,7 @@ default-package-overrides:
|
||||
- midi ==0.2.2.2
|
||||
- mighty-metropolis ==2.0.0
|
||||
- mime-mail ==0.5.0
|
||||
- mime-mail-ses ==0.4.1
|
||||
- mime-mail-ses ==0.4.2
|
||||
- mime-types ==0.1.0.9
|
||||
- mini-egison ==1.0.0
|
||||
- minimal-configuration ==0.1.4
|
||||
@ -1558,7 +1558,7 @@ default-package-overrides:
|
||||
- nonce ==1.0.7
|
||||
- nondeterminism ==1.4
|
||||
- non-empty ==0.3.2
|
||||
- nonempty-containers ==0.3.4.0
|
||||
- nonempty-containers ==0.3.4.1
|
||||
- nonemptymap ==0.0.6.0
|
||||
- non-empty-sequence ==0.2.0.4
|
||||
- nonempty-vector ==0.2.0.2
|
||||
@ -1613,7 +1613,7 @@ default-package-overrides:
|
||||
- options ==1.2.1.1
|
||||
- optparse-applicative ==0.15.1.0
|
||||
- optparse-generic ==1.3.1
|
||||
- optparse-simple ==0.1.1.2
|
||||
- optparse-simple ==0.1.1.3
|
||||
- optparse-text ==0.1.1.0
|
||||
- ordered-containers ==0.2.2
|
||||
- ormolu ==0.1.2.0
|
||||
@ -1859,7 +1859,7 @@ default-package-overrides:
|
||||
- regex-posix ==0.96.0.0
|
||||
- regex-tdfa ==1.3.1.0
|
||||
- regex-with-pcre ==1.1.0.0
|
||||
- registry ==0.1.9.1
|
||||
- registry ==0.1.9.3
|
||||
- reinterpret-cast ==0.1.0
|
||||
- relapse ==1.0.0.0
|
||||
- relational-query ==0.12.2.3
|
||||
@ -1902,7 +1902,7 @@ default-package-overrides:
|
||||
- safe ==0.3.19
|
||||
- safecopy ==0.10.3
|
||||
- safe-decimal ==0.2.0.0
|
||||
- safe-exceptions ==0.1.7.0
|
||||
- safe-exceptions ==0.1.7.1
|
||||
- safe-exceptions-checked ==0.1.0
|
||||
- safe-foldable ==0.1.0.0
|
||||
- safeio ==0.0.5.0
|
||||
@ -1978,7 +1978,7 @@ default-package-overrides:
|
||||
- servant-purescript ==0.10.0.0
|
||||
- servant-rawm ==0.3.2.0
|
||||
- servant-server ==0.16.2
|
||||
- servant-static-th ==0.2.3.0
|
||||
- servant-static-th ==0.2.4.0
|
||||
- servant-subscriber ==0.7.0.0
|
||||
- servant-swagger ==1.1.7.1
|
||||
- servant-swagger-ui ==0.3.4.3.23.11
|
||||
@ -2328,7 +2328,7 @@ default-package-overrides:
|
||||
- unexceptionalio-trans ==0.5.1
|
||||
- unicode ==0.0.1.1
|
||||
- unicode-show ==0.1.0.4
|
||||
- unicode-transforms ==0.3.6
|
||||
- unicode-transforms ==0.3.7
|
||||
- unification-fd ==0.10.0.1
|
||||
- union-find ==0.2
|
||||
- uniplate ==1.6.12
|
||||
@ -2395,7 +2395,7 @@ default-package-overrides:
|
||||
- vector-instances ==3.4
|
||||
- vector-mmap ==0.0.3
|
||||
- vector-rotcev ==0.1.0.0
|
||||
- vector-sized ==1.4.1.0
|
||||
- vector-sized ==1.4.2
|
||||
- vector-space ==0.16
|
||||
- vector-split ==1.0.0.2
|
||||
- vector-th-unbox ==0.2.1.7
|
||||
@ -2498,7 +2498,7 @@ default-package-overrides:
|
||||
- xss-sanitize ==0.3.6
|
||||
- xturtle ==0.2.0.0
|
||||
- xxhash-ffi ==0.2.0.0
|
||||
- yaml ==0.11.4.0
|
||||
- yaml ==0.11.5.0
|
||||
- yamlparse-applicative ==0.1.0.1
|
||||
- yesod ==1.6.1.0
|
||||
- yesod-auth ==1.6.10
|
||||
@ -2560,12 +2560,13 @@ extra-packages:
|
||||
- dbus <1 # for xmonad-0.26
|
||||
- deepseq == 1.3.0.1 # required to build Cabal with GHC 6.12.3
|
||||
- dhall == 1.29.0 # required for spago 0.14.0.
|
||||
- Diff < 0.4 # required by liquidhaskell-0.8.10.2: https://github.com/ucsd-progsys/liquidhaskell/issues/1729
|
||||
- doctemplates == 0.8 # required by pandoc-2.9.x
|
||||
- gi-gdk == 3.0.23 # required for gi-pango 1.0.23
|
||||
- gi-gtk == 3.0.35 # required for gi-pango 1.0.23
|
||||
- generic-deriving == 1.10.5.* # new versions don't compile with GHC 7.10.x
|
||||
- ghc-check == 0.3.0.1 # only version compatible with ghcide 0.2.0
|
||||
- ghc-tcplugins-extra ==0.3.2 # required for polysemy-plugin 0.2.5.0
|
||||
- gi-gdk == 3.0.23 # required for gi-pango 1.0.23
|
||||
- gi-gtk == 3.0.35 # required for gi-pango 1.0.23
|
||||
- gloss < 1.9.3 # new versions don't compile with GHC 7.8.x
|
||||
- haddock == 2.22.* # required on GHC 8.0.x
|
||||
- haddock == 2.23.* # required on GHC < 8.10.x
|
||||
@ -2579,9 +2580,9 @@ extra-packages:
|
||||
- haskell-src-exts == 1.19.* # required by hindent and structured-haskell-mode
|
||||
- hinotify == 0.3.9 # for xmonad-0.26: https://github.com/kolmodin/hinotify/issues/29
|
||||
- hoogle == 5.0.14 # required by hie-hoogle
|
||||
- hslua == 1.1.2 # required for pandoc 2.10
|
||||
- html-conduit ^>= 1.2 # pre-lts-11.x versions neeed by git-annex 6.20180227
|
||||
- http-conduit ^>= 2.2 # pre-lts-11.x versions neeed by git-annex 6.20180227
|
||||
- hslua == 1.1.2 # required for pandoc 2.10
|
||||
- inline-c < 0.6 # required on GHC 8.0.x
|
||||
- inline-c-cpp < 0.2 # required on GHC 8.0.x
|
||||
- lens-labels == 0.1.* # required for proto-lens-descriptors
|
||||
@ -2604,6 +2605,7 @@ extra-packages:
|
||||
- resourcet ==1.1.* # pre-lts-11.x versions neeed by git-annex 6.20180227
|
||||
- seqid < 0.2 # newer versions depend on transformers 0.4.x which we cannot provide in GHC 7.8.x
|
||||
- seqid-streams < 0.2 # newer versions depend on transformers 0.4.x which we cannot provide in GHC 7.8.x
|
||||
- shelly ==1.8.1 # ghcjs depends on shelly < 1.9
|
||||
- split < 0.2 # newer versions don't work with GHC 6.12.3
|
||||
- tar < 0.4.2.0 # later versions don't work with GHC < 7.6.x
|
||||
- transformers == 0.4.3.* # the latest version isn't supported by mtl yet
|
||||
@ -2756,17 +2758,26 @@ dont-distribute-packages:
|
||||
- accelerate-examples
|
||||
- accelerate-fft
|
||||
- accelerate-fourier-benchmark
|
||||
- accelerate-io-array
|
||||
- accelerate-io-bmp
|
||||
- accelerate-io-bytestring
|
||||
- accelerate-io-cereal
|
||||
- accelerate-io-JuicyPixels
|
||||
- accelerate-io-repa
|
||||
- accelerate-io-vector
|
||||
- accelerate-llvm-ptx
|
||||
- bindings-yices
|
||||
- boolector
|
||||
- ccelerate-cuda
|
||||
- containers-accelerate
|
||||
- cplex-hs
|
||||
- cuda # 2020-08-18 because of dependency nvidia-x11
|
||||
- cublas
|
||||
- cuda # 2020-08-18 because of dependency nvidia-x11
|
||||
- cufft
|
||||
- cusolver
|
||||
- cusparse
|
||||
- gloss-raster-accelerate
|
||||
- hashable-accelerate
|
||||
- libnvvm
|
||||
- matlab
|
||||
- nvvm
|
||||
@ -3670,6 +3681,7 @@ broken-packages:
|
||||
- cap
|
||||
- Capabilities
|
||||
- capability
|
||||
- capataz
|
||||
- capnp
|
||||
- capped-list
|
||||
- capri
|
||||
@ -3959,8 +3971,9 @@ broken-packages:
|
||||
- complexity
|
||||
- compose-trans
|
||||
- composite-aeson
|
||||
- composite-aeson-path
|
||||
- composite-aeson-refined
|
||||
- composite-base
|
||||
- composite-binary
|
||||
- composite-ekg
|
||||
- composite-opaleye
|
||||
- composite-swagger
|
||||
@ -4292,6 +4305,7 @@ broken-packages:
|
||||
- data-transform
|
||||
- data-type
|
||||
- data-util
|
||||
- data-validation
|
||||
- data-variant
|
||||
- database-id-groundhog
|
||||
- database-study
|
||||
@ -4415,7 +4429,6 @@ broken-packages:
|
||||
- dhall-check
|
||||
- dhall-docs
|
||||
- dhall-fly
|
||||
- dhall-nix
|
||||
- dhall-text
|
||||
- dhall-to-cabal
|
||||
- dhall-yaml
|
||||
@ -4763,6 +4776,9 @@ broken-packages:
|
||||
- EsounD
|
||||
- espial
|
||||
- ess
|
||||
- essence-of-live-coding-gloss-example
|
||||
- essence-of-live-coding-pulse-example
|
||||
- essence-of-live-coding-warp
|
||||
- estimators
|
||||
- EstProgress
|
||||
- estreps
|
||||
@ -5322,6 +5338,23 @@ broken-packages:
|
||||
- ghcprofview
|
||||
- ght
|
||||
- gi-cairo-again
|
||||
- gi-cairo-connector
|
||||
- gi-cairo-render
|
||||
- gi-dbusmenu
|
||||
- gi-dbusmenugtk3
|
||||
- gi-gdkx11
|
||||
- gi-graphene
|
||||
- gi-gsk
|
||||
- gi-gstpbutils
|
||||
- gi-gsttag
|
||||
- gi-gtk-declarative
|
||||
- gi-gtk-declarative-app-simple
|
||||
- gi-gtk-hs
|
||||
- gi-gtkosxapplication
|
||||
- gi-handy
|
||||
- gi-poppler
|
||||
- gi-wnck
|
||||
- gi-xlib
|
||||
- giak
|
||||
- Gifcurry
|
||||
- ginsu
|
||||
@ -5402,6 +5435,7 @@ broken-packages:
|
||||
- gloss-sodium
|
||||
- glpk-headers
|
||||
- glpk-hs
|
||||
- gltf-codec
|
||||
- glue
|
||||
- GLUtil
|
||||
- gmap
|
||||
@ -5793,6 +5827,7 @@ broken-packages:
|
||||
- haskell-src-exts-prisms
|
||||
- haskell-src-exts-qq
|
||||
- haskell-src-exts-sc
|
||||
- haskell-src-match
|
||||
- haskell-src-meta-mwotton
|
||||
- haskell-stack-trace-plugin
|
||||
- haskell-token-utils
|
||||
@ -5876,6 +5911,7 @@ broken-packages:
|
||||
- haskore-supercollider
|
||||
- haskore-synthesizer
|
||||
- HaskRel
|
||||
- haskseg
|
||||
- hasktorch
|
||||
- hasktorch-codegen
|
||||
- hasktorch-ffi-th
|
||||
@ -6959,6 +6995,7 @@ broken-packages:
|
||||
- jsonsql
|
||||
- jsontsv
|
||||
- jsonxlsx
|
||||
- jsop
|
||||
- jspath
|
||||
- juandelacosa
|
||||
- judge
|
||||
@ -7060,6 +7097,7 @@ broken-packages:
|
||||
- ks-test
|
||||
- KSP
|
||||
- ktx
|
||||
- ktx-codec
|
||||
- kubernetes-client
|
||||
- kubernetes-client-core
|
||||
- kuifje
|
||||
@ -7248,6 +7286,7 @@ broken-packages:
|
||||
- libconfig
|
||||
- libcspm
|
||||
- libexpect
|
||||
- libfuse3
|
||||
- libGenI
|
||||
- libhbb
|
||||
- libinfluxdb
|
||||
@ -7265,7 +7304,6 @@ broken-packages:
|
||||
- libraft
|
||||
- librandomorg
|
||||
- librato
|
||||
- libsodium
|
||||
- libssh2
|
||||
- libssh2-conduit
|
||||
- libsystemd-daemon
|
||||
@ -7324,17 +7362,6 @@ broken-packages:
|
||||
- lio-fs
|
||||
- lio-simple
|
||||
- lipsum-gen
|
||||
- liquid
|
||||
- liquid-base
|
||||
- liquid-bytestring
|
||||
- liquid-containers
|
||||
- liquid-fixpoint
|
||||
- liquid-ghc-prim
|
||||
- liquid-parallel
|
||||
- liquid-platform
|
||||
- liquid-prelude
|
||||
- liquid-vector
|
||||
- liquidhaskell
|
||||
- liquidhaskell-cabal
|
||||
- Liquorice
|
||||
- list-fusion-probe
|
||||
@ -7403,6 +7430,7 @@ broken-packages:
|
||||
- log4hs
|
||||
- logentries
|
||||
- logger
|
||||
- logging-effect
|
||||
- logging-effect-extra
|
||||
- logging-effect-extra-file
|
||||
- logging-effect-extra-handler
|
||||
@ -7475,6 +7503,7 @@ broken-packages:
|
||||
- lye
|
||||
- Lykah
|
||||
- lz4-conduit
|
||||
- lz4-frame-conduit
|
||||
- lzma-enumerator
|
||||
- lzma-streams
|
||||
- lzo
|
||||
@ -7691,6 +7720,7 @@ broken-packages:
|
||||
- ministg
|
||||
- minst-idx
|
||||
- mios
|
||||
- MIP
|
||||
- mirror-tweet
|
||||
- misfortune
|
||||
- miso-action-logger
|
||||
@ -7733,6 +7763,7 @@ broken-packages:
|
||||
- monad-atom
|
||||
- monad-atom-simple
|
||||
- monad-branch
|
||||
- monad-classes-logging
|
||||
- monad-exception
|
||||
- monad-finally
|
||||
- monad-fork
|
||||
@ -7922,6 +7953,7 @@ broken-packages:
|
||||
- mvc
|
||||
- mvc-updates
|
||||
- mvclient
|
||||
- mwc-probability-transition
|
||||
- mwc-random-accelerate
|
||||
- mxnet
|
||||
- mxnet-dataiter
|
||||
@ -8605,6 +8637,7 @@ broken-packages:
|
||||
- polydata
|
||||
- polydata-core
|
||||
- polynomial
|
||||
- polysemy-http
|
||||
- polysemy-optics
|
||||
- polysemy-RandomFu
|
||||
- polysemy-webserver
|
||||
@ -8702,6 +8735,7 @@ broken-packages:
|
||||
- pretty-ghci
|
||||
- pretty-ncols
|
||||
- prettyprinter-graphviz
|
||||
- prettyprinter-lucid
|
||||
- prettyprinter-vty
|
||||
- preview
|
||||
- prim
|
||||
@ -9257,6 +9291,7 @@ broken-packages:
|
||||
- ruler
|
||||
- ruler-core
|
||||
- rungekutta
|
||||
- runhs
|
||||
- runmany
|
||||
- runtime-arbitrary
|
||||
- rvar
|
||||
@ -9530,6 +9565,7 @@ broken-packages:
|
||||
- shadower
|
||||
- shake-bindist
|
||||
- shake-cabal-build
|
||||
- shake-dhall
|
||||
- shake-extras
|
||||
- shake-minify
|
||||
- shake-pack
|
||||
@ -9805,6 +9841,7 @@ broken-packages:
|
||||
- spanout
|
||||
- sparkle
|
||||
- sparrow
|
||||
- spars
|
||||
- sparse
|
||||
- sparse-lin-alg
|
||||
- sparsebit
|
||||
@ -10045,6 +10082,7 @@ broken-packages:
|
||||
- superconstraints
|
||||
- superevent
|
||||
- supermonad
|
||||
- supernova
|
||||
- supero
|
||||
- supervisor
|
||||
- supervisors
|
||||
@ -10218,7 +10256,6 @@ broken-packages:
|
||||
- termbox-bindings
|
||||
- terminal-text
|
||||
- termination-combinators
|
||||
- termonad
|
||||
- termplot
|
||||
- terntup
|
||||
- terrahs
|
||||
@ -10656,6 +10693,7 @@ broken-packages:
|
||||
- uri-parse
|
||||
- uri-template
|
||||
- uri-templater
|
||||
- url-bytes
|
||||
- url-decoders
|
||||
- url-generic
|
||||
- URLb
|
||||
|
2042
pkgs/development/haskell-modules/hackage-packages.nix
generated
2042
pkgs/development/haskell-modules/hackage-packages.nix
generated
File diff suppressed because it is too large
Load Diff
@ -7,13 +7,13 @@ let
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "mimalloc";
|
||||
version = "1.6.3";
|
||||
version = "1.6.4";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "microsoft";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "0hk30adrm0s1g5flfaqfr3lc72y3hlmhqnyrqd7p0y91rsaw86b9";
|
||||
sha256 = "0b6ymi2a9is2q6n49dvlnjxknikj0rfff5ygbc4n7894h5mllvvr";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake ninja ];
|
||||
|
@ -14,7 +14,7 @@
|
||||
, lldbVersions ? [ ]
|
||||
, cmakeVersions ? [ ]
|
||||
, includeNDK ? false
|
||||
, ndkVersion ? "18.1.5063045"
|
||||
, ndkVersion ? "21.0.6113669"
|
||||
, useGoogleAPIs ? false
|
||||
, useGoogleTVAddOns ? false
|
||||
, includeExtras ? []
|
||||
|
@ -672,70 +672,6 @@
|
||||
};
|
||||
|
||||
|
||||
"extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-alpha4" = {
|
||||
name = "extras-m2repository-com-android-support-constraint-constraint-layout-solver-1.0.0-alpha4";
|
||||
path = "extras/m2repository/com/android/support/constraint/constraint-layout-solver/1.0.0-alpha4";
|
||||
revision = "1";
|
||||
displayName = "com.android.support.constraint:constraint-layout-solver:1.0.0-alpha4";
|
||||
archives = {
|
||||
|
||||
all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/com.android.support.constraint-constraint-layout-solver-1.0.0-alpha4.zip";
|
||||
sha1 = "2aa2aceecc6ba172742d0af0b43f11d03924eeb8";
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
"extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-alpha4" = {
|
||||
name = "extras-m2repository-com-android-support-constraint-constraint-layout-solver-1.0.0-alpha4";
|
||||
path = "extras/m2repository/com/android/support/constraint/constraint-layout-solver/1.0.0-alpha4";
|
||||
revision = "1";
|
||||
displayName = "com.android.support.constraint:constraint-layout-solver:1.0.0-alpha4";
|
||||
archives = {
|
||||
|
||||
all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/com.android.support.constraint-constraint-layout-solver-1.0.0-alpha4.zip";
|
||||
sha1 = "2aa2aceecc6ba172742d0af0b43f11d03924eeb8";
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
"extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-alpha4" = {
|
||||
name = "extras-m2repository-com-android-support-constraint-constraint-layout-solver-1.0.0-alpha4";
|
||||
path = "extras/m2repository/com/android/support/constraint/constraint-layout-solver/1.0.0-alpha4";
|
||||
revision = "1";
|
||||
displayName = "com.android.support.constraint:constraint-layout-solver:1.0.0-alpha4";
|
||||
archives = {
|
||||
|
||||
all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/com.android.support.constraint-constraint-layout-solver-1.0.0-alpha4.zip";
|
||||
sha1 = "2aa2aceecc6ba172742d0af0b43f11d03924eeb8";
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
"extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-alpha8" = {
|
||||
name = "extras-m2repository-com-android-support-constraint-constraint-layout-solver-1.0.0-alpha8";
|
||||
path = "extras/m2repository/com/android/support/constraint/constraint-layout-solver/1.0.0-alpha8";
|
||||
revision = "1";
|
||||
displayName = "Solver for ConstraintLayout 1.0.0-alpha8";
|
||||
archives = {
|
||||
|
||||
all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/com.android.support.constraint-constraint-layout-solver-1.0.0-alpha8.zip";
|
||||
sha1 = "cd13d16a8f0198c1d6040ec8b1d0d4e5bb7feb6a";
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
"extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.0-alpha8" = {
|
||||
name = "extras-m2repository-com-android-support-constraint-constraint-layout-solver-1.0.0-alpha8";
|
||||
path = "extras/m2repository/com/android/support/constraint/constraint-layout-solver/1.0.0-alpha8";
|
||||
@ -896,70 +832,6 @@
|
||||
};
|
||||
|
||||
|
||||
"extras;m2repository;com;android;support;constraint;constraint-layout;1.0.0-alpha4" = {
|
||||
name = "extras-m2repository-com-android-support-constraint-constraint-layout-1.0.0-alpha4";
|
||||
path = "extras/m2repository/com/android/support/constraint/constraint-layout/1.0.0-alpha4";
|
||||
revision = "1";
|
||||
displayName = "com.android.support.constraint:constraint-layout:1.0.0-alpha4";
|
||||
archives = {
|
||||
|
||||
all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/com.android.support.constraint-constraint-layout-1.0.0-alpha4.zip";
|
||||
sha1 = "645a9be1f0c1177301e71cd0ddccf1dd67c554fe";
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
"extras;m2repository;com;android;support;constraint;constraint-layout;1.0.0-alpha4" = {
|
||||
name = "extras-m2repository-com-android-support-constraint-constraint-layout-1.0.0-alpha4";
|
||||
path = "extras/m2repository/com/android/support/constraint/constraint-layout/1.0.0-alpha4";
|
||||
revision = "1";
|
||||
displayName = "com.android.support.constraint:constraint-layout:1.0.0-alpha4";
|
||||
archives = {
|
||||
|
||||
all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/com.android.support.constraint-constraint-layout-1.0.0-alpha4.zip";
|
||||
sha1 = "645a9be1f0c1177301e71cd0ddccf1dd67c554fe";
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
"extras;m2repository;com;android;support;constraint;constraint-layout;1.0.0-alpha4" = {
|
||||
name = "extras-m2repository-com-android-support-constraint-constraint-layout-1.0.0-alpha4";
|
||||
path = "extras/m2repository/com/android/support/constraint/constraint-layout/1.0.0-alpha4";
|
||||
revision = "1";
|
||||
displayName = "com.android.support.constraint:constraint-layout:1.0.0-alpha4";
|
||||
archives = {
|
||||
|
||||
all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/com.android.support.constraint-constraint-layout-1.0.0-alpha4.zip";
|
||||
sha1 = "645a9be1f0c1177301e71cd0ddccf1dd67c554fe";
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
"extras;m2repository;com;android;support;constraint;constraint-layout;1.0.0-alpha8" = {
|
||||
name = "extras-m2repository-com-android-support-constraint-constraint-layout-1.0.0-alpha8";
|
||||
path = "extras/m2repository/com/android/support/constraint/constraint-layout/1.0.0-alpha8";
|
||||
revision = "1";
|
||||
displayName = "ConstraintLayout for Android 1.0.0-alpha8";
|
||||
archives = {
|
||||
|
||||
all = fetchurl {
|
||||
url = "https://dl.google.com/android/repository/com.android.support.constraint-constraint-layout-1.0.0-alpha8.zip";
|
||||
sha1 = "7912ba03b04831f918f523648f118c4ee4da7604";
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
"extras;m2repository;com;android;support;constraint;constraint-layout;1.0.0-alpha8" = {
|
||||
name = "extras-m2repository-com-android-support-constraint-constraint-layout-1.0.0-alpha8";
|
||||
path = "extras/m2repository/com/android/support/constraint/constraint-layout/1.0.0-alpha8";
|
||||
|
@ -7,12 +7,14 @@ deployAndroidPackage {
|
||||
inherit package os;
|
||||
buildInputs = [ autoPatchelfHook makeWrapper pkgs.python2 ]
|
||||
++ lib.optional (os == "linux") [ pkgs.glibc pkgs.stdenv.cc.cc pkgs.ncurses5 pkgs.zlib pkgs.libcxx.out ];
|
||||
patchInstructions = lib.optionalString (os == "linux") ''
|
||||
patchInstructions = lib.optionalString (os == "linux") (''
|
||||
patchShebangs .
|
||||
|
||||
'' + lib.optionalString (builtins.compareVersions (lib.getVersion package) "21" > 0) ''
|
||||
patch -p1 \
|
||||
--no-backup-if-mismatch < ${./make_standalone_toolchain.py_18.patch}
|
||||
wrapProgram $(pwd)/build/tools/make_standalone_toolchain.py --prefix PATH : "${runtime_paths}"
|
||||
'' + ''
|
||||
|
||||
# TODO: allow this stuff
|
||||
rm -rf docs tests
|
||||
@ -46,6 +48,6 @@ deployAndroidPackage {
|
||||
do
|
||||
ln -sf ../libexec/android-sdk/ndk-bundle/$i $out/bin/$i
|
||||
done
|
||||
'';
|
||||
'');
|
||||
noAuditTmpdir = true; # Audit script gets invoked by the build/ component in the path for the make standalone script
|
||||
}
|
||||
|
22
pkgs/development/ocaml-modules/cohttp/async.nix
Normal file
22
pkgs/development/ocaml-modules/cohttp/async.nix
Normal file
@ -0,0 +1,22 @@
|
||||
{ stdenv, buildDunePackage, async, cohttp, conduit-async, uri, ppx_sexp_conv
|
||||
, logs, magic-mime }:
|
||||
|
||||
if !stdenv.lib.versionAtLeast cohttp.version "0.99" then
|
||||
cohttp
|
||||
else if !stdenv.lib.versionAtLeast async.version "0.13" then
|
||||
throw "cohttp-async needs async-0.13 (hence OCaml >= 4.08)"
|
||||
else
|
||||
|
||||
buildDunePackage {
|
||||
pname = "cohttp-async";
|
||||
useDune2 = true;
|
||||
inherit (cohttp) version src;
|
||||
|
||||
buildInputs = [ ppx_sexp_conv ];
|
||||
|
||||
propagatedBuildInputs = [ async cohttp conduit-async logs magic-mime uri ];
|
||||
|
||||
meta = cohttp.meta // {
|
||||
description = "CoHTTP implementation for the Async concurrency library";
|
||||
};
|
||||
}
|
19
pkgs/development/ocaml-modules/conduit/async.nix
Normal file
19
pkgs/development/ocaml-modules/conduit/async.nix
Normal file
@ -0,0 +1,19 @@
|
||||
{ stdenv, buildDunePackage, async, async_ssl, ppx_sexp_conv, conduit }:
|
||||
|
||||
if !stdenv.lib.versionAtLeast conduit.version "1.0"
|
||||
then conduit
|
||||
else
|
||||
|
||||
buildDunePackage {
|
||||
pname = "conduit-async";
|
||||
useDune2 = true;
|
||||
inherit (conduit) version src;
|
||||
|
||||
buildInputs = [ ppx_sexp_conv ];
|
||||
|
||||
propagatedBuildInputs = [ async async_ssl conduit ];
|
||||
|
||||
meta = conduit.meta // {
|
||||
description = "A network connection establishment library for Async";
|
||||
};
|
||||
}
|
@ -18,7 +18,7 @@ buildDunePackage rec {
|
||||
propagatedBuildInputs = [ astring ipaddr ipaddr-sexp sexplib uri ];
|
||||
|
||||
meta = {
|
||||
description = "Network connection library for TCP and SSL";
|
||||
description = "A network connection establishment library";
|
||||
license = stdenv.lib.licenses.isc;
|
||||
maintainers = with stdenv.lib.maintainers; [ alexfmpe vbgl ];
|
||||
homepage = "https://github.com/mirage/ocaml-conduit";
|
||||
|
@ -14,11 +14,11 @@ else
|
||||
stdenv.mkDerivation rec
|
||||
{
|
||||
pname = "eliom";
|
||||
version = "6.12.0";
|
||||
version = "6.12.1";
|
||||
|
||||
src = fetchzip {
|
||||
url = "https://github.com/ocsigen/eliom/archive/${version}.tar.gz";
|
||||
sha256 = "015jh72v6ch9h9czd8sn5kjz3pv6lsnvvnhdjgrplwj443dn1xp8";
|
||||
sha256 = "04c1sz113015gyhj3w7flw7l4bv0v50q6n04kk8dybcravzy2xgx";
|
||||
};
|
||||
|
||||
buildInputs = [ ocaml which findlib js_of_ocaml-ocamlbuild js_of_ocaml-ppx_deriving_json opaline
|
||||
|
@ -1,5 +1,6 @@
|
||||
{ janePackage
|
||||
, ctypes
|
||||
, dune-configurator
|
||||
, num
|
||||
, octavius
|
||||
, ppxlib
|
||||
@ -417,6 +418,15 @@ rec {
|
||||
propagatedBuildInputs = [ async shell ];
|
||||
};
|
||||
|
||||
async_ssl = janePackage {
|
||||
pname = "async_ssl";
|
||||
useDune2 = true;
|
||||
hash = "0z5dbiam5k7ipx9ph4r8nqv0a1ldx1ymxw3xjxgrdjda90lmwf2k";
|
||||
meta.description = "Async wrappers for SSL";
|
||||
buildInputs = [ dune-configurator ];
|
||||
propagatedBuildInputs = [ async ctypes openssl ];
|
||||
};
|
||||
|
||||
core_bench = janePackage {
|
||||
pname = "core_bench";
|
||||
hash = "1nk0i3z8rqrljbf4bc7ljp71g0a4361nh85s2ang0lgxri74zacm";
|
||||
|
@ -7,7 +7,7 @@
|
||||
, requests_download
|
||||
, zipfile36
|
||||
, pythonOlder
|
||||
, pytest_4
|
||||
, pytest
|
||||
, testpath
|
||||
, responses
|
||||
, pytoml
|
||||
@ -39,7 +39,7 @@ buildPythonPackage rec {
|
||||
zipfile36
|
||||
];
|
||||
|
||||
checkInputs = [ pytest_4 testpath responses ];
|
||||
checkInputs = [ pytest testpath responses ];
|
||||
|
||||
# Disable test that needs some ini file.
|
||||
# Disable test that wants hg
|
||||
|
@ -4,11 +4,11 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "google-api-python-client";
|
||||
version = "1.10.1";
|
||||
version = "1.11.0";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "0v4yzrmrp1l3nlkw9ibllgblwy8y45anzfkkky2vghkl6w8411xa";
|
||||
sha256 = "0yxrz897kpjypfqzcy0ry90hc34w47q4fzqidp81h6pg01c03x6a";
|
||||
};
|
||||
|
||||
# No tests included in archive
|
||||
|
@ -0,0 +1,31 @@
|
||||
{ lib
|
||||
, buildPythonPackage
|
||||
, fetchPypi
|
||||
, pythonOlder
|
||||
, jupyterhub
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "jupyterhub-tmpauthenticator";
|
||||
version = "0.6";
|
||||
disabled = pythonOlder "3.5";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "064x1ypxwx1l270ic97p8czbzb7swl9758v40k3w2gaqf9762f0l";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [ jupyterhub ];
|
||||
|
||||
# No tests available in the package
|
||||
doCheck = false;
|
||||
|
||||
pythonImportsCheck = [ "tmpauthenticator" ];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Simple Jupyterhub authenticator that allows anyone to log in.";
|
||||
license = with licenses; [ bsd3 ];
|
||||
homepage = "https://github.com/jupyterhub/tmpauthenticator";
|
||||
maintainers = with maintainers; [ chiroptical ];
|
||||
};
|
||||
}
|
@ -4,11 +4,11 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "mautrix";
|
||||
version = "0.6.1";
|
||||
version = "0.5.8";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "a86c6448fb3c0f5e149f3347fbf0cd776431aec16a137a9b45298b6fe5991e42";
|
||||
sha256 = "1hqg32n7pmjhap0ybfcf05zgfcyyirb4fm1m7gf44dwh40da6qz0";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [
|
||||
|
@ -11,11 +11,11 @@ let
|
||||
ft = freetype.overrideAttrs (oldArgs: { dontDisableStatic = true; });
|
||||
in buildPythonPackage rec {
|
||||
pname = "reportlab";
|
||||
version = "3.5.47";
|
||||
version = "3.5.48";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "0gw0902yjszwxk0air69in7nk4h2q36r96ga3r4bz0p0cnmagcj5";
|
||||
sha256 = "0bfe3fe6e1bd1d922f83683eae2ba1d2d29de94e25fb115eacca9530b4b02f76";
|
||||
};
|
||||
|
||||
checkInputs = [ glibcLocales ];
|
||||
|
28
pkgs/development/python-modules/ujson/2.nix
Normal file
28
pkgs/development/python-modules/ujson/2.nix
Normal file
@ -0,0 +1,28 @@
|
||||
{ stdenv
|
||||
, buildPythonPackage
|
||||
, fetchPypi
|
||||
, setuptools_scm
|
||||
, pytestCheckHook
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "ujson";
|
||||
version = "2.0.3";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "18z9gb9ggy1r464b9q1gqs078mqgrkj6dys5a47529rqk3yfybdx";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ setuptools_scm ];
|
||||
|
||||
checkInputs = [
|
||||
pytestCheckHook
|
||||
];
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
homepage = "https://pypi.python.org/pypi/ujson";
|
||||
description = "Ultra fast JSON encoder and decoder for Python";
|
||||
license = licenses.bsd3;
|
||||
};
|
||||
}
|
@ -8,11 +8,11 @@ let
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "coursier";
|
||||
version = "2.0.0-RC6-18";
|
||||
version = "2.0.0-RC6-25";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/coursier/coursier/releases/download/v${version}/coursier";
|
||||
sha256 = "0vym99fyn0g8l5y2zvhf73ww17wywrh503wg5aw4nilj8w1ncvn2";
|
||||
sha256 = "0hkkfm18v2hvkf344ln9ka8gi3jdl6bvqpafc6h06f06vmp8prch";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
|
@ -18,8 +18,8 @@ mkDerivation {
|
||||
version = "0.2.0";
|
||||
src = fetchgit {
|
||||
url = "https://github.com/wz1000/ghcide";
|
||||
sha256 = "1zq7ngaak8il91a309rl51dghzasnk4m2sm3av6d93cyqyra1hfc";
|
||||
rev = "078e3d3c0d319f83841ccbcdc60ff5f0e243f6be";
|
||||
sha256 = "112bsk2660750n94gnsgrvd30rk0ccxb8dbhka606a11pcqv5cgx";
|
||||
rev = "3f6cd4553279ec47d1599b502720791a4f4613cd";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
isLibrary = true;
|
||||
|
26
pkgs/development/tools/misc/kimg/default.nix
Normal file
26
pkgs/development/tools/misc/kimg/default.nix
Normal file
@ -0,0 +1,26 @@
|
||||
{ stdenv, fetchFromGitHub, cmake, asciidoc, pkg-config, imagemagick }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "kimg";
|
||||
version = "0.3.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "KnightOS";
|
||||
repo = "kimg";
|
||||
rev = version;
|
||||
sha256 = "00gj420m0jvhgm8kkslw8r69nl7r73bxrh6gqs2mx16ymcpkanpk";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake asciidoc pkg-config ];
|
||||
|
||||
buildInputs = [ imagemagick ];
|
||||
|
||||
hardeningDisable = [ "format" ];
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
homepage = "https://knightos.org/";
|
||||
description = "Converts image formats supported by ImageMagick to the KnightOS image format";
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [ siraben ];
|
||||
};
|
||||
}
|
@ -1,7 +1,7 @@
|
||||
{ stdenv, buildGoPackage, fetchFromGitHub }:
|
||||
buildGoPackage rec {
|
||||
pname = "packer";
|
||||
version = "1.6.1";
|
||||
version = "1.6.2";
|
||||
|
||||
goPackagePath = "github.com/hashicorp/packer";
|
||||
|
||||
@ -11,7 +11,7 @@ buildGoPackage rec {
|
||||
owner = "hashicorp";
|
||||
repo = "packer";
|
||||
rev = "v${version}";
|
||||
sha256 = "0jm8950rk0cdf84z0yxm8ic3pm353cgmxr1akn6kq1bwg2w0vsrq";
|
||||
sha256 = "104jw2jcshzds74d7m4yqn6mbk7lgps6qnqmp6h395b1mdyjhink";
|
||||
};
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
|
1283
pkgs/development/tools/rust/cargo-make/Cargo.lock
generated
1283
pkgs/development/tools/rust/cargo-make/Cargo.lock
generated
File diff suppressed because it is too large
Load Diff
@ -1,32 +1,22 @@
|
||||
{ stdenv, fetchurl, runCommand, fetchFromGitHub, rustPlatform, Security, openssl, pkg-config
|
||||
{ stdenv, fetchurl, runCommand, fetchCrate, rustPlatform, Security, openssl, pkg-config
|
||||
, SystemConfiguration
|
||||
}:
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "cargo-make";
|
||||
version = "0.32.2";
|
||||
version = "0.32.3";
|
||||
|
||||
src =
|
||||
let
|
||||
source = fetchFromGitHub {
|
||||
owner = "sagiegurari";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "0l0pislc7pgx1m68kirvadraq88c86mm1k46wbz3a47ph2d4g912";
|
||||
};
|
||||
in
|
||||
runCommand "source" {} ''
|
||||
cp -R ${source} $out
|
||||
chmod +w $out
|
||||
cp ${./Cargo.lock} $out/Cargo.lock
|
||||
'';
|
||||
src = fetchCrate {
|
||||
inherit pname version;
|
||||
sha256 = "0qcwhmba83rrwqnlkcmvnmbj9jb2bwm0mka8rcp26y4yxmjm431n";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ pkg-config ];
|
||||
|
||||
buildInputs = [ openssl ]
|
||||
++ stdenv.lib.optionals stdenv.isDarwin [ Security SystemConfiguration ];
|
||||
|
||||
cargoSha256 = "16ygkh8sbb37nfc41shxg9nh2mbszyschbqrrr1gr7xzf1z36ipp";
|
||||
cargoSha256 = "1dmcdzdm7kzmrq2xsiaikns2xzjpdmh9w8pw653nlqfjjr2h6pxp";
|
||||
|
||||
# Some tests fail because they need network access.
|
||||
# However, Travis ensures a proper build.
|
||||
|
35
pkgs/development/tools/wxformbuilder/default.nix
Normal file
35
pkgs/development/tools/wxformbuilder/default.nix
Normal file
@ -0,0 +1,35 @@
|
||||
{ stdenv
|
||||
, fetchFromGitHub
|
||||
, wxGTK31
|
||||
, meson
|
||||
, ninja
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
pname = "wxFormBuilder";
|
||||
version = "unstable-2020-08-18";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "wxFormBuilder";
|
||||
repo = "wxFormBuilder";
|
||||
rev = "d053665cc33a79dd935b518b5e7aea6baf493c92";
|
||||
sha256 = "sha256-hTO7Fyp5ZWpq2CfIYEXB85oOkNrqr6Njfh8h0t9B6wU=";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
ninja
|
||||
meson
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
wxGTK31
|
||||
];
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "RAD tool for wxWidgets GUI design";
|
||||
homepage = "https://github.com/wxFormBuilder/wxFormBuilder";
|
||||
license = licenses.gpl2;
|
||||
maintainers = with maintainers; [ matthuszagh ];
|
||||
};
|
||||
}
|
@ -1,123 +0,0 @@
|
||||
diff -aur exult-1.4.9rc1.orig/desktop/exult.desktop exult-1.4.9rc1/desktop/exult.desktop
|
||||
--- exult-1.4.9rc1.orig/desktop/exult.desktop 2008-07-11 05:41:06.000000000 +0600
|
||||
+++ exult-1.4.9rc1/desktop/exult.desktop 2012-05-19 13:15:30.616084585 +0600
|
||||
@@ -1,9 +1,8 @@
|
||||
[Desktop Entry]
|
||||
-Encoding=UTF-8
|
||||
Name=Exult
|
||||
Comment=Exult Ultima 7 Engine
|
||||
Exec=exult
|
||||
-Icon=exult.png
|
||||
+Icon=exult
|
||||
Terminal=false
|
||||
Type=Application
|
||||
-Categories=Application;Game;RolePlaying;
|
||||
+Categories=Game;RolePlaying;
|
||||
diff -aur exult-1.4.9rc1.orig/files/databuf.h exult-1.4.9rc1/files/databuf.h
|
||||
--- exult-1.4.9rc1.orig/files/databuf.h 2010-03-10 09:07:05.000000000 +0500
|
||||
+++ exult-1.4.9rc1/files/databuf.h 2012-05-19 12:50:16.856076030 +0600
|
||||
@@ -18,6 +18,7 @@
|
||||
#define DATA_H
|
||||
|
||||
#include <cstdio>
|
||||
+#include <cstddef>
|
||||
#include <cstring>
|
||||
#include <cassert>
|
||||
#include <fstream>
|
||||
diff -aur exult-1.4.9rc1.orig/files/U7obj.h exult-1.4.9rc1/files/U7obj.h
|
||||
--- exult-1.4.9rc1.orig/files/U7obj.h 2010-02-25 07:52:07.000000000 +0500
|
||||
+++ exult-1.4.9rc1/files/U7obj.h 2012-05-19 12:50:35.916076137 +0600
|
||||
@@ -26,6 +26,7 @@
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <cstring>
|
||||
+#include <cstddef>
|
||||
#include "common_types.h"
|
||||
#include "utils.h"
|
||||
|
||||
diff -aur exult-1.4.9rc1.orig/imagewin/manip.h exult-1.4.9rc1/imagewin/manip.h
|
||||
--- exult-1.4.9rc1.orig/imagewin/manip.h 2010-08-29 20:26:00.000000000 +0600
|
||||
+++ exult-1.4.9rc1/imagewin/manip.h 2012-05-19 13:02:45.159413596 +0600
|
||||
@@ -319,7 +319,7 @@
|
||||
static uintD copy(uintS src)
|
||||
{
|
||||
unsigned int r, g, b;
|
||||
- split_source(src,r,g,b);
|
||||
+ ManipBaseSrc<color_s,color_d>::split_source(src,r,g,b);
|
||||
return ManipBaseDest<color_d>::rgb(r,g,b);
|
||||
}
|
||||
static void copy(uintD& dest, uintS src)
|
||||
diff -aur exult-1.4.9rc1.orig/istring.h exult-1.4.9rc1/istring.h
|
||||
--- exult-1.4.9rc1.orig/istring.h 2005-06-07 15:55:39.000000000 +0600
|
||||
+++ exult-1.4.9rc1/istring.h 2012-05-19 13:01:14.886079750 +0600
|
||||
@@ -162,19 +162,19 @@
|
||||
|
||||
_Myt& operator+=(const _Myt& _Right)
|
||||
{ // append _Right
|
||||
- append(_Right);
|
||||
+ this->append(_Right);
|
||||
return (*this);
|
||||
}
|
||||
|
||||
_Myt& operator+=(const _Elem *_Ptr)
|
||||
{ // append [_Ptr, <null>)
|
||||
- append(_Ptr);
|
||||
+ this->append(_Ptr);
|
||||
return (*this);
|
||||
}
|
||||
|
||||
_Myt& operator+=(_Elem _Ch)
|
||||
{ // append 1 * _Ch
|
||||
- append(static_cast<size_type>(1), _Ch);
|
||||
+ this->append(static_cast<size_type>(1), _Ch);
|
||||
return (*this);
|
||||
}
|
||||
|
||||
diff -aur exult-1.4.9rc1.orig/shapes/pngio.cc exult-1.4.9rc1/shapes/pngio.cc
|
||||
--- exult-1.4.9rc1.orig/shapes/pngio.cc 2010-02-15 18:48:11.000000000 -0200
|
||||
+++ exult-1.4.9rc1/shapes/pngio.cc 2013-09-22 20:56:37.809763588 -0300
|
||||
@@ -26,6 +26,7 @@
|
||||
#ifdef HAVE_CONFIG_H
|
||||
# include <config.h>
|
||||
#endif
|
||||
+#include <string.h>
|
||||
|
||||
#ifdef HAVE_PNG_H
|
||||
|
||||
@@ -79,7 +80,7 @@
|
||||
}
|
||||
// Allocate info. structure.
|
||||
png_infop info = png_create_info_struct(png);
|
||||
- if (setjmp(png->jmpbuf)) // Handle errors.
|
||||
+ if (setjmp(png_jmpbuf(png))) // Handle errors.
|
||||
{
|
||||
png_destroy_read_struct(&png, &info, 0);
|
||||
fclose(fp);
|
||||
@@ -208,7 +209,7 @@
|
||||
}
|
||||
// Allocate info. structure.
|
||||
png_infop info = png_create_info_struct(png);
|
||||
- if (setjmp(png->jmpbuf)) // Handle errors.
|
||||
+ if (setjmp(png_jmpbuf(png))) // Handle errors.
|
||||
{
|
||||
png_destroy_write_struct(&png, &info);
|
||||
fclose(fp);
|
||||
@@ -306,7 +307,7 @@
|
||||
}
|
||||
// Allocate info. structure.
|
||||
png_infop info = png_create_info_struct(png);
|
||||
- if (setjmp(png->jmpbuf)) // Handle errors.
|
||||
+ if (setjmp(png_jmpbuf(png))) // Handle errors.
|
||||
{
|
||||
png_destroy_read_struct(&png, &info, 0);
|
||||
fclose(fp);
|
||||
@@ -395,7 +396,7 @@
|
||||
}
|
||||
// Allocate info. structure.
|
||||
png_infop info = png_create_info_struct(png);
|
||||
- if (setjmp(png->jmpbuf)) // Handle errors.
|
||||
+ if (setjmp(png_jmpbuf(png))) // Handle errors.
|
||||
{
|
||||
png_destroy_write_struct(&png, &info);
|
||||
fclose(fp);
|
||||
|
@ -1,4 +1,4 @@
|
||||
{ stdenv, fetchurl, pkgconfig, SDL, libogg, libvorbis, zlib, unzip }:
|
||||
{ stdenv, fetchurl, pkgconfig, SDL2, libogg, libvorbis, zlib, unzip }:
|
||||
|
||||
let
|
||||
|
||||
@ -12,27 +12,20 @@ let
|
||||
in
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "exult-1.4.9rc1";
|
||||
name = "exult-1.6";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://sourceforge/exult/${name}.tar.gz";
|
||||
sha256 = "0a03a2l3ji6h48n106d4w55l8v6lni1axniafnvvv5c5n3nz5bgd";
|
||||
sha256 = "1dm27qkxj30567zb70q4acddsizn0xyi3z87hg7lysxdkyv49s3s";
|
||||
};
|
||||
|
||||
configureFlags = [ "--disable-tools" ];
|
||||
|
||||
patches =
|
||||
[ # Arch Linux patch set.
|
||||
./arch.patch
|
||||
];
|
||||
|
||||
nativeBuildInputs = [ pkgconfig ];
|
||||
buildInputs = [ SDL libogg libvorbis zlib unzip ];
|
||||
buildInputs = [ SDL2 libogg libvorbis zlib unzip ];
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
makeFlags = [ "DESTDIR=$(out)" ];
|
||||
|
||||
NIX_LDFLAGS = "-lX11";
|
||||
|
||||
postInstall =
|
||||
|
@ -14,42 +14,43 @@
|
||||
, ocl-icd ? null
|
||||
, gperftools ? null
|
||||
, eigen ? null
|
||||
, gpuEnabled ? true
|
||||
, useAVX2 ? false
|
||||
, cudaSupport ? false
|
||||
, useTcmalloc ? true}:
|
||||
, enableAVX2 ? false
|
||||
, enableBigBoards ? false
|
||||
, enableCuda ? false
|
||||
, enableGPU ? true
|
||||
, enableTcmalloc ? true}:
|
||||
|
||||
assert !gpuEnabled -> (
|
||||
assert !enableGPU -> (
|
||||
eigen != null &&
|
||||
!cudaSupport);
|
||||
!enableCuda);
|
||||
|
||||
assert cudaSupport -> (
|
||||
assert enableCuda -> (
|
||||
libGL_driver != null &&
|
||||
cudatoolkit != null &&
|
||||
cudnn != null);
|
||||
|
||||
assert !cudaSupport -> (
|
||||
!gpuEnabled || (
|
||||
assert !enableCuda -> (
|
||||
!enableGPU || (
|
||||
opencl-headers != null &&
|
||||
ocl-icd != null));
|
||||
|
||||
assert useTcmalloc -> (
|
||||
assert enableTcmalloc -> (
|
||||
gperftools != null);
|
||||
|
||||
let
|
||||
env = if cudaSupport
|
||||
env = if enableCuda
|
||||
then gcc8Stdenv
|
||||
else stdenv;
|
||||
|
||||
in env.mkDerivation rec {
|
||||
pname = "katago";
|
||||
version = "1.6.0";
|
||||
version = "1.6.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "lightvector";
|
||||
repo = "katago";
|
||||
rev = "v${version}";
|
||||
sha256 = "1r84ws2rj7j8085v1cqffy9rg65rzrhk6z8jbxivqxsmsgs2zs48";
|
||||
sha256 = "030ff9prnvpadgcb4x4hx6b6ggg10bwqcj8vd8nwrdz9sjq67yf7";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
@ -60,42 +61,44 @@ in env.mkDerivation rec {
|
||||
buildInputs = [
|
||||
libzip
|
||||
boost
|
||||
] ++ lib.optionals (!gpuEnabled) [
|
||||
] ++ lib.optionals (!enableGPU) [
|
||||
eigen
|
||||
] ++ lib.optionals (gpuEnabled && cudaSupport) [
|
||||
] ++ lib.optionals (enableGPU && enableCuda) [
|
||||
cudnn
|
||||
libGL_driver
|
||||
] ++ lib.optionals (gpuEnabled && !cudaSupport) [
|
||||
] ++ lib.optionals (enableGPU && !enableCuda) [
|
||||
opencl-headers
|
||||
ocl-icd
|
||||
] ++ lib.optionals useTcmalloc [
|
||||
] ++ lib.optionals enableTcmalloc [
|
||||
gperftools
|
||||
];
|
||||
|
||||
cmakeFlags = [
|
||||
"-DNO_GIT_REVISION=ON"
|
||||
] ++ lib.optionals (!gpuEnabled) [
|
||||
] ++ lib.optionals (!enableGPU) [
|
||||
"-DUSE_BACKEND=EIGEN"
|
||||
] ++ lib.optionals useAVX2 [
|
||||
] ++ lib.optionals enableAVX2 [
|
||||
"-DUSE_AVX2=ON"
|
||||
] ++ lib.optionals (gpuEnabled && cudaSupport) [
|
||||
] ++ lib.optionals (enableGPU && enableCuda) [
|
||||
"-DUSE_BACKEND=CUDA"
|
||||
] ++ lib.optionals (gpuEnabled && !cudaSupport) [
|
||||
] ++ lib.optionals (enableGPU && !enableCuda) [
|
||||
"-DUSE_BACKEND=OPENCL"
|
||||
] ++ lib.optionals useTcmalloc [
|
||||
] ++ lib.optionals enableTcmalloc [
|
||||
"-DUSE_TCMALLOC=ON"
|
||||
] ++ lib.optionals enableBigBoards [
|
||||
"-DUSE_BIGGER_BOARDS_EXPENSIVE=ON"
|
||||
];
|
||||
|
||||
preConfigure = ''
|
||||
cd cpp/
|
||||
'' + lib.optionalString cudaSupport ''
|
||||
'' + lib.optionalString enableCuda ''
|
||||
export CUDA_PATH="${cudatoolkit}"
|
||||
export EXTRA_LDFLAGS="-L/run/opengl-driver/lib"
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/bin; cp katago $out/bin;
|
||||
'' + lib.optionalString cudaSupport ''
|
||||
'' + lib.optionalString enableCuda ''
|
||||
wrapProgram $out/bin/katago \
|
||||
--prefix LD_LIBRARY_PATH : "/run/opengl-driver/lib"
|
||||
'';
|
||||
|
@ -130,7 +130,11 @@ let
|
||||
libapparmor.python
|
||||
];
|
||||
|
||||
prePatch = prePatchCommon;
|
||||
prePatch = prePatchCommon + ''
|
||||
substituteInPlace ./utils/apparmor/easyprof.py --replace "/sbin/apparmor_parser" "${apparmor-parser}/bin/apparmor_parser"
|
||||
substituteInPlace ./utils/apparmor/aa.py --replace "/sbin/apparmor_parser" "${apparmor-parser}/bin/apparmor_parser"
|
||||
substituteInPlace ./utils/logprof.conf --replace "/sbin/apparmor_parser" "${apparmor-parser}/bin/apparmor_parser"
|
||||
'';
|
||||
inherit patches;
|
||||
postPatch = "cd ./utils";
|
||||
makeFlags = [ "LANGS=" ];
|
||||
|
@ -5,11 +5,11 @@
|
||||
|
||||
python.pkgs.buildPythonApplication rec {
|
||||
pname = "bcc";
|
||||
version = "0.15.0";
|
||||
version = "0.16.0";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/iovisor/bcc/releases/download/v${version}/bcc-src-with-submodule.tar.gz";
|
||||
sha256 = "1k00xbhdzdvqp4hfxpgg34bbhnx597jjhpg1x6dz2w80r7xzsj28";
|
||||
sha256 = "sha256-ekVRyugpZOU1nr0N9kWCSoJTmtD2qGsn/DmWgK7XZ/c=";
|
||||
};
|
||||
format = "other";
|
||||
|
||||
|
@ -9,11 +9,11 @@ in
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "klibc";
|
||||
version = "2.0.7";
|
||||
version = "2.0.8";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://kernel/linux/libs/klibc/2.0/klibc-${version}.tar.xz";
|
||||
sha256 = "08li3aj9bvzabrih98jdxi3m19h85cp53s8cr7cqad42r8vjdvxb";
|
||||
sha256 = "0dmlkhnn5q8fc6rkzsisir4chkzmmiq6xkjmvyvf0g7yihwz2j2f";
|
||||
};
|
||||
|
||||
patches = [ ./no-reinstall-kernel-headers.patch ];
|
||||
|
@ -9,11 +9,11 @@ let
|
||||
in
|
||||
buildPythonApplication rec {
|
||||
pname = "matrix-synapse";
|
||||
version = "1.19.0";
|
||||
version = "1.19.1";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
sha256 = "1fl9p0cb442271hx7zjz8vp111xgvdpn4khk8bk3kl8z9hjs2l1p";
|
||||
sha256 = "0ddn3g3q0nkxpmw0xpjhnl0m1g3lrlp89abqbal9k6n689h6kfly";
|
||||
};
|
||||
|
||||
patches = [
|
||||
|
@ -8,7 +8,7 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "timescaledb";
|
||||
version = "1.7.2";
|
||||
version = "1.7.3";
|
||||
|
||||
nativeBuildInputs = [ cmake ];
|
||||
buildInputs = [ postgresql openssl ];
|
||||
@ -17,7 +17,7 @@ stdenv.mkDerivation rec {
|
||||
owner = "timescale";
|
||||
repo = "timescaledb";
|
||||
rev = "refs/tags/${version}";
|
||||
sha256 = "0xqyq3a43j2rav5n87lv1d0f66h9kqjnlxq5nq5d54h5g5qbsr3y";
|
||||
sha256 = "1y3w1ap1cxmi691wfz078r2h74pcwf38zs8lr985pfmb25w47q0l";
|
||||
};
|
||||
|
||||
cmakeFlags = [ "-DSEND_TELEMETRY_DEFAULT=OFF" "-DREGRESS_CHECKS=OFF" ];
|
||||
|
@ -1,6 +1,6 @@
|
||||
{ stdenv
|
||||
, rustPlatform
|
||||
, fetchFromGitHub
|
||||
, fetchCrate
|
||||
, installShellFiles
|
||||
, makeWrapper
|
||||
, coreutils
|
||||
@ -12,11 +12,9 @@ rustPlatform.buildRustPackage rec {
|
||||
pname = "broot";
|
||||
version = "0.20.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Canop";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "0hbz7cslngl77qka8sl84fjhijbqbw69dj058ghhsgaxw06nypg2";
|
||||
src = fetchCrate {
|
||||
inherit pname version;
|
||||
sha256 = "0vw956c5xpjsbd9b0ardvgi9jjqb230m2x5n4h9ai0yiwizc8rh6";
|
||||
};
|
||||
|
||||
cargoSha256 = "1zl4p3n327iq7nm7hi79zjxv2gvw9f3lwgkg1qp52kycv1af5gqp";
|
||||
|
@ -21,6 +21,12 @@ rustPlatform.buildRustPackage rec {
|
||||
url = "https://github.com/NerdyPepper/eva/commit/cacf51dbb9748b1dbe97b35f3c593a0a272bd4db.patch";
|
||||
sha256 = "11q7dkz2x1888f3awnlr1nbbxzzfjrr46kd0kk6sgjdkyfh50cvv";
|
||||
})
|
||||
|
||||
# to fix `cargo test -- --test-threads $NIX_BUILD_CORES`
|
||||
(fetchpatch {
|
||||
url = "https://github.com/NerdyPepper/eva/commit/ccfb3d327567dbaf03b2283c7e684477e2e84590.patch";
|
||||
sha256 = "003yxqlyi8jna0rf05q2a006r2pkz6pcwwfl3dv8zb6p83kk1kgj";
|
||||
})
|
||||
];
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
|
@ -1,4 +1,4 @@
|
||||
{ stdenv, fetchgit, flex, bison, python, autoconf, automake, gnulib, libtool
|
||||
{ stdenv, fetchgit, flex, bison, python3, autoconf, automake, gnulib, libtool
|
||||
, gettext, ncurses, libusb-compat-0_1, freetype, qemu, lvm2, unifont, pkgconfig
|
||||
, fuse # only needed for grub-mount
|
||||
, zfs ? null
|
||||
@ -53,7 +53,7 @@ stdenv.mkDerivation rec {
|
||||
./fix-bash-completion.patch
|
||||
];
|
||||
|
||||
nativeBuildInputs = [ bison flex python pkgconfig autoconf automake ];
|
||||
nativeBuildInputs = [ bison flex python3 pkgconfig autoconf automake ];
|
||||
buildInputs = [ ncurses libusb-compat-0_1 freetype gettext lvm2 fuse libtool ]
|
||||
++ optional doCheck qemu
|
||||
++ optional zfsSupport zfs;
|
||||
|
@ -1,11 +1,11 @@
|
||||
{ fetchurl, stdenv, perl, makeWrapper, procps }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "parallel-20200722";
|
||||
name = "parallel-20200822";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://gnu/parallel/${name}.tar.bz2";
|
||||
sha256 = "0vqd8nhf4lkvbfy7nnibxjkpzpfandpklqm0hrix5vki5x7x80a8";
|
||||
sha256 = "02dy46g6f05p7s2qs8h6yg20p1zl3flxxf77n5jw74l3h1m24m4n";
|
||||
};
|
||||
|
||||
outputs = [ "out" "man" ];
|
||||
|
@ -1,12 +1,12 @@
|
||||
{ stdenv, fetchurl, makeWrapper, jre, graphviz }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
version = "1.2020.15";
|
||||
version = "1.2020.16";
|
||||
pname = "plantuml";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://sourceforge/project/plantuml/${version}/plantuml.${version}.jar";
|
||||
sha256 = "0dvm24ihdr71giz0mihg7wjqf2nrkk7a52vbbzimrvbilaih6s8v";
|
||||
sha256 = "0k9dligb0b2kc8rl9k5wp9sh8z1kb8g97v5pfiiwa321lp8y6wpp";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
|
28
pkgs/tools/misc/sd-mux-ctrl/default.nix
Normal file
28
pkgs/tools/misc/sd-mux-ctrl/default.nix
Normal file
@ -0,0 +1,28 @@
|
||||
{ stdenv, fetchgit, cmake, pkgconfig, libftdi1, popt}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "sd-mux-ctrl-unstable";
|
||||
version = "2020-02-17";
|
||||
|
||||
src = fetchgit {
|
||||
url = "https://git.tizen.org/cgit/tools/testlab/sd-mux";
|
||||
rev = "9dd189d973da64e033a0c5c2adb3d94b23153d94";
|
||||
sha256 = "0fxl8m1zkkyxkc2zi8930m0njfgnd04a22acny6vljnzag2shjvg";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake pkgconfig ];
|
||||
|
||||
buildInputs = [ libftdi1 popt ];
|
||||
|
||||
postInstall = ''
|
||||
install -D -m 644 ../doc/man/sd-mux-ctrl.1 $out/share/man/man1/sd-mux-ctrl.1
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "Tool for controlling multiple sd-mux devices";
|
||||
homepage = "https://wiki.tizen.org/SD_MUX";
|
||||
license = licenses.asl20;
|
||||
maintainers = with maintainers; [ sarcasticadmin ];
|
||||
platforms = platforms.unix;
|
||||
};
|
||||
}
|
@ -1,5 +1,8 @@
|
||||
{ stdenv, makeWrapper
|
||||
, buildGoModule, fetchFromGitHub, installShellFiles
|
||||
{ stdenv
|
||||
, makeWrapper
|
||||
, buildGoModule
|
||||
, fetchFromGitHub
|
||||
, installShellFiles
|
||||
, git
|
||||
, gnupg
|
||||
, xclip
|
||||
@ -26,11 +29,13 @@ buildGoModule rec {
|
||||
|
||||
buildFlagsArray = [ "-ldflags=-s -w -X main.version=${version} -X main.commit=${src.rev}" ];
|
||||
|
||||
wrapperPath = stdenv.lib.makeBinPath ([
|
||||
git
|
||||
gnupg
|
||||
xclip
|
||||
] ++ stdenv.lib.optional stdenv.isLinux wl-clipboard);
|
||||
wrapperPath = stdenv.lib.makeBinPath (
|
||||
[
|
||||
git
|
||||
gnupg
|
||||
xclip
|
||||
] ++ stdenv.lib.optional stdenv.isLinux wl-clipboard
|
||||
);
|
||||
|
||||
postInstall = ''
|
||||
for shell in bash fish zsh; do
|
||||
@ -49,11 +54,11 @@ buildGoModule rec {
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "The slightly more awesome Standard Unix Password Manager for Teams. Written in Go.";
|
||||
homepage = "https://www.gopass.pw/";
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [ andir rvolosatovs ];
|
||||
platforms = platforms.unix;
|
||||
description = "The slightly more awesome Standard Unix Password Manager for Teams. Written in Go.";
|
||||
homepage = "https://www.gopass.pw/";
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [ andir rvolosatovs ];
|
||||
platforms = platforms.unix;
|
||||
|
||||
longDescription = ''
|
||||
gopass is a rewrite of the pass password manager in Go with the aim of
|
||||
|
@ -2,11 +2,11 @@
|
||||
|
||||
stdenv.mkDerivation {
|
||||
pname = "podiff";
|
||||
version = "1.1";
|
||||
version = "1.2";
|
||||
|
||||
src = fetchurl {
|
||||
url = "ftp://download.gnu.org.ua/pub/release/podiff/podiff-1.1.tar.gz";
|
||||
sha256 = "1zz6bcmka5zvk2rq775qv122lqh54aijkxlghvx7z0r6kh880x59";
|
||||
url = "ftp://download.gnu.org.ua/pub/release/podiff/podiff-1.2.tar.gz";
|
||||
sha256 = "1l2b4hh53xlx28riigwarzkhxpv1pcz059xj1ka33ccvxc6c20k9";
|
||||
};
|
||||
|
||||
patchPhase = ''
|
||||
|
@ -6,13 +6,13 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "cri-tools";
|
||||
version = "1.18.0";
|
||||
version = "1.19.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "kubernetes-sigs";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "06sxjhjpd893fn945c1s4adri2bf7s50ddvcw5pnwb6qndzfljw6";
|
||||
sha256 = "0dx21ws4nzzizzjb0g172fzvjgwck88ikr5c2av08ii06rys1567";
|
||||
};
|
||||
|
||||
vendorSha256 = null;
|
||||
|
@ -1183,6 +1183,7 @@ in
|
||||
|
||||
androidndkPkgs = androidndkPkgs_18b;
|
||||
androidndkPkgs_18b = (callPackage ../development/androidndk-pkgs {})."18b";
|
||||
androidndkPkgs_21 = (callPackage ../development/androidndk-pkgs {})."21";
|
||||
|
||||
androidsdk_9_0 = androidenv.androidPkgs_9_0.androidsdk;
|
||||
|
||||
@ -2268,6 +2269,8 @@ in
|
||||
|
||||
obinskit = callPackage ../applications/misc/obinskit {};
|
||||
|
||||
odafileconverter = libsForQt5.callPackage ../applications/graphics/odafileconverter {};
|
||||
|
||||
pastel = callPackage ../applications/misc/pastel {
|
||||
inherit (darwin.apple_sdk.frameworks) Security;
|
||||
};
|
||||
@ -4884,6 +4887,11 @@ in
|
||||
|
||||
kippo = callPackage ../servers/kippo { };
|
||||
|
||||
kimg = callPackage ../development/tools/misc/kimg {
|
||||
asciidoc = asciidoc-full;
|
||||
imagemagick = imagemagick7Big;
|
||||
};
|
||||
|
||||
kristall = libsForQt5.callPackage ../applications/networking/browsers/kristall { };
|
||||
|
||||
kzipmix = pkgsi686Linux.callPackage ../tools/compression/kzipmix { };
|
||||
@ -6804,6 +6812,8 @@ in
|
||||
inherit (darwin.apple_sdk.frameworks) Security;
|
||||
};
|
||||
|
||||
sd-mux-ctrl = callPackage ../tools/misc/sd-mux-ctrl { };
|
||||
|
||||
sd-switch = callPackage ../os-specific/linux/sd-switch { };
|
||||
|
||||
sdate = callPackage ../tools/misc/sdate { };
|
||||
@ -9234,6 +9244,8 @@ in
|
||||
|
||||
jwasm = callPackage ../development/compilers/jwasm { };
|
||||
|
||||
knightos-kcc = callPackage ../development/compilers/kcc { };
|
||||
|
||||
kotlin = callPackage ../development/compilers/kotlin { };
|
||||
|
||||
lazarus = callPackage ../development/compilers/fpc/lazarus.nix {
|
||||
@ -15674,6 +15686,8 @@ in
|
||||
wt3
|
||||
wt4;
|
||||
|
||||
wxformbuilder = callPackage ../development/tools/wxformbuilder { };
|
||||
|
||||
wxGTK = wxGTK28;
|
||||
|
||||
wxGTK30 = wxGTK30-gtk2;
|
||||
@ -20346,6 +20360,8 @@ in
|
||||
|
||||
gopher = callPackage ../applications/networking/gopher/gopher { };
|
||||
|
||||
gophernotes = callPackage ../applications/editors/gophernotes { };
|
||||
|
||||
goxel = callPackage ../applications/graphics/goxel { };
|
||||
|
||||
gpa = callPackage ../applications/misc/gpa { };
|
||||
@ -20987,6 +21003,8 @@ in
|
||||
|
||||
i3-wk-switch = callPackage ../applications/window-managers/i3/wk-switch.nix { };
|
||||
|
||||
windowchef = callPackage ../applications/window-managers/windowchef/default.nix { };
|
||||
|
||||
wmfocus = callPackage ../applications/window-managers/i3/wmfocus.nix { };
|
||||
|
||||
wmfs = callPackage ../applications/window-managers/wmfs/default.nix { };
|
||||
@ -23370,6 +23388,8 @@ in
|
||||
|
||||
treesheets = callPackage ../applications/office/treesheets { wxGTK = wxGTK31; };
|
||||
|
||||
tremc = callPackage ../applications/networking/p2p/tremc { };
|
||||
|
||||
tribler = callPackage ../applications/networking/p2p/tribler { };
|
||||
|
||||
trojita = libsForQt5.callPackage ../applications/networking/mailreaders/trojita {
|
||||
@ -24718,13 +24738,13 @@ in
|
||||
katago = callPackage ../games/katago { };
|
||||
|
||||
katagoWithCuda = katago.override {
|
||||
cudaSupport = true;
|
||||
enableCuda = true;
|
||||
cudnn = cudnn_cudatoolkit_10_2;
|
||||
cudatoolkit = cudatoolkit_10_2;
|
||||
};
|
||||
|
||||
katagoCPU = katago.override {
|
||||
gpuEnabled = false;
|
||||
enableGPU = false;
|
||||
};
|
||||
|
||||
klavaro = callPackage ../games/klavaro {};
|
||||
|
@ -137,12 +137,16 @@ let
|
||||
|
||||
cohttp = callPackage ../development/ocaml-modules/cohttp { };
|
||||
|
||||
cohttp-async = callPackage ../development/ocaml-modules/cohttp/async.nix { };
|
||||
|
||||
cohttp-lwt = callPackage ../development/ocaml-modules/cohttp/lwt.nix { };
|
||||
|
||||
cohttp-lwt-unix = callPackage ../development/ocaml-modules/cohttp/lwt-unix.nix { };
|
||||
|
||||
conduit = callPackage ../development/ocaml-modules/conduit { };
|
||||
|
||||
conduit-async = callPackage ../development/ocaml-modules/conduit/async.nix { };
|
||||
|
||||
conduit-lwt = callPackage ../development/ocaml-modules/conduit/lwt.nix { };
|
||||
|
||||
conduit-lwt-unix = callPackage ../development/ocaml-modules/conduit/lwt-unix.nix { };
|
||||
@ -991,7 +995,7 @@ let
|
||||
janeStreet =
|
||||
if lib.versionOlder "4.08" ocaml.version
|
||||
then import ../development/ocaml-modules/janestreet/0.13.nix {
|
||||
inherit ctypes janePackage num octavius ppxlib re;
|
||||
inherit ctypes dune-configurator janePackage num octavius ppxlib re;
|
||||
inherit (pkgs) openssl;
|
||||
}
|
||||
else if lib.versionOlder "4.07" ocaml.version
|
||||
|
@ -4544,6 +4544,8 @@ in {
|
||||
|
||||
jupyterhub-ldapauthenticator = callPackage ../development/python-modules/jupyterhub-ldapauthenticator { };
|
||||
|
||||
jupyterhub-tmpauthenticator = callPackage ../development/python-modules/jupyterhub-tmpauthenticator { };
|
||||
|
||||
jupyterhub-systemdspawner = callPackage ../development/python-modules/jupyterhub-systemdspawner {
|
||||
inherit (pkgs) bash;
|
||||
};
|
||||
@ -6991,7 +6993,9 @@ in {
|
||||
|
||||
carbon = callPackage ../development/python-modules/carbon { };
|
||||
|
||||
ujson = callPackage ../development/python-modules/ujson { };
|
||||
ujson = if isPy27
|
||||
then callPackage ../development/python-modules/ujson/2.nix { }
|
||||
else callPackage ../development/python-modules/ujson { };
|
||||
|
||||
unidecode = callPackage ../development/python-modules/unidecode {};
|
||||
|
||||
@ -7851,7 +7855,7 @@ in {
|
||||
rxv = callPackage ../development/python-modules/rxv { };
|
||||
|
||||
userpath = callPackage ../development/python-modules/userpath { };
|
||||
|
||||
|
||||
pooch = callPackage ../development/python-modules/pooch {};
|
||||
|
||||
});
|
||||
|
Loading…
Reference in New Issue
Block a user