0
0
Fork 0
mirror of https://github.com/NixOS/nixpkgs.git synced 2025-07-12 05:16:25 +03:00

Merge remote-tracking branch 'upstream/master' into hardened-stdenv

This commit is contained in:
Robin Gloster 2016-07-31 20:51:34 +00:00
commit 63c7b4f9a7
701 changed files with 12952 additions and 15151 deletions

View file

@ -251,16 +251,13 @@ bound to the variable name <varname>e2fsprogs</varname> in
<listitem><para>The version part of the <literal>name</literal> <listitem><para>The version part of the <literal>name</literal>
attribute <emphasis>must</emphasis> start with a digit (following a attribute <emphasis>must</emphasis> start with a digit (following a
dash) — e.g., <literal>"hello-0.3-pre-r3910"</literal> instead of dash) — e.g., <literal>"hello-0.3.1rc2"</literal>.</para></listitem>
<literal>"hello-svn-r3910"</literal>, as the latter would be seen as
a package named <literal>hello-svn</literal> by
<command>nix-env</command>.</para></listitem>
<listitem><para>If package is fetched from git's commit then <listitem><para>If a package is not a release but a commit from a repository, then
the version part of the name <emphasis>must</emphasis> be the date of that the version part of the name <emphasis>must</emphasis> be the date of that
(fetched) commit. The date must be in <literal>"YYYY-MM-DD"</literal> format. (fetched) commit. The date must be in <literal>"YYYY-MM-DD"</literal> format.
Also add <literal>"git"</literal> to the name - e.g., Also append <literal>"unstable"</literal> to the name - e.g.,
<literal>"pkgname-git-2014-09-23"</literal>.</para></listitem> <literal>"pkgname-unstable-2014-09-23"</literal>.</para></listitem>
<listitem><para>Dashes in the package name should be preserved <listitem><para>Dashes in the package name should be preserved
in new variable names, rather than converted to underscores in new variable names, rather than converted to underscores

View file

@ -195,6 +195,11 @@ lib.mapAttrs (n: v: v // { shortName = n; }) rec {
fullName = "Unspecified free software license"; fullName = "Unspecified free software license";
}; };
g4sl = {
fullName = "Geant4 Software License";
url = https://geant4.web.cern.ch/geant4/license/LICENSE.html;
};
gpl1 = spdx { gpl1 = spdx {
spdxId = "GPL-1.0"; spdxId = "GPL-1.0";
fullName = "GNU General Public License v1.0 only"; fullName = "GNU General Public License v1.0 only";

View file

@ -338,6 +338,7 @@
robberer = "Longrin Wischnewski <robberer@freakmail.de>"; robberer = "Longrin Wischnewski <robberer@freakmail.de>";
robbinch = "Robbin C. <robbinch33@gmail.com>"; robbinch = "Robbin C. <robbinch33@gmail.com>";
robgssp = "Rob Glossop <robgssp@gmail.com>"; robgssp = "Rob Glossop <robgssp@gmail.com>";
roblabla = "Robin Lambertz <robinlambertz+dev@gmail.com>";
roconnor = "Russell O'Connor <roconnor@theorem.ca>"; roconnor = "Russell O'Connor <roconnor@theorem.ca>";
romildo = "José Romildo Malaquias <malaquias@gmail.com>"; romildo = "José Romildo Malaquias <malaquias@gmail.com>";
rszibele = "Richard Szibele <richard_szibele@hotmail.com>"; rszibele = "Richard Szibele <richard_szibele@hotmail.com>";

View file

@ -55,10 +55,11 @@ rec {
# packed-refs file, so we have to grep through it: # packed-refs file, so we have to grep through it:
else if lib.pathExists packedRefsName else if lib.pathExists packedRefsName
then then
let packedRefs = lib.splitString "\n" (readFile packedRefsName); let fileContent = readFile packedRefsName;
matchRule = match ("^(.*) " + file + "$"); matchRef = match ".*\n([^\n ]*) " + file + "\n.*" fileContent;
matchedRefs = lib.flatten (lib.filter (m: ! (isNull m)) (map matchRule packedRefs)); in if isNull matchRef
in lib.head matchedRefs then throw ("Could not find " + file + " in " + packedRefsName)
else lib.head matchRef
else throw ("Not a .git directory: " + path); else throw ("Not a .git directory: " + path);
in lib.flip readCommitFromFile "HEAD"; in lib.flip readCommitFromFile "HEAD";
} }

View file

@ -1,5 +1,5 @@
#!/bin/sh #!/bin/sh
./maintainers/scripts/fetch-kde-qt.sh \ ./maintainers/scripts/fetch-kde-qt.sh \
http://download.kde.org/stable/plasma/5.7.1/ -A '*.tar.xz' \ http://download.kde.org/stable/plasma/5.7.2/ -A '*.tar.xz' \
>pkgs/desktops/kde-5/plasma/srcs.nix >pkgs/desktops/kde-5/plasma/srcs.nix

View file

@ -1,3 +1,6 @@
#!/bin/sh #!/bin/sh
./fetch-kde-qt.sh http://download.qt.io/official_releases/qt/5.6/5.6.1/submodules/ -A '*.tar.xz' ./maintainers/scripts/fetch-kde-qt.sh \
http://download.qt.io/official_releases/qt/5.7/5.7.0/submodules/ \
-A '*.tar.xz' \
>pkgs/development/libraries/qt-5/5.7/srcs.nix

View file

@ -1,27 +1,27 @@
{ pkgs, options, version, revision, extraSources ? [] }: { pkgs, options, version, revision, extraSources ? [] }:
with pkgs; with pkgs;
with pkgs.lib;
let let
lib = pkgs.lib;
# Remove invisible and internal options. # Remove invisible and internal options.
optionsList = filter (opt: opt.visible && !opt.internal) (optionAttrSetToDocList options); optionsList = lib.filter (opt: opt.visible && !opt.internal) (lib.optionAttrSetToDocList options);
# Replace functions by the string <function> # Replace functions by the string <function>
substFunction = x: substFunction = x:
if builtins.isAttrs x then mapAttrs (name: substFunction) x if builtins.isAttrs x then lib.mapAttrs (name: substFunction) x
else if builtins.isList x then map substFunction x else if builtins.isList x then map substFunction x
else if builtins.isFunction x then "<function>" else if builtins.isFunction x then "<function>"
else x; else x;
# Clean up declaration sites to not refer to the NixOS source tree. # Clean up declaration sites to not refer to the NixOS source tree.
optionsList' = flip map optionsList (opt: opt // { optionsList' = lib.flip map optionsList (opt: opt // {
declarations = map stripAnyPrefixes opt.declarations; declarations = map stripAnyPrefixes opt.declarations;
} }
// optionalAttrs (opt ? example) { example = substFunction opt.example; } // lib.optionalAttrs (opt ? example) { example = substFunction opt.example; }
// optionalAttrs (opt ? default) { default = substFunction opt.default; } // lib.optionalAttrs (opt ? default) { default = substFunction opt.default; }
// optionalAttrs (opt ? type) { type = substFunction opt.type; }); // lib.optionalAttrs (opt ? type) { type = substFunction opt.type; });
# We need to strip references to /nix/store/* from options, # We need to strip references to /nix/store/* from options,
# including any `extraSources` if some modules came from elsewhere, # including any `extraSources` if some modules came from elsewhere,
@ -30,7 +30,7 @@ let
# E.g. if some `options` came from modules in ${pkgs.customModules}/nix, # E.g. if some `options` came from modules in ${pkgs.customModules}/nix,
# you'd need to include `extraSources = [ pkgs.customModules ]` # you'd need to include `extraSources = [ pkgs.customModules ]`
prefixesToStrip = map (p: "${toString p}/") ([ ../../.. ] ++ extraSources); prefixesToStrip = map (p: "${toString p}/") ([ ../../.. ] ++ extraSources);
stripAnyPrefixes = flip (fold removePrefix) prefixesToStrip; stripAnyPrefixes = lib.flip (lib.fold lib.removePrefix) prefixesToStrip;
# Convert the list of options into an XML file. # Convert the list of options into an XML file.
optionsXML = builtins.toFile "options.xml" (builtins.toXML optionsList'); optionsXML = builtins.toFile "options.xml" (builtins.toXML optionsList');
@ -49,7 +49,7 @@ let
-o $out ${./options-to-docbook.xsl} $optionsXML -o $out ${./options-to-docbook.xsl} $optionsXML
''; '';
sources = sourceFilesBySuffices ./. [".xml"]; sources = lib.sourceFilesBySuffices ./. [".xml"];
copySources = copySources =
'' ''
@ -143,7 +143,7 @@ in rec {
mkdir -p $dst mkdir -p $dst
cp ${builtins.toFile "options.json" (builtins.unsafeDiscardStringContext (builtins.toJSON cp ${builtins.toFile "options.json" (builtins.unsafeDiscardStringContext (builtins.toJSON
(listToAttrs (map (o: { name = o.name; value = removeAttrs o ["name" "visible" "internal"]; }) optionsList')))) (builtins.listToAttrs (map (o: { name = o.name; value = removeAttrs o ["name" "visible" "internal"]; }) optionsList'))))
} $dst/options.json } $dst/options.json
mkdir -p $out/nix-support mkdir -p $out/nix-support
@ -193,6 +193,43 @@ in rec {
allowedReferences = ["out"]; allowedReferences = ["out"];
}; };
manualEpub = stdenv.mkDerivation {
name = "nixos-manual-epub";
inherit sources;
buildInputs = [ libxml2 libxslt zip ];
buildCommand = ''
${copySources}
# Check the validity of the manual sources.
xmllint --noout --nonet --xinclude --noxincludenode \
--relaxng ${docbook5}/xml/rng/docbook/docbook.rng \
manual.xml
# Generate the epub manual.
dst=$out/share/doc/nixos
xsltproc \
${manualXsltprocOptions} \
--stringparam target.database.document "${olinkDB}/olinkdb.xml" \
--nonet --xinclude --output $dst/epub/ \
${docbook5_xsl}/xml/xsl/docbook/epub/docbook.xsl ./manual.xml
mkdir -p $dst/epub/OEBPS/images/callouts
cp -r ${docbook5_xsl}/xml/xsl/docbook/images/callouts/*.gif $dst/epub/OEBPS/images/callouts
echo "application/epub+zip" > mimetype
zip -0Xq "$dst/NixOS Manual - NixOS community.epub" mimetype
zip -Xr9D "$dst/NixOS Manual - NixOS community.epub" $dst/epub/*
mkdir -p $out/nix-support
echo "doc-epub manual $dst/NixOS Manual - NixOS community.epub" >> $out/nix-support/hydra-build-products
'';
};
manualPDF = stdenv.mkDerivation { manualPDF = stdenv.mkDerivation {
name = "nixos-manual-pdf"; name = "nixos-manual-pdf";

View file

@ -9,11 +9,36 @@ let
systemWide = cfg.enable && cfg.systemWide; systemWide = cfg.enable && cfg.systemWide;
nonSystemWide = cfg.enable && !cfg.systemWide; nonSystemWide = cfg.enable && !cfg.systemWide;
hasZeroconf = let z = cfg.zeroconf; in z.publish.enable || z.discovery.enable;
overriddenPackage = cfg.package.override
(optionalAttrs hasZeroconf { zeroconfSupport = true; });
binary = "${getBin overriddenPackage}/bin/pulseaudio";
binaryNoDaemon = "${binary} --daemonize=no";
# Forces 32bit pulseaudio and alsaPlugins to be built/supported for apps # Forces 32bit pulseaudio and alsaPlugins to be built/supported for apps
# using 32bit alsa on 64bit linux. # using 32bit alsa on 64bit linux.
enable32BitAlsaPlugins = cfg.support32Bit && stdenv.isx86_64 && (pkgs_i686.alsaLib != null && pkgs_i686.libpulseaudio != null); enable32BitAlsaPlugins = cfg.support32Bit && stdenv.isx86_64 && (pkgs_i686.alsaLib != null && pkgs_i686.libpulseaudio != null);
myConfigFile =
let
addModuleIf = cond: mod: optionalString cond "load-module ${mod}";
allAnon = optional cfg.tcp.anonymousClients.allowAll "auth-anonymous=1";
ipAnon = let a = cfg.tcp.anonymousClients.allowedIpRanges;
in optional (a != []) ''auth-ip-acl=${concatStringsSep ";" a}'';
in writeTextFile {
name = "default.pa";
text = ''
.include ${cfg.configFile}
${addModuleIf cfg.zeroconf.publish.enable "module-zeroconf-publish"}
${addModuleIf cfg.zeroconf.discovery.enable "module-zeroconf-discover"}
${addModuleIf cfg.tcp.enable (concatStringsSep " "
([ "load-module module-native-protocol-tcp" ] ++ allAnon ++ ipAnon))}
${cfg.extraConfig}
'';
};
ids = config.ids; ids = config.ids;
uid = ids.uids.pulseaudio; uid = ids.uids.pulseaudio;
@ -26,7 +51,7 @@ let
# are built with PulseAudio support (like KDE). # are built with PulseAudio support (like KDE).
clientConf = writeText "client.conf" '' clientConf = writeText "client.conf" ''
autospawn=${if nonSystemWide then "yes" else "no"} autospawn=${if nonSystemWide then "yes" else "no"}
${optionalString nonSystemWide "daemon-binary=${cfg.package.out}/bin/pulseaudio"} ${optionalString nonSystemWide "daemon-binary=${binary}"}
${cfg.extraClientConf} ${cfg.extraClientConf}
''; '';
@ -44,7 +69,7 @@ let
hint.description "Default Audio Device (via PulseAudio)" hint.description "Default Audio Device (via PulseAudio)"
} }
ctl_type.pulse { ctl_type.pulse {
libs.native = ${alsaPlugins}/lib/alsa-lib/libasound_module_ctl_pulse.so ; libs.native = ${pkgs.alsaPlugins}/lib/alsa-lib/libasound_module_ctl_pulse.so ;
${lib.optionalString enable32BitAlsaPlugins ${lib.optionalString enable32BitAlsaPlugins
"libs.32Bit = ${pkgs_i686.alsaPlugins}/lib/alsa-lib/libasound_module_ctl_pulse.so ;"} "libs.32Bit = ${pkgs_i686.alsaPlugins}/lib/alsa-lib/libasound_module_ctl_pulse.so ;"}
} }
@ -89,16 +114,25 @@ in {
}; };
configFile = mkOption { configFile = mkOption {
type = types.path; type = types.nullOr types.path;
description = '' description = ''
The path to the configuration the PulseAudio server The path to the default configuration options the PulseAudio server
should use. By default, the "default.pa" configuration should use. By default, the "default.pa" configuration
from the PulseAudio distribution is used. from the PulseAudio distribution is used.
''; '';
}; };
extraConfig = mkOption {
type = types.lines;
default = "";
description = ''
Literal string to append to <literal>configFile</literal>
and the config file generated by the pulseaudio module.
'';
};
extraClientConf = mkOption { extraClientConf = mkOption {
type = types.str; type = types.lines;
default = ""; default = "";
description = '' description = ''
Extra configuration appended to pulse/client.conf file. Extra configuration appended to pulse/client.conf file.
@ -127,6 +161,31 @@ in {
''; '';
}; };
}; };
zeroconf = {
discovery.enable =
mkEnableOption "discovery of pulseaudio sinks in the local network";
publish.enable =
mkEnableOption "publishing the pulseaudio sink in the local network";
};
# TODO: enable by default?
tcp = {
enable = mkEnableOption "tcp streaming support";
anonymousClients = {
allowAll = mkEnableOption "all anonymous clients to stream to the server";
allowedIpRanges = mkOption {
type = types.listOf types.str;
default = [];
example = literalExample ''[ "127.0.0.1" "192.168.1.0/24" ]'';
description = ''
A list of IP subnets that are allowed to stream to the server.
'';
};
};
};
}; };
}; };
@ -139,11 +198,11 @@ in {
source = clientConf; source = clientConf;
}; };
hardware.pulseaudio.configFile = mkDefault "${getBin cfg.package}/etc/pulse/default.pa"; hardware.pulseaudio.configFile = mkDefault "${getBin overriddenPackage}/etc/pulse/default.pa";
} }
(mkIf cfg.enable { (mkIf cfg.enable {
environment.systemPackages = [ cfg.package ]; environment.systemPackages = [ overriddenPackage ];
environment.etc = singleton { environment.etc = singleton {
target = "asound.conf"; target = "asound.conf";
@ -152,12 +211,21 @@ in {
# Allow PulseAudio to get realtime priority using rtkit. # Allow PulseAudio to get realtime priority using rtkit.
security.rtkit.enable = true; security.rtkit.enable = true;
})
(mkIf hasZeroconf {
services.avahi.enable = true;
})
(mkIf cfg.zeroconf.publish.enable {
services.avahi.publish.enable = true;
services.avahi.publish.userServices = true;
}) })
(mkIf nonSystemWide { (mkIf nonSystemWide {
environment.etc = singleton { environment.etc = singleton {
target = "pulse/default.pa"; target = "pulse/default.pa";
source = cfg.configFile; source = myConfigFile;
}; };
systemd.user = { systemd.user = {
@ -167,10 +235,12 @@ in {
wantedBy = [ "default.target" ]; wantedBy = [ "default.target" ];
serviceConfig = { serviceConfig = {
Type = "notify"; Type = "notify";
ExecStart = "${getBin cfg.package}/bin/pulseaudio --daemonize=no"; ExecStart = binaryNoDaemon;
Restart = "on-failure"; Restart = "on-failure";
RestartSec = "500ms";
}; };
environment = { DISPLAY = ":${toString config.services.xserver.display}"; }; environment = { DISPLAY = ":${toString config.services.xserver.display}"; };
restartIfChanged = true;
}; };
sockets.pulseaudio = { sockets.pulseaudio = {
@ -205,8 +275,9 @@ in {
environment.PULSE_RUNTIME_PATH = stateDir; environment.PULSE_RUNTIME_PATH = stateDir;
serviceConfig = { serviceConfig = {
Type = "notify"; Type = "notify";
ExecStart = "${getBin cfg.package}/bin/pulseaudio --daemonize=no --log-level=${cfg.daemon.logLevel} --system -n --file=${cfg.configFile}"; ExecStart = "${binaryNoDaemon} --log-level=${cfg.daemon.logLevel} --system -n --file=${myConfigFile}";
Restart = "on-failure"; Restart = "on-failure";
RestartSec = "500ms";
}; };
}; };
}) })

View file

@ -473,7 +473,7 @@
./services/web-servers/lighttpd/gitweb.nix ./services/web-servers/lighttpd/gitweb.nix
./services/web-servers/lighttpd/inginious.nix ./services/web-servers/lighttpd/inginious.nix
./services/web-servers/nginx/default.nix ./services/web-servers/nginx/default.nix
./services/web-servers/phpfpm/default.nix ./services/web-servers/phpfpm.nix
./services/web-servers/shellinabox.nix ./services/web-servers/shellinabox.nix
./services/web-servers/tomcat.nix ./services/web-servers/tomcat.nix
./services/web-servers/uwsgi.nix ./services/web-servers/uwsgi.nix

View file

@ -100,6 +100,12 @@ in
Password used for SMTP auth. (STORED PLAIN TEXT, WORLD-READABLE IN NIX STORE) Password used for SMTP auth. (STORED PLAIN TEXT, WORLD-READABLE IN NIX STORE)
''; '';
}; };
setSendmail = mkOption {
type = types.bool;
default = true;
description = "Whether to set the system sendmail to ssmtp's.";
};
}; };
@ -122,6 +128,13 @@ in
''; '';
environment.systemPackages = [pkgs.ssmtp]; environment.systemPackages = [pkgs.ssmtp];
services.mail.sendmailSetuidWrapper = mkIf cfg.setSendmail {
program = "sendmail";
source = "${pkgs.ssmtp}/bin/sendmail";
setuid = false;
setgid = false;
};
}; };

View file

@ -27,7 +27,7 @@ let
set -g status-keys ${cfg.keyMode} set -g status-keys ${cfg.keyMode}
set -g mode-keys ${cfg.keyMode} set -g mode-keys ${cfg.keyMode}
${if cfg.keyMode == "vi" then '' ${if cfg.keyMode == "vi" && cfg.customPaneNavigationAndResize then ''
bind h select-pane -L bind h select-pane -L
bind j select-pane -D bind j select-pane -D
bind k select-pane -U bind k select-pane -U
@ -86,6 +86,13 @@ in {
description = "Use 24 hour clock."; description = "Use 24 hour clock.";
}; };
customPaneNavigationAndResize = mkOption {
default = false;
example = true;
type = types.bool;
description = "Override the hjkl and HJKL bindings for pane navigation and resizing in VI mode.";
};
escapeTime = mkOption { escapeTime = mkOption {
default = 500; default = 500;
example = 0; example = 0;

View file

@ -47,6 +47,7 @@ in {
}; };
configuration = mkOption { configuration = mkOption {
default = "";
type = types.lines; type = types.lines;
description = '' description = ''
The configuration that Mopidy should use. The configuration that Mopidy should use.

View file

@ -67,33 +67,33 @@ in {
}; };
packages = mkOption { packages = mkOption {
default = [ pkgs.stdenv pkgs.jre config.programs.ssh.package pkgs.nix ]; default = [ pkgs.stdenv pkgs.jre pkgs.git config.programs.ssh.package pkgs.nix ];
type = types.listOf types.package; type = types.listOf types.package;
description = '' description = ''
Packages to add to PATH for the Go.CD server's process. Packages to add to PATH for the Go.CD server's process.
''; '';
}; };
heapSize = mkOption { initialJavaHeapSize = mkOption {
default = "512m"; default = "512m";
type = types.str; type = types.str;
description = '' description = ''
Specifies the java heap memory size for the Go.CD server's java process. Specifies the initial java heap memory size for the Go.CD server's java process.
''; '';
}; };
maxMemory = mkOption { maxJavaHeapMemory = mkOption {
default = "1024m"; default = "1024m";
type = types.str; type = types.str;
description = '' description = ''
Specifies the java maximum memory size for the Go.CD server's java process. Specifies the java maximum heap memory size for the Go.CD server's java process.
''; '';
}; };
extraOptions = mkOption { extraOptions = mkOption {
default = [ default = [
"-Xms${cfg.heapSize}" "-Xms${cfg.initialJavaHeapSize}"
"-Xmx${cfg.maxMemory}" "-Xmx${cfg.maxJavaHeapMemory}"
"-Dcruise.listen.host=${cfg.listenAddress}" "-Dcruise.listen.host=${cfg.listenAddress}"
"-Duser.language=en" "-Duser.language=en"
"-Djruby.rack.request.size.threshold.bytes=30000000" "-Djruby.rack.request.size.threshold.bytes=30000000"

View file

@ -51,12 +51,6 @@ in
description = "Logging verbosity level."; description = "Logging verbosity level.";
}; };
watchdogTimeout = mkOption {
type = types.int;
default = 10;
description = "Set watchdog timeout value in seconds.";
};
filterWorkers = mkOption { filterWorkers = mkOption {
type = types.int; type = types.int;
default = 1; default = 1;
@ -140,7 +134,6 @@ in
"-w ${toString cfg.filterWorkers} " + "-w ${toString cfg.filterWorkers} " +
ops havePluginPath "--pluginpath ${pluginPath} " + ops havePluginPath "--pluginpath ${pluginPath} " +
"${verbosityFlag} " + "${verbosityFlag} " +
"--watchdog-timeout ${toString cfg.watchdogTimeout} " +
"-f ${writeText "logstash.conf" '' "-f ${writeText "logstash.conf" ''
input { input {
${cfg.inputConfig} ${cfg.inputConfig}

View file

@ -75,7 +75,7 @@ in
bindUnixSockets = mkOption { bindUnixSockets = mkOption {
type = types.listOf types.str; type = types.listOf types.str;
default = ["/run/rmilter.sock"]; default = ["/run/rmilter/rmilter.sock"];
description = '' description = ''
Unix domain sockets to listen for MTA requests. Unix domain sockets to listen for MTA requests.
''; '';
@ -114,7 +114,7 @@ in
servers = mkOption { servers = mkOption {
type = types.listOf types.str; type = types.listOf types.str;
default = ["r:/run/rspamd.sock"]; default = ["r:/run/rspamd/rspamd.sock"];
description = '' description = ''
Spamd socket definitions. Spamd socket definitions.
Is server name is prefixed with r: it is rspamd server. Is server name is prefixed with r: it is rspamd server.
@ -197,7 +197,7 @@ milter_default_action = accept
serviceConfig = { serviceConfig = {
ExecStart = "${pkgs.rmilter}/bin/rmilter ${optionalString cfg.debug "-d"} -n -c ${rmilterConfigFile}"; ExecStart = "${pkgs.rmilter}/bin/rmilter ${optionalString cfg.debug "-d"} -n -c ${rmilterConfigFile}";
ExecReload = "/bin/kill -USR1 $MAINPID"; ExecReload = "${pkgs.coreutils}/bin/kill -USR1 $MAINPID";
User = cfg.user; User = cfg.user;
Group = cfg.group; Group = cfg.group;
PermissionsStartOnly = true; PermissionsStartOnly = true;
@ -212,10 +212,10 @@ milter_default_action = accept
description = "Rmilter service socket"; description = "Rmilter service socket";
wantedBy = [ "sockets.target" ]; wantedBy = [ "sockets.target" ];
socketConfig = { socketConfig = {
ListenStream = cfg.bindUnixSockets ++ cfg.bindInetSockets; ListenStream = cfg.bindUnixSockets ++ cfg.bindInetSockets;
SocketUser = cfg.user; SocketUser = cfg.user;
SocketGroup = cfg.group; SocketGroup = cfg.group;
SocketMode = "0660"; SocketMode = "0666";
}; };
}; };

View file

@ -8,7 +8,7 @@ let
mkBindSockets = socks: concatStringsSep "\n" (map (each: " bind_socket = \"${each}\"") socks); mkBindSockets = socks: concatStringsSep "\n" (map (each: " bind_socket = \"${each}\"") socks);
rspamdConf = rspamdConfFile = pkgs.writeText "rspamd.conf"
'' ''
.include "$CONFDIR/common.conf" .include "$CONFDIR/common.conf"
@ -18,8 +18,7 @@ let
} }
logging { logging {
type = "file"; type = "syslog";
filename = "$LOGDIR/rspamd.log";
.include "$CONFDIR/logging.inc" .include "$CONFDIR/logging.inc"
} }
@ -33,7 +32,6 @@ let
.include "$CONFDIR/worker-controller.inc" .include "$CONFDIR/worker-controller.inc"
} }
''; '';
rspamdConfFile = pkgs.writeText "rspamd.conf" rspamdConf;
in in
@ -45,10 +43,7 @@ in
services.rspamd = { services.rspamd = {
enable = mkOption { enable = mkEnableOption "Whether to run the rspamd daemon.";
default = false;
description = "Whether to run the rspamd daemon.";
};
debug = mkOption { debug = mkOption {
default = false; default = false;
@ -58,7 +53,7 @@ in
bindSocket = mkOption { bindSocket = mkOption {
type = types.listOf types.str; type = types.listOf types.str;
default = [ default = [
"/run/rspamd.sock mode=0666 owner=${cfg.user}" "/run/rspamd/rspamd.sock mode=0666 owner=${cfg.user}"
]; ];
description = '' description = ''
List of sockets to listen, in format acceptable by rspamd List of sockets to listen, in format acceptable by rspamd
@ -97,7 +92,6 @@ in
''; '';
}; };
}; };
}; };
@ -128,18 +122,15 @@ in
serviceConfig = { serviceConfig = {
ExecStart = "${pkgs.rspamd}/bin/rspamd ${optionalString cfg.debug "-d"} --user=${cfg.user} --group=${cfg.group} --pid=/run/rspamd.pid -c ${rspamdConfFile} -f"; ExecStart = "${pkgs.rspamd}/bin/rspamd ${optionalString cfg.debug "-d"} --user=${cfg.user} --group=${cfg.group} --pid=/run/rspamd.pid -c ${rspamdConfFile} -f";
RuntimeDirectory = "/var/lib/rspamd";
PermissionsStartOnly = true;
Restart = "always"; Restart = "always";
RuntimeDirectory = "rspamd";
PrivateTmp = true;
}; };
preStart = '' preStart = ''
${pkgs.coreutils}/bin/mkdir -p /var/{lib,log}/rspamd ${pkgs.coreutils}/bin/mkdir -p /var/lib/rspamd
${pkgs.coreutils}/bin/chown ${cfg.user}:${cfg.group} /var/lib/rspamd ${pkgs.coreutils}/bin/chown ${cfg.user}:${cfg.group} /var/lib/rspamd
''; '';
}; };
}; };
} }

View file

@ -522,10 +522,12 @@ in {
after = [ "network.target" ]; after = [ "network.target" ];
wantedBy = [ "multi-user.target" ]; wantedBy = [ "multi-user.target" ];
preStart = '' preStart = ''
mkdir -p /var/lib/matrix-synapse if ! test -e /var/lib/matrix-synapse; then
chmod 700 /var/lib/matrix-synapse mkdir -p /var/lib/matrix-synapse
chown -R matrix-synapse:matrix-synapse /var/lib/matrix-synapse chmod 700 /var/lib/matrix-synapse
${cfg.package}/bin/homeserver --config-path ${configFile} --keys-directory /var/lib/matrix-synapse/ --generate-keys chown -R matrix-synapse:matrix-synapse /var/lib/matrix-synapse
${cfg.package}/bin/homeserver --config-path ${configFile} --keys-directory /var/lib/matrix-synapse/ --generate-keys
fi
''; '';
serviceConfig = { serviceConfig = {
Type = "simple"; Type = "simple";

View file

@ -72,6 +72,7 @@ let
postgresqlConfig = pkgs.writeText "postgres.yaml" cfg.postgresqlConfig; postgresqlConfig = pkgs.writeText "postgres.yaml" cfg.postgresqlConfig;
nginxConfig = pkgs.writeText "nginx.yaml" cfg.nginxConfig; nginxConfig = pkgs.writeText "nginx.yaml" cfg.nginxConfig;
mongoConfig = pkgs.writeText "mongo.yaml" cfg.mongoConfig; mongoConfig = pkgs.writeText "mongo.yaml" cfg.mongoConfig;
jmxConfig = pkgs.writeText "jmx.yaml" cfg.jmxConfig;
etcfiles = etcfiles =
[ { source = ddConf; [ { source = ddConf;
@ -94,6 +95,10 @@ let
(optional (cfg.mongoConfig != null) (optional (cfg.mongoConfig != null)
{ source = mongoConfig; { source = mongoConfig;
target = "dd-agent/conf.d/mongo.yaml"; target = "dd-agent/conf.d/mongo.yaml";
}) ++
(optional (cfg.jmxConfig != null)
{ source = jmxConfig;
target = "dd-agent/conf.d/jmx.yaml";
}); });
in { in {
@ -141,6 +146,13 @@ in {
default = null; default = null;
type = types.uniq (types.nullOr types.string); type = types.uniq (types.nullOr types.string);
}; };
jmxConfig = mkOption {
description = "JMX integration configuration";
default = null;
type = types.uniq (types.nullOr types.string);
};
}; };
config = mkIf cfg.enable { config = mkIf cfg.enable {
@ -167,7 +179,7 @@ in {
Restart = "always"; Restart = "always";
RestartSec = 2; RestartSec = 2;
}; };
restartTriggers = [ pkgs.dd-agent ddConf diskConfig networkConfig postgresqlConfig nginxConfig mongoConfig ]; restartTriggers = [ pkgs.dd-agent ddConf diskConfig networkConfig postgresqlConfig nginxConfig mongoConfig jmxConfig ];
}; };
systemd.services.dogstatsd = { systemd.services.dogstatsd = {
@ -183,7 +195,21 @@ in {
Restart = "always"; Restart = "always";
RestartSec = 2; RestartSec = 2;
}; };
restartTriggers = [ pkgs.dd-agent ddConf diskConfig networkConfig postgresqlConfig nginxConfig mongoConfig ]; restartTriggers = [ pkgs.dd-agent ddConf diskConfig networkConfig postgresqlConfig nginxConfig mongoConfig jmxConfig ];
};
systemd.services.dd-jmxfetch = lib.mkIf (cfg.jmxConfig != null) {
description = "Datadog JMX Fetcher";
path = [ pkgs."dd-agent" pkgs.python pkgs.sysstat pkgs.procps pkgs.jdk ];
wantedBy = [ "multi-user.target" ];
serviceConfig = {
ExecStart = "${pkgs.dd-agent}/bin/dd-jmxfetch";
User = "datadog";
Group = "datadog";
Restart = "always";
RestartSec = 2;
};
restartTriggers = [ pkgs.dd-agent ddConf diskConfig networkConfig postgresqlConfig nginxConfig mongoConfig jmxConfig ];
}; };
environment.etc = etcfiles; environment.etc = etcfiles;

View file

@ -101,9 +101,22 @@ let
# Perform a reverse-path test to refuse spoofers # Perform a reverse-path test to refuse spoofers
# For now, we just drop, as the raw table doesn't have a log-refuse yet # For now, we just drop, as the raw table doesn't have a log-refuse yet
${optionalString (kernelHasRPFilter && cfg.checkReversePath) '' ${optionalString (kernelHasRPFilter && cfg.checkReversePath) ''
if ! ip46tables -A PREROUTING -t raw -m rpfilter --invert -j DROP; then # Clean up rpfilter rules
echo "<2>failed to initialise rpfilter support" >&2 ip46tables -t raw -D PREROUTING -j nixos-fw-rpfilter 2> /dev/null || true
fi ip46tables -t raw -F nixos-fw-rpfilter 2> /dev/null || true
ip46tables -t raw -N nixos-fw-rpfilter 2> /dev/null || true
ip46tables -t raw -A nixos-fw-rpfilter -m rpfilter -j RETURN
# Allows this host to act as a DHCPv4 server
iptables -t raw -A nixos-fw-rpfilter -s 0.0.0.0 -d 255.255.255.255 -p udp --sport 68 --dport 67 -j RETURN
${optionalString cfg.logReversePathDrops ''
ip46tables -t raw -A nixos-fw-rpfilter -j LOG --log-level info --log-prefix "rpfilter drop: "
''}
ip46tables -t raw -A nixos-fw-rpfilter -j DROP
ip46tables -t raw -A PREROUTING -j nixos-fw-rpfilter
''} ''}
# Accept all traffic on the trusted interfaces. # Accept all traffic on the trusted interfaces.
@ -188,9 +201,7 @@ let
ip46tables -D INPUT -j nixos-fw 2>/dev/null || true ip46tables -D INPUT -j nixos-fw 2>/dev/null || true
${optionalString (kernelHasRPFilter && cfg.checkReversePath) '' ${optionalString (kernelHasRPFilter && cfg.checkReversePath) ''
if ! ip46tables -D PREROUTING -t raw -m rpfilter --invert -j DROP; then ip46tables -t raw -D PREROUTING -j nixos-fw-rpfilter 2>/dev/null || true
echo "<2>failed to stop rpfilter support" >&2
fi
''} ''}
${cfg.extraStopCommands} ${cfg.extraStopCommands}
@ -376,6 +387,16 @@ in
''; '';
}; };
networking.firewall.logReversePathDrops = mkOption {
default = false;
type = types.bool;
description =
''
Logs dropped packets failing the reverse path filter test if
the option networking.firewall.checkReversePath is enabled.
'';
};
networking.firewall.connectionTrackingModules = mkOption { networking.firewall.connectionTrackingModules = mkOption {
default = [ "ftp" ]; default = [ "ftp" ];
example = [ "ftp" "irc" "sane" "sip" "tftp" "amanda" "h323" "netbios_sn" "pptp" "snmp" ]; example = [ "ftp" "irc" "sane" "sip" "tftp" "amanda" "h323" "netbios_sn" "pptp" "snmp" ];

View file

@ -114,8 +114,8 @@ in
environment.systemPackages = [ cfg.package ]; environment.systemPackages = [ cfg.package ];
systemd.services.syncthing = mkIf cfg.systemService systemd.services = mkIf cfg.systemService {
header // { syncthing = header // {
wantedBy = [ "multi-user.target" ]; wantedBy = [ "multi-user.target" ];
serviceConfig = service // { serviceConfig = service // {
User = cfg.user; User = cfg.user;
@ -124,6 +124,7 @@ in
ExecStart = "${cfg.package}/bin/syncthing -no-browser -home=${cfg.dataDir}"; ExecStart = "${cfg.package}/bin/syncthing -no-browser -home=${cfg.dataDir}";
}; };
}; };
};
systemd.user.services.syncthing = systemd.user.services.syncthing =
header // { header // {

View file

@ -157,6 +157,7 @@ in
serviceConfig = { serviceConfig = {
Type = "simple"; Type = "simple";
PIDFile = "/run/tinc.${network}.pid"; PIDFile = "/run/tinc.${network}.pid";
Restart = "on-failure";
}; };
preStart = '' preStart = ''
mkdir -p /etc/tinc/${network}/hosts mkdir -p /etc/tinc/${network}/hosts

View file

@ -17,6 +17,7 @@ let
else cfg.database.port; else cfg.database.port;
poolName = "tt-rss"; poolName = "tt-rss";
phpfpmSocketName = "/var/run/phpfpm/${poolName}.sock";
virtualHostName = "tt-rss"; virtualHostName = "tt-rss";
tt-rss-config = pkgs.writeText "config.php" '' tt-rss-config = pkgs.writeText "config.php" ''
@ -448,23 +449,21 @@ let
root = "/var/lib/tt-rss"; root = "/var/lib/tt-rss";
in mkIf cfg.enable { in mkIf cfg.enable {
services.phpfpm.pools = if cfg.pool == "${poolName}" then { services.phpfpm.poolConfigs = if cfg.pool == "${poolName}" then {
"${poolName}" = { "${poolName}" = ''
listen = "/var/run/phpfpm/${poolName}.sock"; listen = "${phpfpmSocketName}";
extraConfig = '' listen.owner = nginx
listen.owner = nginx listen.group = nginx
listen.group = nginx listen.mode = 0600
listen.mode = 0600 user = nginx
user = nginx pm = dynamic
pm = dynamic pm.max_children = 75
pm.max_children = 75 pm.start_servers = 10
pm.start_servers = 10 pm.min_spare_servers = 5
pm.min_spare_servers = 5 pm.max_spare_servers = 20
pm.max_spare_servers = 20 pm.max_requests = 500
pm.max_requests = 500 catch_workers_output = 1
catch_workers_output = 1 '';
'';
};
} else {}; } else {};
# TODO: Re-enable after https://github.com/NixOS/nixpkgs/pull/15862 is merged # TODO: Re-enable after https://github.com/NixOS/nixpkgs/pull/15862 is merged
@ -486,7 +485,7 @@ let
# locations."~ \.php$" = { # locations."~ \.php$" = {
# extraConfig = '' # extraConfig = ''
# fastcgi_split_path_info ^(.+\.php)(/.+)$; # fastcgi_split_path_info ^(.+\.php)(/.+)$;
# fastcgi_pass unix:${config.services.phpfpm.pools."${cfg.pool}".listen}; # fastcgi_pass unix:${phpfpmSocketName};
# fastcgi_index index.php; # fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME ${root}/$fastcgi_script_name; # fastcgi_param SCRIPT_FILENAME ${root}/$fastcgi_script_name;

View file

@ -63,6 +63,11 @@ in
} }
''; '';
systemd.services.lighttpd.preStart = ''
mkdir -p /var/cache/cgit
chown lighttpd:lighttpd /var/cache/cgit
'';
}; };
} }

View file

@ -224,12 +224,6 @@ in
description = "Lighttpd Web Server"; description = "Lighttpd Web Server";
after = [ "network.target" ]; after = [ "network.target" ];
wantedBy = [ "multi-user.target" ]; wantedBy = [ "multi-user.target" ];
preStart = ''
${if cfg.cgit.enable then ''
mkdir -p /var/cache/cgit
chown lighttpd:lighttpd /var/cache/cgit
'' else ""}
'';
serviceConfig.ExecStart = "${pkgs.lighttpd}/sbin/lighttpd -D -f ${configFile}"; serviceConfig.ExecStart = "${pkgs.lighttpd}/sbin/lighttpd -D -f ${configFile}";
# SIGINT => graceful shutdown # SIGINT => graceful shutdown
serviceConfig.KillSignal = "SIGINT"; serviceConfig.KillSignal = "SIGINT";

View file

@ -9,12 +9,6 @@ let
pidFile = "${stateDir}/phpfpm.pid"; pidFile = "${stateDir}/phpfpm.pid";
mkPool = n: p: ''
[${n}]
listen = ${p.listen}
${p.extraConfig}
'';
cfgFile = pkgs.writeText "phpfpm.conf" '' cfgFile = pkgs.writeText "phpfpm.conf" ''
[global] [global]
pid = ${pidFile} pid = ${pidFile}
@ -22,7 +16,7 @@ let
daemonize = yes daemonize = yes
${cfg.extraConfig} ${cfg.extraConfig}
${concatStringsSep "\n" (mapAttrsToList mkPool cfg.pools)} ${concatStringsSep "\n" (mapAttrsToList (n: v: "[${n}]\n${v}") cfg.poolConfigs)}
''; '';
phpIni = pkgs.writeText "php.ini" '' phpIni = pkgs.writeText "php.ini" ''
@ -67,19 +61,33 @@ in {
"Options appended to the PHP configuration file <filename>php.ini</filename>."; "Options appended to the PHP configuration file <filename>php.ini</filename>.";
}; };
pools = mkOption { poolConfigs = mkOption {
type = types.attrsOf (types.submodule (import ./pool-options.nix { type = types.attrsOf types.lines;
inherit lib;
}));
default = {}; default = {};
example = literalExample ''
{ mypool = '''
listen = /run/phpfpm/mypool
user = nobody
pm = dynamic
pm.max_children = 75
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20
pm.max_requests = 500
''';
}
'';
description = '' description = ''
If no pools are defined, the phpfpm service is disabled. A mapping between PHP FPM pool names and their configurations.
See the documentation on <literal>php-fpm.conf</literal> for
details on configuration directives. If no pools are defined,
the phpfpm service is disabled.
''; '';
}; };
}; };
}; };
config = mkIf (cfg.pools != {}) { config = mkIf (cfg.poolConfigs != {}) {
systemd.services.phpfpm = { systemd.services.phpfpm = {
wantedBy = [ "multi-user.target" ]; wantedBy = [ "multi-user.target" ];

View file

@ -1,35 +0,0 @@
{ lib }:
with lib; {
options = {
listen = mkOption {
type = types.str;
example = "/path/to/unix/socket";
description = ''
The address on which to accept FastCGI requests.
'';
};
extraConfig = mkOption {
type = types.lines;
example = ''
user = nobody
pm = dynamic
pm.max_children = 75
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 20
pm.max_requests = 500
'';
description = ''
Extra lines that go into the pool configuration.
See the documentation on <literal>php-fpm.conf</literal> for
details on configuration directives.
'';
};
};
}

View file

@ -84,7 +84,7 @@ in {
environment.gnome3.packageSet = mkOption { environment.gnome3.packageSet = mkOption {
default = null; default = null;
example = literalExample "pkgs.gnome3_18"; example = literalExample "pkgs.gnome3_20";
description = "Which GNOME 3 package set to use."; description = "Which GNOME 3 package set to use.";
apply = p: if p == null then pkgs.gnome3 else p; apply = p: if p == null then pkgs.gnome3 else p;
}; };

View file

@ -148,7 +148,7 @@ in
kde5.kde-gtk-config kde5.kde-gtk-config
pkgs.phonon-backend-gstreamer pkgs.phonon-backend-gstreamer
pkgs.kde5.phonon-backend-gstreamer pkgs.qt5.phonon-backend-gstreamer
] ]
# Plasma 5.5 and later has a Breeze GTK theme. # Plasma 5.5 and later has a Breeze GTK theme.
@ -214,7 +214,7 @@ in
services.xserver.displayManager.sddm = { services.xserver.displayManager.sddm = {
theme = "breeze"; theme = "breeze";
themes = [ themes = [
kde5.extra-cmake-modules # for the setup-hook kde5.ecm # for the setup-hook
kde5.plasma-workspace kde5.plasma-workspace
kde5.breeze-icons kde5.breeze-icons
(kde5.oxygen-icons or kde5.oxygen-icons5) (kde5.oxygen-icons or kde5.oxygen-icons5)

View file

@ -18,6 +18,7 @@ in
./i3.nix ./i3.nix
./jwm.nix ./jwm.nix
./metacity.nix ./metacity.nix
./mwm.nix
./openbox.nix ./openbox.nix
./pekwm.nix ./pekwm.nix
./notion.nix ./notion.nix

View file

@ -0,0 +1,25 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.services.xserver.windowManager.mwm;
in
{
###### interface
options = {
services.xserver.windowManager.mwm.enable = mkEnableOption "mwm";
};
###### implementation
config = mkIf cfg.enable {
services.xserver.windowManager.session = singleton {
name = "mwm";
start = ''
${pkgs.motif}/bin/mwm &
waitPID=$!
'';
};
environment.systemPackages = [ pkgs.motif ];
};
}

View file

@ -14,9 +14,6 @@ let
# Map video driver names to driver packages. FIXME: move into card-specific modules. # Map video driver names to driver packages. FIXME: move into card-specific modules.
knownVideoDrivers = { knownVideoDrivers = {
virtualbox = { modules = [ kernelPackages.virtualboxGuestAdditions ]; driverName = "vboxvideo"; }; virtualbox = { modules = [ kernelPackages.virtualboxGuestAdditions ]; driverName = "vboxvideo"; };
ati = { modules = with pkgs.xorg; [ xf86videoati glamoregl ]; };
intel = { modules = with pkgs.xorg; [ xf86videointel glamoregl ]; };
modesetting = { modules = []; };
}; };
fontsForXServer = fontsForXServer =
@ -512,7 +509,7 @@ in
XKB_BINDIR = "${xorg.xkbcomp}/bin"; # Needed for the Xkb extension. XKB_BINDIR = "${xorg.xkbcomp}/bin"; # Needed for the Xkb extension.
XORG_DRI_DRIVER_PATH = "/run/opengl-driver/lib/dri"; # !!! Depends on the driver selected at runtime. XORG_DRI_DRIVER_PATH = "/run/opengl-driver/lib/dri"; # !!! Depends on the driver selected at runtime.
LD_LIBRARY_PATH = concatStringsSep ":" ( LD_LIBRARY_PATH = concatStringsSep ":" (
[ "${xorg.libX11.out}/lib" "${xorg.libXext.out}/lib" ] [ "${xorg.libX11.out}/lib" "${xorg.libXext.out}/lib" "/run/opengl-driver/lib" ]
++ concatLists (catAttrs "libPath" cfg.drivers)); ++ concatLists (catAttrs "libPath" cfg.drivers));
} // cfg.displayManager.job.environment; } // cfg.displayManager.job.environment;

View file

@ -22,6 +22,33 @@ sub atomicSymlink {
# current configuration. # current configuration.
atomicSymlink $etc, $static or die; atomicSymlink $etc, $static or die;
# Returns 1 if the argument points to the files in /etc/static. That
# means either argument is a symlink to a file in /etc/static or a
# directory with all children being static.
sub isStatic {
my $path = shift;
if (-l $path) {
my $target = readlink $path;
return substr($target, 0, length "/etc/static/") eq "/etc/static/";
}
if (-d $path) {
opendir DIR, "$path" or return 0;
my @names = readdir DIR or die;
closedir DIR;
foreach my $name (@names) {
next if $name eq "." || $name eq "..";
unless (isStatic("$path/$name")) {
return 0;
}
}
return 1;
}
return 0;
}
# Remove dangling symlinks that point to /etc/static. These are # Remove dangling symlinks that point to /etc/static. These are
# configuration files that existed in a previous configuration but not # configuration files that existed in a previous configuration but not
@ -63,6 +90,16 @@ sub link {
my $target = "/etc/$fn"; my $target = "/etc/$fn";
File::Path::make_path(dirname $target); File::Path::make_path(dirname $target);
$created{$fn} = 1; $created{$fn} = 1;
# Rename doesn't work if target is directory.
if (-l $_ && -d $target) {
if (isStatic $target) {
rmtree $target or warn;
} else {
warn "$target directory contains user files. Symlinking may fail.";
}
}
if (-e "$_.mode") { if (-e "$_.mode") {
my $mode = read_file("$_.mode"); chomp $mode; my $mode = read_file("$_.mode"); chomp $mode;
if ($mode eq "direct-symlink") { if ($mode eq "direct-symlink") {

View file

@ -6,37 +6,212 @@ let
# The container's init script, a small wrapper around the regular # The container's init script, a small wrapper around the regular
# NixOS stage-2 init script. # NixOS stage-2 init script.
containerInit = pkgs.writeScript "container-init" containerInit = (cfg:
let
renderExtraVeth = (name: cfg:
''
echo "Bringing ${name} up"
ip link set dev ${name} up
${optionalString (cfg . "localAddress" or null != null) ''
echo "Setting ip for ${name}"
ip addr add ${cfg . "localAddress"} dev ${name}
''}
${optionalString (cfg . "localAddress6" or null != null) ''
echo "Setting ip6 for ${name}"
ip -6 addr add ${cfg . "localAddress6"} dev ${name}
''}
${optionalString (cfg . "hostAddress" or null != null) ''
echo "Setting route to host for ${name}"
ip route add ${cfg . "hostAddress"} dev ${name}
''}
${optionalString (cfg . "hostAddress6" or null != null) ''
echo "Setting route6 to host for ${name}"
ip -6 route add ${cfg . "hostAddress6"} dev ${name}
''}
''
);
in
pkgs.writeScript "container-init"
''
#! ${pkgs.stdenv.shell} -e
# Initialise the container side of the veth pair.
if [ "$PRIVATE_NETWORK" = 1 ]; then
ip link set host0 name eth0
ip link set dev eth0 up
if [ -n "$LOCAL_ADDRESS" ]; then
ip addr add $LOCAL_ADDRESS dev eth0
fi
if [ -n "$LOCAL_ADDRESS6" ]; then
ip -6 addr add $LOCAL_ADDRESS6 dev eth0
fi
if [ -n "$HOST_ADDRESS" ]; then
ip route add $HOST_ADDRESS dev eth0
ip route add default via $HOST_ADDRESS
fi
if [ -n "$HOST_ADDRESS6" ]; then
ip -6 route add $HOST_ADDRESS6 dev eth0
ip -6 route add default via $HOST_ADDRESS6
fi
${concatStringsSep "\n" (mapAttrsToList renderExtraVeth cfg . "extraVeths" or {})}
ip a
ip r
fi
# Start the regular stage 1 script.
exec "$1"
''
);
nspawnExtraVethArgs = (name: cfg: "--network-veth-extra=${name}");
startScript = (cfg:
'' ''
#! ${pkgs.stdenv.shell} -e mkdir -p -m 0755 "$root/etc" "$root/var/lib"
mkdir -p -m 0700 "$root/var/lib/private" "$root/root" /run/containers
if ! [ -e "$root/etc/os-release" ]; then
touch "$root/etc/os-release"
fi
if ! [ -e "$root/etc/machine-id" ]; then
touch "$root/etc/machine-id"
fi
mkdir -p -m 0755 \
"/nix/var/nix/profiles/per-container/$INSTANCE" \
"/nix/var/nix/gcroots/per-container/$INSTANCE"
cp --remove-destination /etc/resolv.conf "$root/etc/resolv.conf"
# Initialise the container side of the veth pair.
if [ "$PRIVATE_NETWORK" = 1 ]; then if [ "$PRIVATE_NETWORK" = 1 ]; then
extraFlags+=" --network-veth"
ip link set host0 name eth0 if [ -n "$HOST_BRIDGE" ]; then
ip link set dev eth0 up extraFlags+=" --network-bridge=$HOST_BRIDGE"
if [ -n "$LOCAL_ADDRESS" ]; then
ip addr add $LOCAL_ADDRESS dev eth0
fi
if [ -n "$LOCAL_ADDRESS6" ]; then
ip -6 addr add $LOCAL_ADDRESS6 dev eth0
fi
if [ -n "$HOST_ADDRESS" ]; then
ip route add $HOST_ADDRESS dev eth0
ip route add default via $HOST_ADDRESS
fi
if [ -n "$HOST_ADDRESS6" ]; then
ip -6 route add $HOST_ADDRESS6 dev eth0
ip -6 route add default via $HOST_ADDRESS6
fi fi
fi fi
# Start the regular stage 1 script, passing the bind-mounted ${if cfg . "extraVeths" or null != null then
# notification socket from the host to allow the container ''extraFlags+=" ${concatStringsSep " " (mapAttrsToList nspawnExtraVethArgs cfg . "extraVeths" or {})}"''
# systemd to signal readiness to the host systemd. else
NOTIFY_SOCKET=/var/lib/private/host-notify exec "$1" ''# No extra veth pairs to create''
''; }
for iface in $INTERFACES; do
extraFlags+=" --network-interface=$iface"
done
for iface in $MACVLANS; do
extraFlags+=" --network-macvlan=$iface"
done
# If the host is 64-bit and the container is 32-bit, add a
# --personality flag.
${optionalString (config.nixpkgs.system == "x86_64-linux") ''
if [ "$(< ''${SYSTEM_PATH:-/nix/var/nix/profiles/per-container/$INSTANCE/system}/system)" = i686-linux ]; then
extraFlags+=" --personality=x86"
fi
''}
# Run systemd-nspawn without startup notification (we'll
# wait for the container systemd to signal readiness).
EXIT_ON_REBOOT=1 \
exec ${config.systemd.package}/bin/systemd-nspawn \
--keep-unit \
-M "$INSTANCE" -D "$root" $extraFlags \
$EXTRA_NSPAWN_FLAGS \
--notify-ready=yes \
--bind-ro=/nix/store \
--bind-ro=/nix/var/nix/db \
--bind-ro=/nix/var/nix/daemon-socket \
--bind="/nix/var/nix/profiles/per-container/$INSTANCE:/nix/var/nix/profiles" \
--bind="/nix/var/nix/gcroots/per-container/$INSTANCE:/nix/var/nix/gcroots" \
--setenv PRIVATE_NETWORK="$PRIVATE_NETWORK" \
--setenv HOST_BRIDGE="$HOST_BRIDGE" \
--setenv HOST_ADDRESS="$HOST_ADDRESS" \
--setenv LOCAL_ADDRESS="$LOCAL_ADDRESS" \
--setenv HOST_ADDRESS6="$HOST_ADDRESS6" \
--setenv LOCAL_ADDRESS6="$LOCAL_ADDRESS6" \
--setenv PATH="$PATH" \
${containerInit cfg} "''${SYSTEM_PATH:-/nix/var/nix/profiles/system}/init"
''
);
preStartScript = (cfg:
''
# Clean up existing machined registration and interfaces.
machinectl terminate "$INSTANCE" 2> /dev/null || true
if [ "$PRIVATE_NETWORK" = 1 ]; then
ip link del dev "ve-$INSTANCE" 2> /dev/null || true
ip link del dev "vb-$INSTANCE" 2> /dev/null || true
fi
${concatStringsSep "\n" (
mapAttrsToList (name: cfg:
''ip link del dev ${name} 2> /dev/null || true ''
) cfg . "extraVeths" or {}
)}
''
);
postStartScript = (cfg:
let
ipcall = (cfg: ipcmd: variable: attribute:
if cfg . attribute or null == null then
''
if [ -n "${variable}" ]; then
${ipcmd} add ${variable} dev $ifaceHost
fi
''
else
''${ipcmd} add ${cfg . attribute} dev $ifaceHost''
);
renderExtraVeth = (name: cfg:
if cfg . "hostBridge" or null != null then
''
# Add ${name} to bridge ${cfg.hostBridge}
ip link set dev ${name} master ${cfg.hostBridge} up
''
else
''
# Set IPs and routes for ${name}
${optionalString (cfg . "hostAddress" or null != null) ''
ip addr add ${cfg . "hostAddress"} dev ${name}
''}
${optionalString (cfg . "hostAddress6" or null != null) ''
ip -6 addr add ${cfg . "hostAddress6"} dev ${name}
''}
${optionalString (cfg . "localAddress" or null != null) ''
ip route add ${cfg . "localAddress"} dev ${name}
''}
${optionalString (cfg . "localAddress6" or null != null) ''
ip -6 route add ${cfg . "localAddress6"} dev ${name}
''}
''
);
in
''
if [ "$PRIVATE_NETWORK" = 1 ]; then
if [ -z "$HOST_BRIDGE" ]; then
ifaceHost=ve-$INSTANCE
ip link set dev $ifaceHost up
${ipcall cfg "ip addr" "$HOST_ADDRESS" "hostAddress"}
${ipcall cfg "ip -6 addr" "$HOST_ADDRESS6" "hostAddress6"}
${ipcall cfg "ip route" "$LOCAL_ADDRESS" "localAddress"}
${ipcall cfg "ip -6 route" "$LOCAL_ADDRESS6" "localAddress6"}
fi
${concatStringsSep "\n" (mapAttrsToList renderExtraVeth cfg . "extraVeths" or {})}
fi
# Get the leader PID so that we can signal it in
# preStop. We can't use machinectl there because D-Bus
# might be shutting down. FIXME: in systemd 219 we can
# just signal systemd-nspawn to do a clean shutdown.
machinectl show "$INSTANCE" | sed 's/Leader=\(.*\)/\1/;t;d' > "/run/containers/$INSTANCE.pid"
''
);
system = config.nixpkgs.system; system = config.nixpkgs.system;
@ -75,6 +250,63 @@ let
mkBindFlags = bs: concatMapStrings mkBindFlag (lib.attrValues bs); mkBindFlags = bs: concatMapStrings mkBindFlag (lib.attrValues bs);
networkOptions = {
hostBridge = mkOption {
type = types.nullOr types.string;
default = null;
example = "br0";
description = ''
Put the host-side of the veth-pair into the named bridge.
Only one of hostAddress* or hostBridge can be given.
'';
};
hostAddress = mkOption {
type = types.nullOr types.str;
default = null;
example = "10.231.136.1";
description = ''
The IPv4 address assigned to the host interface.
(Not used when hostBridge is set.)
'';
};
hostAddress6 = mkOption {
type = types.nullOr types.string;
default = null;
example = "fc00::1";
description = ''
The IPv6 address assigned to the host interface.
(Not used when hostBridge is set.)
'';
};
localAddress = mkOption {
type = types.nullOr types.str;
default = null;
example = "10.231.136.2";
description = ''
The IPv4 address assigned to the interface in the container.
If a hostBridge is used, this should be given with netmask to access
the whole network. Otherwise the default netmask is /32 and routing is
set up from localAddress to hostAddress and back.
'';
};
localAddress6 = mkOption {
type = types.nullOr types.string;
default = null;
example = "fc00::2";
description = ''
The IPv6 address assigned to the interface in the container.
If a hostBridge is used, this should be given with netmask to access
the whole network. Otherwise the default netmask is /128 and routing is
set up from localAddress6 to hostAddress6 and back.
'';
};
};
in in
{ {
@ -135,56 +367,6 @@ in
''; '';
}; };
hostBridge = mkOption {
type = types.nullOr types.string;
default = null;
example = "br0";
description = ''
Put the host-side of the veth-pair into the named bridge.
Only one of hostAddress* or hostBridge can be given.
'';
};
hostAddress = mkOption {
type = types.nullOr types.str;
default = null;
example = "10.231.136.1";
description = ''
The IPv4 address assigned to the host interface.
(Not used when hostBridge is set.)
'';
};
hostAddress6 = mkOption {
type = types.nullOr types.string;
default = null;
example = "fc00::1";
description = ''
The IPv6 address assigned to the host interface.
(Not used when hostBridge is set.)
'';
};
localAddress = mkOption {
type = types.nullOr types.str;
default = null;
example = "10.231.136.2";
description = ''
The IPv4 address assigned to <literal>eth0</literal>
in the container.
'';
};
localAddress6 = mkOption {
type = types.nullOr types.string;
default = null;
example = "fc00::2";
description = ''
The IPv6 address assigned to <literal>eth0</literal>
in the container.
'';
};
interfaces = mkOption { interfaces = mkOption {
type = types.listOf types.string; type = types.listOf types.string;
default = []; default = [];
@ -194,6 +376,15 @@ in
''; '';
}; };
extraVeths = mkOption {
type = types.attrsOf types.optionSet;
default = {};
options = networkOptions;
description = ''
Extra veth-pairs to be created for the container
'';
};
autoStart = mkOption { autoStart = mkOption {
type = types.bool; type = types.bool;
default = false; default = false;
@ -216,7 +407,7 @@ in
''; '';
}; };
}; } // networkOptions;
config = mkMerge config = mkMerge
[ (mkIf options.config.isDefined { [ (mkIf options.config.isDefined {
@ -274,110 +465,11 @@ in
environment.INSTANCE = "%i"; environment.INSTANCE = "%i";
environment.root = "/var/lib/containers/%i"; environment.root = "/var/lib/containers/%i";
preStart = preStart = preStartScript {};
''
# Clean up existing machined registration and interfaces.
machinectl terminate "$INSTANCE" 2> /dev/null || true
if [ "$PRIVATE_NETWORK" = 1 ]; then script = startScript {};
ip link del dev "ve-$INSTANCE" 2> /dev/null || true
ip link del dev "vb-$INSTANCE" 2> /dev/null || true
fi
'';
script = postStart = postStartScript {};
''
mkdir -p -m 0755 "$root/etc" "$root/var/lib"
mkdir -p -m 0700 "$root/var/lib/private" "$root/root" /run/containers
if ! [ -e "$root/etc/os-release" ]; then
touch "$root/etc/os-release"
fi
if ! [ -e "$root/etc/machine-id" ]; then
touch "$root/etc/machine-id"
fi
mkdir -p -m 0755 \
"/nix/var/nix/profiles/per-container/$INSTANCE" \
"/nix/var/nix/gcroots/per-container/$INSTANCE"
cp --remove-destination /etc/resolv.conf "$root/etc/resolv.conf"
if [ "$PRIVATE_NETWORK" = 1 ]; then
extraFlags+=" --network-veth"
if [ -n "$HOST_BRIDGE" ]; then
extraFlags+=" --network-bridge=$HOST_BRIDGE"
fi
fi
for iface in $INTERFACES; do
extraFlags+=" --network-interface=$iface"
done
for iface in $MACVLANS; do
extraFlags+=" --network-macvlan=$iface"
done
# If the host is 64-bit and the container is 32-bit, add a
# --personality flag.
${optionalString (config.nixpkgs.system == "x86_64-linux") ''
if [ "$(< ''${SYSTEM_PATH:-/nix/var/nix/profiles/per-container/$INSTANCE/system}/system)" = i686-linux ]; then
extraFlags+=" --personality=x86"
fi
''}
rm -f $root/var/lib/private/host-notify
# Run systemd-nspawn without startup notification (we'll
# wait for the container systemd to signal readiness).
EXIT_ON_REBOOT=1 NOTIFY_SOCKET= \
exec ${config.systemd.package}/bin/systemd-nspawn \
--keep-unit \
-M "$INSTANCE" -D "$root" $extraFlags \
$EXTRA_NSPAWN_FLAGS \
--bind-ro=/nix/store \
--bind-ro=/nix/var/nix/db \
--bind-ro=/nix/var/nix/daemon-socket \
--bind=/run/systemd/notify:/var/lib/private/host-notify \
--bind="/nix/var/nix/profiles/per-container/$INSTANCE:/nix/var/nix/profiles" \
--bind="/nix/var/nix/gcroots/per-container/$INSTANCE:/nix/var/nix/gcroots" \
--setenv PRIVATE_NETWORK="$PRIVATE_NETWORK" \
--setenv HOST_BRIDGE="$HOST_BRIDGE" \
--setenv HOST_ADDRESS="$HOST_ADDRESS" \
--setenv LOCAL_ADDRESS="$LOCAL_ADDRESS" \
--setenv HOST_ADDRESS6="$HOST_ADDRESS6" \
--setenv LOCAL_ADDRESS6="$LOCAL_ADDRESS6" \
--setenv PATH="$PATH" \
${containerInit} "''${SYSTEM_PATH:-/nix/var/nix/profiles/system}/init"
'';
postStart =
''
if [ "$PRIVATE_NETWORK" = 1 ]; then
if [ -z "$HOST_BRIDGE" ]; then
ifaceHost=ve-$INSTANCE
ip link set dev $ifaceHost up
if [ -n "$HOST_ADDRESS" ]; then
ip addr add $HOST_ADDRESS dev $ifaceHost
fi
if [ -n "$HOST_ADDRESS6" ]; then
ip -6 addr add $HOST_ADDRESS6 dev $ifaceHost
fi
if [ -n "$LOCAL_ADDRESS" ]; then
ip route add $LOCAL_ADDRESS dev $ifaceHost
fi
if [ -n "$LOCAL_ADDRESS6" ]; then
ip -6 route add $LOCAL_ADDRESS6 dev $ifaceHost
fi
fi
fi
# Get the leader PID so that we can signal it in
# preStop. We can't use machinectl there because D-Bus
# might be shutting down. FIXME: in systemd 219 we can
# just signal systemd-nspawn to do a clean shutdown.
machinectl show "$INSTANCE" | sed 's/Leader=\(.*\)/\1/;t;d' > "/run/containers/$INSTANCE.pid"
'';
preStop = preStop =
'' ''
@ -404,8 +496,6 @@ in
Type = "notify"; Type = "notify";
NotifyAccess = "all";
# Note that on reboot, systemd-nspawn returns 133, so this # Note that on reboot, systemd-nspawn returns 133, so this
# unit will be restarted. On poweroff, it returns 0, so the # unit will be restarted. On poweroff, it returns 0, so the
# unit won't be restarted. # unit won't be restarted.
@ -421,6 +511,8 @@ in
# after the timeout). So send an ignored signal. # after the timeout). So send an ignored signal.
KillMode = "mixed"; KillMode = "mixed";
KillSignal = "WINCH"; KillSignal = "WINCH";
DevicePolicy = "closed";
}; };
}; };
in { in {
@ -429,15 +521,20 @@ in
[{ name = "container@"; value = unit; }] [{ name = "container@"; value = unit; }]
# declarative containers # declarative containers
++ (mapAttrsToList (name: cfg: nameValuePair "container@${name}" ( ++ (mapAttrsToList (name: cfg: nameValuePair "container@${name}" (
unit // {
preStart = preStartScript cfg;
script = startScript cfg;
postStart = postStartScript cfg;
} // (
if cfg.autoStart then if cfg.autoStart then
unit // { {
wantedBy = [ "multi-user.target" ]; wantedBy = [ "multi-user.target" ];
wants = [ "network.target" ]; wants = [ "network.target" ];
after = [ "network.target" ]; after = [ "network.target" ];
restartTriggers = [ cfg.path ]; restartTriggers = [ cfg.path ];
reloadIfChanged = true; reloadIfChanged = true;
} }
else null else {})
)) config.containers) )) config.containers)
)); ));
@ -466,11 +563,11 @@ in
LOCAL_ADDRESS6=${cfg.localAddress6} LOCAL_ADDRESS6=${cfg.localAddress6}
''} ''}
''} ''}
INTERFACES="${toString cfg.interfaces}" INTERFACES="${toString cfg.interfaces}"
${optionalString cfg.autoStart '' ${optionalString cfg.autoStart ''
AUTO_START=1 AUTO_START=1
''} ''}
EXTRA_NSPAWN_FLAGS="${mkBindFlags cfg.bindMounts}" EXTRA_NSPAWN_FLAGS="${mkBindFlags cfg.bindMounts}"
''; '';
}) config.containers; }) config.containers;

View file

@ -95,6 +95,7 @@ in rec {
channel = import lib/make-channel.nix { inherit pkgs nixpkgs version versionSuffix; }; channel = import lib/make-channel.nix { inherit pkgs nixpkgs version versionSuffix; };
manual = buildFromConfig ({ pkgs, ... }: { }) (config: config.system.build.manual.manual); manual = buildFromConfig ({ pkgs, ... }: { }) (config: config.system.build.manual.manual);
manualEpub = (buildFromConfig ({ pkgs, ... }: { }) (config: config.system.build.manual.manualEpub));
manualPDF = (buildFromConfig ({ pkgs, ... }: { }) (config: config.system.build.manual.manualPDF)).x86_64-linux; manualPDF = (buildFromConfig ({ pkgs, ... }: { }) (config: config.system.build.manual.manualPDF)).x86_64-linux;
manpages = buildFromConfig ({ pkgs, ... }: { }) (config: config.system.build.manual.manpages); manpages = buildFromConfig ({ pkgs, ... }: { }) (config: config.system.build.manual.manpages);
options = (buildFromConfig ({ pkgs, ... }: { }) (config: config.system.build.manual.optionsJSON)).x86_64-linux; options = (buildFromConfig ({ pkgs, ... }: { }) (config: config.system.build.manual.optionsJSON)).x86_64-linux;
@ -217,6 +218,7 @@ in rec {
tests.containers-ipv6 = callTest tests/containers-ipv6.nix {}; tests.containers-ipv6 = callTest tests/containers-ipv6.nix {};
tests.containers-bridge = callTest tests/containers-bridge.nix {}; tests.containers-bridge = callTest tests/containers-bridge.nix {};
tests.containers-imperative = callTest tests/containers-imperative.nix {}; tests.containers-imperative = callTest tests/containers-imperative.nix {};
tests.containers-extra_veth = callTest tests/containers-extra_veth.nix {};
tests.docker = hydraJob (import tests/docker.nix { system = "x86_64-linux"; }); tests.docker = hydraJob (import tests/docker.nix { system = "x86_64-linux"; });
tests.dockerRegistry = hydraJob (import tests/docker-registry.nix { system = "x86_64-linux"; }); tests.dockerRegistry = hydraJob (import tests/docker-registry.nix { system = "x86_64-linux"; });
tests.dnscrypt-proxy = callTest tests/dnscrypt-proxy.nix { system = "x86_64-linux"; }; tests.dnscrypt-proxy = callTest tests/dnscrypt-proxy.nix { system = "x86_64-linux"; };

View file

@ -10,7 +10,7 @@ in
import ./make-test.nix ({ pkgs, ...} : { import ./make-test.nix ({ pkgs, ...} : {
name = "containers-bridge"; name = "containers-bridge";
meta = with pkgs.stdenv.lib.maintainers; { meta = with pkgs.stdenv.lib.maintainers; {
maintainers = [ aristid aszlig eelco chaoflow ]; maintainers = [ aristid aszlig eelco chaoflow kampfschlaefer ];
}; };
machine = machine =

View file

@ -0,0 +1,103 @@
# Test for NixOS' container support.
import ./make-test.nix ({ pkgs, ...} : {
name = "containers-bridge";
meta = with pkgs.stdenv.lib.maintainers; {
maintainers = [ kampfschlaefer ];
};
machine =
{ config, pkgs, ... }:
{ imports = [ ../modules/installer/cd-dvd/channel.nix ];
virtualisation.writableStore = true;
virtualisation.memorySize = 768;
virtualisation.vlans = [];
networking.bridges = {
br0 = {
interfaces = [];
};
br1 = { interfaces = []; };
};
networking.interfaces = {
br0 = {
ip4 = [{ address = "192.168.0.1"; prefixLength = 24; }];
ip6 = [{ address = "fc00::1"; prefixLength = 7; }];
};
br1 = {
ip4 = [{ address = "192.168.1.1"; prefixLength = 24; }];
};
};
containers.webserver =
{
autoStart = true;
privateNetwork = true;
hostBridge = "br0";
localAddress = "192.168.0.100/24";
localAddress6 = "fc00::2/7";
extraVeths = {
veth1 = { hostBridge = "br1"; localAddress = "192.168.1.100/24"; };
veth2 = { hostAddress = "192.168.2.1"; localAddress = "192.168.2.100"; };
};
config =
{
networking.firewall.allowedTCPPorts = [ 80 ];
networking.firewall.allowPing = true;
};
};
virtualisation.pathsInNixDB = [ pkgs.stdenv ];
};
testScript =
''
$machine->waitForUnit("default.target");
$machine->succeed("nixos-container list") =~ /webserver/ or die;
# Status of the webserver container.
$machine->succeed("nixos-container status webserver") =~ /up/ or die;
# Debug
#$machine->succeed("nixos-container run webserver -- ip link >&2");
# Ensure that the veths are inside the container
$machine->succeed("nixos-container run webserver -- ip link show veth1") =~ /state UP/ or die;
$machine->succeed("nixos-container run webserver -- ip link show veth2") =~ /state UP/ or die;
# Debug
#$machine->succeed("ip link >&2");
# Ensure the presence of the extra veths
$machine->succeed("ip link show veth1") =~ /state UP/ or die;
$machine->succeed("ip link show veth2") =~ /state UP/ or die;
# Ensure the veth1 is part of br1 on the host
$machine->succeed("ip link show veth1") =~ /master br1/ or die;
# Debug
#$machine->succeed("ip -4 a >&2");
#$machine->succeed("ip -4 r >&2");
#$machine->succeed("nixos-container run webserver -- ip link >&2");
#$machine->succeed("nixos-container run webserver -- ip -4 a >&2");
#$machine->succeed("nixos-container run webserver -- ip -4 r >&2");
# Ping on main veth
$machine->succeed("ping -n -c 1 192.168.0.100");
$machine->succeed("ping6 -n -c 1 fc00::2");
# Ping on the first extra veth
$machine->succeed("ping -n -c 1 192.168.1.100 >&2");
# Ping on the second extra veth
$machine->succeed("ping -n -c 1 192.168.2.100 >&2");
# Stop the container.
$machine->succeed("nixos-container stop webserver");
$machine->fail("ping -n -c 1 192.168.1.100 >&2");
$machine->fail("ping -n -c 1 192.168.2.100 >&2");
# Destroying a declarative container should fail.
$machine->fail("nixos-container destroy webserver");
'';
})

View file

@ -3,7 +3,7 @@
import ./make-test.nix ({ pkgs, ...} : { import ./make-test.nix ({ pkgs, ...} : {
name = "containers-imperative"; name = "containers-imperative";
meta = with pkgs.stdenv.lib.maintainers; { meta = with pkgs.stdenv.lib.maintainers; {
maintainers = [ aristid aszlig eelco chaoflow ]; maintainers = [ aristid aszlig eelco chaoflow kampfschlaefer ];
}; };
machine = machine =

View file

@ -3,7 +3,7 @@
import ./make-test.nix ({ pkgs, ...} : { import ./make-test.nix ({ pkgs, ...} : {
name = "containers-ipv4"; name = "containers-ipv4";
meta = with pkgs.stdenv.lib.maintainers; { meta = with pkgs.stdenv.lib.maintainers; {
maintainers = [ aristid aszlig eelco chaoflow ]; maintainers = [ aristid aszlig eelco chaoflow kampfschlaefer ];
}; };
machine = machine =

View file

@ -8,7 +8,7 @@ in
import ./make-test.nix ({ pkgs, ...} : { import ./make-test.nix ({ pkgs, ...} : {
name = "containers-ipv6"; name = "containers-ipv6";
meta = with pkgs.stdenv.lib.maintainers; { meta = with pkgs.stdenv.lib.maintainers; {
maintainers = [ aristid aszlig eelco chaoflow ]; maintainers = [ aristid aszlig eelco chaoflow kampfschlaefer ];
}; };
machine = machine =

View file

@ -1,41 +0,0 @@
import ./make-test.nix ({ pkgs, ...} : {
name = "gnome3-gdm";
meta = with pkgs.stdenv.lib.maintainers; {
maintainers = [ lethalman ];
};
machine =
{ config, pkgs, ... }:
{ imports = [ ./common/user-account.nix ];
services.xserver.enable = true;
services.xserver.displayManager.gdm = {
enable = true;
autoLogin = {
enable = true;
user = "alice";
};
};
services.xserver.desktopManager.gnome3.enable = true;
environment.gnome3.packageSet = pkgs.gnome3_20;
virtualisation.memorySize = 512;
};
testScript =
''
$machine->waitForX;
$machine->sleep(15);
# Check that logging in has given the user ownership of devices.
$machine->succeed("getfacl /dev/snd/timer | grep -q alice");
$machine->succeed("su - alice -c 'DISPLAY=:0.0 gnome-terminal &'");
$machine->succeed("xauth merge ~alice/.Xauthority");
$machine->waitForWindow(qr/Terminal/);
$machine->sleep(20);
$machine->screenshot("screen");
'';
})

View file

@ -1,38 +0,0 @@
import ./make-test.nix ({ pkgs, ...} : {
name = "gnome3";
meta = with pkgs.stdenv.lib.maintainers; {
maintainers = [ domenkozar eelco chaoflow lethalman ];
};
machine =
{ config, pkgs, ... }:
{ imports = [ ./common/user-account.nix ];
services.xserver.enable = true;
services.xserver.displayManager.auto.enable = true;
services.xserver.displayManager.auto.user = "alice";
services.xserver.desktopManager.gnome3.enable = true;
environment.gnome3.packageSet = pkgs.gnome3_18;
virtualisation.memorySize = 512;
};
testScript =
''
$machine->waitForX;
$machine->sleep(15);
# Check that logging in has given the user ownership of devices.
$machine->succeed("getfacl /dev/snd/timer | grep -q alice");
$machine->succeed("su - alice -c 'DISPLAY=:0.0 gnome-terminal &'");
$machine->succeed("xauth merge ~alice/.Xauthority");
$machine->waitForWindow(qr/Terminal/);
$machine->mustSucceed("timeout 900 bash -c 'journalctl -f|grep -m 1 \"GNOME Shell started\"'");
$machine->sleep(10);
$machine->screenshot("screen");
'';
})

View file

@ -1,27 +1,31 @@
{ stdenv, fetchFromGitHub, faust2jaqt, faust2lv2gui }: { stdenv, fetchFromGitHub, faust2jaqt, faust2lv2gui }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "CharacterCompressor-${version}"; name = "CharacterCompressor-${version}";
version = "0.2"; version = "0.3.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "magnetophon"; owner = "magnetophon";
repo = "CharacterCompressor"; repo = "CharacterCompressor";
rev = "v${version}"; rev = "V${version}";
sha256 = "0fvi8m4nshcxypn4jgxhnh7pxp68wshhav3k8wn3il7qpw71pdxi"; sha256 = "0ci27v5k10prsmcd0g6q5vhr31mz8hsmrsdk436vfbcv3s108rcc";
}; };
buildInputs = [ faust2jaqt faust2lv2gui ]; buildInputs = [ faust2jaqt faust2lv2gui ];
buildPhase = '' buildPhase = ''
faust2jaqt -t 99999 CharacterCompressor.dsp faust2jaqt -vec -time -t 99999 CharacterCompressor.dsp
faust2lv2 -gui -t 99999 CharacterCompressor.dsp faust2lv2 -vec -time -gui -t 99999 CharacterCompressor.dsp
faust2jaqt -vec -time -t 99999 CharacterCompressorMono.dsp
faust2lv2 -vec -time -gui -t 99999 CharacterCompressorMono.dsp
''; '';
installPhase = '' installPhase = ''
mkdir -p $out/bin mkdir -p $out/bin
cp CharacterCompressor $out/bin/ cp CharacterCompressor $out/bin/
cp CharacterCompressorMono $out/bin/
mkdir -p $out/lib/lv2 mkdir -p $out/lib/lv2
cp -r CharacterCompressor.lv2/ $out/lib/lv2 cp -r CharacterCompressor.lv2/ $out/lib/lv2
cp -r CharacterCompressorMono.lv2/ $out/lib/lv2
''; '';
meta = { meta = {

View file

@ -170,8 +170,8 @@ let
--set FAUST_LIB_PATH "${faust}/lib/faust" \ --set FAUST_LIB_PATH "${faust}/lib/faust" \
--prefix PATH : "$PATH" \ --prefix PATH : "$PATH" \
--prefix PKG_CONFIG_PATH : "$PKG_CONFIG_PATH" \ --prefix PKG_CONFIG_PATH : "$PKG_CONFIG_PATH" \
--set NIX_CFLAGS_COMPILE "\"$NIX_CFLAGS_COMPILE\"" \ --set NIX_CFLAGS_COMPILE "$NIX_CFLAGS_COMPILE" \
--set NIX_LDFLAGS "\"$NIX_LDFLAGS\"" --set NIX_LDFLAGS "$NIX_LDFLAGS"
done done
''; '';
}); });

View file

@ -9,12 +9,12 @@ with stdenv.lib.strings;
let let
version = "2016-04-27"; version = "2016-07-19";
src = fetchgit { src = fetchgit {
url = "git://git.code.sf.net/p/faudiostream/code"; url = "git://git.code.sf.net/p/faudiostream/code";
rev = "931fca3e649f99ef09025d37bd6a7dc70a03e6f6"; rev = "16c22dc0193c10521b1dc16f98443d9c206bb5dd";
sha256 = "1h2qfwxqf9406v0w6kqyxlzn88zw3xmwgxg9f01n4jvd72zxll78"; sha256 = "01rbcjfhpd5casi72ffi1j95f65ji60l629sgav93pvs0kpdacz5";
}; };
meta = with stdenv.lib; { meta = with stdenv.lib; {
@ -175,8 +175,8 @@ let
--set FAUSTINC "${faust}/include/faust" \ --set FAUSTINC "${faust}/include/faust" \
--prefix PATH : "$PATH" \ --prefix PATH : "$PATH" \
--prefix PKG_CONFIG_PATH : "$PKG_CONFIG_PATH" \ --prefix PKG_CONFIG_PATH : "$PKG_CONFIG_PATH" \
--set NIX_CFLAGS_COMPILE "\"$NIX_CFLAGS_COMPILE\"" \ --set NIX_CFLAGS_COMPILE "$NIX_CFLAGS_COMPILE" \
--set NIX_LDFLAGS "\"$NIX_LDFLAGS\"" --set NIX_LDFLAGS "$NIX_LDFLAGS"
done done
''; '';
}); });

View file

@ -196,8 +196,8 @@ let
--set FAUST_LIB_PATH "${faust}/lib/faust" \ --set FAUST_LIB_PATH "${faust}/lib/faust" \
--prefix PATH : "$PATH" \ --prefix PATH : "$PATH" \
--prefix PKG_CONFIG_PATH : "$PKG_CONFIG_PATH" \ --prefix PKG_CONFIG_PATH : "$PKG_CONFIG_PATH" \
--set NIX_CFLAGS_COMPILE "\"$NIX_CFLAGS_COMPILE\"" \ --set NIX_CFLAGS_COMPILE "$NIX_CFLAGS_COMPILE" \
--set NIX_LDFLAGS "\"$NIX_LDFLAGS\"" --set NIX_LDFLAGS "$NIX_LDFLAGS"
done done
''; '';
}); });

View file

@ -3,13 +3,13 @@
pythonPackages.buildPythonApplication rec { pythonPackages.buildPythonApplication rec {
name = "mopidy-musicbox-webclient-${version}"; name = "mopidy-musicbox-webclient-${version}";
version = "2.2.0"; version = "2.3.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "pimusicbox"; owner = "pimusicbox";
repo = "mopidy-musicbox-webclient"; repo = "mopidy-musicbox-webclient";
rev = "v${version}"; rev = "v${version}";
sha256 = "0v09wy40ipl0b0dpgmcdl15c5g732c9jl7zipm4sy4pr8xiy6baa"; sha256 = "1jcfrwsi7axiph3jplqzmcqia9pc46xb2yf13d8h6lnh3h49rwvz";
}; };
propagatedBuildInputs = [ mopidy ]; propagatedBuildInputs = [ mopidy ];

View file

@ -2,13 +2,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "plugin-torture-${version}"; name = "plugin-torture-${version}";
version = "5"; version = "2016-07-25";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "cth103"; owner = "cth103";
repo = "plugin-torture"; repo = "plugin-torture";
rev = "v${version}"; rev = "8b9c43197dca372da6b9c8212224ec86b5f16b4a";
sha256 = "1mlgxjsyaz86wm4k32ll2w5nghjffnsdqlm6kjv02a4dpb2bfrih"; sha256 = "1xyhvhm85d9z0kw716cjllrrzksn4s4bw34layg8hf4m5m31sp2p";
}; };
buildInputs = [ boost ladspaH lilv lv2 pkgconfig serd sord sratom ]; buildInputs = [ boost ladspaH lilv lv2 pkgconfig serd sord sratom ];

View file

@ -0,0 +1,62 @@
{ stdenv, fetchurl, pkgconfig
, python3
, perl
, perlPackages
, gtk3
, intltool
, libsoup
, gnome3
, tdb
, json_glib
, itstool
, wrapGAppsHook
, gst_all_1
, gst_plugins ? with gst_all_1; [ gst-plugins-good gst-plugins-ugly ]
}:
let
version = "${major}.${minor}";
major = "3.2";
minor = "1";
in stdenv.mkDerivation rec {
name = "rhythmbox-${version}";
src = fetchurl {
url = "mirror://gnome/sources/rhythmbox/${major}/${name}.tar.xz";
sha256 = "0f3radhlji7rxl760yl2vm49fvfslympxrpm8497acbmbd7wlhxz";
};
buildInputs = [
pkgconfig
python3
perl
perlPackages.XMLParser
intltool
libsoup
tdb
json_glib
itstool
gtk3
gnome3.libpeas
gnome3.totem-pl-parser
gnome3.defaultIconTheme
gst_all_1.gstreamer
gst_all_1.gst-plugins-base
wrapGAppsHook
] ++ gst_plugins;
enableParallelBuilding = true;
meta = with stdenv.lib; {
homepage = https://wiki.gnome.org/Apps/Rhythmbox;
description = "A music playing application for GNOME";
license = licenses.gpl2;
platforms = platforms.linux;
maintainers = [ maintainers.rasendubi ];
};
}

View file

@ -2,14 +2,14 @@
let let
version = "4.7.0"; version = "4.7.0";
rev = "1"; #tracks unversioned changes that occur on download.code42.com from time to time rev = "2"; #tracks unversioned changes that occur on download.code42.com from time to time
in stdenv.mkDerivation rec { in stdenv.mkDerivation rec {
name = "crashplan-${version}-r${rev}"; name = "crashplan-${version}-r${rev}";
crashPlanArchive = fetchurl { crashPlanArchive = fetchurl {
url = "https://download.code42.com/installs/linux/install/CrashPlan/CrashPlan_${version}_Linux.tgz"; url = "https://download.code42.com/installs/linux/install/CrashPlan/CrashPlan_${version}_Linux.tgz";
sha256 = "1r50fyswvqjxsdslbyibbxwz2fs8iim15hxr0k05jrzmkhjm4g5v"; sha256 = "1vi6dqf8kc90axrgdcf6rwnhynxgxkc0qn6pbdp2gvkxdqxrprn8";
}; };
srcs = [ crashPlanArchive ]; srcs = [ crashPlanArchive ];

View file

@ -171,12 +171,12 @@ rec {
checkstyle = buildEclipseUpdateSite rec { checkstyle = buildEclipseUpdateSite rec {
name = "checkstyle-${version}"; name = "checkstyle-${version}";
version = "6.19.0.201606092149"; version = "6.19.1.201607051943";
src = fetchzip { src = fetchzip {
stripRoot = false; stripRoot = false;
url = "mirror://sourceforge/project/eclipse-cs/Eclipse%20Checkstyle%20Plug-in/6.19.0/net.sf.eclipsecs-updatesite_${version}.zip"; url = "mirror://sourceforge/project/eclipse-cs/Eclipse%20Checkstyle%20Plug-in/6.19.1/net.sf.eclipsecs-updatesite_${version}.zip";
sha256 = "0d066fihvdkisic0lsdvh947yd2v20xc8h4aknfcyg2mq3xzi0x7"; sha256 = "03aah57g0cgxym95p1wcj2h69xy3r9c0vv7js3gpmw1hx8w9sjsf";
}; };
meta = with stdenv.lib; { meta = with stdenv.lib; {
@ -341,12 +341,12 @@ rec {
jdt = buildEclipseUpdateSite rec { jdt = buildEclipseUpdateSite rec {
name = "jdt-${version}"; name = "jdt-${version}";
version = "4.5.2"; version = "4.6";
src = fetchzip { src = fetchzip {
stripRoot = false; stripRoot = false;
url = "https://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/eclipse/downloads/drops4/R-4.5.2-201602121500/org.eclipse.jdt-4.5.2.zip"; url = "https://www.eclipse.org/downloads/download.php?r=1&nf=1&file=/eclipse/downloads/drops4/R-4.6-201606061100/org.eclipse.jdt-4.6.zip";
sha256 = "0v4cfq4z62k60l8l014wqgbjnd6a93dwcp6qvr5y7q1v9jr2na5g"; sha256 = "0raz8d09fnnx19l012l5frca97qavfivvygn3mvsllcyskhqc5hg";
}; };
meta = with stdenv.lib; { meta = with stdenv.lib; {

View file

@ -25,13 +25,13 @@ let
in in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "emacs-25.0.95"; name = "emacs-25.1-rc1";
builder = ./builder.sh; builder = ./builder.sh;
src = fetchurl { src = fetchurl {
url = "ftp://alpha.gnu.org/gnu/emacs/pretest/${name}.tar.xz"; url = "ftp://alpha.gnu.org/gnu/emacs/pretest/${name}.tar.xz";
sha256 = "0bmvg7cbrwfa9rbryjrqv2qcllgwja92sx9ikirl80r5d09caf0l"; sha256 = "0cv1hars9zxlv040h7f3zz50fhn67dqa18ms4hg9sdblckk50360";
}; };
patches = lib.optionals stdenv.isDarwin [ patches = lib.optionals stdenv.isDarwin [

View file

@ -95,10 +95,10 @@
ahungry-theme = callPackage ({ elpaBuild, emacs, fetchurl, lib }: ahungry-theme = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
elpaBuild { elpaBuild {
pname = "ahungry-theme"; pname = "ahungry-theme";
version = "1.2.0"; version = "1.3.0";
src = fetchurl { src = fetchurl {
url = "https://elpa.gnu.org/packages/ahungry-theme-1.2.0.tar"; url = "https://elpa.gnu.org/packages/ahungry-theme-1.3.0.tar";
sha256 = "04z9d8xszgsl6p02gf3yixgj8kwwb6rfc6bq1b3sz95n3v9wmg9d"; sha256 = "1p2zaq0s4bbl5cx6wyab24wamw7m0mysb0v47dqjmnvfc25z84rq";
}; };
packageRequires = [ emacs ]; packageRequires = [ emacs ];
meta = { meta = {
@ -175,10 +175,10 @@
}) {}; }) {};
auctex = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild { auctex = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
pname = "auctex"; pname = "auctex";
version = "11.89.3"; version = "11.89.4";
src = fetchurl { src = fetchurl {
url = "https://elpa.gnu.org/packages/auctex-11.89.3.tar"; url = "https://elpa.gnu.org/packages/auctex-11.89.4.tar";
sha256 = "16yjalh8qf1m3zgwxf1h3dkjq7hkb9895g2lb6ajwjfn02yiav80"; sha256 = "06dxj9wflwgzy88vk47pdk6xln4f63cab7s73ynwp2bdqjs99f5b";
}; };
packageRequires = []; packageRequires = [];
meta = { meta = {
@ -228,10 +228,10 @@
}) {}; }) {};
beacon = callPackage ({ elpaBuild, fetchurl, lib, seq }: elpaBuild { beacon = callPackage ({ elpaBuild, fetchurl, lib, seq }: elpaBuild {
pname = "beacon"; pname = "beacon";
version = "1.3.0"; version = "1.3.1";
src = fetchurl { src = fetchurl {
url = "https://elpa.gnu.org/packages/beacon-1.3.0.el"; url = "https://elpa.gnu.org/packages/beacon-1.3.1.el";
sha256 = "00hab8w01p43iscpr0hh1s2w80ara2y8d5ccz37i2nl54gj8lpw3"; sha256 = "19dw9650kk4rch2qpp42wdq9687m3svj1addbp3yz4dijy7lx2mj";
}; };
packageRequires = [ seq ]; packageRequires = [ seq ];
meta = { meta = {
@ -282,10 +282,10 @@
}) {}; }) {};
cl-generic = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild { cl-generic = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
pname = "cl-generic"; pname = "cl-generic";
version = "0.2"; version = "0.3";
src = fetchurl { src = fetchurl {
url = "https://elpa.gnu.org/packages/cl-generic-0.2.el"; url = "https://elpa.gnu.org/packages/cl-generic-0.3.el";
sha256 = "0b2y114f14fdlk5hkb0fvdbv6pqm9ifw0vwzri1vqp1xq1l1f9p3"; sha256 = "0vb338bhjpsnrf60qgxny4z5rjrnifahnrv9axd4shay89d894zq";
}; };
packageRequires = []; packageRequires = [];
meta = { meta = {
@ -319,13 +319,26 @@
license = lib.licenses.free; license = lib.licenses.free;
}; };
}) {}; }) {};
compact-docstrings = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
pname = "compact-docstrings";
version = "0.1";
src = fetchurl {
url = "https://elpa.gnu.org/packages/compact-docstrings-0.1.el";
sha256 = "1qmxn1i07nnzfckl06lg3xpvccx2hjgpypgc9v4pdihjfdwnifm5";
};
packageRequires = [];
meta = {
homepage = "https://elpa.gnu.org/packages/compact-docstrings.html";
license = lib.licenses.free;
};
}) {};
company = callPackage ({ cl-lib ? null, elpaBuild, emacs, fetchurl, lib }: company = callPackage ({ cl-lib ? null, elpaBuild, emacs, fetchurl, lib }:
elpaBuild { elpaBuild {
pname = "company"; pname = "company";
version = "0.8.12"; version = "0.9.0";
src = fetchurl { src = fetchurl {
url = "https://elpa.gnu.org/packages/company-0.8.12.tar"; url = "https://elpa.gnu.org/packages/company-0.9.0.tar";
sha256 = "1r7q813rjs4dgknsfqi354ahsvk8k4ld4xh1fkp8lbxb13da6gqx"; sha256 = "1d090j1xv97nbxzz0iq4gmzjijggm8wsd0y1zfsa8syrq8qa0ajs";
}; };
packageRequires = [ cl-lib emacs ]; packageRequires = [ cl-lib emacs ];
meta = { meta = {
@ -361,15 +374,15 @@
license = lib.licenses.free; license = lib.licenses.free;
}; };
}) {}; }) {};
context-coloring = callPackage ({ elpaBuild, emacs, fetchurl, js2-mode, lib }: context-coloring = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
elpaBuild { elpaBuild {
pname = "context-coloring"; pname = "context-coloring";
version = "7.2.1"; version = "8.0.1";
src = fetchurl { src = fetchurl {
url = "https://elpa.gnu.org/packages/context-coloring-7.2.1.el"; url = "https://elpa.gnu.org/packages/context-coloring-8.0.1.tar";
sha256 = "1lh2p3fsym73h0dcj1gqg1xsw3lcikmcskbx8y3j0ds30l4xs13d"; sha256 = "0c7sb8dzx6f40hz2l6zicc0shpxj3vzsmvdxzx65c4vgvr462js2";
}; };
packageRequires = [ emacs js2-mode ]; packageRequires = [ emacs ];
meta = { meta = {
homepage = "https://elpa.gnu.org/packages/context-coloring.html"; homepage = "https://elpa.gnu.org/packages/context-coloring.html";
license = lib.licenses.free; license = lib.licenses.free;
@ -401,6 +414,19 @@
license = lib.licenses.free; license = lib.licenses.free;
}; };
}) {}; }) {};
cycle-quotes = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
pname = "cycle-quotes";
version = "0.1";
src = fetchurl {
url = "https://elpa.gnu.org/packages/cycle-quotes-0.1.tar";
sha256 = "0aa6ykblgb6anqmi4qxakbvyrq9v02skgayhfb2qddffiww404ka";
};
packageRequires = [];
meta = {
homepage = "https://elpa.gnu.org/packages/cycle-quotes.html";
license = lib.licenses.free;
};
}) {};
darkroom = callPackage ({ cl-lib ? null, elpaBuild, fetchurl, lib }: darkroom = callPackage ({ cl-lib ? null, elpaBuild, fetchurl, lib }:
elpaBuild { elpaBuild {
pname = "darkroom"; pname = "darkroom";
@ -445,10 +471,10 @@
debbugs = callPackage ({ cl-lib ? null, elpaBuild, fetchurl, lib, soap-client }: debbugs = callPackage ({ cl-lib ? null, elpaBuild, fetchurl, lib, soap-client }:
elpaBuild { elpaBuild {
pname = "debbugs"; pname = "debbugs";
version = "0.9.5"; version = "0.9.7";
src = fetchurl { src = fetchurl {
url = "https://elpa.gnu.org/packages/debbugs-0.9.5.tar"; url = "https://elpa.gnu.org/packages/debbugs-0.9.7.tar";
sha256 = "1m23rghdykx1fvji6in0xp0bxhjcf7ynm14nl4fhiki2nhhwczxh"; sha256 = "07w73if4lmh23ih2v3p0197f781002dywd5fzdbmr4hcqvvi97qq";
}; };
packageRequires = [ cl-lib soap-client ]; packageRequires = [ cl-lib soap-client ];
meta = { meta = {
@ -456,6 +482,19 @@
license = lib.licenses.free; license = lib.licenses.free;
}; };
}) {}; }) {};
delight = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
pname = "delight";
version = "1.5";
src = fetchurl {
url = "https://elpa.gnu.org/packages/delight-1.5.el";
sha256 = "0kzlvzwmn6zj0874086q2xw0pclyi7wlkq48zh2lkd2796xm8vw7";
};
packageRequires = [];
meta = {
homepage = "https://elpa.gnu.org/packages/delight.html";
license = lib.licenses.free;
};
}) {};
dict-tree = callPackage ({ elpaBuild, fetchurl, heap, lib, tNFA, trie }: dict-tree = callPackage ({ elpaBuild, fetchurl, heap, lib, tNFA, trie }:
elpaBuild { elpaBuild {
pname = "dict-tree"; pname = "dict-tree";
@ -473,10 +512,10 @@
diff-hl = callPackage ({ cl-lib ? null, elpaBuild, fetchurl, lib }: diff-hl = callPackage ({ cl-lib ? null, elpaBuild, fetchurl, lib }:
elpaBuild { elpaBuild {
pname = "diff-hl"; pname = "diff-hl";
version = "1.8.3"; version = "1.8.4";
src = fetchurl { src = fetchurl {
url = "https://elpa.gnu.org/packages/diff-hl-1.8.3.tar"; url = "https://elpa.gnu.org/packages/diff-hl-1.8.4.tar";
sha256 = "1i3ngx5gmjl1a15y6d0xmcgdimn7ghrqkbzqisz4ra3dgwbbb3f9"; sha256 = "0axhidc3cym7a2x4rpxf4745qss9s9ajyg4s9h5b4zn7v7fyp71n";
}; };
packageRequires = [ cl-lib ]; packageRequires = [ cl-lib ];
meta = { meta = {
@ -566,10 +605,10 @@
}) {}; }) {};
el-search = callPackage ({ elpaBuild, emacs, fetchurl, lib }: elpaBuild { el-search = callPackage ({ elpaBuild, emacs, fetchurl, lib }: elpaBuild {
pname = "el-search"; pname = "el-search";
version = "0.2"; version = "0.2.1";
src = fetchurl { src = fetchurl {
url = "https://elpa.gnu.org/packages/el-search-0.2.el"; url = "https://elpa.gnu.org/packages/el-search-0.2.1.el";
sha256 = "1ps4p79xrvsdys9yh1wyk4zdly6c55agbqa6f8q3xkwc9sva9lw9"; sha256 = "1ralag6a4752mqbsz92prd1f75380q5f7j4k3ajhv66krhd1w0k6";
}; };
packageRequires = [ emacs ]; packageRequires = [ emacs ];
meta = { meta = {
@ -646,10 +685,10 @@
excorporate = callPackage ({ elpaBuild, emacs, fetchurl, fsm, lib, soap-client, url-http-ntlm }: excorporate = callPackage ({ elpaBuild, emacs, fetchurl, fsm, lib, soap-client, url-http-ntlm }:
elpaBuild { elpaBuild {
pname = "excorporate"; pname = "excorporate";
version = "0.7.3"; version = "0.7.5";
src = fetchurl { src = fetchurl {
url = "https://elpa.gnu.org/packages/excorporate-0.7.3.tar"; url = "https://elpa.gnu.org/packages/excorporate-0.7.5.tar";
sha256 = "053pcqv5gcwnl57kcxsm3v60nmi5sm4myjca2xqraldp27k6qd1q"; sha256 = "0w828zv8968ryphhi1zaizrs6fnxkgxdwjlhpriyc9129qnwx0cg";
}; };
packageRequires = [ emacs fsm soap-client url-http-ntlm ]; packageRequires = [ emacs fsm soap-client url-http-ntlm ];
meta = { meta = {
@ -659,10 +698,10 @@
}) {}; }) {};
exwm = callPackage ({ elpaBuild, fetchurl, lib, xelb }: elpaBuild { exwm = callPackage ({ elpaBuild, fetchurl, lib, xelb }: elpaBuild {
pname = "exwm"; pname = "exwm";
version = "0.4"; version = "0.6";
src = fetchurl { src = fetchurl {
url = "https://elpa.gnu.org/packages/exwm-0.4.tar"; url = "https://elpa.gnu.org/packages/exwm-0.6.tar";
sha256 = "1qlplx88mk8c5sahlymxxh46bzf6bxnsqk92wliv5ji4ai5373fb"; sha256 = "0fxkhpc87wd7crzwwj9r5r3s07pznsphk4hi8jinx91641szi1px";
}; };
packageRequires = [ xelb ]; packageRequires = [ xelb ];
meta = { meta = {
@ -701,10 +740,10 @@
fsm = callPackage ({ cl-lib ? null, elpaBuild, emacs, fetchurl, lib }: fsm = callPackage ({ cl-lib ? null, elpaBuild, emacs, fetchurl, lib }:
elpaBuild { elpaBuild {
pname = "fsm"; pname = "fsm";
version = "0.2"; version = "0.2.1";
src = fetchurl { src = fetchurl {
url = "https://elpa.gnu.org/packages/fsm-0.2.el"; url = "https://elpa.gnu.org/packages/fsm-0.2.1.el";
sha256 = "1kh1r5by1q2x8bbg0z2jzmb5i6blvlf105mavrnbcxa6ghbiz6iy"; sha256 = "1jyxyqdbfl8nv7c50q0sg3w5p7whp1sqgi7w921k5hfar4d11qqp";
}; };
packageRequires = [ cl-lib emacs ]; packageRequires = [ cl-lib emacs ];
meta = { meta = {
@ -876,10 +915,10 @@
js2-mode = callPackage ({ cl-lib ? null, elpaBuild, emacs, fetchurl, lib }: js2-mode = callPackage ({ cl-lib ? null, elpaBuild, emacs, fetchurl, lib }:
elpaBuild { elpaBuild {
pname = "js2-mode"; pname = "js2-mode";
version = "20150909"; version = "20160623";
src = fetchurl { src = fetchurl {
url = "https://elpa.gnu.org/packages/js2-mode-20150909.tar"; url = "https://elpa.gnu.org/packages/js2-mode-20160623.tar";
sha256 = "1ha696jl9k1325r3xlr11rx6lmd545p42f8biw4hb0q1zsr2306h"; sha256 = "057djy6amda8kyprkb3v733d21nlmq5fgfazi65fywlfwyq1adxs";
}; };
packageRequires = [ cl-lib emacs ]; packageRequires = [ cl-lib emacs ];
meta = { meta = {
@ -1123,6 +1162,19 @@
license = lib.licenses.free; license = lib.licenses.free;
}; };
}) {}; }) {};
myers = callPackage ({ elpaBuild, emacs, fetchurl, lib }: elpaBuild {
pname = "myers";
version = "0.1";
src = fetchurl {
url = "https://elpa.gnu.org/packages/myers-0.1.el";
sha256 = "0yrxklkksj16cfbvwmdxjj43vngjd6q0fivib1xim3c9g3c9b670";
};
packageRequires = [ emacs ];
meta = {
homepage = "https://elpa.gnu.org/packages/myers.html";
license = lib.licenses.free;
};
}) {};
nameless = callPackage ({ elpaBuild, emacs, fetchurl, lib }: elpaBuild { nameless = callPackage ({ elpaBuild, emacs, fetchurl, lib }: elpaBuild {
pname = "nameless"; pname = "nameless";
version = "1.0.1"; version = "1.0.1";
@ -1217,10 +1269,10 @@
}) {}; }) {};
oauth2 = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild { oauth2 = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
pname = "oauth2"; pname = "oauth2";
version = "0.10"; version = "0.11";
src = fetchurl { src = fetchurl {
url = "https://elpa.gnu.org/packages/oauth2-0.10.el"; url = "https://elpa.gnu.org/packages/oauth2-0.11.el";
sha256 = "0rlxmbb88dp0yqw9d5mdx0nxv5l5618scmg5872scbnc735f2yna"; sha256 = "0ydkc9jazsnbbvfhd47mql52y7k06n3z7r0naqxkwb99j9blqsmp";
}; };
packageRequires = []; packageRequires = [];
meta = { meta = {
@ -1257,10 +1309,10 @@
}) {}; }) {};
org = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild { org = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
pname = "org"; pname = "org";
version = "20160516"; version = "20160725";
src = fetchurl { src = fetchurl {
url = "https://elpa.gnu.org/packages/org-20160516.tar"; url = "https://elpa.gnu.org/packages/org-20160725.tar";
sha256 = "164v1zddgyfy9v1qhl1fqz2vcgm5w4dhfmra5ngpgnjh1402l0pm"; sha256 = "05ky7hlsjqlml14ss9hcj2756clvsi1f26gv7a01d923m3drkqjc";
}; };
packageRequires = []; packageRequires = [];
meta = { meta = {
@ -1337,10 +1389,10 @@
python = callPackage ({ cl-lib ? null, elpaBuild, emacs, fetchurl, lib }: python = callPackage ({ cl-lib ? null, elpaBuild, emacs, fetchurl, lib }:
elpaBuild { elpaBuild {
pname = "python"; pname = "python";
version = "0.25.1"; version = "0.25.2";
src = fetchurl { src = fetchurl {
url = "https://elpa.gnu.org/packages/python-0.25.1.el"; url = "https://elpa.gnu.org/packages/python-0.25.2.el";
sha256 = "16r1sjq5fagrvlnrnbxmf6h2yxrcbhqlaa3ppqsa14vqrj09gisd"; sha256 = "1ac2ipyg49sb0lz3n0ykj2s6592abd38l5d1cpbmv73j13l8zq5i";
}; };
packageRequires = [ cl-lib emacs ]; packageRequires = [ cl-lib emacs ];
meta = { meta = {
@ -1427,14 +1479,15 @@
license = lib.licenses.free; license = lib.licenses.free;
}; };
}) {}; }) {};
rudel = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild { rudel = callPackage ({ cl-generic, cl-lib ? null, elpaBuild, emacs, fetchurl, lib }:
elpaBuild {
pname = "rudel"; pname = "rudel";
version = "0.3"; version = "0.3";
src = fetchurl { src = fetchurl {
url = "https://elpa.gnu.org/packages/rudel-0.3.tar"; url = "https://elpa.gnu.org/packages/rudel-0.3.tar";
sha256 = "041yac9a7hbz1fpmjlmc31ggcgg90fmw08z6bkzly2141yky8yh1"; sha256 = "041yac9a7hbz1fpmjlmc31ggcgg90fmw08z6bkzly2141yky8yh1";
}; };
packageRequires = []; packageRequires = [ cl-generic cl-lib emacs ];
meta = { meta = {
homepage = "https://elpa.gnu.org/packages/rudel.html"; homepage = "https://elpa.gnu.org/packages/rudel.html";
license = lib.licenses.free; license = lib.licenses.free;
@ -1468,10 +1521,10 @@
}) {}; }) {};
seq = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild { seq = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
pname = "seq"; pname = "seq";
version = "2.15"; version = "2.16";
src = fetchurl { src = fetchurl {
url = "https://elpa.gnu.org/packages/seq-2.15.tar"; url = "https://elpa.gnu.org/packages/seq-2.16.tar";
sha256 = "09wi1765bmn7i8fg6ajjfaxgs4ipc42d58zx2fdqpidrdg9c7q73"; sha256 = "1fc1cjbb3lrxgkhzvg4bkpxr408hhg8kqa07n0jfalrdzaa3bika";
}; };
packageRequires = []; packageRequires = [];
meta = { meta = {
@ -1918,10 +1971,10 @@
xelb = callPackage ({ cl-generic, elpaBuild, emacs, fetchurl, lib }: xelb = callPackage ({ cl-generic, elpaBuild, emacs, fetchurl, lib }:
elpaBuild { elpaBuild {
pname = "xelb"; pname = "xelb";
version = "0.7"; version = "0.9";
src = fetchurl { src = fetchurl {
url = "https://elpa.gnu.org/packages/xelb-0.7.tar"; url = "https://elpa.gnu.org/packages/xelb-0.9.tar";
sha256 = "0i4336a8xns6zp82dj77w5gjgv3mfngcjsw7ghyf7bb7flh8ipw1"; sha256 = "19gv08wxs2s337y1wv2i19a0vk8w6733l9mryn334yy2m5031vxh";
}; };
packageRequires = [ cl-generic emacs ]; packageRequires = [ cl-generic emacs ];
meta = { meta = {
@ -1945,10 +1998,10 @@
yasnippet = callPackage ({ cl-lib ? null, elpaBuild, fetchurl, lib }: yasnippet = callPackage ({ cl-lib ? null, elpaBuild, fetchurl, lib }:
elpaBuild { elpaBuild {
pname = "yasnippet"; pname = "yasnippet";
version = "0.9.1"; version = "0.10.0";
src = fetchurl { src = fetchurl {
url = "https://elpa.gnu.org/packages/yasnippet-0.9.1.tar"; url = "https://elpa.gnu.org/packages/yasnippet-0.10.0.tar";
sha256 = "0b88q10dxa13afjzpkwgjlrzzvwiiqsi9jr73pxnsy4q1n1n2vml"; sha256 = "0vh70i73rknaxzglr4nragassgpjy2lj5mca2x6wqiqmv7mc8xdv";
}; };
packageRequires = [ cl-lib ]; packageRequires = [ cl-lib ];
meta = { meta = {

File diff suppressed because it is too large Load diff

View file

@ -56,9 +56,6 @@ self:
# upstream issue: missing file header # upstream issue: missing file header
connection = markBroken super.connection; connection = markBroken super.connection;
# upstream issue: missing file header
crux = markBroken super.crux;
# upstream issue: missing file header # upstream issue: missing file header
dictionary = markBroken super.dictionary; dictionary = markBroken super.dictionary;
@ -135,10 +132,6 @@ self:
# upstream issue: missing file header # upstream issue: missing file header
qiita = markBroken super.qiita; qiita = markBroken super.qiita;
spaceline = super.spaceline.override {
inherit (self.melpaPackages) powerline;
};
# upstream issue: missing file header # upstream issue: missing file header
speech-tagger = markBroken super.speech-tagger; speech-tagger = markBroken super.speech-tagger;

View file

@ -1,10 +1,10 @@
{ callPackage }: { { callPackage }: {
org = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild { org = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
pname = "org"; pname = "org";
version = "20160516"; version = "20160725";
src = fetchurl { src = fetchurl {
url = "http://orgmode.org/elpa/org-20160516.tar"; url = "http://orgmode.org/elpa/org-20160725.tar";
sha256 = "0zr87i55l92n1m8fgzvpdm40gh4fjwzsvgq47cmviqjr38kzdxv0"; sha256 = "1d2v6w93z543jnmz6a1kmp61rmznjnw6pvd9ia2pm42rzhsgydy5";
}; };
packageRequires = []; packageRequires = [];
meta = { meta = {
@ -14,10 +14,10 @@
}) {}; }) {};
org-plus-contrib = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild { org-plus-contrib = callPackage ({ elpaBuild, fetchurl, lib }: elpaBuild {
pname = "org-plus-contrib"; pname = "org-plus-contrib";
version = "20160516"; version = "20160725";
src = fetchurl { src = fetchurl {
url = "http://orgmode.org/elpa/org-plus-contrib-20160516.tar"; url = "http://orgmode.org/elpa/org-plus-contrib-20160725.tar";
sha256 = "1g1a9qsn1i1fh5ppa2jimfqvzkd7rhq5a7xz73lkaw8j3niqy62s"; sha256 = "0bxxbcln7npffvd947052sjp59ypxdfwkp2ja7mbs28pzzb25xxi";
}; };
packageRequires = []; packageRequires = [];
meta = { meta = {

View file

@ -31,7 +31,7 @@ let
buildInputs = x.buildInputs ++ [ makeWrapper ]; buildInputs = x.buildInputs ++ [ makeWrapper ];
installPhase = x.installPhase + '' installPhase = x.installPhase + ''
wrapProgram "$out/bin/android-studio" \ wrapProgram "$out/bin/android-studio" \
--set ANDROID_HOME "${androidsdk}/libexec/android-sdk-linux/" \ --set ANDROID_HOME "${androidsdk}/libexec/" \
--set LD_LIBRARY_PATH "${stdenv.cc.cc.lib}/lib" # Gradle installs libnative-platform.so in ~/.gradle, that requires libstdc++.so.6 --set LD_LIBRARY_PATH "${stdenv.cc.cc.lib}/lib" # Gradle installs libnative-platform.so in ~/.gradle, that requires libstdc++.so.6
''; '';
}); });

View file

@ -0,0 +1,33 @@
{ stdenv, fetchFromGitHub, ncurses, boost, asciidoc, docbook_xsl, libxslt }:
with stdenv.lib;
stdenv.mkDerivation rec {
name = "kakoune-nightly-${version}";
version = "2016-07-26";
src = fetchFromGitHub {
repo = "kakoune";
owner = "mawww";
rev = "0d2c5072b083a893843e4fa87f9f702979069e14";
sha256 = "01qqs5yr9xvvklg3gg45lgnyh6gji28m854mi1snzvjd7fksf50n";
};
buildInputs = [ ncurses boost asciidoc docbook_xsl libxslt ];
buildPhase = ''
sed -ie 's#--no-xmllint#--no-xmllint --xsltproc-opts="--nonet"#g' src/Makefile
export PREFIX=$out
(cd src && make )
'';
installPhase = ''
(cd src && make install)
'';
meta = {
homepage = http://kakoune.org/;
description = "A vim inspired text editor";
license = licenses.publicDomain;
maintainers = with maintainers; [ vrthra ];
platforms = platforms.linux;
};
}

View file

@ -12,10 +12,10 @@ with stdenv.lib;
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "nano-${version}"; name = "nano-${version}";
version = "2.6.1"; version = "2.6.2";
src = fetchurl { src = fetchurl {
url = "https://nano-editor.org/dist/v2.6/${name}.tar.gz"; url = "https://nano-editor.org/dist/v2.6/${name}.tar.gz";
sha256 = "56f2ba1c532647bee36abd5f87a714400af0be084cf857a65bc8f41a0dc28fe5"; sha256 = "11c9iqiah4q7q3ndn7z9192a796vp4fffkg27s6q1dn8avp06dj5";
}; };
nativeBuildInputs = [ texinfo ] ++ optional enableNls gettext; nativeBuildInputs = [ texinfo ] ++ optional enableNls gettext;
buildInputs = [ ncurses ]; buildInputs = [ ncurses ];

View file

@ -3,11 +3,11 @@
assert stdenv.isLinux; assert stdenv.isLinux;
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "nedit-5.6"; name = "nedit-5.6a";
src = fetchurl { src = fetchurl {
url = "mirror://sourceforge/nedit/nedit-source/${name}-src.tar.gz"; url = "mirror://sourceforge/nedit/nedit-source/${name}-src.tar.gz";
sha256 = "023hwpqc57mnzvg6p7jda6193afgjzxzajlhwhqvk3jq2kdv6zna"; sha256 = "1v8y8vwj3kn91crsddqkz843y6csgw7wkjnd3zdcb4bcrf1pjrsk";
}; };
buildInputs = [ xlibsWrapper motif libXpm ]; buildInputs = [ xlibsWrapper motif libXpm ];

View file

@ -0,0 +1,31 @@
{ stdenv, fetchFromGitHub, xlibsWrapper, motif }:
stdenv.mkDerivation rec {
name = "catclock-2015-10-04";
src = fetchFromGitHub {
owner = "BarkyTheDog";
repo = "catclock";
rev = "d20b8825b38477a144e8a2a4bbd4779adb3620ac";
sha256 = "0fiv9rj8p8mifv24cxljdrrmh357q70zmzdci9bpbxnhs1gdpr63";
};
preInstall = ''
mkdir -p $out/bin
mkdir -p $out/share/man/man1
cp xclock.man $out/share/man/man1/xclock.1
'';
makeFlags = [
"DESTINATION=$(out)/bin/"
];
buildInputs = [ xlibsWrapper motif ];
meta = with stdenv.lib; {
homepage = http://codefromabove.com/2014/05/catclock/;
license = with licenses; mit;
maintainers = with maintainers; [ ramkromberg ];
platforms = with platforms; linux;
};
}

View file

@ -1,16 +1,20 @@
{ stdenv, fetchurl, pkgs, python2Packages }: { stdenv, fetchurl, glibcLocales, python3Packages }:
python2Packages.buildPythonApplication rec { python3Packages.buildPythonApplication rec {
version = "0.9.0"; version = "0.11.1";
name = "khard-${version}"; name = "khard-${version}";
namePrefix = ""; namePrefix = "";
src = fetchurl { src = fetchurl {
url = "https://github.com/scheibler/khard/archive/v${version}.tar.gz"; url = "https://github.com/scheibler/khard/archive/v${version}.tar.gz";
sha256 = "1cj6rlvbk05cfjkl1lnyvq12sb847jjwqy5j8906p2b2x4wq72qi"; sha256 = "0055xx9icmsr6l7v0iqrndmygygdpdv10550w6pyrb96svzhry27";
}; };
propagatedBuildInputs = with python2Packages; [ # setup.py reads the UTF-8 encoded readme.
LC_ALL = "en_US.UTF-8";
buildInputs = [ glibcLocales ];
propagatedBuildInputs = with python3Packages; [
atomicwrites atomicwrites
configobj configobj
vobject vobject
@ -18,6 +22,9 @@ python2Packages.buildPythonApplication rec {
pyyaml pyyaml
]; ];
# Fails; but there are no tests anyway.
doCheck = false;
meta = { meta = {
homepage = https://github.com/scheibler/khard; homepage = https://github.com/scheibler/khard;
description = "Console carddav client"; description = "Console carddav client";

View file

@ -7,20 +7,15 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "lenmus-${version}"; name = "lenmus-${version}";
version = "5.4.1"; version = "5.4.2";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "lenmus"; owner = "lenmus";
repo = "lenmus"; repo = "lenmus";
rev = "Release_${version}"; rev = "Release_${version}";
sha256 = "03xar8x38x20cns2gnv34jp0hw0k16sa62kkfhka9iiiw90wfyrp"; sha256 = "1n639xr1qxx6rhqs0c6sjxp3bv8cwkmw1vfk1cji7514gj2a9v3p";
}; };
postPatch = ''
substituteInPlace CMakeLists.txt \
--replace "DESTINATION \"/usr/share" "DESTINATION \"$out/share"
'';
cmakeFlags = [ cmakeFlags = [
"-DCMAKE_INSALL_PREFIX=$out" "-DCMAKE_INSALL_PREFIX=$out"
]; ];

View file

@ -1,17 +1,21 @@
{ stdenv, fetchurl, cmake, boost }: { stdenv, fetchFromGitHub, cmake, boost, miniupnpc, pkgconfig, unbound }:
let let
version = "0.8.8.4"; version = "0.9.4";
in in
stdenv.mkDerivation { stdenv.mkDerivation {
name = "monero-${version}"; name = "monero-${version}";
src = fetchurl { src = fetchFromGitHub {
url = "https://github.com/monero-project/bitmonero/archive/v${version}.tar.gz"; owner = "monero-project";
sha256 = "0bbhqjjzh922aymjqrnl2hd3r8x6p7x5aa5jidv3l4d77drhlgzy"; repo = "bitmonero";
rev = "v${version}";
sha256 = "1qzpy1mxz0ky6hfk1gf67ybbr9xy6p6irh6zwri35h1gb97sbc3c";
}; };
buildInputs = [ cmake boost ]; nativeBuildInputs = [ cmake pkgconfig ];
buildInputs = [ boost miniupnpc unbound ];
# these tests take a long time and don't # these tests take a long time and don't
# always complete in the build environment # always complete in the build environment
@ -20,14 +24,17 @@ stdenv.mkDerivation {
NIX_CFLAGS_COMPILE = "-Wno-error=cpp"; NIX_CFLAGS_COMPILE = "-Wno-error=cpp";
doCheck = false; doCheck = false;
checkTarget = "test-release"; # this would be the target
installPhase = '' installPhase = ''
install -Dt "$out/bin/" \ install -Dt "$out/bin/" \
src/bitmonerod \ bin/bitmonerod \
src/connectivity_tool \ bin/blockchain_converter \
src/simpleminer \ bin/blockchain_dump \
src/simplewallet bin/blockchain_export \
bin/blockchain_import \
bin/cn_deserialize \
bin/simpleminer \
bin/simplewallet
''; '';
meta = with stdenv.lib; { meta = with stdenv.lib; {

View file

@ -16,11 +16,13 @@ stdenv.mkDerivation {
postUnpack = "sourceRoot=\${sourceRoot}/src"; postUnpack = "sourceRoot=\${sourceRoot}/src";
configurePhase = '' configurePhase = ''
runHook preConfigure
qmake $qmakeFlags \ qmake $qmakeFlags \
PREFIX=$out \ PREFIX=$out \
DESKTOPDIR=$out/share/applications \ DESKTOPDIR=$out/share/applications \
ICONDIR=$out/share/pixmaps \ ICONDIR=$out/share/pixmaps \
QtBitcoinTrader_Desktop.pro QtBitcoinTrader_Desktop.pro
runHook postConfigure
''; '';
meta = with stdenv.lib; meta = with stdenv.lib;

View file

@ -1,14 +1,14 @@
{ stdenv, fetchFromGitHub, pkgs, lib, python, pythonPackages }: { stdenv, fetchFromGitHub, pkgs, lib, python, pythonPackages }:
pythonPackages.buildPythonApplication rec { pythonPackages.buildPythonApplication rec {
version = "1.9.0"; version = "1.10.0";
name = "rtv-${version}"; name = "rtv-${version}";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "michael-lazar"; owner = "michael-lazar";
repo = "rtv"; repo = "rtv";
rev = "v${version}"; rev = "v${version}";
sha256 = "18r3i2zlcprj6d4nzhhbd6sm1fs2x28924xsm6lcxa1643gkyb7i"; sha256 = "1gm5jyqqssf69lfx0svhzsb9m0dffm6zsf9jqnwh6gjihfz25a45";
}; };
propagatedBuildInputs = with pythonPackages; [ propagatedBuildInputs = with pythonPackages; [
@ -18,6 +18,7 @@ pythonPackages.buildPythonApplication rec {
praw praw
kitchen kitchen
python.modules.curses python.modules.curses
praw
] ++ lib.optional (!pythonPackages.isPy3k) futures; ] ++ lib.optional (!pythonPackages.isPy3k) futures;
meta = with lib; { meta = with lib; {

View file

@ -2,13 +2,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "timewarrior-${version}"; name = "timewarrior-${version}";
version = "0.9.5.alpha"; version = "1.0.0.beta1";
enableParallelBuilding = true; enableParallelBuilding = true;
src = fetchurl { src = fetchurl {
url = "https://taskwarrior.org/download/timew-${version}.tar.gz"; url = "https://taskwarrior.org/download/timew-${version}.tar.gz";
sha256 = "154d5sgxcmz1b7g401c7s6sf7pkk0hh74dx6rss3vkamsjc4wgl8"; sha256 = "1gkh07mw8hiqslw8ps35r9lp5jbdy93s0sdrcbp34dd5h99qx587";
}; };
nativeBuildInputs = [ cmake ]; nativeBuildInputs = [ cmake ];

View file

@ -1,4 +1,6 @@
{ stdenv, fetchurl, xorg, ncurses, freetype, fontconfig, pkgconfig }: { stdenv, fetchurl, xorg, ncurses, freetype, fontconfig, pkgconfig
, enableDecLocator ? true
}:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "xterm-325"; name = "xterm-325";
@ -27,9 +29,8 @@ stdenv.mkDerivation rec {
"--enable-doublechars" "--enable-doublechars"
"--enable-luit" "--enable-luit"
"--enable-mini-luit" "--enable-mini-luit"
"--enable-dec-locator"
"--with-tty-group=tty" "--with-tty-group=tty"
]; ] ++ stdenv.lib.optional enableDecLocator "--enable-dec-locator";
# Work around broken "plink.sh". # Work around broken "plink.sh".
NIX_LDFLAGS = "-lXmu -lXt -lICE -lX11 -lfontconfig"; NIX_LDFLAGS = "-lXmu -lXt -lICE -lX11 -lfontconfig";

View file

@ -1,20 +1,20 @@
{ stdenv, fetchurl, cmake, pkgconfig, intltool, vala, makeWrapper { stdenv, fetchurl, cmake, pkgconfig, intltool, vala, makeWrapper
, gtk3, webkitgtk, librsvg, libnotify, sqlite , gtk3, webkitgtk, librsvg, libnotify, sqlite
, glib_networking, gsettings_desktop_schemas, libsoup , glib_networking, gsettings_desktop_schemas, libsoup, pcre, gnome3
}: }:
let let
version = "0.5.8"; version = "0.5.11";
in in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "midori-${version}"; name = "midori-${version}";
meta = { meta = with stdenv.lib; {
description = "Lightweight WebKitGTK+ web browser"; description = "Lightweight WebKitGTK+ web browser";
homepage = "http://midori-browser.org"; homepage = "http://midori-browser.org";
license = stdenv.lib.licenses.lgpl21Plus; license = licenses.lgpl21Plus;
platforms = stdenv.lib.platforms.linux; platforms = platforms.linux;
maintainers = with stdenv.lib.maintainers; [ raskin ]; maintainers = with maintainers; [ raskin ramkromberg ];
}; };
src = fetchurl { src = fetchurl {
@ -23,21 +23,21 @@ stdenv.mkDerivation rec {
"http://mirrors-ru.go-parts.com/blfs/conglomeration/midori/midori_${version}_all_.tar.bz2" "http://mirrors-ru.go-parts.com/blfs/conglomeration/midori/midori_${version}_all_.tar.bz2"
]; ];
name = "midori_${version}_all_.tar.bz2"; name = "midori_${version}_all_.tar.bz2";
sha256 = "10ckm98rfqfbwr84b8mc1ssgj84wjgkr4dadvx2l7c64sigi66dg"; sha256 = "0gcwqkcyliqz10i33ww3wl02mmfnl7jzl2d493l4l53ipsb1l6cn";
}; };
sourceRoot = ".";
buildInputs = [ buildInputs = [
cmake pkgconfig intltool vala makeWrapper cmake pkgconfig intltool vala makeWrapper
webkitgtk librsvg libnotify sqlite gsettings_desktop_schemas webkitgtk librsvg libnotify sqlite gsettings_desktop_schemas pcre gnome3.gcr
(libsoup.override {gnomeSupport = true;}) (libsoup.override {gnomeSupport = true; valaSupport = true;})
]; ];
cmakeFlags = '' cmakeFlags = [
-DHALF_BRO_INCOM_WEBKIT2=ON "-DCMAKE_BUILD_TYPE=Release"
-DUSE_ZEITGEIST=OFF "-DUSE_ZEITGEIST=OFF"
''; "-DHALF_BRO_INCOM_WEBKIT2=OFF"
"-DUSE_GTK3=1"
];
NIX_LDFLAGS="-lX11"; NIX_LDFLAGS="-lX11";

View file

@ -17,11 +17,11 @@ in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "bluejeans-${version}"; name = "bluejeans-${version}";
version = "2.160.63.8"; version = "2.160.66.8";
src = fetchurl { src = fetchurl {
url = "https://swdl.bluejeans.com/skinny/bjnplugin_${version}-1_amd64.deb"; url = "https://swdl.bluejeans.com/skinny/bjnplugin_${version}-1_amd64.deb";
sha256 = "1sfz9xvvrbw7gg7fxxwg9wmgbxgv3fa14p7i4m85mg10l3qxaqfc"; sha256 = "1wf9jgd2717gfzm2wb0hxj4i76kczhgnwfhhpiy15zkqdcsmczsr";
}; };
phases = [ "unpackPhase" "installPhase" "fixupPhase" ]; phases = [ "unpackPhase" "installPhase" "fixupPhase" ];

View file

@ -2,7 +2,7 @@
, jinja2, pygments, pyyaml, pypeg2, gst-plugins-base, gst-plugins-good , jinja2, pygments, pyyaml, pypeg2, gst-plugins-base, gst-plugins-good
, gst-plugins-bad, gst-libav, wrapGAppsHook, glib_networking, makeQtWrapper }: , gst-plugins-bad, gst-libav, wrapGAppsHook, glib_networking, makeQtWrapper }:
let version = "0.7.0"; in let version = "0.8.1"; in
buildPythonApplication rec { buildPythonApplication rec {
name = "qutebrowser-${version}"; name = "qutebrowser-${version}";
@ -10,7 +10,7 @@ buildPythonApplication rec {
src = fetchurl { src = fetchurl {
url = "https://github.com/The-Compiler/qutebrowser/releases/download/v${version}/${name}.tar.gz"; url = "https://github.com/The-Compiler/qutebrowser/releases/download/v${version}/${name}.tar.gz";
sha256 = "17xvv4h86frcn7zmi0y9gjsz2cazlb59v3dqi9mdc11w00b1cqbn"; sha256 = "18hj95pgybpavwwnyczh6s94spljfngz684y1jlhqnpbp14pkflh";
}; };
# Needs tox # Needs tox

View file

@ -48,6 +48,9 @@ in stdenv.mkDerivation rec {
substituteInPlace 3rdparty/libprocess/3rdparty/stout/include/stout/posix/os.hpp \ substituteInPlace 3rdparty/libprocess/3rdparty/stout/include/stout/posix/os.hpp \
--replace '"sh"' '"${bash}/bin/bash"' --replace '"sh"' '"${bash}/bin/bash"'
substituteInPlace 3rdparty/libprocess/3rdparty/stout/include/stout/os/posix/shell.hpp \
--replace '"sh"' '"${bash}/bin/bash"'
substituteInPlace 3rdparty/libprocess/3rdparty/stout/include/stout/os/posix/fork.hpp \ substituteInPlace 3rdparty/libprocess/3rdparty/stout/include/stout/os/posix/fork.hpp \
--replace '"sh"' '"${bash}/bin/bash"' --replace '"sh"' '"${bash}/bin/bash"'

View file

@ -1,13 +1,13 @@
{ stdenv, fetchurl, dbus, gnutls, wxGTK30, libidn, tinyxml, gettext { stdenv, fetchurl, dbus, gnutls, wxGTK30, libidn, tinyxml, gettext
, pkgconfig, xdg_utils, gtk2, sqlite, pugixml, libfilezilla, nettle }: , pkgconfig, xdg_utils, gtk2, sqlite, pugixml, libfilezilla, nettle }:
let version = "3.19.0"; in let version = "3.20.0"; in
stdenv.mkDerivation { stdenv.mkDerivation {
name = "filezilla-${version}"; name = "filezilla-${version}";
src = fetchurl { src = fetchurl {
url = "mirror://sourceforge/project/filezilla/FileZilla_Client/${version}/FileZilla_${version}_src.tar.bz2"; url = "mirror://sourceforge/project/filezilla/FileZilla_Client/${version}/FileZilla_${version}_src.tar.bz2";
sha256 = "0827z1jmn8pkzrcpjgh5yh2r23vgv73yb4rikraxa9i7l118g9l2"; sha256 = "0clfw266c980w2kjl4xm56d80ixpv8lj675p58hv2bz70ihxpwaa";
}; };
configureFlags = [ configureFlags = [

View file

@ -2,14 +2,14 @@
, cyrus_sasl, gdbm, gpgme, kerberos, libidn, notmuch, openssl }: , cyrus_sasl, gdbm, gpgme, kerberos, libidn, notmuch, openssl }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
version = "20160611"; version = "20160723";
name = "neomutt-${version}"; name = "neomutt-${version}";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "neomutt"; owner = "neomutt";
repo = "neomutt"; repo = "neomutt";
rev = "neomutt-${version}"; rev = "neomutt-${version}";
sha256 = "12487hydn9x1yyxzc0x7hssgjwji3i64glmbi7synjc8arfqc5zs"; sha256 = "16xjyad435n03qvmqysgsf4k36cfcv2k4irg92ajhm4dbz9d9l3j";
}; };
buildInputs = buildInputs =

View file

@ -11,7 +11,7 @@ assert withQt -> !withGtk && qt4 != null;
with stdenv.lib; with stdenv.lib;
let let
version = "2.0.4"; version = "2.0.5";
variant = if withGtk then "gtk" else if withQt then "qt" else "cli"; variant = if withGtk then "gtk" else if withQt then "qt" else "cli";
in in
@ -20,7 +20,7 @@ stdenv.mkDerivation {
src = fetchurl { src = fetchurl {
url = "http://www.wireshark.org/download/src/all-versions/wireshark-${version}.tar.bz2"; url = "http://www.wireshark.org/download/src/all-versions/wireshark-${version}.tar.bz2";
sha256 = "19g11m8m8qd7dkcvcb27lyppklg608d9ap7wr3mr88clm4nwiacy"; sha256 = "02xi3fz8blcz9cf75rs11g7bijk06wm45vpgnksp72c2609j9q0c";
}; };
buildInputs = [ buildInputs = [

View file

@ -3,10 +3,10 @@
stdenv.mkDerivation (rec { stdenv.mkDerivation (rec {
name = "unison-2.48.3"; name = "unison-2.48.4";
src = fetchurl { src = fetchurl {
url = "http://www.seas.upenn.edu/~bcpierce/unison/download/releases/stable/${name}.tar.gz"; url = "http://www.seas.upenn.edu/~bcpierce/unison/download/releases/stable/${name}.tar.gz";
sha256 = "10sln52rnnsj213jy3166m0q97qpwnrwl6mm529xfy10x3xkq3gl"; sha256 = "30aa53cd671d673580104f04be3cf81ac1e20a2e8baaf7274498739d59e99de8";
}; };
buildInputs = [ ocaml makeWrapper ncurses ]; buildInputs = [ ocaml makeWrapper ncurses ];

View file

@ -1,13 +1,14 @@
{ stdenv, fetchgit, go }: { stdenv, fetchFromGitHub, go }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
version = "0.14.0"; version = "0.14.3";
name = "syncthing-${version}"; name = "syncthing-${version}";
src = fetchgit { src = fetchFromGitHub {
url = https://github.com/syncthing/syncthing; owner = "syncthing";
rev = "refs/tags/v${version}"; repo = "syncthing";
sha256 = "15l3q3r6i3q95i474winswx4y149b5ic7xhpnj52s78fxd4va2q2"; rev = "v${version}";
sha256 = "114i0911h3q6dn3j9x2qcm5lzpqclvrpf5vk87qpqp9qy62jp3az";
}; };
buildInputs = [ go ]; buildInputs = [ go ];
@ -32,7 +33,7 @@ stdenv.mkDerivation rec {
homepage = https://www.syncthing.net/; homepage = https://www.syncthing.net/;
description = "Open Source Continuous File Synchronization"; description = "Open Source Continuous File Synchronization";
license = stdenv.lib.licenses.mpl20; license = stdenv.lib.licenses.mpl20;
maintainers = with stdenv.lib.maintainers; [pshendry]; maintainers = with stdenv.lib.maintainers; [ pshendry joko peterhoeg ];
platforms = with stdenv.lib.platforms; linux ++ freebsd ++ openbsd ++ netbsd; platforms = with stdenv.lib.platforms; linux ++ freebsd ++ openbsd ++ netbsd;
}; };
} }

View file

@ -0,0 +1,38 @@
[
{
"goPackagePath": "github.com/cenkalti/backoff",
"fetch": {
"type": "git",
"url": "https://github.com/cenkalti/backoff",
"rev": "cdf48bbc1eb78d1349cbda326a4a037f7ba565c6",
"sha256": "0dg7hvpv0a1db8qriygz1jqgp16v8k505b197x9902z7z6lldgbh"
}
},
{
"goPackagePath": "github.com/gobwas/glob",
"fetch": {
"type": "git",
"url": "https://github.com/gobwas/glob",
"rev": "ce6abff51712df5da11095fb41dd4b0353559797",
"sha256": "1gxv4nnn3f9hw1ncdmhsr8fbfdma2h713ima7b4k28gxydfa8i9m"
}
},
{
"goPackagePath": "github.com/syncthing/syncthing",
"fetch": {
"type": "git",
"url": "https://github.com/syncthing/syncthing",
"rev": "66a506e72b9dcc749d09a03cb120ba86bbf3d7f8",
"sha256": "0is4f1r3im2bbmbca9fafzxffikxaf86vd6f851831fk5wi4pzw9"
}
},
{
"goPackagePath": "github.com/zillode/notify",
"fetch": {
"type": "git",
"url": "https://github.com/zillode/notify",
"rev": "2da5cc9881e8f16bab76b63129c7781898f97d16",
"sha256": "0qwsj730p5mivp2xw9zr5vq8xr7rr9cxjmi564wgmsn7dcvqnr40"
}
}
]

View file

@ -0,0 +1,26 @@
{ stdenv, buildGoPackage, fetchFromGitHub }:
buildGoPackage rec {
name = "syncthing-inotify-${version}";
version = "0.8.3";
goPackagePath = "github.com/syncthing/syncthing-inotify";
src = fetchFromGitHub {
owner = "syncthing";
repo = "syncthing-inotify";
rev = "v${version}";
sha256 = "194pbz9zzxaz0vri93czpbsxl85znlba2gy61mjgyr0dm2h4s6yw";
};
goDeps = ./inotify-deps.json;
meta = {
homepage = https://github.com/syncthing/syncthing-inotify;
description = "File watcher intended for use with Syncthing";
license = stdenv.lib.licenses.mpl20;
maintainers = with stdenv.lib.maintainers; [ joko ];
platforms = with stdenv.lib.platforms; linux ++ freebsd ++ openbsd ++ netbsd;
};
}

View file

@ -1,23 +1,74 @@
{stdenv, fetchurl, xproto, motif, libX11, libXt, libXpm, bison, flex}: { stdenv, fetchurl
, xproto, motif, libX11, libXt, libXpm, bison
, flex, automake, autoconf, libtool
}:
stdenv.mkDerivation { stdenv.mkDerivation rec {
name = "alliance-5.0-20070718"; name = "alliance-${version}";
version = "5.1.1";
src = fetchurl { src = fetchurl {
url = http://www-asim.lip6.fr/pub/alliance/distribution/5.0/alliance-5.0-20070718.tar.gz; url = "http://www-asim.lip6.fr/pub/alliance/distribution/5.0/${name}.tar.bz2";
sha256 = "4e17c8f9f4d344061166856d47e58527c6ae870fda0c73b5ba0200967d23af9f"; sha256 = "046c9qwl1vbww0ljm4xyxf5jpz9nq62b2q0wdz9xjimgh4c207w1";
}; };
buildInputs = [ xproto motif xproto libX11 libXt libXpm bison flex];
patchPhase = '' nativeBuildInputs = [ libtool automake autoconf flex ];
sed -i -e \ buildInputs = [ xproto motif xproto libX11 libXt libXpm bison ];
"s/private: static void operator delete/public: static void operator delete/" \
nero/src/ADefs.h sourceRoot = "alliance/src/";
configureFlags = [
"--prefix=$(out)"
"--disable-static"
];
preConfigure = ''
mkdir -p $out/etc
#texlive for docs seems extreme
mkdir -p $out/share/alliance
mv ./documentation $out/share/alliance
substituteInPlace autostuff \
--replace "$newdirs documentation" "$newdirs" \
--replace documentation Solaris
substituteInPlace sea/src/DEF_grammar_lex.l \
--replace "ifndef FLEX_BETA" "if (YY_FLEX_MAJOR_VERSION <= 2) && (YY_FLEX_MINOR_VERSION < 6)"
./autostuff
''; '';
meta = { allianceInstaller = ''
description = "Complete set of free CAD tools and portable libraries for VLSI design"; #!${stdenv.shell}
homepage = http://www-asim.lip6.fr/recherche/alliance/; cp -v -r -n --no-preserve=mode $out/etc/* /etc/ > /etc/alliance-install.log
'';
allianceUnInstaller = ''
#!${stdenv.shell}
awk '{print \$3}' /etc/alliance-install.log | xargs rm
awk '{print \$3}' /etc/alliance-install.log | xargs rmdir
rm /etc/alliance-install.log
'';
postInstall = ''
sed -i "s|ALLIANCE_TOP|$out|" distrib/*.desktop
mkdir -p $out/share/applications
cp -p distrib/*.desktop $out/share/applications/
mkdir -p $out/icons/hicolor/48x48/apps/
cp -p distrib/*.png $out/icons/hicolor/48x48/apps/
echo "${allianceInstaller}" > $out/bin/alliance-install
chmod +x $out/bin/alliance-install
echo "${allianceUnInstaller}" > $out/bin/alliance-uninstall
chmod +x $out/bin/alliance-uninstall
'';
meta = with stdenv.lib; {
description = "Complete set of free CAD tools and portable libraries for VLSI design";
homepage = http://www-asim.lip6.fr/recherche/alliance/;
license = with licenses; gpl2Plus;
maintainers = with maintainers; [ ];
platforms = with platforms; linux;
}; };
} }

View file

@ -9,19 +9,17 @@ let
in in
stdenv.mkDerivation { stdenv.mkDerivation {
name = "hol_light-2015-11-02"; name = "hol_light-2016-07-23";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "jrh13"; owner = "jrh13";
repo = "hol-light"; repo = "hol-light";
rev = "10265313397476ddff4ce13e7bbb588025e7272c"; rev = "67cff936dda719f0e0ee57ab9d07c779ff664660";
sha256 = "17b6a7vk9fhppl0h366y7pw6a9sknq1a8gxqg67dzqpb47vda1n0"; sha256 = "0r85ifdvsvk2cdv7s4a0kf9ha6jdznqmz7swvp577f8r182klr28";
}; };
buildInputs = [ ocaml camlp5 ]; buildInputs = [ ocaml camlp5 ];
patches = [ ./Makefile.patch ];
installPhase = '' installPhase = ''
mkdir -p "$out/lib/hol_light" "$out/bin" mkdir -p "$out/lib/hol_light" "$out/bin"
cp -a . $out/lib/hol_light cp -a . $out/lib/hol_light

View file

@ -1,18 +1,18 @@
{ stdenv, fetchFromGitHub, cmake, gmp, mpfr, luajit, boost, python { stdenv, fetchFromGitHub, cmake, gmp, mpfr, boost, python
, gperftools, ninja, makeWrapper }: , gperftools, ninja, makeWrapper }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "lean-${version}"; name = "lean-${version}";
version = "20160117"; version = "2016-07-05";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "leanprover"; owner = "leanprover";
repo = "lean"; repo = "lean";
rev = "b2554dcb8f45899ccce84f226cd67b6460442930"; rev = "cc70845332e63a1f1be21dc1f96d17269fc85909";
sha256 = "1gr024bly92kdjky5qvcm96gn86ijakziiyrsz91h643n1iyxhms"; sha256 = "09qz2vjw7whiggvw0cdaa4i2f49wnch2sd4r43glq181ssln27d6";
}; };
buildInputs = [ gmp mpfr luajit boost cmake python gperftools ninja makeWrapper ]; buildInputs = [ gmp mpfr boost cmake python gperftools ninja makeWrapper ];
enableParallelBuilding = true; enableParallelBuilding = true;
preConfigure = '' preConfigure = ''
@ -26,11 +26,11 @@ stdenv.mkDerivation rec {
wrapProgram $out/bin/linja --prefix PATH : $out/bin:${ninja}/bin wrapProgram $out/bin/linja --prefix PATH : $out/bin:${ninja}/bin
''; '';
meta = { meta = with stdenv.lib; {
description = "Automatic and interactive theorem prover"; description = "Automatic and interactive theorem prover";
homepage = "http://leanprover.github.io"; homepage = "http://leanprover.github.io";
license = stdenv.lib.licenses.asl20; license = licenses.asl20;
platforms = stdenv.lib.platforms.unix; platforms = platforms.unix;
maintainers = [ stdenv.lib.maintainers.thoughtpolice ]; maintainers = with maintainers; [ thoughtpolice gebner ];
}; };
} }

View file

@ -1,64 +1,37 @@
x@{builderDefsPackage { stdenv, fetchurl, makeWrapper, eprover, ocaml, perl, zlib }:
, ocaml, eprover, zlib
, ...}:
builderDefsPackage
(a :
let
helperArgNames = ["stdenv" "fetchurl" "builderDefsPackage"] ++
["eprover"];
buildInputs = map (n: builtins.getAttr n x) stdenv.mkDerivation rec {
(builtins.attrNames (builtins.removeAttrs x helperArgNames)); name = "leo2-${version}";
sourceInfo = rec { version = "1.6.2";
baseName="leo2";
version = "1.6.2"; src = fetchurl {
name="${baseName}_v${version}";
url = "http://page.mi.fu-berlin.de/cbenzmueller/leo/leo2_v${version}.tgz"; url = "http://page.mi.fu-berlin.de/cbenzmueller/leo/leo2_v${version}.tgz";
hash="d46a94f5991623386eb9061cfb0d748e258359a8c690fded173d35303e0e9e3a";
};
in
rec {
src = a.fetchurl {
url = sourceInfo.url;
sha256 = "1wjpmizb181iygnd18lx7p77fwaci2clgzs5ix5j51cc8f3pazmv"; sha256 = "1wjpmizb181iygnd18lx7p77fwaci2clgzs5ix5j51cc8f3pazmv";
}; };
name = "${sourceInfo.baseName}-${sourceInfo.version}"; buildInputs = [ makeWrapper eprover ocaml perl zlib ];
inherit buildInputs;
phaseNames = ["makeInstallationDir" "doUnpack" "doMake" "doFinalize"]; sourceRoot = "leo2/src";
makeInstallationDir = a.fullDepEntry ('' preConfigure = "patchShebangs configure";
mkdir -p "$out/share/leo2/build-dir"
cd "$out/share/leo2/build-dir"
'') ["minInit" "defEnsureDir"];
goSrcDir = "cd src/"; buildFlags = [ "opt" ];
doFinalize = a.fullDepEntry ('' preInstall = "mkdir -p $out/bin";
mkdir -p "$out/bin"
echo -e "#! /bin/sh\\n$PWD/../bin/leo --atprc $out/etc/leoatprc \"\$@\"\\n" > "$out/bin/leo" postInstall = ''
chmod a+x "$out/bin/leo"
mkdir -p "$out/etc" mkdir -p "$out/etc"
echo -e "e = ${eprover}/bin/eprover\\nepclextract = ${eprover}/bin/epclextract" > "$out/etc/leoatprc" echo -e "e = ${eprover}/bin/eprover\\nepclextract = ${eprover}/bin/epclextract" > "$out/etc/leoatprc"
'') ["minInit" "doMake" "defEnsureDir"];
makeFlags = [ wrapProgram $out/bin/leo \
"SHELL=${a.stdenv.shell}" --add-flags "--atprc $out/etc/leoatprc"
]; '';
meta = { meta = with stdenv.lib; {
description = "A high-performance typed higher order prover"; description = "A high-performance typed higher order prover";
maintainers = with a.lib.maintainers; maintainers = [ maintainers.raskin ];
[ platforms = platforms.linux;
raskin license = licenses.bsd3;
]; homepage = http://www.leoprover.org/;
platforms = with a.lib.platforms;
linux;
license = a.lib.licenses.bsd3;
inherit (sourceInfo) version;
homepage = "http://page.mi.fu-berlin.de/cbenzmueller/leo/";
downloadPage = "http://page.mi.fu-berlin.de/cbenzmueller/leo/download.html";
}; };
}) x }

View file

@ -0,0 +1,75 @@
{ stdenv, fetchurl, lib, xlibs }:
let
name = "scilab-bin-${ver}";
ver = "5.5.2";
majorVer = builtins.elemAt (lib.splitString "." ver) 0;
badArch = throw "${name} requires i686-linux or x86_64-linux";
architecture =
if stdenv.system == "i686-linux" then
"i686"
else if stdenv.system == "x86_64-linux" then
"x86_64"
else
badArch;
in
stdenv.mkDerivation rec {
inherit name;
src = fetchurl {
url = "http://www.scilab.org/download/${ver}/scilab-${ver}.bin.linux-${architecture}.tar.gz";
sha256 =
if stdenv.system == "i686-linux" then
"6143a95ded40411a35630a89b365875a6526cd4db1e2865ac5612929a7db937a"
else if stdenv.system == "x86_64-linux" then
"c0dd7a5f06ec7a1df7a6b1b8b14407ff7f45e56821dff9b3c46bd09d4df8d350"
else
badArch;
};
libPath = lib.makeLibraryPath [
stdenv.cc.cc
xlibs.libX11
xlibs.libXext
xlibs.libXi
xlibs.libXrender
xlibs.libXtst
xlibs.libXxf86vm
];
phases = [ "unpackPhase" "fixupPhase" "installPhase" ];
fixupPhase = ''
sed -i 's|\$(/bin/|$(|g' bin/scilab
sed -i 's|/usr/bin/||g' bin/scilab
sci="$out/opt/scilab-${ver}"
fullLibPath="$sci/lib/scilab:$sci/lib/thirdparty:$libPath"
fullLibPath="$fullLibPath:$sci/lib/thirdparty/redist"
patchelf --set-interpreter $(cat $NIX_CC/nix-support/dynamic-linker) \
--set-rpath "$fullLibPath" bin/scilab-bin
find . -name '*.so' -type f | while read file; do
patchelf --set-rpath "$fullLibPath" "$file" 2>/dev/null
done
'';
installPhase = ''
mkdir -p "$out/opt/scilab-${ver}"
cp -r . "$out/opt/scilab-${ver}/"
mkdir "$out/bin"
ln -s "$out/opt/scilab-${ver}/bin/scilab" "$out/bin/scilab-${ver}"
ln -s "scilab-${ver}" "$out/bin/scilab-${majorVer}"
'';
meta = {
homepage = http://www.scilab.org/;
description = "Scientific software package for numerical computations (Matlab lookalike)";
# see http://www.scilab.org/legal_notice
license = "Scilab";
};
}

View file

@ -1,16 +1,23 @@
{ stdenv, fetchurl, fetchpatch, cmake, pkgconfig, python { stdenv, fetchurl, fetchpatch, cmake, pkgconfig, python
, libX11, libXpm, libXft, libXext, zlib, lzma }: , libX11, libXpm, libXft, libXext, zlib, lzma, gsl }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "root-${version}"; name = "root-${version}";
version = "6.04.16"; version = "6.04.18";
src = fetchurl { src = fetchurl {
url = "https://root.cern.ch/download/root_v${version}.source.tar.gz"; url = "https://root.cern.ch/download/root_v${version}.source.tar.gz";
sha256 = "0f58dg83aqhggkxmimsfkd1qyni2vhmykq4qa89cz6jr9p73i1vm"; sha256 = "00f3v3l8nimfkcxpn9qpyh3h23na0mi4wkds2y5gwqh8wh3jryq9";
}; };
buildInputs = [ cmake pkgconfig python libX11 libXpm libXft libXext zlib lzma ]; buildInputs = [ cmake pkgconfig python libX11 libXpm libXft libXext zlib lzma gsl ];
patches = [
(fetchpatch {
url = "https://github.com/root-mirror/root/commit/ee9964210c56e7c1868618a4434c5340fef38fe4.patch";
sha256 = "186i7ni75yvjydy6lpmaplqxfb5z2019bgpbhff1n6zn2qlrff2r";
})
];
preConfigure = '' preConfigure = ''
patchShebangs build/unix/ patchShebangs build/unix/
@ -23,6 +30,8 @@ stdenv.mkDerivation rec {
] ]
++ stdenv.lib.optional (stdenv.cc.libc != null) "-DC_INCLUDE_DIRS=${stdenv.cc.libc}/include"; ++ stdenv.lib.optional (stdenv.cc.libc != null) "-DC_INCLUDE_DIRS=${stdenv.cc.libc}/include";
enableParallelBuilding = true;
meta = { meta = {
homepage = "https://root.cern.ch/"; homepage = "https://root.cern.ch/";
description = "A data analysis framework"; description = "A data analysis framework";

View file

@ -15,6 +15,7 @@ let
perlPackages.MIMEBase64 perlPackages.AuthenSASL perlPackages.MIMEBase64 perlPackages.AuthenSASL
perlPackages.DigestHMAC perlPackages.DigestHMAC
]; ];
gitwebPerlLibs = with perlPackages; [ CGI HTMLParser ];
}; };
in in

View file

@ -2,7 +2,7 @@
, gnugrep, gzip, openssh , gnugrep, gzip, openssh
, asciidoc, texinfo, xmlto, docbook2x, docbook_xsl, docbook_xml_dtd_45 , asciidoc, texinfo, xmlto, docbook2x, docbook_xsl, docbook_xml_dtd_45
, libxslt, tcl, tk, makeWrapper, libiconv , libxslt, tcl, tk, makeWrapper, libiconv
, svnSupport, subversionClient, perlLibs, smtpPerlLibs , svnSupport, subversionClient, perlLibs, smtpPerlLibs, gitwebPerlLibs
, guiSupport , guiSupport
, withManual ? true , withManual ? true
, pythonSupport ? true , pythonSupport ? true
@ -10,7 +10,7 @@
}: }:
let let
version = "2.9.1"; version = "2.9.2";
svn = subversionClient.override { perlBindings = true; }; svn = subversionClient.override { perlBindings = true; };
in in
@ -19,7 +19,7 @@ stdenv.mkDerivation {
src = fetchurl { src = fetchurl {
url = "https://www.kernel.org/pub/software/scm/git/git-${version}.tar.xz"; url = "https://www.kernel.org/pub/software/scm/git/git-${version}.tar.xz";
sha256 = "18l2jb4bkp9ljz6p2aviwzxqyzza9z3v6h1pnkz7kjf1fay61zp8"; sha256 = "1d9dmhgzcnwc2jbib4q23ypjbnw1gh1w8gif63qldwkpixj4dxgq";
}; };
hardeningDisable = [ "format" ]; hardeningDisable = [ "format" ];
@ -104,6 +104,11 @@ stdenv.mkDerivation {
# gitweb.cgi, need to patch so that it's found # gitweb.cgi, need to patch so that it's found
sed -i -e "s|'compressor' => \['gzip'|'compressor' => ['${gzip}/bin/gzip'|" \ sed -i -e "s|'compressor' => \['gzip'|'compressor' => ['${gzip}/bin/gzip'|" \
$out/share/gitweb/gitweb.cgi $out/share/gitweb/gitweb.cgi
# Give access to CGI.pm and friends (was removed from perl core in 5.22)
for p in ${stdenv.lib.concatStringsSep " " gitwebPerlLibs}; do
sed -i -e "/use CGI /i use lib \"$p/lib/perl5/site_perl\";" \
"$out/share/gitweb/gitweb.cgi"
done
# Also put git-http-backend into $PATH, so that we can use smart # Also put git-http-backend into $PATH, so that we can use smart
# HTTP(s) transports for pushing # HTTP(s) transports for pushing

View file

@ -1,11 +1,11 @@
{ stdenv, fetchurl, itstool, buildPythonApplication, python27, intltool, makeWrapper { stdenv, fetchurl, itstool, buildPythonApplication, python27, intltool, wrapGAppsHook
, libxml2, pygobject3, gobjectIntrospection, gtk3, gnome3, pycairo, cairo , libxml2, pygobject3, gobjectIntrospection, gtk3, gnome3, pycairo, cairo, file
}: }:
let let
minor = "3.16"; minor = "3.16";
version = "${minor}.1"; version = "${minor}.2";
in in
buildPythonApplication rec { buildPythonApplication rec {
@ -14,13 +14,13 @@ buildPythonApplication rec {
src = fetchurl { src = fetchurl {
url = "mirror://gnome/sources/meld/${minor}/meld-${version}.tar.xz"; url = "mirror://gnome/sources/meld/${minor}/meld-${version}.tar.xz";
sha256 = "1bec697aa1ababa315ca8241ade65dc68ea87f0d316632f590975afcf967cfab"; sha256 = "2dd3f58b95444bf721e0c912668c29cf8f47a402440b772ea12c4b9a0c94966f";
}; };
buildInputs = [ buildInputs = [
python27 intltool makeWrapper itstool libxml2 python27 intltool wrapGAppsHook itstool libxml2
gnome3.gtksourceview gnome3.gsettings_desktop_schemas pycairo cairo gnome3.gtksourceview gnome3.gsettings_desktop_schemas pycairo cairo
gnome3.defaultIconTheme gnome3.defaultIconTheme gnome3.dconf file
]; ];
propagatedBuildInputs = [ gobjectIntrospection pygobject3 gtk3 ]; propagatedBuildInputs = [ gobjectIntrospection pygobject3 gtk3 ];
@ -37,13 +37,6 @@ buildPythonApplication rec {
mv $out/share/glib-2.0 $out/share/gsettings-schemas/$name/ mv $out/share/glib-2.0 $out/share/gsettings-schemas/$name/
''; '';
preFixup = ''
wrapProgram $out/bin/meld \
--prefix GI_TYPELIB_PATH : "$GI_TYPELIB_PATH" \
--prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH:$out/share" \
--prefix GIO_EXTRA_MODULES : "${gnome3.dconf}/lib/gio/modules"
'';
patchPhase = '' patchPhase = ''
patchShebangs bin/meld patchShebangs bin/meld
''; '';

View file

@ -10,13 +10,13 @@ with stdenv.lib;
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "mkvtoolnix-${version}"; name = "mkvtoolnix-${version}";
version = "9.2.0"; version = "9.3.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "mbunkus"; owner = "mbunkus";
repo = "mkvtoolnix"; repo = "mkvtoolnix";
rev = "release-${version}"; rev = "release-${version}";
sha256 = "02w3161iqaijs3bz5w2wily9nz55xnhq1bdm2s5qi8v3sbcqd6df"; sha256 = "1vipznja07nr7gmzdbv93dv2ggmw4x1bh6xxnn13k3fk6ysqh163";
}; };
nativeBuildInputs = [ pkgconfig autoconf automake gettext ruby ]; nativeBuildInputs = [ pkgconfig autoconf automake gettext ruby ];

View file

@ -4,8 +4,8 @@
# often change with updating of git or cgit. # often change with updating of git or cgit.
# stripLen acts as the -p parameter when applying a patch. # stripLen acts as the -p parameter when applying a patch.
{ fetchurl, patchutils }: { lib, fetchurl, patchutils }:
{ stripLen ? 0, ... }@args: { stripLen ? 0, addPrefixes ? false, ... }@args:
fetchurl ({ fetchurl ({
postFetch = '' postFetch = ''
@ -16,8 +16,12 @@ fetchurl ({
"${patchutils}/bin/filterdiff" \ "${patchutils}/bin/filterdiff" \
--include={} \ --include={} \
--strip=${toString stripLen} \ --strip=${toString stripLen} \
${lib.optionalString addPrefixes ''
--addoldprefix=a/ \
--addnewprefix=b/ \
''} \
--clean "$out" > "$tmpfile" --clean "$out" > "$tmpfile"
mv "$tmpfile" "$out" mv "$tmpfile" "$out"
${args.postFetch or ""} ${args.postFetch or ""}
''; '';
} // builtins.removeAttrs args ["stripLen"]) } // builtins.removeAttrs args ["stripLen" "addPrefixes"])

View file

@ -28,7 +28,7 @@ stdenv.mkDerivation (
postPhases = postPhases =
["generateWrappersPhase" "finalPhase"]; ["generateWrappersPhase" "finalPhase"];
prePhases = prePhases =
["antSetupPhase"]; ["antSetupPhase"];
antSetupPhase = with stdenv.lib; '' antSetupPhase = with stdenv.lib; ''
@ -41,8 +41,10 @@ stdenv.mkDerivation (
''; '';
installPhase = '' installPhase = ''
runHook preInstall
mkdir -p $out/share/java mkdir -p $out/share/java
${ if jars == [] then '' ${ if jars == [] then ''
find . -name "*.jar" | xargs -I{} cp -v {} $out/share/java find . -name "*.jar" | xargs -I{} cp -v {} $out/share/java
'' else stdenv.lib.concatMapStrings (j: '' '' else stdenv.lib.concatMapStrings (j: ''
cp -v ${j} $out/share/java cp -v ${j} $out/share/java
@ -53,13 +55,15 @@ stdenv.mkDerivation (
canonicalizeJar $j canonicalizeJar $j
echo file jar $j >> $out/nix-support/hydra-build-products echo file jar $j >> $out/nix-support/hydra-build-products
done done
runHook postInstall
''; '';
generateWrappersPhase = generateWrappersPhase =
let let
cp = w: "-cp '${lib.optionalString (w ? classPath) w.classPath}${lib.optionalString (w ? mainClass) ":$out/share/java/*"}'"; cp = w: "-cp '${lib.optionalString (w ? classPath) w.classPath}${lib.optionalString (w ? mainClass) ":$out/share/java/*"}'";
in in
'' ''
header "Generating jar wrappers" header "Generating jar wrappers"
'' + (stdenv.lib.concatMapStrings (w: '' '' + (stdenv.lib.concatMapStrings (w: ''
@ -75,15 +79,19 @@ stdenv.mkDerivation (
closeNest closeNest
''; '';
buildPhase = if antTargets == [] then '' buildPhase = ''
runHook preBuild
'' + (if antTargets == [] then ''
header "Building default ant target" header "Building default ant target"
ant ${antFlags} ant ${antFlags}
closeNest closeNest
'' else stdenv.lib.concatMapStrings (t: '' '' else stdenv.lib.concatMapStrings (t: ''
header "Building '${t}' target" header "Building '${t}' target"
ant ${antFlags} ${t} ant ${antFlags} ${t}
closeNest closeNest
'') antTargets; '') antTargets) + ''
runHook postBuild
'';
finalPhase = finalPhase =
'' ''
@ -95,11 +103,11 @@ stdenv.mkDerivation (
''; '';
} }
// removeAttrs args ["antProperties" "buildInputs" "pkgs" "jarWrappers"] // // removeAttrs args ["antProperties" "buildInputs" "pkgs" "jarWrappers"] //
{ {
name = name + (if src ? version then "-" + src.version else ""); name = name + (if src ? version then "-" + src.version else "");
buildInputs = [ant jre zip unzip] ++ stdenv.lib.optional (args ? buildInputs) args.buildInputs ; buildInputs = [ant jre zip unzip] ++ stdenv.lib.optional (args ? buildInputs) args.buildInputs ;
postHook = '' postHook = ''
@ -109,6 +117,6 @@ stdenv.mkDerivation (
origSrc=$src origSrc=$src
src=$(findTarball $src) src=$(findTarball $src)
''; '';
} }
) )

View file

@ -1,11 +1,12 @@
{stdenv, fetchurl, unzip}: {stdenv, fetchurl, unzip}:
stdenv.mkDerivation { stdenv.mkDerivation rec {
name = "hasklig-0.4"; name = "hasklig-${version}";
version = "0.9";
src = fetchurl { src = fetchurl {
url = "https://github.com/i-tu/Hasklig/releases/download/0.4/Hasklig-0.4.zip"; url = "https://github.com/i-tu/Hasklig/releases/download/${version}/Hasklig-${version}.zip";
sha256 = "14j0zfapw6s6x5psp1rvx2i59rxdwb1jgwfgfhzhypr22qy40xi8"; sha256 = "0rav55f6j1b8pqjgwvw52b92j2m630ampamlsiiym2xf684wnw2d";
}; };
buildInputs = [ unzip ]; buildInputs = [ unzip ];
@ -24,6 +25,6 @@ stdenv.mkDerivation {
description = "A font with ligatures for Haskell code based off Source Code Pro"; description = "A font with ligatures for Haskell code based off Source Code Pro";
license = licenses.ofl; license = licenses.ofl;
platforms = platforms.all; platforms = platforms.all;
maintainers = with maintainers; [ davidrusu ]; maintainers = with maintainers; [ davidrusu profpatsch ];
}; };
} }

View file

@ -1,28 +0,0 @@
{ stdenv, fetchurl, pkgconfig, gnome3, gtk3, wrapGAppsHook
, itstool, libxml2, python3, python3Packages, pyatspi, at_spi2_core
, dbus, intltool, libwnck3 }:
stdenv.mkDerivation rec {
name = "accerciser-3.14.0";
src = fetchurl {
url = "mirror://gnome/sources/accerciser/3.14/${name}.tar.xz";
sha256 = "0x05gpajpcs01g7m34g6fxz8122cf9kx3k0lchwl34jy8xfr39gm";
};
buildInputs = [
pkgconfig gtk3 wrapGAppsHook itstool libxml2 python3 pyatspi
python3Packages.pygobject3 python3Packages.ipython
at_spi2_core dbus intltool libwnck3 gnome3.defaultIconTheme
];
wrapPrefixVariables = [ "PYTHONPATH" ];
meta = with stdenv.lib; {
homepage = https://wiki.gnome.org/Apps/Accerciser;
description = "Interactive Python accessibility explorer";
maintainers = gnome3.maintainers;
license = licenses.bsd3;
platforms = platforms.linux;
};
}

View file

@ -1,36 +0,0 @@
{ stdenv, intltool, fetchurl, pkgconfig, glib
, evolution_data_server, evolution, sqlite
, makeWrapper, itstool, desktop_file_utils
, clutter_gtk, libuuid, webkitgtk, zeitgeist
, gnome3, librsvg, gdk_pixbuf, libxml2 }:
stdenv.mkDerivation rec {
inherit (import ./src.nix fetchurl) name src;
doCheck = true;
propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];
buildInputs = [ pkgconfig glib intltool itstool libxml2
clutter_gtk libuuid webkitgtk gnome3.tracker
gnome3.gnome_online_accounts zeitgeist desktop_file_utils
gnome3.gsettings_desktop_schemas makeWrapper
gdk_pixbuf gnome3.defaultIconTheme librsvg
evolution_data_server evolution sqlite ];
enableParallelBuilding = true;
preFixup = ''
wrapProgram "$out/bin/bijiben" \
--set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
--prefix XDG_DATA_DIRS : "${gnome3.gnome_themes_standard}/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH"
'';
meta = with stdenv.lib; {
homepage = https://wiki.gnome.org/Apps/Bijiben;
description = "Note editor designed to remain simple to use";
maintainers = gnome3.maintainers;
license = licenses.gpl3;
platforms = platforms.linux;
};
}

View file

@ -1,10 +0,0 @@
# Autogenerated by maintainers/scripts/gnome.sh update
fetchurl: {
name = "bijiben-3.18.2";
src = fetchurl {
url = mirror://gnome/sources/bijiben/3.18/bijiben-3.18.2.tar.xz;
sha256 = "45fed3242ba092138760b99e725f0a4d3c8d749ef37c607d43c8f010e11a645d";
};
}

View file

@ -1,26 +0,0 @@
{ stdenv, intltool, fetchurl, wrapGAppsHook, gnome-video-effects, libcanberra_gtk3
, pkgconfig, gtk3, glib, clutter_gtk, clutter-gst, udev, gst_all_1, itstool
, libgudev
, adwaita-icon-theme, librsvg, gdk_pixbuf, gnome3, gnome_desktop, libxml2 }:
stdenv.mkDerivation rec {
inherit (import ./src.nix fetchurl) name src;
buildInputs = [ pkgconfig gtk3 glib intltool wrapGAppsHook gnome-video-effects itstool
gdk_pixbuf adwaita-icon-theme librsvg udev gst_all_1.gstreamer libxml2
gst_all_1.gst-plugins-base gst_all_1.gst-plugins-good gnome_desktop
gst_all_1.gst-plugins-bad clutter_gtk clutter-gst
libcanberra_gtk3 libgudev ];
enableParallelBuilding = true;
NIX_CFLAGS_COMPILE = "-I${glib.dev}/include/gio-unix-2.0";
meta = with stdenv.lib; {
homepage = https://wiki.gnome.org/Apps/Cheese;
description = "Take photos and videos with your webcam, with fun graphical effects";
maintainers = gnome3.maintainers;
license = licenses.gpl3;
platforms = platforms.linux;
};
}

View file

@ -1,10 +0,0 @@
# Autogenerated by maintainers/scripts/gnome.sh update
fetchurl: {
name = "cheese-3.18.1";
src = fetchurl {
url = mirror://gnome/sources/cheese/3.18/cheese-3.18.1.tar.xz;
sha256 = "fc9d8798b1f0c6b35731f063869a32c6910bab6d0386b9ea36386ebda0d57177";
};
}

View file

@ -1,49 +0,0 @@
{ stdenv, intltool, fetchurl, libxml2, webkitgtk, highlight
, pkgconfig, gtk3, glib, libnotify, gtkspell3
, makeWrapper, itstool, shared_mime_info, libical, db, gcr, sqlite
, gnome3, librsvg, gdk_pixbuf, libsecret, nss, nspr, icu, libtool
, libcanberra_gtk3, bogofilter, gst_all_1, procps, p11_kit }:
let
majVer = gnome3.version;
in stdenv.mkDerivation rec {
inherit (import ./src.nix fetchurl) name src;
doCheck = true;
propagatedUserEnvPkgs = [ gnome3.gnome_themes_standard ];
propagatedBuildInputs = [ gnome3.gtkhtml ];
buildInputs = [ pkgconfig gtk3 glib intltool itstool libxml2 libtool
gdk_pixbuf gnome3.defaultIconTheme librsvg db icu
gnome3.evolution_data_server libsecret libical gcr
webkitgtk shared_mime_info gnome3.gnome_desktop gtkspell3
libcanberra_gtk3 bogofilter gnome3.libgdata sqlite
gst_all_1.gstreamer gst_all_1.gst-plugins-base p11_kit
nss nspr libnotify procps highlight gnome3.libgweather
gnome3.gsettings_desktop_schemas makeWrapper ];
configureFlags = [ "--disable-spamassassin" "--disable-pst-import" "--disable-autoar"
"--disable-libcryptui" ];
NIX_CFLAGS_COMPILE = "-I${nspr.dev}/include/nspr -I${nss.dev}/include/nss -I${glib.dev}/include/gio-unix-2.0";
enableParallelBuilding = true;
preFixup = ''
for f in $out/bin/* $out/libexec/*; do
wrapProgram "$f" \
--set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
--prefix XDG_DATA_DIRS : "${gnome3.gnome_themes_standard}/share:$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH"
done
'';
meta = with stdenv.lib; {
homepage = https://wiki.gnome.org/Apps/Evolution;
description = "Personal information management application that provides integrated mail, calendaring and address book functionality";
maintainers = gnome3.maintainers;
license = licenses.lgpl2Plus;
platforms = platforms.linux;
};
}

View file

@ -1,10 +0,0 @@
# Autogenerated by maintainers/scripts/gnome.sh update
fetchurl: {
name = "evolution-3.18.4";
src = fetchurl {
url = mirror://gnome/sources/evolution/3.18/evolution-3.18.4.tar.xz;
sha256 = "8161a0ebc77e61904dfaca9745595fefbf84d834a07ee1132d1f8d030dabfefb";
};
}

View file

@ -1,21 +0,0 @@
{ stdenv, fetchurl, glib, pkgconfig, gnome3, intltool, itstool, libxml2, libarchive
, attr, bzip2, acl, wrapGAppsHook, librsvg, libnotify, gdk_pixbuf }:
stdenv.mkDerivation rec {
inherit (import ./src.nix fetchurl) name src;
nativeBuildInputs = [ pkgconfig wrapGAppsHook ];
buildInputs = [ glib gnome3.gtk intltool itstool libxml2 libarchive libnotify
gnome3.defaultIconTheme attr bzip2 acl gdk_pixbuf librsvg
gnome3.dconf ];
installFlags = [ "nautilus_extensiondir=$(out)/lib/nautilus/extensions-3.0" ];
meta = with stdenv.lib; {
homepage = https://wiki.gnome.org/Apps/FileRoller;
description = "Archive manager for the GNOME desktop environment";
platforms = platforms.linux;
maintainers = gnome3.maintainers;
};
}

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