Merge master into staging-next

This commit is contained in:
Frederik Rietdijk 2018-09-18 18:44:48 +02:00
commit de419917a3
391 changed files with 32151 additions and 6103 deletions

View file

@ -64,9 +64,6 @@ When the `Cargo.lock`, provided by upstream, is not in sync with the
added in `cargoPatches` will also be prepended to the patches in `patches` at
build-time.
To install crates with nix there is also an experimental project called
[nixcrates](https://github.com/fractalide/nixcrates).
## Compiling Rust crates using Nix instead of Cargo
### Simple operation

View file

@ -435,12 +435,15 @@ rec {
useful for deep-overriding.
Example:
x = { a = { b = 4; c = 3; }; }
overrideExisting x { a = { b = 6; d = 2; }; }
=> { a = { b = 6; d = 2; }; }
overrideExisting {} { a = 1; }
=> {}
overrideExisting { b = 2; } { a = 1; }
=> { b = 2; }
overrideExisting { a = 3; b = 2; } { a = 1; }
=> { a = 1; b = 2; }
*/
overrideExisting = old: new:
old // listToAttrs (map (attr: nameValuePair attr (attrByPath [attr] old.${attr} new)) (attrNames old));
mapAttrs (name: value: new.${name} or value) old;
/* Get a package output.
If no output is found, fallback to `.out` and then to the default.

View file

@ -48,7 +48,7 @@ rec {
armv7a-android-prebuilt = rec {
config = "armv7a-unknown-linux-androideabi";
sdkVer = "24";
ndkVer = "17";
ndkVer = "17c";
platform = platforms.armv7a-android;
useAndroidPrebuilt = true;
};
@ -56,7 +56,7 @@ rec {
aarch64-android-prebuilt = rec {
config = "aarch64-unknown-linux-android";
sdkVer = "24";
ndkVer = "17";
ndkVer = "17c";
platform = platforms.aarch64-multiplatform;
useAndroidPrebuilt = true;
};

7
lib/tests/check-eval.nix Normal file
View file

@ -0,0 +1,7 @@
# Throws an error if any of our lib tests fail.
let tests = [ "misc" "systems" ];
all = builtins.concatLists (map (f: import (./. + "/${f}.nix")) tests);
in if all == []
then null
else throw (builtins.toJSON all)

View file

@ -236,6 +236,20 @@ runTests {
};
};
testOverrideExistingEmpty = {
expr = overrideExisting {} { a = 1; };
expected = {};
};
testOverrideExistingDisjoint = {
expr = overrideExisting { b = 2; } { a = 1; };
expected = { b = 2; };
};
testOverrideExistingOverride = {
expr = overrideExisting { a = 3; b = 2; } { a = 1; };
expected = { a = 1; b = 2; };
};
# GENERATORS
# these tests assume attributes are converted to lists

View file

@ -227,7 +227,7 @@
name = "Andrew Morsillo";
};
AndersonTorres = {
email = "torres.anderson.85@gmail.com";
email = "torres.anderson.85@protonmail.com";
github = "AndersonTorres";
name = "Anderson Torres";
};

View file

@ -19,6 +19,7 @@ starting VDE switch for network 1
> startAll
> testScript
> $machine->succeed("touch /tmp/foo")
> print($machine->succeed("pwd"), "\n") # Show stdout of command
</screen>
The function <command>testScript</command> executes the entire test script
and drops you back into the test driver command line upon its completion.
@ -33,8 +34,11 @@ $ nix-build nixos/tests/login.nix -A driver
$ ./result/bin/nixos-run-vms
</screen>
The script <command>nixos-run-vms</command> starts the virtual machines
defined by test. The root file system of the VMs is created on the fly and
kept across VM restarts in
<filename>./</filename><varname>hostname</varname><filename>.qcow2</filename>.
defined by test.
</para>
<para>
The machine state is kept across VM restarts in
<filename>/tmp/vm-state-</filename><varname>machinename</varname>.
</para>
</section>

View file

@ -108,7 +108,7 @@ xlink:href="https://github.com/NixOS/nixpkgs/blob/master/nixos/modules/virtualis
<programlisting>
$machine->start;
$machine->waitForUnit("default.target");
$machine->succeed("uname") =~ /Linux/;
die unless $machine->succeed("uname") =~ /Linux/;
</programlisting>
The first line is actually unnecessary; machines are implicitly started when
you first execute an action on them (such as <literal>waitForUnit</literal>

View file

@ -451,6 +451,14 @@ inherit (pkgs.nixos {
deprecated. Use <literal>networking.networkmanager.dns</literal> instead.
</para>
</listitem>
<listitem>
<para>
The Kubernetes package has been bumped to major version 1.11.
Please consult the
<link xlink:href="https://github.com/kubernetes/kubernetes/blob/release-1.11/CHANGELOG-1.11.md">release notes</link>
for details on new features and api changes.
</para>
</listitem>
<listitem>
<para>
The option

View file

@ -329,6 +329,7 @@
# kvm = 302; # unused
# render = 303; # unused
zeronet = 304;
lirc = 305;
# When adding a uid, make sure it doesn't match an existing gid. And don't use uids above 399!
@ -618,6 +619,7 @@
kvm = 302; # default udev rules from systemd requires these
render = 303; # default udev rules from systemd requires these
zeronet = 304;
lirc = 305;
# When adding a gid, make sure it doesn't match an existing
# uid. Users and groups with the same name should have equal

View file

@ -272,6 +272,7 @@
./services/hardware/interception-tools.nix
./services/hardware/irqbalance.nix
./services/hardware/lcd.nix
./services/hardware/lirc.nix
./services/hardware/nvidia-optimus.nix
./services/hardware/pcscd.nix
./services/hardware/pommed.nix
@ -496,6 +497,7 @@
./services/networking/dnsdist.nix
./services/networking/dnsmasq.nix
./services/networking/ejabberd.nix
./services/networking/epmd.nix
./services/networking/fakeroute.nix
./services/networking/ferm.nix
./services/networking/firefox/sync-server.nix
@ -556,6 +558,7 @@
./services/networking/nsd.nix
./services/networking/ntopng.nix
./services/networking/ntpd.nix
./services/networking/nullidentdmod.nix
./services/networking/nylon.nix
./services/networking/ocserv.nix
./services/networking/oidentd.nix
@ -680,6 +683,7 @@
./services/web-apps/atlassian/confluence.nix
./services/web-apps/atlassian/crowd.nix
./services/web-apps/atlassian/jira.nix
./services/web-apps/codimd.nix
./services/web-apps/frab.nix
./services/web-apps/mattermost.nix
./services/web-apps/nexus.nix

View file

@ -0,0 +1,85 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.services.lirc;
in {
###### interface
options = {
services.lirc = {
enable = mkEnableOption "LIRC daemon";
options = mkOption {
type = types.lines;
example = ''
[lircd]
nodaemon = False
'';
description = "LIRC default options descriped in man:lircd(8) (<filename>lirc_options.conf</filename>)";
};
configs = mkOption {
type = types.listOf types.lines;
description = "Configurations for lircd to load, see man:lircd.conf(5) for details (<filename>lircd.conf</filename>)";
};
extraArguments = mkOption {
type = types.listOf types.str;
default = [];
description = "Extra arguments to lircd.";
};
};
};
###### implementation
config = mkIf cfg.enable {
# Note: LIRC executables raises a warning, if lirc_options.conf do not exists
environment.etc."lirc/lirc_options.conf".text = cfg.options;
environment.systemPackages = [ pkgs.lirc ];
systemd.sockets.lircd = {
description = "LIRC daemon socket";
wantedBy = [ "sockets.target" ];
socketConfig = {
ListenStream = "/run/lirc/lircd";
SocketUser = "lirc";
SocketMode = "0660";
};
};
systemd.services.lircd = let
configFile = pkgs.writeText "lircd.conf" (builtins.concatStringsSep "\n" cfg.configs);
in {
description = "LIRC daemon service";
after = [ "network.target" ];
unitConfig.Documentation = [ "man:lircd(8)" ];
serviceConfig = {
RuntimeDirectory = "lirc";
ExecStart = ''
${pkgs.lirc}/bin/lircd --nodaemon \
${escapeShellArgs cfg.extraArguments} \
${configFile}
'';
User = "lirc";
};
};
users.users.lirc = {
uid = config.ids.uids.lirc;
group = "lirc";
description = "LIRC user for lircd";
};
users.groups.lirc.gid = config.ids.gids.lirc;
};
}

View file

@ -2,7 +2,7 @@
let
inherit (lib) mkIf mkOption singleton types;
inherit (pkgs) coreutils exim;
inherit (pkgs) coreutils;
cfg = config.services.exim;
in
@ -57,6 +57,16 @@ in
'';
};
package = mkOption {
type = types.package;
default = pkgs.exim;
defaultText = "pkgs.exim";
description = ''
The Exim derivation to use.
This can be used to enable features such as LDAP or PAM support.
'';
};
};
};
@ -74,7 +84,7 @@ in
spool_directory = ${cfg.spoolDir}
${cfg.config}
'';
systemPackages = [ exim ];
systemPackages = [ cfg.package ];
};
users.users = singleton {
@ -89,14 +99,14 @@ in
gid = config.ids.gids.exim;
};
security.wrappers.exim.source = "${exim}/bin/exim";
security.wrappers.exim.source = "${cfg.package}/bin/exim";
systemd.services.exim = {
description = "Exim Mail Daemon";
wantedBy = [ "multi-user.target" ];
restartTriggers = [ config.environment.etc."exim.conf".source ];
serviceConfig = {
ExecStart = "${exim}/bin/exim -bdf -q30m";
ExecStart = "${cfg.package}/bin/exim -bdf -q30m";
ExecReload = "${coreutils}/bin/kill -HUP $MAINPID";
};
preStart = ''

View file

@ -73,6 +73,24 @@ in {
${cfg.home}/transcoders.
'';
};
jvmOptions = mkOption {
description = ''
Extra command line options for the JVM running AirSonic.
Useful for sending jukebox output to non-default alsa
devices.
'';
default = [
];
type = types.listOf types.str;
example = [
"-Djavax.sound.sampled.Clip='#CODEC [plughw:1,0]'"
"-Djavax.sound.sampled.Port='#Port CODEC [hw:1]'"
"-Djavax.sound.sampled.SourceDataLine='#CODEC [plughw:1,0]'"
"-Djavax.sound.sampled.TargetDataLine='#CODEC [plughw:1,0]'"
];
};
};
};
@ -98,6 +116,7 @@ in {
-Dserver.port=${toString cfg.port} \
-Dairsonic.contextPath=${cfg.contextPath} \
-Djava.awt.headless=true \
${toString cfg.jvmOptions} \
-verbose:gc \
-jar ${pkgs.airsonic}/webapps/airsonic.war
'';

View file

@ -8,7 +8,6 @@ let
ddConf = {
dd_url = "https://app.datadoghq.com";
skip_ssl_validation = "no";
api_key = "";
confd_path = "/etc/datadog-agent/conf.d";
additional_checksd = "/etc/datadog-agent/checks.d";
use_dogstatsd = true;
@ -16,6 +15,7 @@ let
// optionalAttrs (cfg.logLevel != null) { log_level = cfg.logLevel; }
// optionalAttrs (cfg.hostname != null) { inherit (cfg) hostname; }
// optionalAttrs (cfg.tags != null ) { tags = concatStringsSep ", " cfg.tags; }
// optionalAttrs (cfg.enableLiveProcessCollection) { process_config = { enabled = "true"; }; }
// cfg.extraConfig;
# Generate Datadog configuration files for each configured checks.
@ -125,6 +125,13 @@ in {
'';
};
enableLiveProcessCollection = mkOption {
description = ''
Whether to enable the live process collection agent.
'';
default = false;
type = types.bool;
};
checks = mkOption {
description = ''
Configuration for all Datadog checks. Keys of this attribute
@ -229,6 +236,15 @@ in {
path = [ datadogPkg pkgs.python pkgs.sysstat pkgs.procps pkgs.jdk ];
serviceConfig.ExecStart = "${datadogPkg}/bin/dd-jmxfetch";
});
datadog-process-agent = lib.mkIf cfg.enableLiveProcessCollection (makeService {
description = "Datadog Live Process Agent";
path = [ ];
script = ''
export DD_API_KEY=$(head -n 1 ${cfg.apiKeyFile})
${pkgs.datadog-process-agent}/bin/agent --config /etc/datadog-agent/datadog.yaml
'';
});
};
environment.etc = etcfiles;

View file

@ -0,0 +1,56 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.services.epmd;
in
{
###### interface
options.services.epmd = {
enable = mkOption {
type = types.bool;
default = false;
description = ''
Whether to enable socket activation for Erlang Port Mapper Daemon (epmd),
which acts as a name server on all hosts involved in distributed
Erlang computations.
'';
};
package = mkOption {
type = types.package;
default = pkgs.erlang;
description = ''
The Erlang package to use to get epmd binary. That way you can re-use
an Erlang runtime that is already installed for other purposes.
'';
};
};
###### implementation
config = mkIf cfg.enable {
systemd.sockets.epmd = rec {
description = "Erlang Port Mapper Daemon Activation Socket";
wantedBy = [ "sockets.target" ];
before = wantedBy;
socketConfig = {
ListenStream = "4369";
Accept = "false";
};
};
systemd.services.epmd = {
description = "Erlang Port Mapper Daemon";
after = [ "network.target" ];
requires = [ "epmd.socket" ];
serviceConfig = {
DynamicUser = true;
ExecStart = "${cfg.package}/bin/epmd -systemd";
Type = "notify";
};
};
};
}

View file

@ -0,0 +1,34 @@
{ config, lib, pkgs, ... }: with lib; let
cfg = config.services.nullidentdmod;
in {
options.services.nullidentdmod = with types; {
enable = mkEnableOption "Enable the nullidentdmod identd daemon";
userid = mkOption {
type = nullOr str;
description = "User ID to return. Set to null to return a random string each time.";
default = null;
example = "alice";
};
};
config = mkIf cfg.enable {
systemd.sockets.nullidentdmod = {
description = "Socket for identd (NullidentdMod)";
listenStreams = [ "113" ];
socketConfig.Accept = true;
wantedBy = [ "sockets.target" ];
};
systemd.services."nullidentdmod@" = {
description = "NullidentdMod service";
serviceConfig = {
DynamicUser = true;
ExecStart = "${pkgs.nullidentdmod}/bin/nullidentdmod${optionalString (cfg.userid != null) " ${cfg.userid}"}";
StandardInput = "socket";
StandardOutput = "socket";
};
};
};
}

View file

@ -208,7 +208,7 @@ in
enable = mkOption {
type = types.bool;
default = false;
description = "Whether to enable tor transaprent proxy";
description = "Whether to enable tor transparent proxy";
};
listenAddress = mkOption {

View file

@ -0,0 +1,958 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.services.codimd;
prettyJSON = conf:
pkgs.runCommand "codimd-config.json" { } ''
echo '${builtins.toJSON conf}' | ${pkgs.jq}/bin/jq \
'{production:del(.[]|nulls)|del(.[][]?|nulls)}' > $out
'';
in
{
options.services.codimd = {
enable = mkEnableOption "the CodiMD Markdown Editor";
groups = mkOption {
type = types.listOf types.str;
default = [];
description = ''
Groups to which the codimd user should be added.
'';
};
workDir = mkOption {
type = types.path;
default = "/var/lib/codimd";
description = ''
Working directory for the CodiMD service.
'';
};
configuration = {
debug = mkEnableOption "debug mode";
domain = mkOption {
type = types.nullOr types.str;
default = null;
example = "codimd.org";
description = ''
Domain name for the CodiMD instance.
'';
};
urlPath = mkOption {
type = types.nullOr types.str;
default = null;
example = "/url/path/to/codimd";
description = ''
Path under which CodiMD is accessible.
'';
};
host = mkOption {
type = types.str;
default = "localhost";
description = ''
Address to listen on.
'';
};
port = mkOption {
type = types.int;
default = 3000;
example = "80";
description = ''
Port to listen on.
'';
};
path = mkOption {
type = types.nullOr types.str;
default = null;
example = "/var/run/codimd.sock";
description = ''
Specify where a UNIX domain socket should be placed.
'';
};
allowOrigin = mkOption {
type = types.listOf types.str;
default = [];
example = [ "localhost" "codimd.org" ];
description = ''
List of domains to whitelist.
'';
};
useSSL = mkOption {
type = types.bool;
default = false;
description = ''
Enable to use SSL server. This will also enable
<option>protocolUseSSL</option>.
'';
};
hsts = {
enable = mkOption {
type = types.bool;
default = true;
description = ''
Wheter to enable HSTS if HTTPS is also enabled.
'';
};
maxAgeSeconds = mkOption {
type = types.int;
default = 31536000;
description = ''
Max duration for clients to keep the HSTS status.
'';
};
includeSubdomains = mkOption {
type = types.bool;
default = true;
description = ''
Whether to include subdomains in HSTS.
'';
};
preload = mkOption {
type = types.bool;
default = true;
description = ''
Whether to allow preloading of the site's HSTS status.
'';
};
};
csp = mkOption {
type = types.nullOr types.attrs;
default = null;
example = literalExample ''
{
enable = true;
directives = {
scriptSrc = "trustworthy.scripts.example.com";
};
upgradeInsecureRequest = "auto";
addDefaults = true;
}
'';
description = ''
Specify the Content Security Policy which is passed to Helmet.
For configuration details see <link xlink:href="https://helmetjs.github.io/docs/csp/"
>https://helmetjs.github.io/docs/csp/</link>.
'';
};
protocolUseSSL = mkOption {
type = types.bool;
default = false;
description = ''
Enable to use TLS for resource paths.
This only applies when <option>domain</option> is set.
'';
};
urlAddPort = mkOption {
type = types.bool;
default = false;
description = ''
Enable to add the port to callback URLs.
This only applies when <option>domain</option> is set
and only for ports other than 80 and 443.
'';
};
useCDN = mkOption {
type = types.bool;
default = true;
description = ''
Whether to use CDN resources or not.
'';
};
allowAnonymous = mkOption {
type = types.bool;
default = true;
description = ''
Whether to allow anonymous usage.
'';
};
allowAnonymousEdits = mkOption {
type = types.bool;
default = false;
description = ''
Whether to allow guests to edit existing notes with the `freely' permission,
when <option>allowAnonymous</option> is enabled.
'';
};
allowFreeURL = mkOption {
type = types.bool;
default = false;
description = ''
Whether to allow note creation by accessing a nonexistent note URL.
'';
};
defaultPermission = mkOption {
type = types.enum [ "freely" "editable" "limited" "locked" "private" ];
default = "editable";
description = ''
Default permissions for notes.
This only applies for signed-in users.
'';
};
dbURL = mkOption {
type = types.nullOr types.str;
default = null;
example = ''
postgres://user:pass@host:5432/dbname
'';
description = ''
Specify which database to use.
CodiMD supports mysql, postgres, sqlite and mssql.
See <link xlink:href="https://sequelize.readthedocs.io/en/v3/">
https://sequelize.readthedocs.io/en/v3/</link> for more information.
Note: This option overrides <option>db</option>.
'';
};
db = mkOption {
type = types.attrs;
default = {};
example = literalExample ''
{
dialect = "sqlite";
storage = "/var/lib/codimd/db.codimd.sqlite";
}
'';
description = ''
Specify the configuration for sequelize.
CodiMD supports mysql, postgres, sqlite and mssql.
See <link xlink:href="https://sequelize.readthedocs.io/en/v3/">
https://sequelize.readthedocs.io/en/v3/</link> for more information.
Note: This option overrides <option>db</option>.
'';
};
sslKeyPath= mkOption {
type = types.nullOr types.str;
default = null;
example = "/var/lib/codimd/codimd.key";
description = ''
Path to the SSL key. Needed when <option>useSSL</option> is enabled.
'';
};
sslCertPath = mkOption {
type = types.nullOr types.str;
default = null;
example = "/var/lib/codimd/codimd.crt";
description = ''
Path to the SSL cert. Needed when <option>useSSL</option> is enabled.
'';
};
sslCAPath = mkOption {
type = types.listOf types.str;
default = [];
example = [ "/var/lib/codimd/ca.crt" ];
description = ''
SSL ca chain. Needed when <option>useSSL</option> is enabled.
'';
};
dhParamPath = mkOption {
type = types.nullOr types.str;
default = null;
example = "/var/lib/codimd/dhparam.pem";
description = ''
Path to the SSL dh params. Needed when <option>useSSL</option> is enabled.
'';
};
tmpPath = mkOption {
type = types.str;
default = "/tmp";
description = ''
Path to the temp directory CodiMD should use.
Note that <option>serviceConfig.PrivateTmp</option> is enabled for
the CodiMD systemd service by default.
(Non-canonical paths are relative to CodiMD's base directory)
'';
};
defaultNotePath = mkOption {
type = types.nullOr types.str;
default = "./public/default.md";
description = ''
Path to the default Note file.
(Non-canonical paths are relative to CodiMD's base directory)
'';
};
docsPath = mkOption {
type = types.nullOr types.str;
default = "./public/docs";
description = ''
Path to the docs directory.
(Non-canonical paths are relative to CodiMD's base directory)
'';
};
indexPath = mkOption {
type = types.nullOr types.str;
default = "./public/views/index.ejs";
description = ''
Path to the index template file.
(Non-canonical paths are relative to CodiMD's base directory)
'';
};
hackmdPath = mkOption {
type = types.nullOr types.str;
default = "./public/views/hackmd.ejs";
description = ''
Path to the hackmd template file.
(Non-canonical paths are relative to CodiMD's base directory)
'';
};
errorPath = mkOption {
type = types.nullOr types.str;
default = null;
defaultText = "./public/views/error.ejs";
description = ''
Path to the error template file.
(Non-canonical paths are relative to CodiMD's base directory)
'';
};
prettyPath = mkOption {
type = types.nullOr types.str;
default = null;
defaultText = "./public/views/pretty.ejs";
description = ''
Path to the pretty template file.
(Non-canonical paths are relative to CodiMD's base directory)
'';
};
slidePath = mkOption {
type = types.nullOr types.str;
default = null;
defaultText = "./public/views/slide.hbs";
description = ''
Path to the slide template file.
(Non-canonical paths are relative to CodiMD's base directory)
'';
};
uploadsPath = mkOption {
type = types.str;
default = "${cfg.workDir}/uploads";
defaultText = "/var/lib/codimd/uploads";
description = ''
Path under which uploaded files are saved.
'';
};
sessionName = mkOption {
type = types.str;
default = "connect.sid";
description = ''
Specify the name of the session cookie.
'';
};
sessionSecret = mkOption {
type = types.nullOr types.str;
default = null;
description = ''
Specify the secret used to sign the session cookie.
If unset, one will be generated on startup.
'';
};
sessionLife = mkOption {
type = types.int;
default = 1209600000;
description = ''
Session life time in milliseconds.
'';
};
heartbeatInterval = mkOption {
type = types.int;
default = 5000;
description = ''
Specify the socket.io heartbeat interval.
'';
};
heartbeatTimeout = mkOption {
type = types.int;
default = 10000;
description = ''
Specify the socket.io heartbeat timeout.
'';
};
documentMaxLength = mkOption {
type = types.int;
default = 100000;
description = ''
Specify the maximum document length.
'';
};
email = mkOption {
type = types.bool;
default = true;
description = ''
Whether to enable email sign-in.
'';
};
allowEmailRegister = mkOption {
type = types.bool;
default = true;
description = ''
Wether to enable email registration.
'';
};
allowGravatar = mkOption {
type = types.bool;
default = true;
description = ''
Whether to use gravatar as profile picture source.
'';
};
imageUploadType = mkOption {
type = types.enum [ "imgur" "s3" "minio" "filesystem" ];
default = "filesystem";
description = ''
Specify where to upload images.
'';
};
minio = mkOption {
type = types.nullOr (types.submodule {
options = {
accessKey = mkOption {
type = types.str;
default = "";
description = ''
Minio access key.
'';
};
secretKey = mkOption {
type = types.str;
default = "";
description = ''
Minio secret key.
'';
};
endpoint = mkOption {
type = types.str;
default = "";
description = ''
Minio endpoint.
'';
};
port = mkOption {
type = types.int;
default = 9000;
description = ''
Minio listen port.
'';
};
secure = mkOption {
type = types.bool;
default = true;
description = ''
Whether to use HTTPS for Minio.
'';
};
};
});
default = null;
description = "Configure the minio third-party integration.";
};
s3 = mkOption {
type = types.nullOr (types.submodule {
options = {
accessKeyId = mkOption {
type = types.str;
default = "";
description = ''
AWS access key id.
'';
};
secretAccessKey = mkOption {
type = types.str;
default = "";
description = ''
AWS access key.
'';
};
region = mkOption {
type = types.str;
default = "";
description = ''
AWS S3 region.
'';
};
};
});
default = null;
description = "Configure the s3 third-party integration.";
};
s3bucket = mkOption {
type = types.nullOr types.str;
default = null;
description = ''
Specify the bucket name for upload types <literal>s3</literal> and <literal>minio</literal>.
'';
};
allowPDFExport = mkOption {
type = types.bool;
default = true;
description = ''
Whether to enable PDF exports.
'';
};
imgur.clientId = mkOption {
type = types.nullOr types.str;
default = null;
description = ''
Imgur API client ID.
'';
};
azure = mkOption {
type = types.nullOr (types.submodule {
options = {
connectionString = mkOption {
type = types.str;
default = "";
description = ''
Azure Blob Storage connection string.
'';
};
container = mkOption {
type = types.str;
default = "";
description = ''
Azure Blob Storage container name.
It will be created if non-existent.
'';
};
};
});
default = null;
description = "Configure the azure third-party integration.";
};
oauth2 = mkOption {
type = types.nullOr (types.submodule {
options = {
authorizationURL = mkOption {
type = types.str;
default = "";
description = ''
Specify the OAuth authorization URL.
'';
};
tokenURL = mkOption {
type = types.str;
default = "";
description = ''
Specify the OAuth token URL.
'';
};
clientID = mkOption {
type = types.str;
default = "";
description = ''
Specify the OAuth client ID.
'';
};
clientSecret = mkOption {
type = types.str;
default = "";
description = ''
Specify the OAuth client secret.
'';
};
};
});
default = null;
description = "Configure the OAuth integration.";
};
facebook = mkOption {
type = types.nullOr (types.submodule {
options = {
clientID = mkOption {
type = types.str;
default = "";
description = ''
Facebook API client ID.
'';
};
clientSecret = mkOption {
type = types.str;
default = "";
description = ''
Facebook API client secret.
'';
};
};
});
default = null;
description = "Configure the facebook third-party integration";
};
twitter = mkOption {
type = types.nullOr (types.submodule {
options = {
consumerKey = mkOption {
type = types.str;
default = "";
description = ''
Twitter API consumer key.
'';
};
consumerSecret = mkOption {
type = types.str;
default = "";
description = ''
Twitter API consumer secret.
'';
};
};
});
default = null;
description = "Configure the Twitter third-party integration.";
};
github = mkOption {
type = types.nullOr (types.submodule {
options = {
clientID = mkOption {
type = types.str;
default = "";
description = ''
GitHub API client ID.
'';
};
clientSecret = mkOption {
type = types.str;
default = "";
description = ''
Github API client secret.
'';
};
};
});
default = null;
description = "Configure the GitHub third-party integration.";
};
gitlab = mkOption {
type = types.nullOr (types.submodule {
options = {
baseURL = mkOption {
type = types.str;
default = "";
description = ''
GitLab API authentication endpoint.
Only needed for other endpoints than gitlab.com.
'';
};
clientID = mkOption {
type = types.str;
default = "";
description = ''
GitLab API client ID.
'';
};
clientSecret = mkOption {
type = types.str;
default = "";
description = ''
GitLab API client secret.
'';
};
scope = mkOption {
type = types.enum [ "api" "read_user" ];
default = "api";
description = ''
GitLab API requested scope.
GitLab snippet import/export requires api scope.
'';
};
};
});
default = null;
description = "Configure the GitLab third-party integration.";
};
mattermost = mkOption {
type = types.nullOr (types.submodule {
options = {
baseURL = mkOption {
type = types.str;
default = "";
description = ''
Mattermost authentication endpoint.
'';
};
clientID = mkOption {
type = types.str;
default = "";
description = ''
Mattermost API client ID.
'';
};
clientSecret = mkOption {
type = types.str;
default = "";
description = ''
Mattermost API client secret.
'';
};
};
});
default = null;
description = "Configure the Mattermost third-party integration.";
};
dropbox = mkOption {
type = types.nullOr (types.submodule {
options = {
clientID = mkOption {
type = types.str;
default = "";
description = ''
Dropbox API client ID.
'';
};
clientSecret = mkOption {
type = types.str;
default = "";
description = ''
Dropbox API client secret.
'';
};
appKey = mkOption {
type = types.str;
default = "";
description = ''
Dropbox app key.
'';
};
};
});
default = null;
description = "Configure the Dropbox third-party integration.";
};
google = mkOption {
type = types.nullOr (types.submodule {
options = {
clientID = mkOption {
type = types.str;
default = "";
description = ''
Google API client ID.
'';
};
clientSecret = mkOption {
type = types.str;
default = "";
description = ''
Google API client secret.
'';
};
};
});
default = null;
description = "Configure the Google third-party integration.";
};
ldap = mkOption {
type = types.nullOr (types.submodule {
options = {
providerName = mkOption {
type = types.str;
default = "";
description = ''
Optional name to be displayed at login form, indicating the LDAP provider.
'';
};
url = mkOption {
type = types.str;
default = "";
example = "ldap://localhost";
description = ''
URL of LDAP server.
'';
};
bindDn = mkOption {
type = types.str;
default = "";
description = ''
Bind DN for LDAP access.
'';
};
bindCredentials = mkOption {
type = types.str;
default = "";
description = ''
Bind credentials for LDAP access.
'';
};
searchBase = mkOption {
type = types.str;
default = "";
example = "o=users,dc=example,dc=com";
description = ''
LDAP directory to begin search from.
'';
};
searchFilter = mkOption {
type = types.str;
default = "";
example = "(uid={{username}})";
description = ''
LDAP filter to search with.
'';
};
searchAttributes = mkOption {
type = types.listOf types.str;
default = [];
example = [ "displayName" "mail" ];
description = ''
LDAP attributes to search with.
'';
};
userNameField = mkOption {
type = types.str;
default = "";
description = ''
LDAP field which is used as the username on CodiMD.
By default <option>useridField</option> is used.
'';
};
useridField = mkOption {
type = types.str;
default = "";
example = "uid";
description = ''
LDAP field which is a unique identifier for users on CodiMD.
'';
};
tlsca = mkOption {
type = types.str;
default = "";
example = "server-cert.pem,root.pem";
description = ''
Root CA for LDAP TLS in PEM format.
'';
};
};
});
default = null;
description = "Configure the LDAP integration.";
};
saml = mkOption {
type = types.nullOr (types.submodule {
options = {
idpSsoUrl = mkOption {
type = types.str;
default = "";
example = "https://idp.example.com/sso";
description = ''
IdP authentication endpoint.
'';
};
idPCert = mkOption {
type = types.str;
default = "";
example = "/path/to/cert.pem";
description = ''
Path to IdP certificate file in PEM format.
'';
};
issuer = mkOption {
type = types.str;
default = "";
description = ''
Optional identity of the service provider.
This defaults to the server URL.
'';
};
identifierFormat = mkOption {
type = types.str;
default = "urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress";
description = ''
Optional name identifier format.
'';
};
groupAttribute = mkOption {
type = types.str;
default = "";
example = "memberOf";
description = ''
Optional attribute name for group list.
'';
};
externalGroups = mkOption {
type = types.listOf types.str;
default = [];
example = [ "Temporary-staff" "External-users" ];
description = ''
Excluded group names.
'';
};
requiredGroups = mkOption {
type = types.listOf types.str;
default = [];
example = [ "Hackmd-users" "Codimd-users" ];
description = ''
Required group names.
'';
};
attribute = {
id = mkOption {
type = types.str;
default = "";
description = ''
Attribute map for `id'.
Defaults to `NameID' of SAML response.
'';
};
username = mkOption {
type = types.str;
default = "";
description = ''
Attribute map for `username'.
Defaults to `NameID' of SAML response.
'';
};
email = mkOption {
type = types.str;
default = "";
description = ''
Attribute map for `email'.
Defaults to `NameID' of SAML response if
<option>identifierFormat</option> has
the default value.
'';
};
};
};
});
default = null;
description = "Configure the SAML integration.";
};
};
};
config = mkIf cfg.enable {
assertions = [
{ assertion = cfg.configuration.db == {} -> (
cfg.configuration.dbURL != "" && cfg.configuration.dbURL != null
);
message = "Database configuration for CodiMD missing."; }
];
users.groups.codimd = {};
users.users.codimd = {
description = "CodiMD service user";
group = "codimd";
extraGroups = cfg.groups;
home = cfg.workDir;
createHome = true;
};
systemd.services.codimd = {
description = "CodiMD Service";
wantedBy = [ "multi-user.target" ];
after = [ "networking.target" ];
preStart = ''
mkdir -p ${cfg.workDir}
chown -R codimd: ${cfg.workDir}
'';
serviceConfig = {
WorkingDirectory = cfg.workDir;
ExecStart = "${pkgs.codimd}/bin/codimd";
Environment = [
"CMD_CONFIG_FILE=${prettyJSON cfg.configuration}"
"NODE_ENV=production"
];
Restart = "always";
User = "codimd";
PermissionsStartOnly = true;
PrivateTmp = true;
};
};
};
}

View file

@ -266,7 +266,7 @@ in
session. Each session script can set the
<varname>waitPID</varname> shell variable to make this script
wait until the end of the user session. Each script is used
to define either a windows manager or a desktop manager. These
to define either a window manager or a desktop manager. These
can be differentiated by setting the attribute
<varname>manage</varname> either to <literal>"window"</literal>
or <literal>"desktop"</literal>.

View file

@ -197,7 +197,7 @@ in
# lightdm relaunches itself via just `lightdm`, so needs to be on the PATH
execCmd = ''
export PATH=${lightdm}/sbin:$PATH
exec ${lightdm}/sbin/lightdm --log-dir=/var/log --run-dir=/run
exec ${lightdm}/sbin/lightdm
'';
};
@ -246,12 +246,19 @@ in
'';
users.users.lightdm = {
createHome = true;
home = "/var/lib/lightdm-data";
home = "/var/lib/lightdm";
group = "lightdm";
uid = config.ids.uids.lightdm;
};
systemd.tmpfiles.rules = [
"d /var/run/lightdm 0711 lightdm lightdm 0"
"d /var/cache/lightdm 0711 root lightdm -"
"d /var/lib/lightdm 1770 lightdm lightdm -"
"d /var/lib/lightdm-data 1775 lightdm lightdm -"
"d /var/log/lightdm 0711 root lightdm -"
];
users.groups.lightdm.gid = config.ids.gids.lightdm;
services.xserver.tty = null; # We might start multiple X servers so let the tty increment themselves..
services.xserver.display = null; # We specify our own display (and logfile) in xserver-wrapper up there

View file

@ -261,6 +261,7 @@ in rec {
tests.chromium = (callSubTestsOnMatchingSystems ["x86_64-linux"] tests/chromium.nix {}).stable or {};
tests.cjdns = callTest tests/cjdns.nix {};
tests.cloud-init = callTest tests/cloud-init.nix {};
tests.codimd = callTest tests/codimd.nix {};
tests.containers-ipv4 = callTest tests/containers-ipv4.nix {};
tests.containers-ipv6 = callTest tests/containers-ipv6.nix {};
tests.containers-bridge = callTest tests/containers-bridge.nix {};

56
nixos/tests/codimd.nix Normal file
View file

@ -0,0 +1,56 @@
import ./make-test.nix ({ pkgs, lib, ... }:
{
name = "codimd";
meta = with lib.maintainers; {
maintainers = [ willibutz ];
};
nodes = {
codimdSqlite = { ... }: {
services = {
codimd = {
enable = true;
configuration.dbURL = "sqlite:///var/lib/codimd/codimd.db";
};
};
};
codimdPostgres = { ... }: {
systemd.services.codimd.after = [ "postgresql.service" ];
services = {
codimd = {
enable = true;
configuration.dbURL = "postgres://codimd:snakeoilpassword@localhost:5432/codimddb";
};
postgresql = {
enable = true;
initialScript = pkgs.writeText "pg-init-script.sql" ''
CREATE ROLE codimd LOGIN PASSWORD 'snakeoilpassword';
CREATE DATABASE codimddb OWNER codimd;
'';
};
};
};
};
testScript = ''
startAll();
subtest "CodiMD sqlite", sub {
$codimdSqlite->waitForUnit("codimd.service");
$codimdSqlite->waitForOpenPort(3000);
$codimdPostgres->succeed("sleep 2"); # avoid 503 during startup
$codimdSqlite->succeed("curl -sSf http://localhost:3000/new");
};
subtest "CodiMD postgres", sub {
$codimdPostgres->waitForUnit("postgresql.service");
$codimdPostgres->waitForUnit("codimd.service");
$codimdPostgres->waitForOpenPort(5432);
$codimdPostgres->waitForOpenPort(3000);
$codimdPostgres->succeed("sleep 2"); # avoid 503 during startup
$codimdPostgres->succeed("curl -sSf http://localhost:3000/new");
};
'';
})

View file

@ -563,6 +563,7 @@ in {
"swapon -L swap",
"mkfs.ext3 -L nixos /dev/sda2",
"mount LABEL=nixos /mnt",
"mkdir -p /mnt/tmp",
);
'';
grubVersion = 1;

View file

@ -3,13 +3,13 @@
stdenv.mkDerivation rec {
name = "nano-wallet-${version}";
version = "15.2";
version = "16.0";
src = fetchFromGitHub {
owner = "nanocurrency";
repo = "raiblocks";
rev = "V${version}";
sha256 = "0ngsnaczw5y709zk52flp6m2c83q3kxfgz0bzi8rzfjxp10ncnz3";
sha256 = "0fk8jlas3khdh3nlv40krsjdifxp9agblvzap6k93wmm9y34h41c";
fetchSubmodules = true;
};

View file

@ -3,12 +3,12 @@
}:
stdenv.mkDerivation rec {
version = "0.9.15";
version = "0.9.16";
name = "drumgizmo-${version}";
src = fetchurl {
url = "https://www.drumgizmo.org/releases/${name}/${name}.tar.gz";
sha256 = "13bgqyw74pq3ss63zd9bjmgr4dah792pcphyqmr7bnvrgfjr6bx6";
sha256 = "0ivr61n9gpigsfgn20rh3n09li8sxh1q095r6wiw0shqhn3vaxlg";
};
configureFlags = [ "--enable-lv2" ];

View file

@ -2,11 +2,11 @@
stdenv.mkDerivation rec {
name = "jaaa-${version}";
version = "0.8.4";
version = "0.9.2";
src = fetchurl {
url = "https://kokkinizita.linuxaudio.org/linuxaudio/downloads/${name}.tar.bz2";
sha256 = "0jyll4rkb6vja2widc340ww078rr24c6nmxbxdqvbxw409nccd01";
sha256 = "1czksxx2g8na07k7g57qlz0vvkkgi5bzajcx7vc7jhb94hwmmxbc";
};
buildInputs = [

View file

@ -1,12 +1,12 @@
{ stdenv, fetchurl, alsaLib, libjack2, fftwFloat, libclthreads, libclxclient, libX11, libXft, zita-alsa-pcmi, }:
stdenv.mkDerivation rec {
version = "0.8.4";
version = "0.9.2";
name = "japa-${version}";
src = fetchurl {
url = "https://kokkinizita.linuxaudio.org/linuxaudio/downloads/${name}.tar.bz2";
sha256 = "1jhj7s4vqk5c4lchdall0kslvj5sh91902hhfjvs6r3a5nrhwcp0";
sha256 = "1zmi4wg23hwsypg3h6y3qb72cbrihqcs19qrbzgs5a67d13q4897";
};
buildInputs = [ alsaLib libjack2 fftwFloat libclthreads libclxclient libX11 libXft zita-alsa-pcmi ];

View file

@ -1,11 +1,15 @@
{ stdenv, fetchgit, meson, ninja, pkgconfig, wrapGAppsHook
, appstream-glib, desktop-file-utils, gobjectIntrospection
, python36Packages, gnome3, glib, gst_all_1 }:
{ stdenv, fetchgit, meson, ninja, pkgconfig
, python3, gtk3, gst_all_1, libsecret, libsoup
, appstream-glib, desktop-file-utils, gnome3
, gobjectIntrospection, wrapGAppsHook }:
stdenv.mkDerivation rec {
python3.pkgs.buildPythonApplication rec {
version = "0.9.522";
name = "lollypop-${version}";
format = "other";
doCheck = false;
src = fetchgit {
url = "https://gitlab.gnome.org/World/lollypop";
rev = "refs/tags/${version}";
@ -13,26 +17,30 @@ stdenv.mkDerivation rec {
sha256 = "0f2brwv884cvmxj644jcj9sg5hix3wvnjy2ndg0fh5cxyqz0kwn5";
};
nativeBuildInputs = with python36Packages; [
nativeBuildInputs = with python3.pkgs; [
appstream-glib
desktop-file-utils
gobjectIntrospection
meson
ninja
python36Packages.python
pkgconfig
wrapGAppsHook
wrapPython
];
buildInputs = [ glib ] ++ (with gnome3; [
gsettings-desktop-schemas gtk3 libsecret libsoup totem-pl-parser
]) ++ (with gst_all_1; [
gst-libav gst-plugins-bad gst-plugins-base gst-plugins-good gst-plugins-ugly
buildInputs = with gst_all_1; [
gnome3.totem-pl-parser
gst-libav
gst-plugins-bad
gst-plugins-base
gst-plugins-good
gst-plugins-ugly
gstreamer
]);
gtk3
libsecret
libsoup
];
pythonPath = with python36Packages; [
pythonPath = with python3.pkgs; [
beautifulsoup4
gst-python
pillow
@ -42,11 +50,14 @@ stdenv.mkDerivation rec {
pylast
];
postFixup = "wrapPythonPrograms";
postPatch = ''
chmod +x ./meson_post_install.py
patchShebangs ./meson_post_install.py
chmod +x meson_post_install.py
patchShebangs meson_post_install.py
'';
preFixup = ''
buildPythonPath "$out/libexec/lollypop-sp $pythonPath"
patchPythonScript "$out/libexec/lollypop-sp"
'';
meta = with stdenv.lib; {

View file

@ -1,55 +0,0 @@
{ stdenv, fetchgit, pythonPackages, cdparanoia, cdrdao
, gst-python, gst-plugins-base, gst-plugins-good
, utillinux, makeWrapper, substituteAll, autoreconfHook }:
let
inherit (pythonPackages) python;
in stdenv.mkDerivation rec {
name = "morituri-${version}";
version = "0.2.3.20151109";
namePrefix = "";
src = fetchgit {
url = "https://github.com/thomasvs/morituri.git";
fetchSubmodules = true;
rev = "135b2f7bf27721177e3aeb1d26403f1b29116599";
sha256 = "1sl5y5j3gdbynf2v0gf9dwd2hzawj8lm8ywadid7qm34yn8lx12k";
};
pythonPath = with pythonPackages; [
pygobject2 gst-python musicbrainzngs
pycdio pyxdg setuptools
CDDB
];
nativeBuildInputs = [ autoreconfHook ];
buildInputs = [
python cdparanoia cdrdao utillinux makeWrapper
gst-plugins-base gst-plugins-good
] ++ pythonPath;
patches = [
(substituteAll {
src = ./paths.patch;
inherit cdrdao cdparanoia python utillinux;
})
];
# This package contains no binaries to patch or strip.
dontPatchELF = true;
dontStrip = true;
postInstall = ''
wrapProgram "$out/bin/rip" \
--prefix PYTHONPATH : "$PYTHONPATH" \
--prefix GST_PLUGIN_SYSTEM_PATH : "$GST_PLUGIN_SYSTEM_PATH"
'';
meta = with stdenv.lib; {
homepage = http://thomas.apestaart.org/morituri/trac/;
description = "A CD ripper aiming for accuracy over speed";
maintainers = with maintainers; [ rycee jgeerds ];
license = licenses.gpl3Plus;
platforms = platforms.linux;
};
}

View file

@ -1,87 +0,0 @@
diff --git a/doc/Makefile.am b/doc/Makefile.am
index c115c2c..78c883e 100644
--- a/doc/Makefile.am
+++ b/doc/Makefile.am
@@ -24,7 +24,7 @@ morituri.ics: $(top_srcdir)/morituri.doap
man_MANS = rip.1
rip.1: $(top_srcdir)/morituri/extern/python-command/scripts/help2man $(top_srcdir)/morituri
- PYTHONPATH=$(top_srcdir) $(PYTHON) $(top_srcdir)/morituri/extern/python-command/scripts/help2man morituri.rip.main.Rip rip > rip.1
+ PYTHONPATH=$(top_srcdir):$(PYTHONPATH) $(PYTHON) $(top_srcdir)/morituri/extern/python-command/scripts/help2man morituri.rip.main.Rip rip > rip.1
clean-local:
@rm -rf reference
diff --git a/morituri/common/program.py b/morituri/common/program.py
index d340fdd..15cb751 100644
--- a/morituri/common/program.py
+++ b/morituri/common/program.py
@@ -92,13 +92,13 @@ class Program(log.Loggable):
"""
Load the given device.
"""
- os.system('eject -t %s' % device)
+ os.system('@utillinux@/bin/eject -t %s' % device)
def ejectDevice(self, device):
"""
Eject the given device.
"""
- os.system('eject %s' % device)
+ os.system('@utillinux@/bin/eject %s' % device)
def unmountDevice(self, device):
"""
@@ -112,7 +112,7 @@ class Program(log.Loggable):
proc = open('/proc/mounts').read()
if device in proc:
print 'Device %s is mounted, unmounting' % device
- os.system('umount %s' % device)
+ os.system('@utillinux@/bin/umount %s' % device)
def getFastToc(self, runner, toc_pickle, device):
"""
Submodule morituri/extern/python-command contains modified content
diff --git a/morituri/program/cdparanoia.py b/morituri/program/cdparanoia.py
index 46176d5..fce14a5 100644
--- a/morituri/program/cdparanoia.py
+++ b/morituri/program/cdparanoia.py
@@ -278,7 +278,7 @@ class ReadTrackTask(log.Loggable, task.Task):
stopTrack, stopOffset)
bufsize = 1024
- argv = ["cdparanoia", "--stderr-progress",
+ argv = ["@cdparanoia@/bin/cdparanoia", "--stderr-progress",
"--sample-offset=%d" % self._offset, ]
if self._device:
argv.extend(["--force-cdrom-device", self._device, ])
@@ -551,7 +551,7 @@ _VERSION_RE = re.compile(
def getCdParanoiaVersion():
getter = common.VersionGetter('cdparanoia',
- ["cdparanoia", "-V"],
+ ["@cdparanoia@/bin/cdparanoia", "-V"],
_VERSION_RE,
"%(version)s %(release)s")
diff --git a/morituri/program/cdrdao.py b/morituri/program/cdrdao.py
index c6fba64..c4d0306 100644
--- a/morituri/program/cdrdao.py
+++ b/morituri/program/cdrdao.py
@@ -257,7 +257,7 @@ class CDRDAOTask(ctask.PopenTask):
def start(self, runner):
self.debug('Starting cdrdao with options %r', self.options)
- self.command = ['cdrdao', ] + self.options
+ self.command = ['@cdrdao@/bin/cdrdao', ] + self.options
ctask.PopenTask.start(self, runner)
@@ -515,7 +515,7 @@ _VERSION_RE = re.compile(
def getCDRDAOVersion():
getter = common.VersionGetter('cdrdao',
- ["cdrdao"],
+ ["@cdrdao@/bin/cdrdao"],
_VERSION_RE,
"%(version)s")

View file

@ -11,6 +11,7 @@ stdenv.mkDerivation rec {
preFixup = ''
wrapProgram "$out/bin/pavucontrol" \
--set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
--prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS"
'';

View file

@ -0,0 +1,52 @@
{ stdenv, fetchFromGitHub, cmake, ninja, pkgconfig, vala, gtk3, libxml2, granite, webkitgtk, clutter-gtk
, clutter-gst, libunity, libnotify, sqlite, gst_all_1, libsoup, json-glib, gnome3, gobjectIntrospection, wrapGAppsHook }:
stdenv.mkDerivation rec {
pname = "vocal";
version = "2.2.0";
name = "${pname}-${version}";
src = fetchFromGitHub {
owner = "needle-and-thread";
repo = pname;
rev = version;
sha256 = "09cm4azyaa9fmfymygf25gf0klpm5p04k6bc1i90jhw0f1im8sgl";
};
nativeBuildInputs = [
cmake
gobjectIntrospection
libxml2
ninja
pkgconfig
vala
wrapGAppsHook
];
buildInputs = with gst_all_1; [
clutter-gst
clutter-gtk
gnome3.libgee
granite
gst-plugins-base
gst-plugins-good
gstreamer
json-glib
libnotify
libunity
sqlite
webkitgtk
];
meta = with stdenv.lib; {
description = "The podcast client for the modern free desktop";
longDescription = ''
Vocal is a powerful, fast, and intuitive application that helps users find new podcasts, manage their libraries, and enjoy the best that indepedent audio and video publishing has to offer. Vocal features full support for both episode downloading and streaming, native system integration, iTunes store search and top 100 charts (with international results support), iTunes link parsing, OPML importing and exporting, and so much more. Plus, it has great smart features like automatically keeping your library clean from old files, and the ability to set custom skip intervals.
'';
homepage = https://github.com/needle-and-thread/vocal;
license = licenses.gpl3Plus;
maintainers = with maintainers; [ worldofpeace ];
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,48 @@
{ stdenv, fetchFromGitHub, python2, cdparanoia, cdrdao, flac
, sox, accuraterip-checksum, utillinux, substituteAll }:
python2.pkgs.buildPythonApplication rec {
name = "whipper-${version}";
version = "0.7.0";
src = fetchFromGitHub {
owner = "JoeLametta";
repo = "whipper";
rev = "v${version}";
sha256 = "04m8s0s9dcnly9l6id8vv99n9kbjrjid79bss52ay9yvwng0frmj";
};
pythonPath = with python2.pkgs; [
pygobject2 musicbrainzngs urllib3 chardet
pycdio setuptools mutagen
requests
];
checkInputs = with python2.pkgs; [
twisted
];
patches = [
(substituteAll {
src = ./paths.patch;
inherit cdrdao cdparanoia utillinux flac sox;
accurateripChecksum = accuraterip-checksum;
})
];
# some tests require internet access
# https://github.com/JoeLametta/whipper/issues/291
doCheck = false;
preCheck = ''
HOME=$TMPDIR
'';
meta = with stdenv.lib; {
homepage = https://github.com/JoeLametta/whipper;
description = "A CD ripper aiming for accuracy over speed";
maintainers = with maintainers; [ rycee jgeerds ];
license = licenses.gpl3Plus;
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,105 @@
--- a/whipper/program/arc.py
+++ b/whipper/program/arc.py
@@ -3,8 +3,8 @@
import logging
logger = logging.getLogger(__name__)
-ARB = 'accuraterip-checksum'
-FLAC = 'flac'
+ARB = '@accurateripChecksum@/bin/accuraterip-checksum'
+FLAC = '@flac@/bin/flac'
def _execute(cmd, **redirects):
--- a/whipper/program/cdparanoia.py
+++ b/whipper/program/cdparanoia.py
@@ -280,10 +280,10 @@
bufsize = 1024
if self._overread:
- argv = ["cd-paranoia", "--stderr-progress",
+ argv = ["@cdparanoia@/bin/cdparanoia", "--stderr-progress",
"--sample-offset=%d" % self._offset, "--force-overread", ]
else:
- argv = ["cd-paranoia", "--stderr-progress",
+ argv = ["@cdparanoia@/bin/cdparanoia", "--stderr-progress",
"--sample-offset=%d" % self._offset, ]
if self._device:
argv.extend(["--force-cdrom-device", self._device, ])
@@ -560,7 +560,7 @@
def getCdParanoiaVersion():
getter = common.VersionGetter('cd-paranoia',
- ["cd-paranoia", "-V"],
+ ["@cdparanoia@/bin/cdparanoia", "-V"],
_VERSION_RE,
"%(version)s %(release)s")
@@ -585,7 +585,7 @@
def __init__(self, device=None):
# cdparanoia -A *always* writes cdparanoia.log
self.cwd = tempfile.mkdtemp(suffix='.whipper.cache')
- self.command = ['cd-paranoia', '-A']
+ self.command = ['@cdparanoia@/bin/cdparanoia', '-A']
if device:
self.command += ['-d', device]
--- a/whipper/program/cdrdao.py
+++ b/whipper/program/cdrdao.py
@@ -9,7 +9,7 @@
import logging
logger = logging.getLogger(__name__)
-CDRDAO = 'cdrdao'
+CDRDAO = '@cdrdao@/bin/cdrdao'
def read_toc(device, fast_toc=False):
--- a/whipper/program/sox.py
+++ b/whipper/program/sox.py
@@ -4,7 +4,7 @@
import logging
logger = logging.getLogger(__name__)
-SOX = 'sox'
+SOX = '@sox@/bin/sox'
def peak_level(track_path):
--- a/whipper/program/soxi.py
+++ b/whipper/program/soxi.py
@@ -6,7 +6,7 @@
import logging
logger = logging.getLogger(__name__)
-SOXI = 'soxi'
+SOXI = '@sox@/bin/soxi'
class AudioLengthTask(ctask.PopenTask):
--- a/whipper/program/utils.py
+++ b/whipper/program/utils.py
@@ -9,7 +9,7 @@
Eject the given device.
"""
logger.debug("ejecting device %s", device)
- os.system('eject %s' % device)
+ os.system('@utillinux@/bin/eject %s' % device)
def load_device(device):
@@ -17,7 +17,7 @@
Load the given device.
"""
logger.debug("loading (eject -t) device %s", device)
- os.system('eject -t %s' % device)
+ os.system('@utillinux@/bin/eject -t %s' % device)
def unmount_device(device):
@@ -32,4 +32,4 @@
proc = open('/proc/mounts').read()
if device in proc:
print 'Device %s is mounted, unmounting' % device
- os.system('umount %s' % device)
+ os.system('@utillinux@/bin/umount %s' % device)

View file

@ -309,6 +309,21 @@
license = lib.licenses.free;
};
}) {};
brief = callPackage ({ elpaBuild, fetchurl, lib }:
elpaBuild {
pname = "brief";
ename = "brief";
version = "5.85";
src = fetchurl {
url = "https://elpa.gnu.org/packages/brief-5.85.el";
sha256 = "10a41qidns28cka0y25rapla58fzjy9c8cw9v9bmrm4gkjqapsv4";
};
packageRequires = [];
meta = {
homepage = "https://elpa.gnu.org/packages/brief.html";
license = lib.licenses.free;
};
}) {};
bug-hunter = callPackage ({ cl-lib ? null, elpaBuild, fetchurl, lib, seq }:
elpaBuild {
pname = "bug-hunter";
@ -820,10 +835,10 @@
elpaBuild {
pname = "ebdb";
ename = "ebdb";
version = "0.5.4";
version = "0.6";
src = fetchurl {
url = "https://elpa.gnu.org/packages/ebdb-0.5.4.tar";
sha256 = "1dripbiwplyjalzmkr8awaimhkp9f6c2bhnm3c77027k2b87w4lf";
url = "https://elpa.gnu.org/packages/ebdb-0.6.tar";
sha256 = "1zj8jvq5l4wlk4734i3isxi4barpivarq2f9kqzkfia7mcspxav8";
};
packageRequires = [ cl-lib emacs seq ];
meta = {
@ -900,10 +915,10 @@
elpaBuild {
pname = "el-search";
ename = "el-search";
version = "1.7.3";
version = "1.7.9";
src = fetchurl {
url = "https://elpa.gnu.org/packages/el-search-1.7.3.tar";
sha256 = "0nxjgi027mjjn53nm9ara4nyr7kyqjawsmfaygsxqjv0mbykjmd1";
url = "https://elpa.gnu.org/packages/el-search-1.7.9.tar";
sha256 = "06da4v03zis1mf09v61c1jzkp5x6drm61iakcbpy5hkdq8nvm3xc";
};
packageRequires = [ cl-print emacs stream ];
meta = {
@ -971,7 +986,8 @@
license = lib.licenses.free;
};
}) {};
ergoemacs-mode = callPackage ({ elpaBuild
ergoemacs-mode = callPackage ({ cl-lib ? null
, elpaBuild
, emacs
, fetchurl
, lib
@ -979,12 +995,12 @@
elpaBuild {
pname = "ergoemacs-mode";
ename = "ergoemacs-mode";
version = "5.14.7.3";
version = "5.16.10.12";
src = fetchurl {
url = "https://elpa.gnu.org/packages/ergoemacs-mode-5.14.7.3.tar";
sha256 = "0lqqrnw6z9w7js8r40khckjc1cyxdiwx8kapf5pvyfs09gs89i90";
url = "https://elpa.gnu.org/packages/ergoemacs-mode-5.16.10.12.tar";
sha256 = "1zfzjmi30lllrbyzicmp11c9lpa82g57wi134q9bajvzn9ryx4jr";
};
packageRequires = [ emacs undo-tree ];
packageRequires = [ cl-lib emacs undo-tree ];
meta = {
homepage = "https://elpa.gnu.org/packages/ergoemacs-mode.html";
license = lib.licenses.free;
@ -995,17 +1011,18 @@
, fetchurl
, fsm
, lib
, nadvice
, soap-client
, url-http-ntlm }:
elpaBuild {
pname = "excorporate";
ename = "excorporate";
version = "0.7.6";
version = "0.8.0";
src = fetchurl {
url = "https://elpa.gnu.org/packages/excorporate-0.7.6.tar";
sha256 = "02bp0z6vpssc12vxxs1g4whmfxf88wsk0bcq4422vvz256l6vpf9";
url = "https://elpa.gnu.org/packages/excorporate-0.8.0.tar";
sha256 = "0sx04w7yp2byda0maifsmapqmq6w43r114a6gzqar0j82rsc0mfg";
};
packageRequires = [ emacs fsm soap-client url-http-ntlm ];
packageRequires = [ emacs fsm nadvice soap-client url-http-ntlm ];
meta = {
homepage = "https://elpa.gnu.org/packages/excorporate.html";
license = lib.licenses.free;
@ -1105,10 +1122,10 @@
elpaBuild {
pname = "ggtags";
ename = "ggtags";
version = "0.8.12";
version = "0.8.13";
src = fetchurl {
url = "https://elpa.gnu.org/packages/ggtags-0.8.12.el";
sha256 = "0ny3llk021g6r0s75xdm4hzpbxv393ddm2r6f2xdk8kqnq4gnirp";
url = "https://elpa.gnu.org/packages/ggtags-0.8.13.el";
sha256 = "1qa7lcrcmf76sf6dy8sxbg4adq7rg59fm0n5848w3qxgsr0h45fg";
};
packageRequires = [ cl-lib emacs ];
meta = {
@ -1412,10 +1429,10 @@
elpaBuild {
pname = "jsonrpc";
ename = "jsonrpc";
version = "1.0.0";
version = "1.0.6";
src = fetchurl {
url = "https://elpa.gnu.org/packages/jsonrpc-1.0.0.el";
sha256 = "06lmmn7j2ilkvwibbpgnd8p6d63fjjnxd2ma8f4jw6vrz1f7lwvs";
url = "https://elpa.gnu.org/packages/jsonrpc-1.0.6.el";
sha256 = "13a19smz8cksv6fgcyxb111csvagkp07z5nl4imyp5b23asgl70p";
};
packageRequires = [ emacs ];
meta = {
@ -1753,6 +1770,21 @@
license = lib.licenses.free;
};
}) {};
nadvice = callPackage ({ elpaBuild, fetchurl, lib }:
elpaBuild {
pname = "nadvice";
ename = "nadvice";
version = "0.2";
src = fetchurl {
url = "https://elpa.gnu.org/packages/nadvice-0.2.el";
sha256 = "094slkgw4f7cd88r76d0rgpbqr7zzwy19ssndg8v3sm4p5ld6vwg";
};
packageRequires = [];
meta = {
homepage = "https://elpa.gnu.org/packages/nadvice.html";
license = lib.licenses.free;
};
}) {};
nameless = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
elpaBuild {
pname = "nameless";
@ -1911,10 +1943,10 @@
elpaBuild {
pname = "org";
ename = "org";
version = "9.1.13";
version = "9.1.14";
src = fetchurl {
url = "https://elpa.gnu.org/packages/org-9.1.13.tar";
sha256 = "1vx0n32gvrgy2bl2b4pvxf00cywxwm57gi46f2b2zlrnmd5n85pr";
url = "https://elpa.gnu.org/packages/org-9.1.14.tar";
sha256 = "17vd9hig26rqv90l6y92hc2i0x29g44lsdsp0xd4m53s8r3zdikz";
};
packageRequires = [];
meta = {
@ -1956,10 +1988,10 @@
elpaBuild {
pname = "other-frame-window";
ename = "other-frame-window";
version = "1.0.4";
version = "1.0.6";
src = fetchurl {
url = "https://elpa.gnu.org/packages/other-frame-window-1.0.4.el";
sha256 = "0hg82j8zjh0ann6bf56r0p8s0y3a016zny8byp80mcvkw63wrn5i";
url = "https://elpa.gnu.org/packages/other-frame-window-1.0.6.el";
sha256 = "04h0jr73xv8inm52h8b8zbc9lsnlzkn40qy99x4x0lkkdqqxw1ny";
};
packageRequires = [ emacs ];
meta = {
@ -2147,16 +2179,16 @@
license = lib.licenses.free;
};
}) {};
rcirc-color = callPackage ({ elpaBuild, fetchurl, lib }:
rcirc-color = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
elpaBuild {
pname = "rcirc-color";
ename = "rcirc-color";
version = "0.3";
version = "0.4.1";
src = fetchurl {
url = "https://elpa.gnu.org/packages/rcirc-color-0.3.el";
sha256 = "1ya4agh63x60lv8qzrjrng02dnrc70ci0s05b800iq71k71ss3dl";
url = "https://elpa.gnu.org/packages/rcirc-color-0.4.1.el";
sha256 = "1zs3i3xr8zbjr8hzr1r1qx7mqb2wckpn25qh9444c9as2dnh9sn9";
};
packageRequires = [];
packageRequires = [ emacs ];
meta = {
homepage = "https://elpa.gnu.org/packages/rcirc-color.html";
license = lib.licenses.free;
@ -2252,6 +2284,7 @@
}) {};
rudel = callPackage ({ cl-generic
, cl-lib ? null
, cl-print
, elpaBuild
, emacs
, fetchurl
@ -2264,7 +2297,7 @@
url = "https://elpa.gnu.org/packages/rudel-0.3.1.tar";
sha256 = "0glqa68g509p0s2vcc0i8kzlddnc9brd9jqhnm5rzxz4i050cvnz";
};
packageRequires = [ cl-generic cl-lib emacs ];
packageRequires = [ cl-generic cl-lib cl-print emacs ];
meta = {
homepage = "https://elpa.gnu.org/packages/rudel.html";
license = lib.licenses.free;

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -4,10 +4,10 @@
elpaBuild {
pname = "org";
ename = "org";
version = "20180723";
version = "20180910";
src = fetchurl {
url = "http://orgmode.org/elpa/org-20180723.tar";
sha256 = "1mcgnba16lpyh55zjx4rcbmpygcmdnjjzvgv1rx0c3kz1h5fgzf8";
url = "http://orgmode.org/elpa/org-20180910.tar";
sha256 = "1j4n0a07bxjbdzx3dipxgi0h5r0yimwylp9cnzfm6m7nc7kas2sq";
};
packageRequires = [];
meta = {
@ -19,10 +19,10 @@
elpaBuild {
pname = "org-plus-contrib";
ename = "org-plus-contrib";
version = "20180723";
version = "20180910";
src = fetchurl {
url = "http://orgmode.org/elpa/org-plus-contrib-20180723.tar";
sha256 = "1l34bagkm8mcyv5diprpbd4yjijkdvx1l54qpvi8bmvxjnzsm7mk";
url = "http://orgmode.org/elpa/org-plus-contrib-20180910.tar";
sha256 = "17inl07kjdjamlqbyxbp42kx1nkbhbhz7lzqfvkhk6s7z16qvksq";
};
packageRequires = [];
meta = {

View file

@ -1,4 +1,5 @@
{ stdenv
, ctags
, desktop-file-utils
, docbook_xsl
, docbook_xml_dtd_43
@ -58,6 +59,7 @@ in stdenv.mkDerivation {
];
buildInputs = [
ctags
flatpak
gnome3.devhelp
gnome3.libgit2-glib

View file

@ -1,29 +1,20 @@
{ stdenv, python3, libsForQt56, fetchFromGitHub, makeWrapper, makeDesktopItem }:
{ stdenv, python3, fetchFromGitHub, makeWrapper, makeDesktopItem }:
let
packageOverrides = self: super: {
pyqt56 = libsForQt56.callPackage ../../../development/python-modules/pyqt/5.x.nix {
pythonPackages = self;
};
};
pythonPackages = (python3.override { inherit packageOverrides; }).pkgs;
in
stdenv.mkDerivation rec {
name = "leo-editor-${version}";
version = "5.6";
version = "5.7.3";
src = fetchFromGitHub {
owner = "leo-editor";
repo = "leo-editor";
rev = version;
sha256 = "1k6q3gvaf05bi0mzkmmb1p6wrgxwri7ivn38p6f0m0wfd3f70x2j";
sha256 = "0ri6l6cxwva450l05af5vs1lsgrz6ciwd02njdgphs9pm1vwxbl9";
};
dontBuild = true;
nativeBuildInputs = [ makeWrapper python3 ];
propagatedBuildInputs = with pythonPackages; [ pyqt56 docutils ];
propagatedBuildInputs = with python3.pkgs; [ pyqt5 docutils ];
desktopItem = makeDesktopItem rec {
name = "leo-editor";

View file

@ -3,13 +3,13 @@
stdenv.mkDerivation rec {
name = "neovim-qt-${version}";
version = "0.2.9";
version = "0.2.10";
src = fetchFromGitHub {
owner = "equalsraf";
repo = "neovim-qt";
rev = "v${version}";
sha256 = "014zqfbbv7q85z64h1iw88l37vhrvhjv7xxd0a76j7d1m2769kqs";
sha256 = "0hq3w9d6qbzf0j7zm3ls0wpvnab64kypb4i0bhmsnk605mvx63r4";
};
cmakeFlags = [

View file

@ -0,0 +1,73 @@
{ stdenv, fetchFromGitHub, fetchpatch, vala, pkgconfig, meson, ninja, python3
, granite, gtk3, desktop-file-utils, gnome3, gtksourceview, webkitgtk, gtkspell3
, discount, gobjectIntrospection, wrapGAppsHook }:
stdenv.mkDerivation rec {
pname = "quilter";
version = "1.6.3";
name = "${pname}-${version}";
src = fetchFromGitHub {
owner = "lainsce";
repo = pname;
rev = version;
sha256 = "1wa0i6dgg6fgb7q9z33v9qmn1a1dn3ik58v1f3a49dvd5xyf8q6q";
};
nativeBuildInputs = [
desktop-file-utils
gobjectIntrospection
meson
ninja
pkgconfig
python3
vala
wrapGAppsHook
];
buildInputs = [
discount
granite
gtk3
gtksourceview
gtkspell3
webkitgtk
gnome3.libgee
];
patches = [
# Fix build with vala 0.42 - Drop these in next release
(fetchpatch {
url = "https://github.com/lainsce/quilter/commit/a58838213cd7f2d33048c7b34b96dc8875612624.patch";
sha256 = "1a4w1zql4zfk8scgrrssrm9n3sh5fsc1af5zvrqk8skbv7f2c80n";
})
(fetchpatch {
url = "https://github.com/lainsce/quilter/commit/d1800ce830343a1715bc83da3339816554896be5.patch";
sha256 = "0xl5iz8bgx5661vbbq8qa1wkfvw9d3da67x564ckjfi05zq1vddz";
})
# Correct libMarkdown dependency discovery: See https://github.com/lainsce/quilter/pull/170
(fetchpatch {
url = "https://github.com/lainsce/quilter/commit/8b1f3a60bd14cb86c1c62f9917c5f0c12bc4e459.patch";
sha256 = "1kjc6ygf9yjvqfa4xhzxiava3338swp9wbjhpfaa3pyz3ayh188n";
})
# post_install script cleanups: See https://github.com/lainsce/quilter/pull/171
(fetchpatch {
url = "https://github.com/lainsce/quilter/commit/55bf3b10cd94fcc40b0867bbdb1931a09f577922.patch";
sha256 = "1330amichaif2qfrh4qkxwqbcpr87ipik7vzjbjdm2bv3jz9353r";
})
];
postPatch = ''
chmod +x meson/post_install.py
patchShebangs meson/post_install.py
'';
meta = with stdenv.lib; {
description = "Focus on your writing - designed for elementary OS";
homepage = https://github.com/lainsce/quilter;
license = licenses.gpl2Plus;
maintainers = with maintainers; [ worldofpeace ];
platforms = platforms.linux;
};
}

View file

@ -1,12 +1,12 @@
{ lib, fetchFromGitHub }:
rec {
version = "8.1.0146";
version = "8.1.0348";
src = fetchFromGitHub {
owner = "vim";
repo = "vim";
rev = "v${version}";
sha256 = "1v33h08j15zii0ipw5py18ghsaxlbar0nyx365z1acjhk4vhn9nb";
sha256 = "0f18kpywnph708mvj1fpi06qb53nbhc26ngjh2kvfxwawn63k8ab";
};
enableParallelBuilding = true;

View file

@ -1,29 +1,18 @@
{ stdenv, fetchFromGitHub, fetchpatch, gnome3, meson, ninja, gettext, pkgconfig, libxml2, gtk3, hicolor-icon-theme, wrapGAppsHook }:
{ stdenv, fetchFromGitLab, gnome3, meson, ninja, gettext, pkgconfig, libxml2, gtk3, hicolor-icon-theme, wrapGAppsHook }:
let
version = "2.3";
version = "2.3.1";
in stdenv.mkDerivation {
name = "gcolor3-${version}";
src = fetchFromGitHub {
owner = "hjdskes";
src = fetchFromGitLab {
domain = "gitlab.gnome.org";
owner = "World";
repo = "gcolor3";
rev = "v${version}";
sha256 = "186j72kwsqdcakvdik9jl18gz3csdj53j3ylwagr9gfwmy0nmyjb";
sha256 = "10cfzlkflwkb7f51rnrxmgxpfryh1qzvqaydj6lffjq9zvnhigg7";
};
patches = [
# Fix darwin build
(fetchpatch {
url = https://github.com/Hjdskes/gcolor3/commit/9130ffeff091fbafff6a0c8f06b09f54657d5dfd.patch;
sha256 = "1kn5hx536wivafb4awg7lsa8h32njy0lynmn7ci9y78dlp54057r";
})
(fetchpatch {
url = https://github.com/Hjdskes/gcolor3/commit/8d89081a8e13749f5a9051821114bc5fe814eaf3.patch;
sha256 = "1ldyr84dl2g6anqkp2mpxsrcr41fcqwi6ck14rfhai7rgrm8yar3";
})
];
nativeBuildInputs = [ meson ninja gettext pkgconfig libxml2 wrapGAppsHook ];
buildInputs = [ gtk3 hicolor-icon-theme ];
@ -35,8 +24,8 @@ in stdenv.mkDerivation {
meta = with stdenv.lib; {
description = "A simple color chooser written in GTK3";
homepage = https://hjdskes.github.io/projects/gcolor3/;
license = licenses.gpl2;
homepage = https://www.hjdskes.nl/projects/gcolor3/;
license = licenses.gpl2Plus;
maintainers = with maintainers; [ jtojnar ];
platforms = platforms.unix;
};

View file

@ -3,7 +3,7 @@
, kguiaddons, ki18n, kitemmodels, kitemviews, kwindowsystem
, kio, kcrash
, boost, libraw, fftw, eigen, exiv2, libheif, lcms2, gsl, openexr, giflib
, openjpeg, opencolorio, vc, poppler_qt5, curl, ilmbase
, openjpeg, opencolorio, vc, poppler, curl, ilmbase
, qtmultimedia, qtx11extras
, python3
}:
@ -23,7 +23,7 @@ mkDerivation rec {
karchive kconfig kwidgetsaddons kcompletion kcoreaddons kguiaddons
ki18n kitemmodels kitemviews kwindowsystem kio kcrash
boost libraw fftw eigen exiv2 lcms2 gsl openexr libheif giflib
openjpeg opencolorio poppler_qt5 curl ilmbase
openjpeg opencolorio poppler curl ilmbase
qtmultimedia qtx11extras
python3
] ++ lib.optional (stdenv.hostPlatform.isi686 || stdenv.hostPlatform.isx86_64) vc;

View file

@ -1,4 +1,4 @@
{ stdenv, fetchFromGitHub, pkgconfig, cmake, qtbase, qttools, qtx11extras, poppler_qt5 }:
{ stdenv, fetchFromGitHub, pkgconfig, cmake, qtbase, qttools, qtx11extras, poppler }:
stdenv.mkDerivation rec {
name = "qcomicbook-${version}";
@ -16,7 +16,7 @@ stdenv.mkDerivation rec {
];
buildInputs = [
qtbase qttools qtx11extras poppler_qt5
qtbase qttools qtx11extras poppler
];
postInstall = ''

View file

@ -5,12 +5,12 @@
}:
stdenv.mkDerivation rec {
version = "3.30.0";
version = "3.31.0";
name = "calibre-${version}";
src = fetchurl {
url = "https://download.calibre-ebook.com/${version}/${name}.tar.xz";
sha256 = "0j7w63kniqnpr8v1aldzbim2dyrk79n23mzw9y56jqd0k47m8zfz";
sha256 = "1xg1bx0klvrywqry5rhci37fr7shpvb2wbx4bva20vhqkal169rw";
};
patches = [

View file

@ -1,24 +1,14 @@
{ stdenv, fetchurl, writeScript, fetchFromGitHub
{ stdenv, fetchgit, fetchurl, writeScript
, libGL, libX11, libXext, python3, libXrandr, libXrender, libpulseaudio, libXcomposite
, enableGlfw ? false, glfw }:
let
inherit (stdenv.lib) optional makeLibraryPath;
version = "1.4.5";
gladVersion = "0.1.24";
# glad
# https://github.com/wacossusca34/glava/issues/46#issuecomment-397816520
glad = fetchFromGitHub {
owner = "Dav1dde";
repo = "glad";
rev = "v${gladVersion}";
sha256 = "0s2c9w064kqa5i07w8zmvgpg1pa3wj86l1nhgw7w56cjhq7cf8h8";
};
# gl.xml
gl = fetchurl {
url = https://raw.githubusercontent.com/KhronosGroup/OpenGL-Registry/a24f3f7a4c924fdbc666024f99c70e5b8e34c819/xml/gl.xml;
sha256 = "1mskxjmhb35m8qv255pibf633d8sn1w9rdsf0lj75bhlgy0zi5c7";
url = https://raw.githubusercontent.com/KhronosGroup/OpenGL-Registry/56312cfe680e4be5ae61bbf1c628e420f8731718/xml/gl.xml;
sha256 = "1c45bcgaxiic5gmb3gkrd9qcvascvij97vz5y6fc3a2y7x3gjc5l";
};
# EGL 1.5
egl = fetchurl {
@ -43,12 +33,12 @@ let
in
stdenv.mkDerivation rec {
name = "glava-${version}";
version = "1.5.1";
src = fetchFromGitHub {
owner = "wacossusca34";
repo = "glava";
src = fetchgit {
url = "https://github.com/wacossusca34/glava.git";
rev = "v${version}";
sha256 = "1zfw8samrzxxbny709rcdz1z77cw1cd46wlfnf7my02kipmqn0nr";
sha256 = "1k8x0a0g2pm7ficsk4az9s7mjbm85a987apjg5c4y6iyldxgd6sb";
};
buildInputs = [
@ -65,7 +55,6 @@ in
];
patchPhase = ''
cp -r --no-preserve=all ${glad}/* glad
mkdir -p glad/include/KHR
cp ${gl} glad/gl.xml

View file

@ -0,0 +1,47 @@
{ stdenv, fetchFromGitHub, vala, pkgconfig, meson, ninja, python3, granite
, gtk3, gnome3, gtksourceview, json-glib, gobjectIntrospection, wrapGAppsHook }:
stdenv.mkDerivation rec {
pname = "notejot";
version = "1.4.5";
name = "${pname}-${version}";
src = fetchFromGitHub {
owner = "lainsce";
repo = pname;
rev = version;
sha256 = "0mjig4y2rb6v2dyzya44mfz0dxgp5wnjs3kdavf9ha2jzjjr5xyb";
};
nativeBuildInputs = [
gobjectIntrospection
meson
ninja
pkgconfig
python3
vala
wrapGAppsHook
];
buildInputs = [
gnome3.libgee
granite
gtk3
gtksourceview
json-glib
];
postPatch = ''
chmod +x meson/post_install.py
patchShebangs meson/post_install.py
'';
meta = with stdenv.lib; {
description = "Stupidly-simple sticky notes applet";
homepage = https://github.com/lainsce/notejot;
license = licenses.gpl2Plus;
maintainers = with maintainers; [ worldofpeace ];
platforms = platforms.linux;
};
}

View file

@ -4,7 +4,7 @@
let
version = "0.6.1";
version = "0.6.2";
sqlGda = libgda.override {
mysqlSupport = true;
postgresSupport = true;
@ -17,7 +17,7 @@ in stdenv.mkDerivation rec {
owner = "Alecaddd";
repo = "sequeler";
rev = "v${version}";
sha256 = "1gafd8bmwpby7gjzfr7q25rrdmyh1f175fxc1yrcr5nplfyzwfnb";
sha256 = "0j5z3z34jc1acclmlkjpv7fcs4f2gf0bcfnvcpn3zdzw9fzj0sw7";
};
nativeBuildInputs = [ meson ninja pkgconfig vala gobjectIntrospection gettext wrapGAppsHook python3 desktop-file-utils ];

View file

@ -1,15 +1,15 @@
{ mkDerivation, lib, fetchFromGitHub, autoreconfHook, perl, pkgconfig, which
{ mkDerivation, lib, fetchFromGitHub, autoreconfHook, perl, pkgconfig
, libtool, openssl, qtbase, qttools }:
mkDerivation rec {
name = "xca-${version}";
version = "2.1.0";
version = "2.1.1";
src = fetchFromGitHub {
owner = "chris2511";
repo = "xca";
rev = "RELEASE.${version}";
sha256 = "039qz6hh43hx8dcw2bq71mgy95zk09jyd3xxpldmxxd5d69zcr8m";
sha256 = "1d09329a80axwqhxixwasd8scsmh23vsq1076amy5c8173s4ambi";
};
postPatch = ''
@ -17,15 +17,15 @@ mkDerivation rec {
--replace /usr/bin/perl ${perl}/bin/perl
'';
buildInputs = [ libtool openssl qtbase qttools ];
buildInputs = [ libtool openssl qtbase ];
nativeBuildInputs = [ autoreconfHook pkgconfig which ];
nativeBuildInputs = [ autoreconfHook pkgconfig qttools ];
enableParallelBuilding = true;
meta = with lib; {
description = "Interface for managing asymetric keys like RSA or DSA";
homepage = http://xca.sourceforge.net/;
description = "An x509 certificate generation tool, handling RSA, DSA and EC keys, certificate signing requests (PKCS#10) and CRLs";
homepage = https://hohnstaedt.de/xca/;
license = licenses.bsd3;
maintainers = with maintainers; [ offline peterhoeg ];
platforms = platforms.all;

View file

@ -98,11 +98,11 @@ let
flash = stdenv.mkDerivation rec {
name = "flashplayer-ppapi-${version}";
version = "30.0.0.154";
version = "31.0.0.108";
src = fetchzip {
url = "https://fpdownload.adobe.com/pub/flashplayer/pdc/${version}/flash_player_ppapi_linux.x86_64.tar.gz";
sha256 = "0bi9b6syx7x2avixgjwanrvynzanf89xm2g3nxazw9qgxxc1cp48";
sha256 = "0dcwyx0fp7wbsx0cyi7xpwq0nnvcvkzfgi6zyy75487820ssc4h1";
stripRoot = false;
};

View file

@ -73,25 +73,25 @@ let
in
stdenv.mkDerivation rec {
name = "flashplayer-${version}";
version = "30.0.0.154";
version = "31.0.0.108";
src = fetchurl {
url =
if debug then
"https://fpdownload.macromedia.com/pub/flashplayer/updaters/30/flash_player_npapi_linux_debug.${arch}.tar.gz"
"https://fpdownload.macromedia.com/pub/flashplayer/updaters/31/flash_player_npapi_linux_debug.${arch}.tar.gz"
else
"https://fpdownload.adobe.com/get/flashplayer/pdc/${version}/flash_player_npapi_linux.${arch}.tar.gz";
sha256 =
if debug then
if arch == "x86_64" then
"04hfh0vn1n70gdpfydq0sj94d6rkbk80h4pmy3rsfvhg0x540wx8"
"1mn29ahxjf6pdy2zp2na14cz46jrl88f54kp3bs3cz75syyizyb6"
else
"073327sszbvkglh5b18axmwv40sy2vyacdhcd1fx82qskv44sfda"
"0inpj6bcsn5lh8gdv1wxpgipzrmpc553nhr68a55b2wff9fkv1ci"
else
if arch == "x86_64" then
"03ypgzy88ck5rn1q971v0km9yw3p10ly1zkxh239v6nx0hs35w84"
"1dfgsl5jf8ja9f7wwkzj5bfz1v5rdsyf4qhg1shqqldadmyyha7p"
else
"0rld7i659ccp4gvcvdkqkc1lajvlss5d4qndzf9aqiksvdknv62x";
"0yiqwwqs3z9zzkfgqzjwqqdr2vaj1ia5xychs9fgxix3y4j934da";
};
nativeBuildInputs = [ unzip ];

View file

@ -49,19 +49,19 @@
stdenv.mkDerivation rec {
name = "flashplayer-standalone-${version}";
version = "30.0.0.154";
version = "31.0.0.108";
src = fetchurl {
url =
if debug then
"https://fpdownload.macromedia.com/pub/flashplayer/updaters/30/flash_player_sa_linux_debug.x86_64.tar.gz"
"https://fpdownload.macromedia.com/pub/flashplayer/updaters/31/flash_player_sa_linux_debug.x86_64.tar.gz"
else
"https://fpdownload.macromedia.com/pub/flashplayer/updaters/30/flash_player_sa_linux.x86_64.tar.gz";
"https://fpdownload.macromedia.com/pub/flashplayer/updaters/31/flash_player_sa_linux.x86_64.tar.gz";
sha256 =
if debug then
"133zhgc5fh6s0xr93lv70xcrgvaj7lhjxk5w7xz79h3mp185p3g4"
"0i047fvj3x9lx7x8bf7jl1ybf9xpmr6g77q0h7n2s8qvscsw0pmm"
else
"1xz1l5q0zahalh0l4mkrwhmfrmcli3sckg3rcfnllizq9rbfzcmr";
"19wfs452ix57yfi4cy2din6mi5jky9hjzbdjny1bl8w32fy8xmm3";
};
nativeBuildInputs = [ unzip ];

View file

@ -42,8 +42,10 @@
# Wrapper runtime
, coreutils
, glibcLocales
, hicolor-icon-theme
, defaultIconTheme
, runtimeShell
, shared-mime-info
, gsettings-desktop-schemas
# Whether to disable multiprocess support to work around crashing tabs
# TODO: fix the underlying problem instead of this terrible work-around
@ -264,14 +266,19 @@ stdenv.mkDerivation rec {
EOF
WRAPPER_XDG_DATA_DIRS=${concatMapStringsSep ":" (x: "${x}/share") [
hicolor-icon-theme
defaultIconTheme
shared-mime-info
]}
WRAPPER_XDG_DATA_DIRS+=":"${concatMapStringsSep ":" (x: "${x}/share/gsettings-schemas/${x.name}") [
glib
gsettings-desktop-schemas
gtk3
]};
# Generate wrapper
mkdir -p $out/bin
cat > "$out/bin/tor-browser" << EOF
#! ${stdenv.shell}
#! ${runtimeShell}
set -o errexit -o nounset
PATH=${makeBinPath [ coreutils ]}

View file

@ -1,14 +0,0 @@
diff --git a/base/numerics/safe_math_shared_impl.h b/base/numerics/safe_math_shared_impl.h
index 99f230ce7e9a..de2415d402f5 100644
--- a/base/numerics/safe_math_shared_impl.h
+++ b/base/numerics/safe_math_shared_impl.h
@@ -21,8 +21,7 @@
#if !defined(__native_client__) && \
((defined(__clang__) && \
((__clang_major__ > 3) || \
- (__clang_major__ == 3 && __clang_minor__ >= 4))) || \
- (defined(__GNUC__) && __GNUC__ >= 5))
+ (__clang_major__ == 3 && __clang_minor__ >= 4))))
#include "base/numerics/safe_math_clang_gcc_impl.h"
#define BASE_HAS_OPTIMIZED_SAFE_MATH (1)
#else

View file

@ -1,66 +0,0 @@
--- a/chrome/browser/devtools/devtools_file_system_indexer.cc
+++ b/chrome/browser/devtools/devtools_file_system_indexer.cc
@@ -34,7 +34,6 @@ using base::TimeDelta;
using base::TimeTicks;
using content::BrowserThread;
using std::map;
-using std::set;
using std::string;
using std::vector;
@@ -191,7 +190,7 @@ vector<FilePath> Index::Search(const string& query) {
if (trigram != kUndefinedTrigram)
trigrams.push_back(trigram);
}
- set<FileId> file_ids;
+ std::set<FileId> file_ids;
bool first = true;
vector<Trigram>::const_iterator it = trigrams.begin();
for (; it != trigrams.end(); ++it) {
@@ -203,7 +202,7 @@ vector<FilePath> Index::Search(const string& query) {
first = false;
continue;
}
- set<FileId> intersection = base::STLSetIntersection<set<FileId> >(
+ std::set<FileId> intersection = base::STLSetIntersection<std::set<FileId> >(
file_ids, index_[trigram]);
file_ids.swap(intersection);
}
diff --git a/third_party/WebKit/Source/platform/wtf/typed_arrays/ArrayBufferContents.h b/third_party/WebKit/Source/platform/wtf/typed_arrays/ArrayBufferContents.h
index 94bb9161ec85..e40c6387f72e 100644
--- a/third_party/WebKit/Source/platform/wtf/typed_arrays/ArrayBufferContents.h
+++ b/third_party/WebKit/Source/platform/wtf/typed_arrays/ArrayBufferContents.h
@@ -63,7 +63,7 @@ class WTF_EXPORT ArrayBufferContents {
allocation_length_(0),
data_(data),
data_length_(0),
- kind_(AllocationKind::kNormal),
+ kind_(WTF::ArrayBufferContents::AllocationKind::kNormal),
deleter_(deleter) {}
DataHandle(void* allocation_base,
size_t allocation_length,
@@ -94,11 +94,11 @@ class WTF_EXPORT ArrayBufferContents {
reinterpret_cast<uintptr_t>(allocation_base_) +
allocation_length_);
switch (kind_) {
- case AllocationKind::kNormal:
+ case WTF::ArrayBufferContents::AllocationKind::kNormal:
DCHECK(deleter_);
deleter_(data_);
return;
- case AllocationKind::kReservation:
+ case WTF::ArrayBufferContents::AllocationKind::kReservation:
ReleaseReservedMemory(allocation_base_, allocation_length_);
return;
}
--- a/third_party/webrtc/modules/audio_processing/aec3/aec_state.cc.orig 2017-08-15 12:45:59.433532111 +0000
+++ b/third_party/webrtc/modules/audio_processing/aec3/aec_state.cc 2017-08-15 17:52:59.691328825 +0000
@@ -10,7 +10,7 @@
#include "webrtc/modules/audio_processing/aec3/aec_state.h"
-#include <math.h>
+#include <cmath>
#include <numeric>
#include <vector>

View file

@ -1,27 +0,0 @@
commit 96c271f8ab2be7ea4199078ea65ac50c6ada4685
Author: Pawel Hajdan, Jr <phajdan.jr@chromium.org>
Date: Wed Jul 26 21:51:54 2017 +0000
wip
diff --git a/tools/gn/bootstrap/bootstrap.py b/tools/gn/bootstrap/bootstrap.py
index 1390560f8e37..ff2ae57c46b0 100755
--- a/tools/gn/bootstrap/bootstrap.py
+++ b/tools/gn/bootstrap/bootstrap.py
@@ -449,6 +449,7 @@ def write_gn_ninja(path, root_gen_dir, options):
'base/metrics/histogram_base.cc',
'base/metrics/histogram_functions.cc',
'base/metrics/histogram_samples.cc',
+ 'base/metrics/histogram_snapshot_manager.cc',
'base/metrics/metrics_hashes.cc',
'base/metrics/persistent_histogram_allocator.cc',
'base/metrics/persistent_memory_allocator.cc',
@@ -534,7 +535,7 @@ def write_gn_ninja(path, root_gen_dir, options):
'base/trace_event/heap_profiler_allocation_context_tracker.cc',
'base/trace_event/heap_profiler_allocation_register.cc',
'base/trace_event/heap_profiler_event_filter.cc',
- 'base/trace_event/heap_profiler_event_writer.cc',
+ 'base/trace_event/heap_profiler_heap_dump_writer.cc',
'base/trace_event/heap_profiler_serialization_state.cc',
'base/trace_event/heap_profiler_stack_frame_deduplicator.cc',
'base/trace_event/heap_profiler_type_name_deduplicator.cc',

View file

@ -13,11 +13,11 @@
stdenv.mkDerivation rec {
name = "${product}-${version}";
product = "vivaldi";
version = "1.15.1147.42-1";
version = "1.15.1147.64-1";
src = fetchurl {
url = "https://downloads.vivaldi.com/stable/${product}-stable_${version}_amd64.deb";
sha256 = "15cajvn2sv05qdp3y538n2xvyy3il49q8zi5928z1mfirjz3dlwh";
sha256 = "01xbfrrq2kj75cb6grpq9a4y88j1s87h2nnvy1fmyb4a2db6y0ag";
};
unpackPhase = ''

View file

@ -1,37 +1,33 @@
{ stdenv, fetchurl
, dbus-glib, gtk2, gtk3, libexif, libpulseaudio, libXScrnSaver, ninja, nss
, pciutils, pkgconfig, python2, xdg_utils
, dbus-glib, gtk3, libexif, libXScrnSaver, ninja, nss
, pciutils, pkgconfig, python2, xdg_utils, gn
}:
stdenv.mkDerivation rec {
name = "${product}-${version}";
product = "vivaldi-ffmpeg-codecs";
version = "61.0.3163.91";
version = "69.0.3497.73";
src = fetchurl {
url = "https://commondatastorage.googleapis.com/chromium-browser-official/chromium-${version}.tar.xz";
sha512 = "3f07vwbxllrwy3agqxa6ndcix23vai18i178zscmk0y68flhzffyjdvrwlg7dzlwgiqypj2cyl21qb4qmcay2ilgw9vnr9fql2x0w7p";
sha512 = "3qyzxdybiszwy62izr35wffnh1a1plg9y536vrmd4b2xl8p4nz18c7439blr0cdzsr5qplgrdl64446a27mkyhbw8c3iy0gb4zgb5j9";
};
buildInputs = [ ];
nativeBuildInputs = [
dbus-glib gtk2 gtk3 libexif libpulseaudio libXScrnSaver ninja nss pciutils pkgconfig
python2 xdg_utils
gtk3 libexif libXScrnSaver ninja nss pciutils python2 xdg_utils gn
pkgconfig dbus-glib
];
patches = [
./chromium-gn-bootstrap-r14.patch
./chromium-gcc-r1.patch
./chromium-gcc5-r1.patch
];
configurePhase = ''
runHook preConfigure
local args="ffmpeg_branding=\"ChromeOS\" proprietary_codecs=true enable_hevc_demuxing=true use_gconf=false use_gio=false use_gnome_keyring=false use_kerberos=false use_cups=false use_sysroot=false use_gold=false linux_use_bundled_binutils=false fatal_linker_warnings=false treat_warnings_as_errors=false is_clang=false is_component_build=true is_debug=false symbol_level=0"
python tools/gn/bootstrap/bootstrap.py -v -s --no-clean --gn-gen-args "$args"
out/Release/gn gen out/Release -v --args="$args"
local args="ffmpeg_branding=\"ChromeOS\" proprietary_codecs=true enable_hevc_demuxing=true use_gnome_keyring=false use_sysroot=false use_gold=false use_allocator=\"none\" linux_use_bundled_binutils=false fatal_linker_warnings=false treat_warnings_as_errors=false enable_nacl=false enable_nacl_nonsfi=false is_clang=false clang_use_chrome_plugins=false is_component_build=true is_debug=false symbol_level=0 use_custom_libcxx=false use_lld=false use_jumbo_build=false"
gn gen out/Release -v --args="$args"
runHook postConfigure
'';
@ -53,6 +49,5 @@ stdenv.mkDerivation rec {
license = licenses.lgpl21;
maintainers = with maintainers; [ lluchs ];
platforms = [ "x86_64-linux" ];
broken = true;
};
}

View file

@ -26,11 +26,12 @@ hash=${prefetch[0]}
path=${prefetch[1]}
echo "vivaldi: $vivaldi_version_old -> $vivaldi_version"
echo "$path"
(cd "$root" && update-source-version vivaldi "$vivaldi_version" "$hash")
# Check vivaldi-ffmpeg-codecs version.
chromium_version_old=$(version vivaldi-ffmpeg-codecs)
chromium_version=$(bsdtar xOf "$path" data.tar.xz | bsdtar xOf - ./opt/vivaldi/vivaldi-bin | strings | grep -A2 -i '^chrome\/' | grep '^[0-9]\+\.[0-9]\+\.[1-9][0-9]\+\.[0-9]\+')
chromium_version=$(bsdtar xOf "$path" data.tar.xz | bsdtar xOf - ./opt/vivaldi/vivaldi-bin | strings | grep '^[0-9]\{2,\}\.[0-9]\+\.[0-9]\{4,\}\+\.[0-9]\+$')
if [[ "$chromium_version" != "$chromium_version_old" ]]; then
echo "vivaldi-ffmpeg-codecs: $chromium_version_old -> $chromium_version"

View file

@ -14,11 +14,11 @@ let
in stdenv.mkDerivation rec {
name = "charles-${version}";
version = "4.2.6";
version = "4.2.7";
src = fetchurl {
url = "https://www.charlesproxy.com/assets/release/${version}/charles-proxy-${version}.tar.gz";
sha256 = "1hjfimyr9nnbbxadwni02d2xl64ybarh42l1g6hlslq5qwl8ywzb";
sha256 = "1nycw3wpbfwj4ijjaq5k0f4xipj8j605fs0yjzgl66gmv7r583rd";
};
buildInputs = [ makeWrapper ];

View file

@ -4,17 +4,18 @@ with rustPlatform;
buildRustPackage rec {
name = "click-${version}";
version = "0.3.1";
rev = "b5dfb4a8f8344330a098cb61523695dfe0fd296a";
version = "0.3.2";
src = fetchFromGitHub {
rev = "v${version}";
owner = "databricks";
repo = "click";
sha256 = "0a2hq4hcxkkx7gs5dv7sr3j5jy2dby4r6y090z7zl2xy5wydr7bi";
inherit rev;
sha256 = "0sbj41kypn637z1w115w2h5v6bxz3y6w5ikgpx3ihsh89lkc19d2";
};
cargoSha256 = "03vgbkv9xsnx44vivbbhjgxv9drp0yjnimgy6hwm32x74r00k3hj";
cargoSha256 = "05asqp5312a1g26pvf5hgqhc4kj3iw2hdvml2ycvga33sxb7zm7r";
patches = [ ./fix_cargo_lock_version.patch ];
buildInputs = stdenv.lib.optionals stdenv.isDarwin [ darwin.apple_sdk.frameworks.Security ];

View file

@ -0,0 +1,13 @@
diff --git a/Cargo.lock b/Cargo.lock
index ff80350..c86c6fe 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -111,7 +111,7 @@ dependencies = [
[[package]]
name = "click"
-version = "0.3.1"
+version = "0.3.2"
dependencies = [
"ansi_term 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
"base64 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)",

View file

@ -2,13 +2,13 @@
stdenv.mkDerivation rec {
name = "cni-plugins-${version}";
version = "0.7.1";
version = "0.7.3";
src = fetchFromGitHub {
owner = "containernetworking";
repo = "plugins";
rev = "v${version}";
sha256 = "1sywllwnr6lc812sgkqjdd3y10r82shl88dlnwgnbgzs738q2vp2";
sha256 = "1saaszzxy4x3jkqd9ac6cphmzfim7x84h28c9i7az46px40blzm1";
};
buildInputs = [ go ];

View file

@ -1,25 +1,15 @@
{ stdenv, fetchurl, makeWrapper, jre
, version ? "1.5" }:
, version ? "1.6" }:
let
versionMap = {
"1.3" = {
flinkVersion = "1.3.3";
scalaVersion = "2.11";
sha256 = "0gfm48k5adr14gnhqri9cd01i9dprd0nwmnnz3yrpd20nq4ap4qy";
hadoopBundle = "-hadoop27";
};
"1.4" = {
flinkVersion = "1.4.2";
scalaVersion = "2.11";
sha256 = "0x3cikys5brin0kx9zr69xfp8k5w6g8141yrrr26ks7gpss2x636";
hadoopBundle = "";
};
"1.5" = {
flinkVersion = "1.5.0";
scalaVersion = "2.11";
sha256 = "0n5023dj8ivmbhqxmb3abmfh3ahb9vmcywq5i0ll5p7xxcw2c1cv";
hadoopBundle = "";
flinkVersion = "1.5.3";
sha256 = "1fq7pd5qpchkkwhh30h3l9rhf298jfcfv2dc50z39qmwwijdjajk";
};
"1.6" = {
flinkVersion = "1.6.0";
sha256 = "18fnpldzs36qx7myr9rmym9g9p3qkgnd1z3lfkpbaw590ddaqr9i";
};
};
in
@ -30,7 +20,7 @@ stdenv.mkDerivation rec {
name = "flink-${flinkVersion}";
src = fetchurl {
url = "mirror://apache/flink/${name}/${name}-bin${hadoopBundle}-scala_${scalaVersion}.tgz";
url = "mirror://apache/flink/${name}/${name}-bin-scala_2.11.tgz";
inherit sha256;
};

View file

@ -2,7 +2,7 @@
buildGoPackage rec {
name = "heptio-ark-${version}";
version = "0.9.0";
version = "0.9.4";
goPackagePath = "github.com/heptio/ark";
@ -10,7 +10,7 @@ buildGoPackage rec {
rev = "v${version}";
owner = "heptio";
repo = "ark";
sha256 = "0b3jsgs35l8kk63pjnqn3911pyb397fyvsmd3jd8vzjawisgpdp7";
sha256 = "01z0zkw7l6haxky9l45iqqnvs6104xx4195jm250nv9j1x8n59ai";
};
postInstall = "rm $bin/bin/generate";

View file

@ -1,4 +1,4 @@
{ stdenv, lib, fetchFromGitHub, removeReferencesTo, which, go_1_9, go-bindata, makeWrapper, rsync
{ stdenv, lib, fetchFromGitHub, removeReferencesTo, which, go_1_10, go-bindata, makeWrapper, rsync
, components ? [
"cmd/kubeadm"
"cmd/kubectl"
@ -15,17 +15,16 @@ with lib;
stdenv.mkDerivation rec {
name = "kubernetes-${version}";
version = "1.10.5";
version = "1.11.3";
src = fetchFromGitHub {
owner = "kubernetes";
repo = "kubernetes";
rev = "v${version}";
sha256 = "1k6ayb43l68l0qw31cc4k1pwvm8aks3l2xm0gdxdxbbww1mnzix2";
sha256 = "1gwb5gs9l0adv3qc70wf8dwvbjh1mmgd3hh1jkwsbbnach28dvzb";
};
# Build using golang v1.9 in accordance with https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.10.md#external-dependencies
buildInputs = [ removeReferencesTo makeWrapper which go_1_9 rsync go-bindata ];
buildInputs = [ removeReferencesTo makeWrapper which go_1_10 rsync go-bindata ];
outputs = ["out" "man" "pause"];
@ -39,7 +38,7 @@ stdenv.mkDerivation rec {
patchShebangs ./hack
'';
WHAT="--use_go_build ${concatStringsSep " " components}";
WHAT="${concatStringsSep " " components}";
postBuild = ''
./hack/generate-docs.sh
@ -53,8 +52,11 @@ stdenv.mkDerivation rec {
cp build/pause/pause "$pause/bin/pause"
cp -R docs/man/man1 "$man/share/man"
cp cluster/addons/addon-manager/namespace.yaml $out/share
cp cluster/addons/addon-manager/kube-addons.sh $out/bin/kube-addons
patchShebangs $out/bin/kube-addons
substituteInPlace $out/bin/kube-addons \
--replace /opt/namespace.yaml $out/share/namespace.yaml
wrapProgram $out/bin/kube-addons --set "KUBECTL_BIN" "$out/bin/kubectl"
$out/bin/kubectl completion bash > $out/share/bash-completion/completions/kubectl
@ -62,7 +64,7 @@ stdenv.mkDerivation rec {
'';
preFixup = ''
find $out/bin $pause/bin -type f -exec remove-references-to -t ${go_1_9} '{}' +
find $out/bin $pause/bin -type f -exec remove-references-to -t ${go_1_10} '{}' +
'';
meta = {

View file

@ -2,12 +2,12 @@ GEM
remote: https://rubygems.org/
specs:
colorize (0.8.1)
commander (4.4.5)
commander (4.4.6)
highline (~> 1.7.2)
diffy (3.2.1)
highline (1.7.10)
polyglot (0.3.5)
terraform_landscape (0.1.18)
terraform_landscape (0.2.0)
colorize (~> 0.7)
commander (~> 4.4)
diffy (~> 3.0)

View file

@ -1,19 +1,18 @@
{ lib, bundlerEnv, ruby }:
{ lib, bundlerApp, ruby }:
let
version = (import ./gemset.nix).terraform_landscape.version;
in bundlerApp {
pname = "terraform_landscape";
bundlerEnv rec {
name = "terraform-landscape-${version}";
version = (import gemset).terraform_landscape.version;
inherit ruby;
gemfile = ./Gemfile;
lockfile = ./Gemfile.lock;
gemset = ./gemset.nix;
gemdir = ./.;
exes = [ "landscape" ];
meta = with lib; {
description = "Improve Terraform's plan output to be easier to read and understand";
homepage = https://github.com/coinbase/terraform-landscape;
license = with licenses; apsl20;
maintainers = with maintainers; [ mbode ];
maintainers = with maintainers; [ mbode manveru ];
platforms = platforms.unix;
};
}

View file

@ -1,5 +1,7 @@
{
colorize = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "133rqj85n400qk6g3dhf2bmfws34mak1wqihvh3bgy9jhajw580b";
@ -9,14 +11,18 @@
};
commander = {
dependencies = ["highline"];
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0sry6raysvg9qsx5nqqw09n8r8hvcsqzvci7xp2qk7jq3s9mgvnn";
sha256 = "11sd2sb0id2dbxkv4pvymdiia1xxhms45kh4nr8mryqybad0fwwf";
type = "gem";
};
version = "4.4.5";
version = "4.4.6";
};
diffy = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "119imrkn01agwhx5raxhknsi331y5i4yda7r0ws0an6905ximzjg";
@ -25,6 +31,8 @@
version = "3.2.1";
};
highline = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "01ib7jp85xjc4gh4jg0wyzllm46hwv8p0w1m4c75pbgi41fps50y";
@ -33,6 +41,8 @@
version = "1.7.10";
};
polyglot = {
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "1bqnxwyip623d8pr29rg6m8r0hdg08fpr2yb74f46rn1wgsnxmjr";
@ -42,15 +52,19 @@
};
terraform_landscape = {
dependencies = ["colorize" "commander" "diffy" "treetop"];
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0476q2kx88w9srj7rlzl6skrza3pdgyym7zksw78infsb2105lg9";
sha256 = "1mlpbsmysyhhbjx40gbwxr4mx7d3qpblbf5ms2v607b8a3saapzj";
type = "gem";
};
version = "0.1.18";
version = "0.2.0";
};
treetop = {
dependencies = ["polyglot"];
groups = ["default"];
platforms = [];
source = {
remotes = ["https://rubygems.org"];
sha256 = "0g31pijhnv7z960sd09lckmw9h8rs3wmc8g4ihmppszxqm99zpv7";

View file

@ -0,0 +1,47 @@
{ stdenv, fetchFromGitHub, vala, pkgconfig, meson, ninja, python3, granite
, gtk3, gnome3, libsoup, libsecret, gobjectIntrospection, wrapGAppsHook }:
stdenv.mkDerivation rec {
pname = "taxi";
version = "0.0.1";
name = "${pname}-${version}";
src = fetchFromGitHub {
owner = "Alecaddd";
repo = pname;
rev = "v${version}";
sha256 = "01c552w68576pnsyqbwy3hjhbww6vys3r3s0wxjdiscjqj1aawqg";
};
nativeBuildInputs = [
gobjectIntrospection
meson
ninja
pkgconfig
python3
vala
wrapGAppsHook
];
buildInputs = [
gnome3.libgee
granite
gtk3
libsecret
libsoup
];
postPatch = ''
chmod +x meson/post_install.py
patchShebangs meson/post_install.py
'';
meta = with stdenv.lib; {
description = "The FTP Client that drives you anywhere";
homepage = https://github.com/Alecaddd/taxi;
license = licenses.gpl3Plus;
maintainers = with maintainers; [ worldofpeace ];
platforms = platforms.linux;
};
}

View file

@ -1,7 +1,7 @@
{ callPackage, stdenv }:
let
stableVersion = "2.1.9";
stableVersion = "2.1.10";
# Currently there is no preview version.
previewVersion = stableVersion;
addVersion = args:
@ -10,8 +10,8 @@ let
in args // { inherit version branch; };
mkGui = args: callPackage (import ./gui.nix (addVersion args)) { };
mkServer = args: callPackage (import ./server.nix (addVersion args)) { };
guiSrcHash = "0gpif6f7zqz2n8q3pkr8xv3fdc904hq69661w8f1fna360xvksd7";
serverSrcHash = "1y19jzyyz0sjjxkrpgr6z10irb47v7d8khdvk5nzmgnjfxv875yx";
guiSrcHash = "0vn33dcd3sfj5gna79vwm35l8aznga91a8r7i6q06dr4c2svml15";
serverSrcHash = "062dai1rb04dyrlrjgk0gr5hx0la8n1nalx0il1i7k1inwy52gj5";
in {
guiStable = mkGui {
stable = true;

View file

@ -1,5 +1,5 @@
{ stdenv, fetchFromGitHub, zlib
, ocaml, jbuilder, opam, ocamlfuse, findlib, gapi_ocaml, ocaml_sqlite3, camlidl }:
, ocaml, dune, ocamlfuse, findlib, gapi_ocaml, ocaml_sqlite3, camlidl }:
stdenv.mkDerivation rec {
name = "google-drive-ocamlfuse-${version}";
@ -12,12 +12,12 @@ stdenv.mkDerivation rec {
sha256 = "1rjm2jcc93sz7l25zbgqal81534vvvbmwy7847s0k8fkr5nq97gp";
};
nativeBuildInputs = [ jbuilder opam ];
nativeBuildInputs = [ dune ];
buildInputs = [ zlib ocaml ocamlfuse findlib gapi_ocaml ocaml_sqlite3 camlidl ];
buildPhase = "jbuilder build @install";
installPhase = "mkdir $out && jbuilder install --prefix $out";
installPhase = "mkdir $out && dune install --prefix $out";
meta = {
homepage = http://gdfuse.forge.ocamlcore.org/;

View file

@ -0,0 +1,55 @@
{ stdenv, fetchFromGitLab, fetchFromGitHub, qmake
, qtquickcontrols2, qtmultimedia, qtgraphicaleffects
, libqmatrixclient
}:
let
libqmatrixclient_git = libqmatrixclient.overrideDerivation (oldAttrs: {
name = "libqmatrixclient-git-for-matrique";
src = fetchFromGitHub {
owner = "QMatrixClient";
repo = "libqmatrixclient";
rev = "d9ff200f";
sha256 = "0qxkffg1499wnn8rbndq6z51sz6hiij2pkp40cvs530sl0zg0c69";
};
});
SortFilterProxyModel = fetchFromGitLab {
owner = "b0";
repo = "SortFilterProxyModel";
rev = "3c2c125c";
sha256 = "1494dvq7kiq0ymf5f9hr47pw80zv3m3dncnaw1pnzs7mhkf2s5fr";
};
in stdenv.mkDerivation rec {
name = "matrique-${version}";
version = "250";
src = fetchFromGitLab {
owner = "b0";
repo = "matrique";
rev = version;
sha256 = "0l7ag2q3l8ixczwc43igvkkl81g5s5j032gzizmgpzb1bjpdgry7";
};
postPatch = ''
rm -r include/*
ln -sf ${libqmatrixclient_git.src} include/libqmatrixclient
ln -sf ${SortFilterProxyModel} include/SortFilterProxyModel
'';
nativeBuildInputs = [ qmake ];
buildInputs = [
qtquickcontrols2 qtmultimedia qtgraphicaleffects
libqmatrixclient_git
];
meta = with stdenv.lib; {
inherit (src.meta) homepage;
description = "A glossy client for Matrix";
maintainers = with maintainers; [ fpletz ];
license = licenses.gpl3;
platforms = platforms.linux;
};
}

View file

@ -7,7 +7,7 @@
, AVFoundation ? null }:
let
version = "1.16.1";
version = "1.16.3";
rev = "v${version}";
in mkDerivation rec {
@ -16,7 +16,7 @@ in mkDerivation rec {
src = fetchFromGitHub {
owner = "qTox";
repo = "qTox";
sha256 = "05cz67yvdqjv1dmqycnc5rd0275zh94wyaa7sqdkr1iw8k5h955n";
sha256 = "0qd4nvbrjnnfnk8ghsxq3cd1n1qf1ck5zg6ib11ij2pg03s146pa";
inherit rev;
};

View file

@ -3,11 +3,11 @@
let configFile = writeText "riot-config.json" conf; in
stdenv.mkDerivation rec {
name= "riot-web-${version}";
version = "0.16.0";
version = "0.16.2";
src = fetchurl {
url = "https://github.com/vector-im/riot-web/releases/download/v${version}/riot-v${version}.tar.gz";
sha256 = "1nl0ih5flhp57k96hv6nl5pzrm3r9piqmwzirz9nz8k9803mqp5m";
sha256 = "14k8hsz2i1nd126jprvi45spdxawk4c8nb3flkrg7rmjdp5sski2";
};
installPhase = ''

View file

@ -13,11 +13,11 @@ assert pulseaudioSupport -> libpulseaudio != null;
let
inherit (stdenv.lib) concatStringsSep makeBinPath optional;
version = "2.3.128305.0716";
version = "2.4.129780.0915";
srcs = {
x86_64-linux = fetchurl {
url = "https://zoom.us/client/${version}/zoom_x86_64.tar.xz";
sha256 = "1jpw5sclr5bhif559hmnyiggjh6gkm1smiw34y3ad4k8xhag9dkh";
sha256 = "0s4014ymc92rwpagcwjhmwwfz0vq35wiq2nhh6nlxcrr6jl4wd78";
};
};

View file

@ -2,7 +2,7 @@
buildGoPackage rec {
name = "ipfs-migrator-${version}";
version = "6";
version = "7";
goPackagePath = "github.com/ipfs/fs-repo-migrations";
@ -11,8 +11,8 @@ buildGoPackage rec {
src = fetchFromGitHub {
owner = "ipfs";
repo = "fs-repo-migrations";
rev = "a89e9769b9cac25ad9ca31c7e9a4445c7966d35b";
sha256 = "0x4mbkx7wlqjmkg6852hljq947v9y9k3hjd5yfj7kka1hpvxd7bn";
rev = "4e8e0b41d7348646c719d572c678c3d0677e541a";
sha256 = "1i6izncgc3wgabppglnnrslffvwrv3cazbdhsk4vjfsd66hb4d37";
};
patches = [ ./lru-repo-path-fix.patch ];

View file

@ -1,13 +1,4 @@
[
{
goPackagePath = "github.com/dustin/go-humanize";
fetch = {
type = "git";
url = https://github.com/dustin/go-humanize;
rev = "79e699ccd02f240a1f1fbbdcee7e64c1c12e41aa";
sha256 = "0awfqszgjw8qrdw31v74jnvj1jbp7czhd8aq59j57yyj4hy50fzj";
};
}
{
goPackagePath = "github.com/jbenet/goprocess";
fetch = {
@ -40,8 +31,8 @@
fetch = {
type = "git";
url = https://github.com/hashicorp/golang-lru;
rev = "0a025b7e63adc15a622f29b0b2c4c3848243bbf6";
sha256 = "1iq7lbpsz7ks052mpznmkf8s4k43p51z4dik2n9ivrxk666q2wxi";
rev = "20f1fb78b0740ba8c3cb143a61e86ba5c8669768";
sha256 = "12k2cp2k615fjvfa5hyb9k2alian77wivds8s65diwshwv41939f";
};
}
{
@ -49,8 +40,8 @@
fetch = {
type = "git";
url = "https://go.googlesource.com/net";
rev = "71a035914f99bb58fe82eac0f1289f10963d876c";
sha256 = "06m16c9vkwc8m2mcxcxa7p8mb26ikc810lgzd5m8k1r6lp3hc8wm";
rev = "26e67e76b6c3f6ce91f7c52def5af501b4e0f3a2";
sha256 = "17bqkd64zksi1578lb10ls4qf5lbqs7shfjcc6bi97y1qz5k31c4";
};
}
]

View file

@ -9,12 +9,22 @@ pythonPackages.buildPythonApplication rec {
sha256 = "0105glmlkpkjqbz350dxxasvlfx9dk0him9vwbl86andzi106ygz";
};
buildInputs = with pythonPackages; [ setuptools_scm ];
nativeBuildInputs = with pythonPackages; [ sphinx setuptools_scm ];
propagatedBuildInputs = with pythonPackages; [
pythonPackages.notmuch chardet dkimpy
] ++ stdenv.lib.optional (!pythonPackages.isPy3k) subprocess32;
postBuild = ''
make -C docs man
'';
postInstall = ''
mandir="$out/share/man/man1"
mkdir -p "$mandir"
cp docs/build/man/* "$mandir"
'';
makeWrapperArgs = [
''--prefix PATH ':' "${notmuch}/bin"''
];

View file

@ -3,12 +3,12 @@
with stdenv.lib;
stdenv.mkDerivation rec {
version = "6.7.1";
version = "6.7.2";
name = "frostwire-${version}";
src = fetchurl {
url = "https://dl.frostwire.com/frostwire/${version}/frostwire-${version}.noarch.tar.gz";
sha256 = "1crhiksgky65wvb4fvqablsvixj04hbaacz23mskwrc63n4jaz0p";
sha256 = "1dxk2cmwbn4ahkmr8qpiq1dpkkyswg5wz1cnv36izafpr87lxfvj";
};
nativeBuildInputs = [ makeWrapper ];

View file

@ -0,0 +1,54 @@
{ stdenv, fetchFromGitLab, vala, python3, pkgconfig, meson, ninja, granite, gtk3
, gnome3, json-glib, libsoup, clutter, clutter-gtk, libchamplain, webkitgtk
, libappindicator, desktop-file-utils, appstream, gobjectIntrospection, wrapGAppsHook }:
stdenv.mkDerivation rec {
pname = "meteo";
version = "0.8.5";
name = "${pname}-${version}";
src = fetchFromGitLab {
owner = "bitseater";
repo = pname;
rev = version;
sha256 = "1mc2djhkg0nzcjmy87l1wqwni48vgpqh8s1flr90pipk12a1mh7n";
};
nativeBuildInputs = [
appstream
desktop-file-utils
gobjectIntrospection
meson
ninja
pkgconfig
python3
vala
wrapGAppsHook
];
buildInputs = [
clutter
clutter-gtk
gnome3.geocode-glib
gtk3
json-glib
libappindicator
libchamplain
libsoup
webkitgtk
];
postPatch = ''
chmod +x meson/post_install.py
patchShebangs meson/post_install.py
'';
meta = with stdenv.lib; {
description = "Know the forecast of the next hours & days";
homepage = https://gitlab.com/bitseater/meteo;
license = licenses.gpl3Plus;
maintainers = with maintainers; [ worldofpeace ];
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,49 @@
{ stdenv, fetchFromGitHub, vala, pkgconfig, meson, ninja, python3, granite, gtk3, gnome3
, desktop-file-utils, json-glib, libsoup, poppler, gobjectIntrospection, wrapGAppsHook }:
stdenv.mkDerivation rec {
pname = "aesop";
version = "1.0.5";
name = "${pname}-${version}";
src = fetchFromGitHub {
owner = "lainsce";
repo = pname;
rev = version;
sha256 = "17hjg4qcy8q9xl170yapbhn9vdsn3jf537jsggq51pp0fnhvsnqs";
};
nativeBuildInputs = [
desktop-file-utils
gobjectIntrospection
meson
ninja
pkgconfig
python3
vala
wrapGAppsHook
];
buildInputs = [
gnome3.libgee
granite
gtk3
json-glib
libsoup
poppler
];
postPatch = ''
chmod +x meson/post_install.py
patchShebangs meson/post_install.py
'';
meta = with stdenv.lib; {
description = "The simplest PDF viewer around";
homepage = https://github.com/lainsce/aesop;
license = licenses.gpl2Plus;
maintainers = with maintainers; [ worldofpeace ];
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,53 @@
{ stdenv, fetchFromGitHub, vala, pkgconfig, libxml2, cmake, ninja, gtk3, granite, gnome3
, gobjectIntrospection, sqlite, poppler, poppler_utils, html2text, unzip, unar, wrapGAppsHook }:
stdenv.mkDerivation rec {
pname = "bookworm";
version = "1.0.0";
name = "${pname}-${version}";
src = fetchFromGitHub {
owner = "babluboy";
repo = pname;
rev = version;
sha256 = "0nv1nxird0s0qfhh8fr82mkj4qimhklw1bwcjwmvjdsvsxxs9520";
};
nativeBuildInputs = [
cmake
gobjectIntrospection
libxml2
ninja
pkgconfig
vala
wrapGAppsHook
];
buildInputs = with gnome3; [
glib
granite
gtk3
html2text
libgee
poppler
sqlite
webkitgtk
];
preFixup = ''
gappsWrapperArgs+=(
--prefix PATH : "${stdenv.lib.makeBinPath [ unzip unar poppler_utils html2text ]}"
)
'';
meta = with stdenv.lib; {
description = "A simple, focused eBook reader";
longDescription = ''
Read the books you love without having to worry about different format complexities like epub, pdf, mobi, cbr, etc.
'';
homepage = https://babluboy.github.io/bookworm/;
license = licenses.gpl3Plus;
platforms = platforms.linux;
};
}

View file

@ -3,8 +3,8 @@
rec {
major = "6";
minor = "1";
patch = "0";
tweak = "3";
patch = "1";
tweak = "2";
subdir = "${major}.${minor}.${patch}";
@ -12,6 +12,6 @@ rec {
src = fetchurl {
url = "https://download.documentfoundation.org/libreoffice/src/${subdir}/libreoffice-${version}.tar.xz";
sha256 = "54eccd268f75d62fa6ab78d25685719c109257e1c0f4d628eae92ec09632ebd8";
sha256 = "228166908a3404cbb8e6e662f44b1af8644c0589b2309fadce89dcef112fd09d";
};
}

View file

@ -48,14 +48,14 @@ let
translations = fetchSrc {
name = "translations";
sha256 = "140i0q6nyi2l6nv2b3n7s7mggm2rb1ws3h9awa9y6m2iads54qm7";
sha256 = "2933d0898fbc8ea32cb39b773cf49c5f7da165f75a33522ff91c88d7bd0c7440";
};
# TODO: dictionaries
help = fetchSrc {
name = "help";
sha256 = "0ayssl5ivhyzxi3gz3h4yhp8hq7ihig6n6iijbks5f1sm7dwridv";
sha256 = "41e1af094f2ca5a9ab88894c2dceca2d91e6c28568d7f002f56c647e973cc595";
};
};

View file

@ -105,11 +105,11 @@
md5name = "1f467e5bb703f12cbbb09d5cf67ecf4a-converttexttonumber-1-5-0.oxt";
}
{
name = "curl-7.60.0.tar.gz";
url = "http://dev-www.libreoffice.org/src/curl-7.60.0.tar.gz";
sha256 = "e9c37986337743f37fd14fe8737f246e97aec94b39d1b71e8a5973f72a9fc4f5";
name = "curl-7.61.1.tar.gz";
url = "http://dev-www.libreoffice.org/src/curl-7.61.1.tar.gz";
sha256 = "eaa812e9a871ea10dbe8e1d3f8f12a64a8e3e62aeab18cb23742e2f1727458ae";
md5 = "";
md5name = "e9c37986337743f37fd14fe8737f246e97aec94b39d1b71e8a5973f72a9fc4f5-curl-7.60.0.tar.gz";
md5name = "eaa812e9a871ea10dbe8e1d3f8f12a64a8e3e62aeab18cb23742e2f1727458ae-curl-7.61.1.tar.gz";
}
{
name = "libe-book-0.1.3.tar.xz";
@ -329,11 +329,11 @@
md5name = "aa5e58356cd084000609ebbd93fef456a1bc0ab9e46fea20e81552fb286232a9-graphite2-minimal-1.3.10.tgz";
}
{
name = "harfbuzz-1.7.4.tar.bz2";
url = "http://dev-www.libreoffice.org/src/harfbuzz-1.7.4.tar.bz2";
sha256 = "b5d6ac8415f97f3540d73f3f91c41c5c10f8a4d76350f11a7184062aae88ac0b";
name = "harfbuzz-1.8.4.tar.bz2";
url = "http://dev-www.libreoffice.org/src/harfbuzz-1.8.4.tar.bz2";
sha256 = "3c592f86fa0da69e2e0e98cae9f5d5b61def3bb7948aa00ca45748f27fa545fd";
md5 = "";
md5name = "b5d6ac8415f97f3540d73f3f91c41c5c10f8a4d76350f11a7184062aae88ac0b-harfbuzz-1.7.4.tar.bz2";
md5name = "3c592f86fa0da69e2e0e98cae9f5d5b61def3bb7948aa00ca45748f27fa545fd-harfbuzz-1.8.4.tar.bz2";
}
{
name = "hsqldb_1_8_0.zip";
@ -623,11 +623,11 @@
md5name = "db0bd8cdec329b48f53a6f00199c92d5ba40b0f015b153718d1b15d3d967fbca-neon-0.30.2.tar.gz";
}
{
name = "nss-3.33-with-nspr-4.17.tar.gz";
url = "http://dev-www.libreoffice.org/src/nss-3.33-with-nspr-4.17.tar.gz";
sha256 = "878d505ec0be577c45990c57eb5d2e5c8696bfa3412bd0fae193b275297bf5c4";
name = "nss-3.38-with-nspr-4.19.tar.gz";
url = "http://dev-www.libreoffice.org/src/nss-3.38-with-nspr-4.19.tar.gz";
sha256 = "f271ec73291fa3e4bd4b59109f8035cc3a192fc33886f40ed4f9ee4b31c746e9";
md5 = "";
md5name = "878d505ec0be577c45990c57eb5d2e5c8696bfa3412bd0fae193b275297bf5c4-nss-3.33-with-nspr-4.17.tar.gz";
md5name = "f271ec73291fa3e4bd4b59109f8035cc3a192fc33886f40ed4f9ee4b31c746e9-nss-3.38-with-nspr-4.19.tar.gz";
}
{
name = "libodfgen-0.1.6.tar.bz2";

View file

@ -0,0 +1,41 @@
{ stdenv, fetchurl, coreutils, fltk, libjpeg }:
stdenv.mkDerivation rec {
version = "4.7";
name = "seaview-${version}";
src = fetchurl {
url = "ftp://pbil.univ-lyon1.fr/pub/mol_phylogeny/seaview/archive/seaview_${version}.tar.gz";
sha256 = "0fhyq7dcn0izhwcfin9ajsr7kmmsqm9f1np1rmhzg4digfwqb29n";
};
buildInputs = [ fltk libjpeg ];
patchPhase = "sed -i 's#PATH=/bin:/usr/bin rm#'${coreutils}/bin/rm'#' seaview.cxx";
installPhase = "mkdir -p $out/bin; cp seaview $out/bin";
meta = with stdenv.lib; {
description = "GUI for molecular phylogeny";
longDescription = ''
SeaView is a multiplatform, graphical user interface for multiple sequence alignment and molecular phylogeny.
- SeaView reads and writes various file formats (NEXUS, MSF, CLUSTAL, FASTA, PHYLIP, MASE, Newick) of DNA and protein sequences and of phylogenetic trees.
- SeaView drives programs muscle or Clustal Omega for multiple sequence alignment, and also allows to use any external alignment algorithm able to read and write FASTA-formatted files.
- Seaview drives the Gblocks program to select blocks of evolutionarily conserved sites.
- SeaView computes phylogenetic trees by
+ parsimony, using PHYLIP's dnapars/protpars algorithm,
+ distance, with NJ or BioNJ algorithms on a variety of evolutionary distances,
+ maximum likelihood, driving program PhyML 3.1.
- Seaview can use the Transfer Bootstrap Expectation method to compute the bootstrap support of PhyML and distance trees.
- SeaView prints and draws phylogenetic trees on screen, SVG, PDF or PostScript files.
- SeaView allows to download sequences from EMBL/GenBank/UniProt using the Internet.
Seaview is published in:
Gouy M., Guindon S. & Gascuel O. (2010) SeaView version 4 : a multiplatform graphical user interface for sequence alignment and phylogenetic tree building. Molecular Biology and Evolution 27(2):221-224.
'';
homepage = http://doua.prabi.fr/software/seaview;
license = licenses.gpl3;
maintainers = [ maintainers.iimog ];
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,49 @@
{ stdenv, fetchurl
, gfortran, fftw, openblas
, mpi ? null
}:
stdenv.mkDerivation rec {
version = "6.3";
name = "quantum-espresso-${version}";
src = fetchurl {
url = "https://gitlab.com/QEF/q-e/-/archive/qe-${version}/q-e-qe-${version}.tar.gz";
sha256 = "1738z3nhkzcrgnhnfg1r4lipbwvcrcprwhzjbjysnylmzbzwhrs0";
};
passthru = {
inherit mpi;
};
preConfigure = ''
patchShebangs configure
'';
# remove after 6.3 version:
# makefile needs to ignore install directory easier than applying patch
preInstall = ''
printf "\n.PHONY: install\n" >> Makefile
'';
buildInputs = [ fftw openblas gfortran ]
++ (stdenv.lib.optionals (mpi != null) [ mpi ]);
configureFlags = if (mpi != null) then [ "LD=${mpi}/bin/mpif90" ] else [ "LD=${gfortran}/bin/gfortran" ];
makeFlags = [ "all" ];
meta = with stdenv.lib; {
description = "Electronic-structure calculations and materials modeling at the nanoscale";
longDescription = ''
Quantum ESPRESSO is an integrated suite of Open-Source computer codes for
electronic-structure calculations and materials modeling at the
nanoscale. It is based on density-functional theory, plane waves, and
pseudopotentials.
'';
homepage = https://www.quantum-espresso.org/;
license = licenses.gpl2;
platforms = [ "x86_64-linux" ];
maintainers = [ maintainers.costrouc ];
};
}

View file

@ -0,0 +1,69 @@
{ stdenv, fetchurl
, gfortran, openblas
, mpi ? null, scalapack
}:
stdenv.mkDerivation rec {
version = "4.1-b3";
name = "siesta-${version}";
src = fetchurl {
url = "https://launchpad.net/siesta/4.1/4.1-b3/+download/siesta-4.1-b3.tar.gz";
sha256 = "1450jsxj5aifa0b5fcg7mxxq242fvqnp4zxpgzgbkdp99vrp06gm";
};
passthru = {
inherit mpi;
};
buildInputs = [ openblas gfortran ]
++ (stdenv.lib.optionals (mpi != null) [ mpi scalapack ]);
enableParallelBuilding = true;
# Must do manualy becuase siesta does not do the regular
# ./configure; make; make install
configurePhase = ''
cd Obj
sh ../Src/obj_setup.sh
cp gfortran.make arch.make
'';
preBuild = if (mpi != null) then ''
makeFlagsArray=(
CC="mpicc" FC="mpifort"
FPPFLAGS="-DMPI" MPI_INTERFACE="libmpi_f90.a" MPI_INCLUDE="."
COMP_LIBS="" LIBS="-lopenblas -lscalapack"
);
'' else ''
makeFlagsArray=(
COMP_LIBS="" LIBS="-lopenblas"
);
'';
installPhase = ''
mkdir -p $out/bin
cp -a siesta $out/bin
'';
meta = with stdenv.lib; {
description = "A first-principles materials simulation code using DFT";
longDescription = ''
SIESTA is both a method and its computer program
implementation, to perform efficient electronic structure
calculations and ab initio molecular dynamics simulations of
molecules and solids. SIESTA's efficiency stems from the use
of strictly localized basis sets and from the implementation
of linear-scaling algorithms which can be applied to suitable
systems. A very important feature of the code is that its
accuracy and cost can be tuned in a wide range, from quick
exploratory calculations to highly accurate simulations
matching the quality of other approaches, such as plane-wave
and all-electron methods.
'';
homepage = https://www.quantum-espresso.org/;
license = licenses.gpl2;
platforms = [ "x86_64-linux" ];
maintainers = [ maintainers.costrouc ];
};
}

View file

@ -31,7 +31,8 @@ let
'';
tamarin-prover-utils = mkDerivation (common "tamarin-prover-utils" (src + "/lib/utils") // {
patchPhase = replaceSymlinks;
postPatch = replaceSymlinks;
patches = [ ./ghc-8.4-support-utils.patch ];
libraryHaskellDepends = with haskellPackages; [
base base64-bytestring binary blaze-builder bytestring containers
deepseq dlist fclabels mtl pretty safe SHA syb time transformers
@ -39,7 +40,8 @@ let
});
tamarin-prover-term = mkDerivation (common "tamarin-prover-term" (src + "/lib/term") // {
patchPhase = replaceSymlinks;
postPatch = replaceSymlinks;
patches = [ ./ghc-8.4-support-term.patch ];
libraryHaskellDepends = (with haskellPackages; [
attoparsec base binary bytestring containers deepseq dlist HUnit
mtl process safe
@ -47,7 +49,8 @@ let
});
tamarin-prover-theory = mkDerivation (common "tamarin-prover-theory" (src + "/lib/theory") // {
patchPhase = replaceSymlinks;
postPatch = replaceSymlinks;
patches = [ ./ghc-8.4-support-theory.patch ];
doHaddock = false; # broken
libraryHaskellDepends = (with haskellPackages; [
aeson aeson-pretty base binary bytestring containers deepseq dlist

View file

@ -0,0 +1,109 @@
From a08f6e400772899b9b0fc16befc50391cd70696b Mon Sep 17 00:00:00 2001
From: Felix Yan <felixonmars@archlinux.org>
Date: Fri, 18 May 2018 16:24:41 +0800
Subject: [PATCH] GHC 8.4 support
---
src/Term/Maude/Signature.hs | 8 ++--
src/Term/Rewriting/Definitions.hs | 23 ++++++----
src/Term/Unification.hs | 4 +-
11 files changed, 79 insertions(+), 48 deletions(-)
diff --git a/src/Term/Maude/Signature.hs b/src/Term/Maude/Signature.hs
index 98c25d9f..1a4ce82f 100644
--- a/src/Term/Maude/Signature.hs
+++ b/src/Term/Maude/Signature.hs
@@ -104,9 +104,9 @@ maudeSig msig@(MaudeSig {enableDH,enableBP,enableMSet,enableXor,enableDiff=_,stF
`S.union` dhReducibleFunSig `S.union` bpReducibleFunSig `S.union` xorReducibleFunSig
-- | A monoid instance to combine maude signatures.
-instance Monoid MaudeSig where
- (MaudeSig dh1 bp1 mset1 xor1 diff1 stFunSyms1 stRules1 _ _) `mappend`
- (MaudeSig dh2 bp2 mset2 xor2 diff2 stFunSyms2 stRules2 _ _) =
+instance Semigroup MaudeSig where
+ MaudeSig dh1 bp1 mset1 xor1 diff1 stFunSyms1 stRules1 _ _ <>
+ MaudeSig dh2 bp2 mset2 xor2 diff2 stFunSyms2 stRules2 _ _ =
maudeSig (mempty {enableDH=dh1||dh2
,enableBP=bp1||bp2
,enableMSet=mset1||mset2
@@ -114,6 +114,8 @@ instance Monoid MaudeSig where
,enableDiff=diff1||diff2
,stFunSyms=S.union stFunSyms1 stFunSyms2
,stRules=S.union stRules1 stRules2})
+
+instance Monoid MaudeSig where
mempty = MaudeSig False False False False False S.empty S.empty S.empty S.empty
-- | Non-AC function symbols.
diff --git a/src/Term/Rewriting/Definitions.hs b/src/Term/Rewriting/Definitions.hs
index bd942b6a..18562e4e 100644
--- a/src/Term/Rewriting/Definitions.hs
+++ b/src/Term/Rewriting/Definitions.hs
@@ -44,10 +44,12 @@ evalEqual (Equal l r) = l == r
instance Functor Equal where
fmap f (Equal lhs rhs) = Equal (f lhs) (f rhs)
+instance Semigroup a => Semigroup (Equal a) where
+ (Equal l1 r1) <> (Equal l2 r2) =
+ Equal (l1 <> l2) (r1 <> r2)
+
instance Monoid a => Monoid (Equal a) where
mempty = Equal mempty mempty
- (Equal l1 r1) `mappend` (Equal l2 r2) =
- Equal (l1 `mappend` l2) (r1 `mappend` r2)
instance Foldable Equal where
foldMap f (Equal l r) = f l `mappend` f r
@@ -104,14 +106,15 @@ instance Functor Match where
fmap _ NoMatch = NoMatch
fmap f (DelayedMatches ms) = DelayedMatches (fmap (f *** f) ms)
+instance Semigroup (Match a) where
+ NoMatch <> _ = NoMatch
+ _ <> NoMatch = NoMatch
+ DelayedMatches ms1 <> DelayedMatches ms2 =
+ DelayedMatches (ms1 <> ms2)
+
instance Monoid (Match a) where
mempty = DelayedMatches []
- NoMatch `mappend` _ = NoMatch
- _ `mappend` NoMatch = NoMatch
- DelayedMatches ms1 `mappend` DelayedMatches ms2 =
- DelayedMatches (ms1 `mappend` ms2)
-
instance Foldable Match where
foldMap _ NoMatch = mempty
@@ -136,10 +139,12 @@ data RRule a = RRule a a
instance Functor RRule where
fmap f (RRule lhs rhs) = RRule (f lhs) (f rhs)
+instance Monoid a => Semigroup (RRule a) where
+ (RRule l1 r1) <> (RRule l2 r2) =
+ RRule (l1 <> l2) (r1 <> r2)
+
instance Monoid a => Monoid (RRule a) where
mempty = RRule mempty mempty
- (RRule l1 r1) `mappend` (RRule l2 r2) =
- RRule (l1 `mappend` l2) (r1 `mappend` r2)
instance Foldable RRule where
foldMap f (RRule l r) = f l `mappend` f r
diff --git a/src/Term/Unification.hs b/src/Term/Unification.hs
index e1de0163..7ce6bb41 100644
--- a/src/Term/Unification.hs
+++ b/src/Term/Unification.hs
@@ -265,9 +265,11 @@ unifyRaw l0 r0 = do
data MatchFailure = NoMatcher | ACProblem
+instance Semigroup MatchFailure where
+ _ <> _ = NoMatcher
+
instance Monoid MatchFailure where
mempty = NoMatcher
- mappend _ _ = NoMatcher
-- | Ensure that the computed substitution @sigma@ satisfies
-- @t ==_AC apply sigma p@ after the delayed equations are solved.

View file

@ -0,0 +1,130 @@
From a08f6e400772899b9b0fc16befc50391cd70696b Mon Sep 17 00:00:00 2001
From: Felix Yan <felixonmars@archlinux.org>
Date: Fri, 18 May 2018 16:24:41 +0800
Subject: [PATCH] GHC 8.4 support
---
src/Theory/Proof.hs | 43 +++++++++++--------
11 files changed, 79 insertions(+), 48 deletions(-)
diff --git a/src/Theory/Constraint/Solver/Reduction.hs b/src/Theory/Constraint/Solver/Reduction.hs
index ddbc965a..6daadd0d 100644
--- a/src/Theory/Constraint/Solver/Reduction.hs
+++ b/src/Theory/Constraint/Solver/Reduction.hs
@@ -139,13 +139,14 @@ execReduction m ctxt se fs =
data ChangeIndicator = Unchanged | Changed
deriving( Eq, Ord, Show )
+instance Semigroup ChangeIndicator where
+ Changed <> _ = Changed
+ _ <> Changed = Changed
+ Unchanged <> Unchanged = Unchanged
+
instance Monoid ChangeIndicator where
mempty = Unchanged
- Changed `mappend` _ = Changed
- _ `mappend` Changed = Changed
- Unchanged `mappend` Unchanged = Unchanged
-
-- | Return 'True' iff there was a change.
wasChanged :: ChangeIndicator -> Bool
wasChanged Changed = True
diff --git a/src/Theory/Constraint/System/Guarded.hs b/src/Theory/Constraint/System/Guarded.hs
index f98fc7c2..2aac8ce2 100644
--- a/src/Theory/Constraint/System/Guarded.hs
+++ b/src/Theory/Constraint/System/Guarded.hs
@@ -435,7 +435,7 @@ gall ss atos gf = GGuarded All ss atos gf
-- | Local newtype to avoid orphan instance.
newtype ErrorDoc d = ErrorDoc { unErrorDoc :: d }
- deriving( Monoid, NFData, Document, HighlightDocument )
+ deriving( Monoid, Semigroup, NFData, Document, HighlightDocument )
-- | @formulaToGuarded fm@ returns a guarded formula @gf@ that is
-- equivalent to @fm@ under the assumption that this is possible.
diff --git a/src/Theory/Proof.hs b/src/Theory/Proof.hs
index 74fb77b1..7971b9fc 100644
--- a/src/Theory/Proof.hs
+++ b/src/Theory/Proof.hs
@@ -388,17 +388,19 @@ data ProofStatus =
| TraceFound -- ^ There is an annotated solved step
deriving ( Show, Generic, NFData, Binary )
+instance Semigroup ProofStatus where
+ TraceFound <> _ = TraceFound
+ _ <> TraceFound = TraceFound
+ IncompleteProof <> _ = IncompleteProof
+ _ <> IncompleteProof = IncompleteProof
+ _ <> CompleteProof = CompleteProof
+ CompleteProof <> _ = CompleteProof
+ UndeterminedProof <> UndeterminedProof = UndeterminedProof
+
+
instance Monoid ProofStatus where
mempty = CompleteProof
- mappend TraceFound _ = TraceFound
- mappend _ TraceFound = TraceFound
- mappend IncompleteProof _ = IncompleteProof
- mappend _ IncompleteProof = IncompleteProof
- mappend _ CompleteProof = CompleteProof
- mappend CompleteProof _ = CompleteProof
- mappend UndeterminedProof UndeterminedProof = UndeterminedProof
-
-- | The status of a 'ProofStep'.
proofStepStatus :: ProofStep (Maybe a) -> ProofStatus
proofStepStatus (ProofStep _ Nothing ) = UndeterminedProof
@@ -560,10 +562,12 @@ newtype Prover = Prover
-> Maybe IncrementalProof -- resulting proof
}
+instance Semigroup Prover where
+ p1 <> p2 = Prover $ \ctxt d se ->
+ runProver p1 ctxt d se >=> runProver p2 ctxt d se
+
instance Monoid Prover where
mempty = Prover $ \_ _ _ -> Just
- p1 `mappend` p2 = Prover $ \ctxt d se ->
- runProver p1 ctxt d se >=> runProver p2 ctxt d se
-- | Provers whose sequencing is handled via the 'Monoid' instance.
--
@@ -579,10 +583,12 @@ newtype DiffProver = DiffProver
-> Maybe IncrementalDiffProof -- resulting proof
}
+instance Semigroup DiffProver where
+ p1 <> p2 = DiffProver $ \ctxt d se ->
+ runDiffProver p1 ctxt d se >=> runDiffProver p2 ctxt d se
+
instance Monoid DiffProver where
mempty = DiffProver $ \_ _ _ -> Just
- p1 `mappend` p2 = DiffProver $ \ctxt d se ->
- runDiffProver p1 ctxt d se >=> runDiffProver p2 ctxt d se
-- | Map the proof generated by the prover.
mapProverProof :: (IncrementalProof -> IncrementalProof) -> Prover -> Prover
@@ -784,15 +790,16 @@ runAutoDiffProver (AutoProver heuristic bound cut) =
-- | The result of one pass of iterative deepening.
data IterDeepRes = NoSolution | MaybeNoSolution | Solution ProofPath
+instance Semigroup IterDeepRes where
+ x@(Solution _) <> _ = x
+ _ <> y@(Solution _) = y
+ MaybeNoSolution <> _ = MaybeNoSolution
+ _ <> MaybeNoSolution = MaybeNoSolution
+ NoSolution <> NoSolution = NoSolution
+
instance Monoid IterDeepRes where
mempty = NoSolution
- x@(Solution _) `mappend` _ = x
- _ `mappend` y@(Solution _) = y
- MaybeNoSolution `mappend` _ = MaybeNoSolution
- _ `mappend` MaybeNoSolution = MaybeNoSolution
- NoSolution `mappend` NoSolution = NoSolution
-
-- | @cutOnSolvedDFS prf@ removes all other cases if an attack is found. The
-- attack search is performed using a parallel DFS traversal with iterative
-- deepening.

View file

@ -0,0 +1,140 @@
From a08f6e400772899b9b0fc16befc50391cd70696b Mon Sep 17 00:00:00 2001
From: Felix Yan <felixonmars@archlinux.org>
Date: Fri, 18 May 2018 16:24:41 +0800
Subject: [PATCH] GHC 8.4 support
---
src/Extension/Data/Bounded.hs | 10 ++++-
src/Extension/Data/Monoid.hs | 14 +++---
src/Logic/Connectives.hs | 4 +-
src/Text/PrettyPrint/Class.hs | 4 +-
src/Text/PrettyPrint/Html.hs | 6 ++-
11 files changed, 79 insertions(+), 48 deletions(-)
diff --git a/src/Extension/Data/Bounded.hs b/src/Extension/Data/Bounded.hs
index 5f166006..f416a44c 100644
--- a/src/Extension/Data/Bounded.hs
+++ b/src/Extension/Data/Bounded.hs
@@ -11,19 +11,25 @@ module Extension.Data.Bounded (
) where
-- import Data.Monoid
+import Data.Semigroup
-- | A newtype wrapper for a monoid of the maximum of a bounded type.
newtype BoundedMax a = BoundedMax {getBoundedMax :: a}
deriving( Eq, Ord, Show )
+instance (Ord a, Bounded a) => Semigroup (BoundedMax a) where
+ BoundedMax x <> BoundedMax y = BoundedMax (max x y)
+
instance (Ord a, Bounded a) => Monoid (BoundedMax a) where
mempty = BoundedMax minBound
- (BoundedMax x) `mappend` (BoundedMax y) = BoundedMax (max x y)
+ mappend = (<>)
-- | A newtype wrapper for a monoid of the minimum of a bounded type.
newtype BoundedMin a = BoundedMin {getBoundedMin :: a}
deriving( Eq, Ord, Show )
+instance (Ord a, Bounded a) => Semigroup (BoundedMin a) where
+ BoundedMin x <> BoundedMin y = BoundedMin (min x y)
+
instance (Ord a, Bounded a) => Monoid (BoundedMin a) where
mempty = BoundedMin maxBound
- (BoundedMin x) `mappend` (BoundedMin y) = BoundedMin (min x y)
\ No newline at end of file
diff --git a/src/Extension/Data/Monoid.hs b/src/Extension/Data/Monoid.hs
index 83655c34..9ce2f91b 100644
--- a/src/Extension/Data/Monoid.hs
+++ b/src/Extension/Data/Monoid.hs
@@ -18,6 +18,7 @@ module Extension.Data.Monoid (
) where
import Data.Monoid
+import Data.Semigroup
#if __GLASGOW_HASKELL__ < 704
@@ -38,10 +39,13 @@ newtype MinMax a = MinMax { getMinMax :: Maybe (a, a) }
minMaxSingleton :: a -> MinMax a
minMaxSingleton x = MinMax (Just (x, x))
+instance Ord a => Semigroup (MinMax a) where
+ MinMax Nothing <> y = y
+ x <> MinMax Nothing = x
+ MinMax (Just (xMin, xMax)) <> MinMax (Just (yMin, yMax)) =
+ MinMax (Just (min xMin yMin, max xMax yMax))
+
+
instance Ord a => Monoid (MinMax a) where
mempty = MinMax Nothing
-
- MinMax Nothing `mappend` y = y
- x `mappend` MinMax Nothing = x
- MinMax (Just (xMin, xMax)) `mappend` MinMax (Just (yMin, yMax)) =
- MinMax (Just (min xMin yMin, max xMax yMax))
+ mappend = (<>)
diff --git a/src/Logic/Connectives.hs b/src/Logic/Connectives.hs
index 2e441172..7206cc2c 100644
--- a/src/Logic/Connectives.hs
+++ b/src/Logic/Connectives.hs
@@ -23,12 +23,12 @@ import Control.DeepSeq
-- | A conjunction of atoms of type a.
newtype Conj a = Conj { getConj :: [a] }
- deriving (Monoid, Foldable, Traversable, Eq, Ord, Show, Binary,
+ deriving (Monoid, Semigroup, Foldable, Traversable, Eq, Ord, Show, Binary,
Functor, Applicative, Monad, Alternative, MonadPlus, Typeable, Data, NFData)
-- | A disjunction of atoms of type a.
newtype Disj a = Disj { getDisj :: [a] }
- deriving (Monoid, Foldable, Traversable, Eq, Ord, Show, Binary,
+ deriving (Monoid, Semigroup, Foldable, Traversable, Eq, Ord, Show, Binary,
Functor, Applicative, Monad, Alternative, MonadPlus, Typeable, Data, NFData)
instance MonadDisj Disj where
diff --git a/src/Text/PrettyPrint/Class.hs b/src/Text/PrettyPrint/Class.hs
index f5eb42fe..13be6515 100644
--- a/src/Text/PrettyPrint/Class.hs
+++ b/src/Text/PrettyPrint/Class.hs
@@ -187,9 +187,11 @@ instance Document Doc where
nest i (Doc d) = Doc $ P.nest i d
caseEmptyDoc yes no (Doc d) = if P.isEmpty d then yes else no
+instance Semigroup Doc where
+ Doc d1 <> Doc d2 = Doc $ (P.<>) d1 d2
+
instance Monoid Doc where
mempty = Doc $ P.empty
- mappend (Doc d1) (Doc d2) = Doc $ (P.<>) d1 d2
------------------------------------------------------------------------------
-- Additional combinators
diff --git a/src/Text/PrettyPrint/Html.hs b/src/Text/PrettyPrint/Html.hs
index 3de5e307..10103eb7 100644
--- a/src/Text/PrettyPrint/Html.hs
+++ b/src/Text/PrettyPrint/Html.hs
@@ -90,7 +90,7 @@ attribute (key,value) = " " ++ key ++ "=\"" ++ escapeHtmlEntities value ++ "\""
-- | A 'Document' transformer that adds proper HTML escaping.
newtype HtmlDoc d = HtmlDoc { getHtmlDoc :: d }
- deriving( Monoid )
+ deriving( Monoid, Semigroup )
-- | Wrap a document such that HTML markup can be added without disturbing the
-- layout.
@@ -182,9 +182,11 @@ getNoHtmlDoc = runIdentity . unNoHtmlDoc
instance NFData d => NFData (NoHtmlDoc d) where
rnf = rnf . getNoHtmlDoc
+instance Semigroup d => Semigroup (NoHtmlDoc d) where
+ (<>) = liftA2 (<>)
+
instance Monoid d => Monoid (NoHtmlDoc d) where
mempty = pure mempty
- mappend = liftA2 mappend
instance Document d => Document (NoHtmlDoc d) where
char = pure . char

View file

@ -31,6 +31,8 @@ let
git = appendToName "minimal" gitBase;
git-appraise = callPackage ./git-appraise {};
git-fame = callPackage ./git-fame {};
# The full-featured Git.

View file

@ -0,0 +1,24 @@
{ stdenv, buildGoPackage, fetchFromGitHub }:
buildGoPackage rec {
name = "git-appraise-unstable-${version}";
version = "2018-02-26";
rev = "2414523905939525559e4b2498c5597f86193b61";
goPackagePath = "github.com/google/git-appraise";
src = fetchFromGitHub {
inherit rev;
owner = "google";
repo = "git-appraise";
sha256 = "04xkp1jpas1dfms6i9j09bgkydih0q10nhwn75w9ds8hi2qaa3sa";
};
meta = {
description = "Distributed code review system for Git repos";
homepage = https://github.com/google/git-appraise;
license = stdenv.lib.licenses.asl20;
platforms = stdenv.lib.platforms.all;
maintainers = [ stdenv.lib.maintainers.vdemeester ];
};
}

Some files were not shown because too many files have changed in this diff Show more