Merge 'master' into staging

This commit is contained in:
Vladimír Čunát 2014-12-24 16:06:12 +01:00
commit 3a2478605d
288 changed files with 7136 additions and 2668 deletions

View File

@ -502,7 +502,7 @@ exist in community to help save time. No tool is preferred at the moment.
<section xml:id="python-development"><title>Development</title> <section xml:id="python-development"><title>Development</title>
<para> <para>
To develop Python packages <function>bulidPythonPackage</function> has To develop Python packages <function>buildPythonPackage</function> has
additional logic inside <varname>shellPhase</varname> to run additional logic inside <varname>shellPhase</varname> to run
<command>${python.interpreter} setup.py develop</command> for the package. <command>${python.interpreter} setup.py develop</command> for the package.
</para> </para>

View File

@ -255,6 +255,11 @@ lib.mapAttrs (n: v: v // { shortName = n; }) rec {
fullName = "LaTeX Project Public License v1.2"; fullName = "LaTeX Project Public License v1.2";
}; };
lppl13c = spdx {
spdxId = "LPPL-1.3c";
fullName = "LaTeX Project Public License v1.3c";
};
lpl-102 = spdx { lpl-102 = spdx {
spdxId = "LPL-1.02"; spdxId = "LPL-1.02";
fullName = "Lucent Public License v1.02"; fullName = "Lucent Public License v1.02";

View File

@ -26,6 +26,7 @@
aycanirican = "Aycan iRiCAN <iricanaycan@gmail.com>"; aycanirican = "Aycan iRiCAN <iricanaycan@gmail.com>";
balajisivaraman = "Balaji Sivaraman<sivaraman.balaji@gmail.com>"; balajisivaraman = "Balaji Sivaraman<sivaraman.balaji@gmail.com>";
bbenoist = "Baptist BENOIST <return_0@live.com>"; bbenoist = "Baptist BENOIST <return_0@live.com>";
bdimcheff = "Brandon Dimcheff <brandon@dimcheff.com>";
bennofs = "Benno Fünfstück <benno.fuenfstueck@gmail.com>"; bennofs = "Benno Fünfstück <benno.fuenfstueck@gmail.com>";
berdario = "Dario Bertini <berdario@gmail.com>"; berdario = "Dario Bertini <berdario@gmail.com>";
bergey = "Daniel Bergey <bergey@teallabs.org>"; bergey = "Daniel Bergey <bergey@teallabs.org>";
@ -50,6 +51,7 @@
davidrusu = "David Rusu <davidrusu.me@gmail.com>"; davidrusu = "David Rusu <davidrusu.me@gmail.com>";
dbohdan = "Danyil Bohdan <danyil.bohdan@gmail.com>"; dbohdan = "Danyil Bohdan <danyil.bohdan@gmail.com>";
DerGuteMoritz = "Moritz Heidkamp <moritz@twoticketsplease.de>"; DerGuteMoritz = "Moritz Heidkamp <moritz@twoticketsplease.de>";
devhell = "devhell <\"^\"@regexmail.net>";
dmalikov = "Dmitry Malikov <malikov.d.y@gmail.com>"; dmalikov = "Dmitry Malikov <malikov.d.y@gmail.com>";
doublec = "Chris Double <chris.double@double.co.nz>"; doublec = "Chris Double <chris.double@double.co.nz>";
ederoyd46 = "Matthew Brown <matt@ederoyd.co.uk>"; ederoyd46 = "Matthew Brown <matt@ederoyd.co.uk>";
@ -90,6 +92,7 @@
jzellner = "Jeff Zellner <jeffz@eml.cc>"; jzellner = "Jeff Zellner <jeffz@eml.cc>";
kkallio = "Karn Kallio <tierpluspluslists@gmail.com>"; kkallio = "Karn Kallio <tierpluspluslists@gmail.com>";
koral = "Koral <koral@mailoo.org>"; koral = "Koral <koral@mailoo.org>";
kovirobi = "Kovacsics Robert <kovirobi@gmail.com>";
kragniz = "Louis Taylor <kragniz@gmail.com>"; kragniz = "Louis Taylor <kragniz@gmail.com>";
ktosiek = "Tomasz Kontusz <tomasz.kontusz@gmail.com>"; ktosiek = "Tomasz Kontusz <tomasz.kontusz@gmail.com>";
lethalman = "Luca Bruno <lucabru@src.gnome.org>"; lethalman = "Luca Bruno <lucabru@src.gnome.org>";
@ -109,6 +112,7 @@
mornfall = "Petr Ročkai <me@mornfall.net>"; mornfall = "Petr Ročkai <me@mornfall.net>";
MP2E = "Cray Elliott <MP2E@archlinux.us>"; MP2E = "Cray Elliott <MP2E@archlinux.us>";
msackman = "Matthew Sackman <matthew@wellquite.org>"; msackman = "Matthew Sackman <matthew@wellquite.org>";
mtreskin = "Max Treskin <zerthurd@gmail.com>";
muflax = "Stefan Dorn <mail@muflax.com>"; muflax = "Stefan Dorn <mail@muflax.com>";
nathan-gs = "Nathan Bijnens <nathan@nathan.gs>"; nathan-gs = "Nathan Bijnens <nathan@nathan.gs>";
nckx = "Tobias Geerinckx-Rice <tobias.geerinckx.rice@gmail.com>"; nckx = "Tobias Geerinckx-Rice <tobias.geerinckx.rice@gmail.com>";
@ -177,6 +181,7 @@
wjlroe = "William Roe <willroe@gmail.com>"; wjlroe = "William Roe <willroe@gmail.com>";
wkennington = "William A. Kennington III <william@wkennington.com>"; wkennington = "William A. Kennington III <william@wkennington.com>";
wmertens = "Wout Mertens <Wout.Mertens@gmail.com>"; wmertens = "Wout Mertens <Wout.Mertens@gmail.com>";
wscott = "Wayne Scott <wsc9tt@gmail.com>";
wyvie = "Elijah Rum <elijahrum@gmail.com>"; wyvie = "Elijah Rum <elijahrum@gmail.com>";
yarr = "Dmitry V. <savraz@gmail.com>"; yarr = "Dmitry V. <savraz@gmail.com>";
z77z = "Marco Maggesi <maggesi@math.unifi.it>"; z77z = "Marco Maggesi <maggesi@math.unifi.it>";

View File

@ -31,6 +31,23 @@ rec {
type = lib.types.bool; type = lib.types.bool;
}; };
# This option accept anything, but it does not produce any result. This
# is useful for sharing a module across different module sets without
# having to implement similar features as long as the value of the options
# are not expected.
mkSinkUndeclaredOptions = attrs: mkOption ({
internal = true;
visible = false;
default = false;
description = "Sink for option definitions.";
type = mkOptionType {
name = "sink";
check = x: true;
merge = loc: defs: false;
};
apply = x: throw "Option value is not readable because the option is not declared.";
} // attrs);
mergeDefaultOption = loc: defs: mergeDefaultOption = loc: defs:
let list = getValues defs; in let list = getValues defs; in
if length list == 1 then head list if length list == 1 then head list

View File

@ -0,0 +1,111 @@
#!/bin/sh
: ${NIXOS_CHANNELS:=https://nixos.org/channels/}
: ${CHANNELS_NAMESPACE:=refs/heads/channels/}
# List all channels which are currently in the repository which we would
# have to remove if they are not found again.
deadChannels=$(git for-each-ref --format="%(refname)" $CHANNELS_NAMESPACE)
function updateRef() {
local channelName=$1
local newRev=$2
# if the inputs are not valid, then we do not update any branch.
test -z "$newRev" -o -z "$channelName" && return;
# Update the local refs/heads/channels/* branches to be in-sync with the
# channel references.
local branch=$CHANNELS_NAMESPACE$channelName
oldRev=$(git rev-parse --short $branch 2>/dev/null || true)
if test "$oldRev" != "$newRev"; then
if git update-ref $branch $newRev 2>/dev/null; then
if test -z "$oldRev"; then
echo " * [new branch] $newRev -> ${branch#refs/heads/}"
else
echo " $oldRev..$newRev -> ${branch#refs/heads/}"
fi
else
if test -z "$oldRev"; then
echo " * [missing rev] $newRev -> ${branch#refs/heads/}"
else
echo " [missing rev] $oldRev..$newRev -> ${branch#refs/heads/}"
fi
fi
fi
# Filter out the current channel from the list of dead channels.
deadChannels=$(grep -v $CHANNELS_NAMESPACE$channelName <<EOF
$deadChannels
EOF
)
}
# Find the name of all channels which are listed in the directory.
echo "Fetching channels from $NIXOS_CHANNELS:"
for channelName in : $(curl -s $NIXOS_CHANNELS | sed -n '/folder/ { s,.*href=",,; s,/".*,,; p }'); do
test "$channelName" = : && continue;
# Do not follow redirections, such that we can extract the
# short-changeset from the name of the directory where we are
# redirected to.
sha1=$(curl -sI $NIXOS_CHANNELS$channelName | sed -n '/Location/ { s,.*\.\([a-f0-9]*\)[ \r]*$,\1,; p; }')
updateRef "remotes/$channelName" "$sha1"
done
echo "Fetching channels from nixos-version:"
if currentSystem=$(nixos-version 2>/dev/null); then
# If the system is entirely build from a custom nixpkgs version,
# then the version is not annotated in git version. This sed
# expression is basically matching that the expressions end with
# ".<sha1> (Name)" to extract the sha1.
sha1=$(echo $currentSystem | sed -n 's,^.*\.\([a-f0-9]*\) *(.*)$,\1,; T skip; p; :skip;')
updateRef current-system "$sha1"
fi
echo "Fetching channels from ~/.nix-defexpr:"
for revFile in : $(find -L ~/.nix-defexpr/ -maxdepth 4 -name svn-revision); do
test "$revFile" = : && continue;
# Deconstruct a path such as, into:
#
# /home/luke/.nix-defexpr/channels_root/nixos/nixpkgs/svn-revision
# channelName = root/nixos
#
# /home/luke/.nix-defexpr/channels/nixpkgs/svn-revision
# channelName = nixpkgs
#
user=${revFile#*.nix-defexpr/channels}
repo=${user#*/}
repo=${repo%%/*}
user=${user%%/*}
user=${user#_}
test -z "$user" && user=$USER
channelName="$user${user:+/}$repo"
sha1=$(cat $revFile | sed -n 's,^.*\.\([a-f0-9]*\)$,\1,; T skip; p; :skip;')
updateRef "$channelName" "$sha1"
done
# Suggest to remove channel branches which are no longer found by this
# script. This is to handle the cases where a local/remote channel
# disappear. We should not attempt to remove manually any branches, as they
# might be user branches.
if test -n "$deadChannels"; then
echo "
Some old channel branches are still in your repository, if you
want to remove them, run the following command(s):
"
while read branch; do
echo " git update-ref -d $branch"
done <<EOF
$deadChannels
EOF
echo
fi

View File

@ -40,20 +40,22 @@ rebuild everything from source. So you may want to create a local
branch based on your current NixOS version: branch based on your current NixOS version:
<screen> <screen>
$ nixos-version $ <replaceable>/my/sources</replaceable>/nixpkgs/maintainers/scripts/update-channel-branches.sh
14.04.273.ea1952b (Baboon) Fetching channels from https://nixos.org/channels:
* [new branch] cbe467e -> channels/remotes/nixos-unstable
$ git checkout -b local ea1952b Fetching channels from nixos-version:
* [new branch] 9ff4738 -> channels/current-system
Fetching channels from ~/.nix-defexpr:
* [new branch] 0d4acad -> channels/root/nixos
$ git checkout -b local channels/current-system
</screen> </screen>
Or, to base your local branch on the latest version available in the Or, to base your local branch on the latest version available in the
NixOS channel: NixOS channel:
<screen> <screen>
$ curl -sI https://nixos.org/channels/nixos-unstable/ | grep Location $ <replaceable>/my/sources</replaceable>/nixpkgs/maintainers/scripts/update-channel-branches.sh
Location: https://releases.nixos.org/nixos/unstable/nixos-14.10pre43986.acaf4a6/ $ git checkout -b local channels/remotes/nixos-unstable
$ git checkout -b local acaf4a6
</screen> </screen>
You can then use <command>git rebase</command> to sync your local You can then use <command>git rebase</command> to sync your local

View File

@ -6,46 +6,159 @@
<title>Release 14.12 (“Caterpillar”, 2014/12/??)</title> <title>Release 14.12 (“Caterpillar”, 2014/12/??)</title>
<para>In addition to numerous new and upgraded packages, this release has the following highlights:
<itemizedlist>
<listitem><para>Systemd has been updated to version 217, which has numerous
<link xlink:href="http://lists.freedesktop.org/archives/systemd-devel/2014-October/024662.html">improvements
.</link></para></listitem>
<listitem><para><link xlink:href="http://thread.gmane.org/gmane.linux.distributions.nixos/15165">
Nix has been updated to 1.8.</link></para></listitem>
<listitem><para>NixOS is now based on Glibc 2.20.</para></listitem>
<listitem><para>KDE has been updated to 4.14.</para></listitem>
<listitem><para>The default Linux kernel has been updated to 3.14.</para></listitem>
<listitem><para><option>users.mutableUsers</option> set to <literal>true</literal> now respect any changes
made after initial creation of a user or a group.
</para></listitem>
</itemizedlist></para>
<para>Following new services were added since the last release:
<itemizedlist>
<listitem><para>parallels-guest</para></listitem>
<listitem><para>docker</para></listitem>
<listitem><para>lxc</para></listitem>
<listitem><para>openvswitch</para></listitem>
<listitem><para>fluxbox</para></listitem>
<listitem><para>bspwm</para></listitem>
<listitem><para>gdm</para></listitem>
<listitem><para>fcgiwrap</para></listitem>
<listitem><para>peerflix</para></listitem>
<listitem><para>fail2ban</para></listitem>
<listitem><para>chronos</para></listitem>
<listitem><para>znc</para></listitem>
<listitem><para>unifi</para></listitem>
<listitem><para>teamspeak3</para></listitem>
<listitem><para>strongswan</para></listitem>
<listitem><para>seeks</para></listitem>
<listitem><para>radicale</para></listitem>
<listitem><para>prosody</para></listitem>
<listitem><para>polipo</para></listitem>
<listitem><para>openntpd</para></listitem>
<listitem><para>nsd</para></listitem>
<listitem><para>mailpile</para></listitem>
<listitem><para>i2pd</para></listitem>
<listitem><para>dnscrypt-proxy</para></listitem>
<listitem><para>consul</para></listitem>
<listitem><para>atftpd</para></listitem>
<listitem><para>scollector</para></listitem>
<listitem><para>collectd</para></listitem>
<listitem><para>bosun</para></listitem>
<listitem><para>riemann</para></listitem>
<listitem><para>zookeeper</para></listitem>
<listitem><para>uhub</para></listitem>
<listitem><para>siproxd</para></listitem>
<listitem><para>redmine</para></listitem>
<listitem><para>phd</para></listitem>
<listitem><para>mesos</para></listitem>
<listitem><para>gitlab</para></listitem>
<listitem><para>gitolite</para></listitem>
<listitem><para>etcd</para></listitem>
<listitem><para>docker-registry</para></listitem>
<listitem><para>cpuminer-cryptonight</para></listitem>
<listitem><para>thermald</para></listitem>
<listitem><para>mlmmj</para></listitem>
<listitem><para>tcsd</para></listitem>
<listitem><para>gnome3.seahorse</para></listitem>
<listitem><para>gnome3.gvfs</para></listitem>
<listitem><para>gnome3.gnome-online-miners</para></listitem>
<listitem><para>gnome3.gnome-documents</para></listitem>
<listitem><para>geoclue2</para></listitem>
<listitem><para>opentsdb</para></listitem>
<listitem><para>neo4j</para></listitem>
<listitem><para>monetdb</para></listitem>
<listitem><para>influxdb</para></listitem>
<listitem><para>hbase</para></listitem>
<listitem><para>torque/mrom</para></listitem>
<listitem><para>torque/server</para></listitem>
<listitem><para>kubernetes</para></listitem>
<listitem><para>fleet</para></listitem>
<listitem><para>crashplan</para></listitem>
<listitem><para>mopidy</para></listitem>
<listitem><para>liquidsoap</para></listitem>
</itemizedlist>
</para>
<para>When upgrading from a previous release, please be aware of the <para>When upgrading from a previous release, please be aware of the
following incompatible changes: following incompatible changes:
<itemizedlist> <itemizedlist>
<listitem><para>The default version of Apache httpd is now 2.4. If <listitem><para>The default version of Apache httpd is now 2.4. If
you use the <option>extraConfig</option> option to pass literal you use the <option>extraConfig</option> option to pass literal
Apache configuration text, you may need to update it — see <link Apache configuration text, you may need to update it — see <link
xlink:href="http://httpd.apache.org/docs/2.4/upgrading.html">Apaches xlink:href="http://httpd.apache.org/docs/2.4/upgrading.html">Apaches
documentation</link> for details. If you wish to continue to use documentation</link> for details. If you wish to continue to use
httpd 2.2, add the following line to your NixOS configuration: httpd 2.2, add the following line to your NixOS configuration:
<programlisting> rogramlisting>
services.httpd.package = pkgs.apacheHttpd_2_2; rvices.httpd.package = pkgs.apacheHttpd_2_2;
</programlisting> programlisting>
</para></listitem> </para></listitem>
<listitem><para>PHP 5.3 has been removed because it is no longer <listitem><para>PHP 5.3 has been removed because it is no longer
supported by the PHP project. A <link supported by the PHP project. A <link
xlink:href="http://php.net/migration54">migration guide</link> is xlink:href="http://php.net/migration54">migration guide</link> is
available.</para></listitem> available.</para></listitem>
<listitem><para>The host side of a container virtual Ethernet pair <listitem><para>The host side of a container virtual Ethernet pair
is now called <literal>ve-<replaceable>container-name</replaceable></literal> is now called <literal>ve-<replaceable>container-name</replaceable></literal>
rather than <literal>c-<replaceable>container-name</replaceable></literal>.</para></listitem> rather than <literal>c-<replaceable>container-name</replaceable></literal>.</para></listitem>
<listitem><para>GNOME 3.10 support has been dropped. The default GNOME version is now 3.12.</para></listitem> <listitem><para>GNOME 3.10 support has been dropped. The default GNOME version is now 3.12.</para></listitem>
<listitem><para>The system-wide default timezone for NixOS installations <listitem><para>VirtualBox has been upgraded to 4.3.20 release. Users may be required to run
changed from <literal>CET</literal> to <literal>UTC</literal>. To choose <command>rm -rf /tmp.vbox*</command>. <literal>imports = [ &lt;nixpkgs/nixos/modules/programs/virtualbox.nix&gt; ]</literal>
a different timezone for your system, configure is no longer necessary, use <literal>services.virtualboxHost.enable = true</literal> instead.
<literal>time.timeZone</literal> in </para>
<literal>configuration.nix</literal>. A fairly complete list of possible <para>Also, hardening mode is now enabled by default, which means that unless you want to use
values for that setting is available at <link USB support, you no longer need to be a member of the <literal>vboxusers</literal> group.
xlink:href="https://en.wikipedia.org/wiki/List_of_tz_database_time_zones"/>.</para></listitem> </para></listitem>
<listitem><para>GNU screen has been updated to 4.2.1, which breaks <listitem><para>Chromium has been updated to 39.0.2171.65. <option>enablePepperPDF</option> is now enabled by default.
the ability to connect to sessions created by older versions of <literal>chromium*Wrapper</literal> packages no longer exist, because upstream removed NSAPI support.
screen.</para></listitem> <literal>chromium-stable</literal> has been renamed to <literal>chromium</literal>.
</para></listitem>
<listitem><para>Python packaging documentation is now part of nixpkgs manual. To override
the python packages available to a custom python you now use <literal>pkgs.pythonFull.buildEnv.override</literal>
instead of <literal>pkgs.pythonFull.override</literal>.
</para></listitem>
<listitem><para><literal>boot.resumeDevice = "8:6"</literal> is no longer supported. Most users will
want to leave it undefined, which takes the swap partitions automatically. There is an evaluation
assertion to ensure that the string starts with a slash.
</para></listitem>
<listitem><para>The system-wide default timezone for NixOS installations
changed from <literal>CET</literal> to <literal>UTC</literal>. To choose
a different timezone for your system, configure
<literal>time.timeZone</literal> in
<literal>configuration.nix</literal>. A fairly complete list of possible
values for that setting is available at <link
xlink:href="https://en.wikipedia.org/wiki/List_of_tz_database_time_zones"/>.</para></listitem>
<listitem><para>GNU screen has been updated to 4.2.1, which breaks
the ability to connect to sessions created by older versions of
screen.</para></listitem>
</itemizedlist> </itemizedlist>

View File

@ -16,7 +16,6 @@ let
[ p.mesa_drivers [ p.mesa_drivers
p.mesa_noglu # mainly for libGL p.mesa_noglu # mainly for libGL
(if cfg.s3tcSupport then p.libtxc_dxtn else p.libtxc_dxtn_s2tc) (if cfg.s3tcSupport then p.libtxc_dxtn else p.libtxc_dxtn_s2tc)
p.udev
]; ];
}; };

View File

@ -30,8 +30,7 @@ while [ "$#" -gt 0 ]; do
case "$i" in case "$i" in
-I) -I)
given_path="$1"; shift 1 given_path="$1"; shift 1
absolute_path=$(readlink -m $given_path) extraBuildFlags+=("$i" "$given_path")
extraBuildFlags+=("$i" "/mnt$absolute_path")
;; ;;
--root) --root)
mountPoint="$1"; shift 1 mountPoint="$1"; shift 1
@ -250,7 +249,7 @@ chroot $mountPoint /nix/var/nix/profiles/system/activate
# Ask the user to set a root password. # Ask the user to set a root password.
if [ -t 0 ] ; then if [ "$(chroot $mountPoint nix-instantiate --eval '<nixos>' -A config.users.mutableUsers)" = true ] && [ -t 0 ] ; then
echo "setting root password..." echo "setting root password..."
chroot $mountPoint /var/setuid-wrappers/passwd chroot $mountPoint /var/setuid-wrappers/passwd
fi fi

View File

@ -13,6 +13,7 @@ usage () {
xml=false xml=false
verbose=false verbose=false
nixPath=""
option="" option=""
@ -26,6 +27,7 @@ for arg; do
while test "$sarg" != "-"; do while test "$sarg" != "-"; do
case $sarg in case $sarg in
--*) longarg=$arg; sarg="--";; --*) longarg=$arg; sarg="--";;
-I) argfun="include_nixpath";;
-*) usage;; -*) usage;;
esac esac
# remove the first letter option # remove the first letter option
@ -53,6 +55,9 @@ for arg; do
var=$(echo $argfun | sed 's,^set_,,') var=$(echo $argfun | sed 's,^set_,,')
eval $var=$arg eval $var=$arg
;; ;;
include_nixpath)
nixPath="-I $arg $nixPath"
;;
esac esac
argfun="" argfun=""
fi fi
@ -69,18 +74,114 @@ fi
############################# #############################
evalNix(){ evalNix(){
nix-instantiate - --eval-only "$@" result=$(nix-instantiate ${nixPath:+$nixPath} - --eval-only "$@" 2>&1)
if test $? -eq 0; then
cat <<EOF
$result
EOF
return 0;
else
sed -n '
/^error/ { s/, at (string):[0-9]*:[0-9]*//; p; };
/^warning: Nix search path/ { p; };
' <<EOF
$result
EOF
return 1;
fi
} }
header="let
nixos = import <nixpkgs/nixos> {};
nixpkgs = import <nixpkgs> {};
in with nixpkgs.lib;
"
# This function is used for converting the option definition path given by
# the user into accessors for reaching the definition and the declaration
# corresponding to this option.
generateAccessors(){
if result=$(evalNix --strict --show-trace <<EOF
$header
let
path = "${option:+$option}";
pathList = splitString "." path;
walkOptions = attrsNames: result:
if attrsNames == [] then
result
else
let name = head attrsNames; rest = tail attrsNames; in
if isOption result.options then
walkOptions rest {
options = result.options.type.getSubOptions "";
opt = ''(\${result.opt}.type.getSubOptions "")'';
cfg = ''\${result.cfg}."\${name}"'';
}
else
walkOptions rest {
options = result.options.\${name};
opt = ''\${result.opt}."\${name}"'';
cfg = ''\${result.cfg}."\${name}"'';
}
;
walkResult = (if path == "" then x: x else walkOptions pathList) {
options = nixos.options;
opt = ''nixos.options'';
cfg = ''nixos.config'';
};
in
''let option = \${walkResult.opt}; config = \${walkResult.cfg}; in''
EOF
)
then
echo $result
else
# In case of error we want to ignore the error message roduced by the
# script above, as it is iterating over each attribute, which does not
# produce a nice error message. The following code is a fallback
# solution which is cause a nicer error message in the next
# evaluation.
echo "\"let option = nixos.options${option:+.$option}; config = nixos.config${option:+.$option}; in\""
fi
}
header="$header
$(eval echo $(generateAccessors))
"
evalAttr(){ evalAttr(){
local prefix="$1" local prefix="$1"
local strict="$2" local strict="$2"
local suffix="$3" local suffix="$3"
echo "(import <nixos> {}).$prefix${option:+.$option}${suffix:+.$suffix}" | evalNix ${strict:+--strict}
# If strict is set, then set it to "true".
test -n "$strict" && strict=true
evalNix ${strict:+--strict} <<EOF
$header
let
value = $prefix${suffix:+.$suffix};
strict = ${strict:-false};
cleanOutput = x: with nixpkgs.lib;
if isDerivation x then x.outPath
else if isFunction x then "<CODE>"
else if strict then
if isAttrs x then mapAttrs (n: cleanOutput) x
else if isList x then map cleanOutput x
else x
else x;
in
cleanOutput value
EOF
} }
evalOpt(){ evalOpt(){
evalAttr "options" "" "$@" evalAttr "option" "" "$@"
} }
evalCfg(){ evalCfg(){
@ -90,8 +191,11 @@ evalCfg(){
findSources(){ findSources(){
local suffix=$1 local suffix=$1
echo "(import <nixos> {}).options${option:+.$option}.$suffix" | evalNix --strict <<EOF
evalNix --strict $header
option.$suffix
EOF
} }
# Given a result from nix-instantiate, recover the list of attributes it # Given a result from nix-instantiate, recover the list of attributes it
@ -121,13 +225,12 @@ nixMap() {
# the output of nixos-option with other tools such as nixos-gui. # the output of nixos-option with other tools such as nixos-gui.
if $xml; then if $xml; then
evalNix --xml --no-location <<EOF evalNix --xml --no-location <<EOF
$header
let let
reach = attrs: attrs${option:+.$option};
nixos = import <nixos> {};
nixpkgs = import <nixpkgs> {};
sources = builtins.map (f: f.source); sources = builtins.map (f: f.source);
opt = reach nixos.options; opt = option;
cfg = reach nixos.config; cfg = config;
in in
with nixpkgs.lib; with nixpkgs.lib;

View File

@ -173,6 +173,7 @@
peerflix = 163; peerflix = 163;
chronos = 164; chronos = 164;
gitlab = 165; gitlab = 165;
tox-bootstrapd = 166;
# When adding a uid, make sure it doesn't match an existing gid. And don't use uids above 399! # When adding a uid, make sure it doesn't match an existing gid. And don't use uids above 399!

View File

@ -53,7 +53,7 @@ with lib;
mkDefault (if pathExists fn then readFile fn else "master"); mkDefault (if pathExists fn then readFile fn else "master");
# Note: code names must only increase in alphabetical order. # Note: code names must only increase in alphabetical order.
system.nixosCodeName = "Caterpillar"; system.nixosCodeName = "Dingo";
# Generate /etc/os-release. See # Generate /etc/os-release. See
# http://0pointer.de/public/systemd-man/os-release.html for the # http://0pointer.de/public/systemd-man/os-release.html for the

View File

@ -286,6 +286,7 @@
./services/networking/tcpcrypt.nix ./services/networking/tcpcrypt.nix
./services/networking/teamspeak3.nix ./services/networking/teamspeak3.nix
./services/networking/tftpd.nix ./services/networking/tftpd.nix
./services/networking/tox-bootstrapd.nix
./services/networking/unbound.nix ./services/networking/unbound.nix
./services/networking/unifi.nix ./services/networking/unifi.nix
./services/networking/vsftpd.nix ./services/networking/vsftpd.nix
@ -307,6 +308,7 @@
./services/security/fprot.nix ./services/security/fprot.nix
./services/security/frandom.nix ./services/security/frandom.nix
./services/security/haveged.nix ./services/security/haveged.nix
./services/security/torify.nix
./services/security/tor.nix ./services/security/tor.nix
./services/security/torsocks.nix ./services/security/torsocks.nix
./services/system/cloud-init.nix ./services/system/cloud-init.nix

View File

@ -105,7 +105,7 @@ in
}; };
enableCompletion = mkOption { enableCompletion = mkOption {
default = true; default = false;
description = '' description = ''
Enable Bash completion for all interactive bash shells. Enable Bash completion for all interactive bash shells.
''; '';

View File

@ -61,7 +61,8 @@ in
agentTimeout = mkOption { agentTimeout = mkOption {
type = types.nullOr types.string; type = types.nullOr types.string;
default = "1h"; default = null;
example = "1h";
description = '' description = ''
How long to keep the private keys in memory. Use null to keep them forever. How long to keep the private keys in memory. Use null to keep them forever.
''; '';

View File

@ -35,7 +35,7 @@ in
enableHardening = mkOption { enableHardening = mkOption {
type = types.bool; type = types.bool;
default = false; default = true;
description = '' description = ''
Enable hardened VirtualBox, which ensures that only the binaries in the Enable hardened VirtualBox, which ensures that only the binaries in the
system path get access to the devices exposed by the kernel modules system path get access to the devices exposed by the kernel modules
@ -54,23 +54,21 @@ in
boot.extraModulePackages = [ virtualbox ]; boot.extraModulePackages = [ virtualbox ];
environment.systemPackages = [ virtualbox ]; environment.systemPackages = [ virtualbox ];
warnings = mkIf (!cfg.enableHardening) (singleton (
"Hardening is currently disabled for VirtualBox, because of some " +
"issues in conjunction with host-only-interfaces. If you don't use " +
"hostonlyifs, it's strongly recommended to set " +
"`services.virtualboxHost.enableHardening = true'!"
));
security.setuidOwners = let security.setuidOwners = let
mkVboxStub = program: { mkSuid = program: {
inherit program; inherit program;
source = "${virtualbox}/libexec/virtualbox/${program}";
owner = "root"; owner = "root";
group = "vboxusers"; group = "vboxusers";
setuid = true; setuid = true;
}; };
in mkIf cfg.enableHardening (map mkVboxStub [ in mkIf cfg.enableHardening (map mkSuid [
"VBoxHeadless" "VBoxHeadless"
"VBoxNetAdpCtl"
"VBoxNetDHCP"
"VBoxNetNAT"
"VBoxSDL" "VBoxSDL"
"VBoxVolInfo"
"VirtualBox" "VirtualBox"
]); ]);

View File

@ -64,7 +64,7 @@ in
security.sudo.configFile = security.sudo.configFile =
'' ''
# Don't edit this file. Set the NixOS options security.sudo.configFile # Don't edit this file. Set the NixOS options security.sudo.configFile
# and security.sudo.extraConfig instead. # or security.sudo.extraConfig instead.
# Environment variables to keep for root and %wheel. # Environment variables to keep for root and %wheel.
Defaults:root,%wheel env_keep+=TERMINFO_DIRS Defaults:root,%wheel env_keep+=TERMINFO_DIRS
@ -90,11 +90,10 @@ in
environment.etc = singleton environment.etc = singleton
{ source = { source =
pkgs.runCommand "sudoers" pkgs.runCommand "sudoers"
{src = pkgs.writeText "sudoers-in" cfg.configFile; } { src = pkgs.writeText "sudoers-in" cfg.configFile; }
# Make sure that the sudoers file is syntactically valid. # Make sure that the sudoers file is syntactically valid.
# (currently disabled - NIXOS-66) # (currently disabled - NIXOS-66)
"${pkgs.sudo}/sbin/visudo -f $src -c && "${pkgs.sudo}/sbin/visudo -f $src -c && cp $src $out";
cp $src $out";
target = "sudoers"; target = "sudoers";
mode = "0440"; mode = "0440";
}; };

View File

@ -15,7 +15,6 @@ let
state_file "${cfg.dataDir}/state" state_file "${cfg.dataDir}/state"
sticker_file "${cfg.dataDir}/sticker.sql" sticker_file "${cfg.dataDir}/sticker.sql"
log_file "syslog" log_file "syslog"
user "mpd"
${if cfg.network.host != "any" then ${if cfg.network.host != "any" then
"bind_to_address ${cfg.network.host}" else ""} "bind_to_address ${cfg.network.host}" else ""}
${if cfg.network.port != 6600 then ${if cfg.network.port != 6600 then
@ -99,6 +98,9 @@ in {
path = [ pkgs.mpd ]; path = [ pkgs.mpd ];
preStart = "mkdir -p ${cfg.dataDir} && chown -R mpd:mpd ${cfg.dataDir}"; preStart = "mkdir -p ${cfg.dataDir} && chown -R mpd:mpd ${cfg.dataDir}";
script = "exec mpd --no-daemon ${mpdConf}"; script = "exec mpd --no-daemon ${mpdConf}";
serviceConfig = {
User = "mpd";
};
}; };
users.extraUsers.mpd = { users.extraUsers.mpd = {

View File

@ -5,6 +5,13 @@ with lib;
let let
cfg = config.services.mesos.slave; cfg = config.services.mesos.slave;
mkAttributes =
attrs: concatStringsSep ";" (mapAttrsToList
(k: v: "${k}:${v}")
(filterAttrs (k: v: v != null) attrs));
attribsArg = optionalString (cfg.attributes != {})
"--attributes=${mkAttributes cfg.attributes}";
in { in {
options.services.mesos = { options.services.mesos = {
@ -31,9 +38,9 @@ in {
}; };
withHadoop = mkOption { withHadoop = mkOption {
description = "Add the HADOOP_HOME to the slave."; description = "Add the HADOOP_HOME to the slave.";
default = false; default = false;
type = types.bool; type = types.bool;
}; };
workDir = mkOption { workDir = mkOption {
@ -44,10 +51,10 @@ in {
extraCmdLineOptions = mkOption { extraCmdLineOptions = mkOption {
description = '' description = ''
Extra command line options for Mesos Slave. Extra command line options for Mesos Slave.
See https://mesos.apache.org/documentation/latest/configuration/ See https://mesos.apache.org/documentation/latest/configuration/
''; '';
default = [ "" ]; default = [ "" ];
type = types.listOf types.string; type = types.listOf types.string;
example = [ "--gc_delay=3days" ]; example = [ "--gc_delay=3days" ];
@ -62,6 +69,19 @@ in {
type = types.str; type = types.str;
}; };
attributes = mkOption {
description = ''
Machine attributes for the slave instance.
Use caution when changing this; you may need to manually reset slave
metadata before the slave can re-register.
'';
default = {};
type = types.attrsOf types.str;
example = { rack = "aa";
host = "aabc123";
os = "nixos"; };
};
}; };
}; };
@ -74,20 +94,21 @@ in {
after = [ "network-interfaces.target" ]; after = [ "network-interfaces.target" ];
environment.MESOS_CONTAINERIZERS = "docker,mesos"; environment.MESOS_CONTAINERIZERS = "docker,mesos";
serviceConfig = { serviceConfig = {
ExecStart = '' ExecStart = ''
${pkgs.mesos}/bin/mesos-slave \ ${pkgs.mesos}/bin/mesos-slave \
--port=${toString cfg.port} \ --port=${toString cfg.port} \
--master=${cfg.master} \ --master=${cfg.master} \
${optionalString cfg.withHadoop "--hadoop-home=${pkgs.hadoop}"} \ ${optionalString cfg.withHadoop "--hadoop-home=${pkgs.hadoop}"} \
--work_dir=${cfg.workDir} \ ${attribsArg} \
--logging_level=${cfg.logLevel} \ --work_dir=${cfg.workDir} \
--docker=${pkgs.docker}/libexec/docker/docker \ --logging_level=${cfg.logLevel} \
${toString cfg.extraCmdLineOptions} --docker=${pkgs.docker}/libexec/docker/docker \
''; ${toString cfg.extraCmdLineOptions}
PermissionsStartOnly = true; '';
PermissionsStartOnly = true;
}; };
preStart = '' preStart = ''
mkdir -m 0700 -p ${cfg.workDir} mkdir -m 0700 -p ${cfg.workDir}
''; '';
}; };
}; };

View File

@ -86,7 +86,7 @@ in
systemd.services."synergy-client" = { systemd.services."synergy-client" = {
after = [ "network.target" ]; after = [ "network.target" ];
description = "Synergy client"; description = "Synergy client";
wantedBy = [ "multi-user.target" ]; wantedBy = optional cfgC.autoStart [ "multi-user.target" ];
path = [ pkgs.synergy ]; path = [ pkgs.synergy ];
serviceConfig.ExecStart = ''${pkgs.synergy}/bin/synergyc -f ${optionalString (cfgC.screenName != "") "-n ${cfgC.screenName}"} ${cfgC.serverAddress}''; serviceConfig.ExecStart = ''${pkgs.synergy}/bin/synergyc -f ${optionalString (cfgC.screenName != "") "-n ${cfgC.screenName}"} ${cfgC.serverAddress}'';
}; };
@ -95,7 +95,7 @@ in
systemd.services."synergy-server" = { systemd.services."synergy-server" = {
after = [ "network.target" ]; after = [ "network.target" ];
description = "Synergy server"; description = "Synergy server";
wantedBy = [ "multi-user.target" ]; wantedBy = optional cfgS.autoStart [ "multi-user.target" ];
path = [ pkgs.synergy ]; path = [ pkgs.synergy ];
serviceConfig.ExecStart = ''${pkgs.synergy}/bin/synergys -c ${cfgS.configFile} -f ${optionalString (cfgS.address != "") "-a ${cfgS.address}"} ${optionalString (cfgS.screenName != "") "-n ${cfgS.screenName}" }''; serviceConfig.ExecStart = ''${pkgs.synergy}/bin/synergys -c ${cfgS.configFile} -f ${optionalString (cfgS.address != "") "-a ${cfgS.address}"} ${optionalString (cfgS.screenName != "") "-n ${cfgS.screenName}" }'';
}; };

View File

@ -118,7 +118,7 @@ in
systemd.services.strongswan = { systemd.services.strongswan = {
description = "strongSwan IPSec Service"; description = "strongSwan IPSec Service";
wantedBy = [ "multi-user.target" ]; wantedBy = [ "multi-user.target" ];
path = with pkgs; [ kmod ]; # XXX Linux path = with pkgs; [ kmod iproute iptables utillinux ]; # XXX Linux
wants = [ "keys.target" ]; wants = [ "keys.target" ];
after = [ "network.target" "keys.target" ]; after = [ "network.target" "keys.target" ];
environment = { environment = {

View File

@ -0,0 +1,80 @@
{ config, lib, pkgs, ... }:
with lib;
let
home = "/var/lib/tox-bootstrapd";
PIDFile = "${home}/pid";
pkg = pkgs.libtoxcore;
cfg = config.services.toxBootstrapd;
cfgFile = builtins.toFile "tox-bootstrapd.conf"
''
port = ${toString cfg.port}
keys_file_path = "${home}/keys"
pid_file_path = "${PIDFile}"
${cfg.extraConfig}
'';
in
{
options =
{ services.toxBootstrapd =
{ enable = mkOption {
type = types.bool;
default = false;
description =
''
Whether to enable the Tox DHT boostrap daemon.
'';
};
port = mkOption {
type = types.int;
default = 33445;
description = "Listening port (UDP).";
};
keysFile = mkOption {
type = types.str;
default = "${home}/keys";
description = "Node key file.";
};
extraConfig = mkOption {
type = types.lines;
default = "";
description =
''
Configuration for boostrap daemon.
See <link xlink:href="https://github.com/irungentoo/toxcore/blob/master/other/bootstrap_daemon/tox-bootstrapd.conf"/>
and <link xlink:href="http://wiki.tox.im/Nodes"/>.
'';
};
};
};
config = mkIf config.services.toxBootstrapd.enable {
users.extraUsers = singleton
{ name = "tox-bootstrapd";
uid = config.ids.uids.tox-bootstrapd;
description = "Tox bootstrap daemon user";
inherit home;
createHome = true;
};
systemd.services.tox-bootstrapd = {
description = "Tox DHT bootstrap daemon";
after = [ "network.target" ];
wantedBy = [ "multi-user.target" ];
serviceConfig =
{ ExecStart = "${pkg}/bin/tox-bootstrapd ${cfgFile}";
Type = "forking";
inherit PIDFile;
User = "tox-bootstrapd";
};
};
};
}

View File

@ -17,7 +17,8 @@ let
'' ''
# Client connection config # Client connection config
+ optionalString cfg.client.enable '' + optionalString cfg.client.enable ''
SOCKSPort ${cfg.client.socksListenAddress} SOCKSPort ${cfg.client.socksListenAddress} IsolateDestAddr
SOCKSPort ${cfg.client.socksListenAddressFaster}
${opt "SocksPolicy" cfg.client.socksPolicy} ${opt "SocksPolicy" cfg.client.socksPolicy}
'' ''
# Relay config # Relay config
@ -93,10 +94,23 @@ in
example = "192.168.0.1:9100"; example = "192.168.0.1:9100";
description = '' description = ''
Bind to this address to listen for connections from Bind to this address to listen for connections from
Socks-speaking applications. Socks-speaking applications. Provides strong circuit
isolation, separate circuit per IP address.
''; '';
}; };
socksListenAddressFaster = mkOption {
type = types.str;
default = "127.0.0.1:9063";
example = "192.168.0.1:9101";
description = ''
Bind to this address to listen for connections from
Socks-speaking applications. Same as socksListenAddress
but uses weaker circuit isolation to provide performance
suitable for a web browser.
'';
};
socksPolicy = mkOption { socksPolicy = mkOption {
type = types.nullOr types.str; type = types.nullOr types.str;
default = null; default = null;
@ -108,6 +122,22 @@ in
SocksListenAddress. SocksListenAddress.
''; '';
}; };
privoxy.enable = mkOption {
default = true;
description = ''
Whether to enable and configure the system Privoxy to use Tor's
faster port, suitable for HTTP.
To have anonymity, protocols need to be scrubbed of identifying
information, and this can be accomplished for HTTP by Privoxy.
Privoxy can also be useful for KDE torification. A good setup would be:
setting SOCKS proxy to the default Tor port, providing maximum
circuit isolation where possible; and setting HTTP proxy to Privoxy
to route HTTP traffic over faster, but less isolated port.
'';
};
}; };
relay = { relay = {
@ -322,5 +352,16 @@ in
}; };
environment.systemPackages = [ pkgs.tor ]; environment.systemPackages = [ pkgs.tor ];
services.privoxy = mkIf (cfg.client.enable && cfg.client.privoxy.enable) {
enable = true;
extraConfig = ''
forward-socks4a / ${cfg.client.socksListenAddressFaster} .
toggle 1
enable-remote-toggle 0
enable-edit-actions 0
enable-remote-http-toggle 0
'';
};
}; };
} }

View File

@ -0,0 +1,69 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.services.tor;
torify = pkgs.writeTextFile {
name = "tsocks";
text = ''
#!${pkgs.stdenv.shell}
TSOCKS_CONF_FILE=${pkgs.writeText "tsocks.conf" cfg.tsocks.config} LD_PRELOAD="${pkgs.tsocks}/lib/libtsocks.so $LD_PRELOAD" "$@"
'';
executable = true;
destination = "/bin/tsocks";
};
in
{
###### interface
options = {
services.tor.tsocks = {
enable = mkOption {
default = cfg.enable && cfg.client.enable;
description = ''
Whether to build tsocks wrapper script to relay application traffic via TOR.
'';
};
server = mkOption {
default = "localhost:9050";
example = "192.168.0.20";
description = ''
IP address of TOR client to use.
'';
};
config = mkOption {
default = "";
description = ''
Extra configuration. Contents will be added verbatim to TSocks
configuration file.
'';
};
};
};
###### implementation
config = mkIf cfg.tsocks.enable {
environment.systemPackages = [ torify ]; # expose it to the users
services.tor.tsocks.config = ''
server = ${toString(head (splitString ":" cfg.tsocks.server))}
server_port = ${toString(tail (splitString ":" cfg.tsocks.server))}
local = 127.0.0.0/255.128.0.0
local = 127.128.0.0/255.192.0.0
'';
};
}

View File

@ -6,9 +6,9 @@ let
cfg = config.services.tor.torsocks; cfg = config.services.tor.torsocks;
optionalNullStr = b: v: optionalString (b != null) v; optionalNullStr = b: v: optionalString (b != null) v;
configFile = '' configFile = server: ''
TorAddress ${toString (head (splitString ":" cfg.server))} TorAddress ${toString (head (splitString ":" server))}
TorPort ${toString (tail (splitString ":" cfg.server))} TorPort ${toString (tail (splitString ":" server))}
OnionAddrRange ${cfg.onionAddrRange} OnionAddrRange ${cfg.onionAddrRange}
@ -19,13 +19,24 @@ let
AllowInbound ${if cfg.allowInbound then "1" else "0"} AllowInbound ${if cfg.allowInbound then "1" else "0"}
''; '';
wrapTorsocks = name: server: pkgs.writeTextFile {
name = name;
text = ''
#!${pkgs.stdenv.shell}
TORSOCKS_CONF_FILE=${pkgs.writeText "torsocks.conf" (configFile server)} ${pkgs.torsocks}/bin/torsocks "$@"
'';
executable = true;
destination = "/bin/${name}";
};
in in
{ {
options = { options = {
services.tor.torsocks = { services.tor.torsocks = {
enable = mkOption { enable = mkOption {
type = types.bool; type = types.bool;
default = false; default = config.services.tor.enable && config.services.tor.client.enable;
description = '' description = ''
Whether to build <literal>/etc/tor/torsocks.conf</literal> Whether to build <literal>/etc/tor/torsocks.conf</literal>
containing the specified global torsocks configuration. containing the specified global torsocks configuration.
@ -42,6 +53,16 @@ in
''; '';
}; };
fasterServer = mkOption {
type = types.str;
default = "127.0.0.1:9063";
example = "192.168.0.20:1234";
description = ''
IP/Port of the Tor SOCKS server for torsocks-faster wrapper suitable for HTTP.
Currently, hostnames are NOT supported by torsocks.
'';
};
onionAddrRange = mkOption { onionAddrRange = mkOption {
type = types.str; type = types.str;
default = "127.42.42.0/24"; default = "127.42.42.0/24";
@ -89,10 +110,10 @@ in
}; };
config = mkIf cfg.enable { config = mkIf cfg.enable {
environment.systemPackages = [ pkgs.torsocks ]; environment.systemPackages = [ pkgs.torsocks (wrapTorsocks "torsocks-faster" cfg.fasterServer) ];
environment.etc = environment.etc =
[ { source = pkgs.writeText "torsocks.conf" configFile; [ { source = pkgs.writeText "torsocks.conf" (configFile cfg.server);
target = "tor/torsocks.conf"; target = "tor/torsocks.conf";
} }
]; ];

View File

@ -152,7 +152,9 @@ in
xorg.xauth # used by kdesu xorg.xauth # used by kdesu
pkgs.shared_desktop_ontologies # used by nepomuk pkgs.shared_desktop_ontologies # used by nepomuk
pkgs.strigi # used by nepomuk pkgs.strigi # used by nepomuk
pkgs.kde4.akonadi
pkgs.mysql # used by akonadi pkgs.mysql # used by akonadi
pkgs.kde4.kdepim_runtime
] ]
++ lib.optional config.hardware.pulseaudio.enable pkgs.kde4.kmix # Perhaps this should always be enabled ++ lib.optional config.hardware.pulseaudio.enable pkgs.kde4.kmix # Perhaps this should always be enabled
++ lib.optional config.hardware.bluetooth.enable pkgs.kde4.bluedevil ++ lib.optional config.hardware.bluetooth.enable pkgs.kde4.bluedevil

View File

@ -189,7 +189,7 @@ in
xserverArgs = mkOption { xserverArgs = mkOption {
type = types.listOf types.str; type = types.listOf types.str;
default = []; default = [];
example = [ "-ac" "-logverbose" "-nolisten tcp" ]; example = [ "-ac" "-logverbose" "-verbose" "-nolisten tcp" ];
description = "List of arguments for the X server."; description = "List of arguments for the X server.";
apply = toString; apply = toString;
}; };

View File

@ -5,6 +5,7 @@ with lib;
let let
cfg = config.services.xserver.windowManager.awesome; cfg = config.services.xserver.windowManager.awesome;
awesome = cfg.package;
in in
@ -14,9 +15,24 @@ in
options = { options = {
services.xserver.windowManager.awesome.enable = mkOption { services.xserver.windowManager.awesome = {
default = false;
description = "Enable the Awesome window manager."; enable = mkEnableOption "Awesome window manager";
luaModules = mkOption {
default = [];
type = types.listOf types.package;
description = "List of lua packages available for being used in the Awesome configuration.";
example = literalExample "[ luaPackages.oocairo ]";
};
package = mkOption {
default = null;
type = types.nullOr types.package;
description = "Package to use for running the Awesome WM.";
apply = pkg: if pkg == null then pkgs.awesome else pkg;
};
}; };
}; };
@ -30,12 +46,17 @@ in
{ name = "awesome"; { name = "awesome";
start = start =
'' ''
${pkgs.awesome}/bin/awesome & ${concatMapStrings (pkg: ''
export LUA_CPATH=$LUA_CPATH''${LUA_CPATH:+;}${pkg}/lib/lua/${awesome.lua.luaversion}/?.so
export LUA_PATH=$LUA_PATH''${LUA_PATH:+;}${pkg}/lib/lua/${awesome.lua.luaversion}/?.lua
'') cfg.luaModules}
${awesome}/bin/awesome &
waitPID=$! waitPID=$!
''; '';
}; };
environment.systemPackages = [ pkgs.awesome ]; environment.systemPackages = [ awesome ];
}; };

View File

@ -483,8 +483,6 @@ in
services.xserver.displayManager.xserverArgs = services.xserver.displayManager.xserverArgs =
[ "-ac" [ "-ac"
"-logverbose"
"-verbose"
"-terminate" "-terminate"
"-logfile" "/var/log/X.${toString cfg.display}.log" "-logfile" "/var/log/X.${toString cfg.display}.log"
"-config ${configFile}" "-config ${configFile}"

View File

@ -181,7 +181,7 @@ while (my ($unit, $state) = each %{$activePrev}) {
} elsif ($unit =~ /\.mount$/) { } elsif ($unit =~ /\.mount$/) {
# Reload the changed mount unit to force a remount. # Reload the changed mount unit to force a remount.
write_file($reloadListFile, { append => 1 }, "$unit\n"); write_file($reloadListFile, { append => 1 }, "$unit\n");
} elsif ($unit =~ /\.socket$/ || $unit =~ /\.path$/) { } elsif ($unit =~ /\.socket$/ || $unit =~ /\.path$/ || $unit =~ /\.slice$/) {
# FIXME: do something? # FIXME: do something?
} else { } else {
my $unitInfo = parseUnit($newUnitFile); my $unitInfo = parseUnit($newUnitFile);

View File

@ -56,9 +56,10 @@ echo
# Mount special file systems. # Mount special file systems.
mkdir -p /etc mkdir -p /etc/udev
touch /etc/fstab # to shut up mount touch /etc/fstab # to shut up mount
touch /etc/mtab # to shut up mke2fs touch /etc/mtab # to shut up mke2fs
touch /etc/udev/hwdb.bin # to shut up udev
touch /etc/initrd-release touch /etc/initrd-release
mkdir -p /proc mkdir -p /proc
mount -t proc proc /proc mount -t proc proc /proc

View File

@ -85,6 +85,12 @@ in
optionalString (cfg.defaultGatewayWindowSize != null) optionalString (cfg.defaultGatewayWindowSize != null)
"window ${cfg.defaultGatewayWindowSize}"} || true "window ${cfg.defaultGatewayWindowSize}"} || true
''} ''}
${optionalString (cfg.defaultGateway6 != null && cfg.defaultGateway6 != "") ''
# FIXME: get rid of "|| true" (necessary to make it idempotent).
ip -6 route add ::/0 via "${cfg.defaultGateway6}" ${
optionalString (cfg.defaultGatewayWindowSize != null)
"window ${cfg.defaultGatewayWindowSize}"} || true
''}
''; '';
}; };

View File

@ -51,6 +51,8 @@ in
DHCP = override (dhcpStr cfg.useDHCP); DHCP = override (dhcpStr cfg.useDHCP);
} // optionalAttrs (cfg.defaultGateway != null) { } // optionalAttrs (cfg.defaultGateway != null) {
gateway = override [ cfg.defaultGateway ]; gateway = override [ cfg.defaultGateway ];
} // optionalAttrs (cfg.defaultGateway6 != null) {
gateway = override [ cfg.defaultGateway6 ];
} // optionalAttrs (domains != [ ]) { } // optionalAttrs (domains != [ ]) {
domains = override domains; domains = override domains;
}; };

View File

@ -233,8 +233,12 @@ in
The 32-bit host ID of the machine, formatted as 8 hexadecimal characters. The 32-bit host ID of the machine, formatted as 8 hexadecimal characters.
You should try to make this ID unique among your machines. You can You should try to make this ID unique among your machines. You can
generate a random 32-bit ID using the following command: generate a random 32-bit ID using the following commands:
<literal>cksum /etc/machine-id | while read c rest; do printf "%x" $c; done</literal>
(this derives it from the machine-id that systemd generates) or
<literal>head -c4 /dev/urandom | od -A none -t x4</literal> <literal>head -c4 /dev/urandom | od -A none -t x4</literal>
''; '';
}; };
@ -256,6 +260,15 @@ in
''; '';
}; };
networking.defaultGateway6 = mkOption {
default = null;
example = "2001:4d0:1e04:895::1";
type = types.nullOr types.str;
description = ''
The default ipv6 gateway. It can be left empty if it is auto-detected through DHCP.
'';
};
networking.defaultGatewayWindowSize = mkOption { networking.defaultGatewayWindowSize = mkOption {
default = null; default = null;
example = 524288; example = 524288;

View File

@ -57,8 +57,7 @@ let
-name ${vmName} \ -name ${vmName} \
-m ${toString config.virtualisation.memorySize} \ -m ${toString config.virtualisation.memorySize} \
${optionalString (pkgs.stdenv.system == "x86_64-linux") "-cpu kvm64"} \ ${optionalString (pkgs.stdenv.system == "x86_64-linux") "-cpu kvm64"} \
-net nic,vlan=0,model=virtio \ ${concatStringsSep " " config.virtualisation.qemu.networkingOptions} \
-net user,vlan=0''${QEMU_NET_OPTS:+,$QEMU_NET_OPTS} \
-virtfs local,path=/nix/store,security_model=none,mount_tag=store \ -virtfs local,path=/nix/store,security_model=none,mount_tag=store \
-virtfs local,path=$TMPDIR/xchg,security_model=none,mount_tag=xchg \ -virtfs local,path=$TMPDIR/xchg,security_model=none,mount_tag=xchg \
-virtfs local,path=''${SHARED_DIR:-$TMPDIR/xchg},security_model=none,mount_tag=shared \ -virtfs local,path=''${SHARED_DIR:-$TMPDIR/xchg},security_model=none,mount_tag=shared \
@ -248,12 +247,31 @@ in
description = "Primary IP address used in /etc/hosts."; description = "Primary IP address used in /etc/hosts.";
}; };
virtualisation.qemu.options = virtualisation.qemu = {
mkOption { options =
default = []; mkOption {
example = [ "-vga std" ]; default = [];
description = "Options passed to QEMU."; example = [ "-vga std" ];
}; description = "Options passed to QEMU.";
};
networkingOptions =
mkOption {
default = [
"-net nic,vlan=0,model=virtio"
"-net user,vlan=0\${QEMU_NET_OPTS:+,$QEMU_NET_OPTS}"
];
type = types.listOf types.str;
description = ''
Networking-related command-line options that should be passed to qemu.
The default is to use userspace networking (slirp).
If you override this option, be adviced to keep
''${QEMU_NET_OPTS:+,$QEMU_NET_OPTS} (as seen in the default)
to keep the default runtime behaviour.
'';
};
};
virtualisation.useBootLoader = virtualisation.useBootLoader =
mkOption { mkOption {

View File

@ -43,11 +43,6 @@ import ./make-test.nix ({ pkgs, ... }: with pkgs.pythonPackages; rec {
TMPDIR=/tmp/xchg/bigtmp TMPDIR=/tmp/xchg/bigtmp
export TMPDIR export TMPDIR
mkPythonPath() {
nix-store -qR "$@" \
| sed -e 's|$|/lib/${pkgs.python.libPrefix}/site-packages|'
}
cp -Rd "${blivet.src}/tests" . cp -Rd "${blivet.src}/tests" .
# Skip SELinux tests # Skip SELinux tests
@ -73,8 +68,11 @@ import ./make-test.nix ({ pkgs, ... }: with pkgs.pythonPackages; rec {
-e 's|_STORE_FILE_PATH = .*|_STORE_FILE_PATH = tempfile.gettempdir()|' \ -e 's|_STORE_FILE_PATH = .*|_STORE_FILE_PATH = tempfile.gettempdir()|' \
tests/loopbackedtestcase.py tests/loopbackedtestcase.py
PYTHONPATH=".:$(mkPythonPath "${blivet}" "${mock}" | paste -sd :)" \ PYTHONPATH=".:$(< "${pkgs.stdenv.mkDerivation {
python "${pythonTestRunner}" name = "blivet-pythonpath";
buildInputs = [ blivet mock ];
buildCommand = "echo \"$PYTHONPATH\" > \"$out\"";
}}")" python "${pythonTestRunner}"
''; '';
testScript = '' testScript = ''

View File

@ -43,7 +43,7 @@ import ./make-test.nix {
$machine->fail("curl --fail --connect-timeout 2 http://$ip/ > /dev/null"); $machine->fail("curl --fail --connect-timeout 2 http://$ip/ > /dev/null");
# Make sure we have a NixOS tree (required by nixos-container create). # Make sure we have a NixOS tree (required by nixos-container create).
$machine->succeed("nix-env -qa -A nixos.pkgs.hello >&2"); $machine->succeed("PAGER=cat nix-env -qa -A nixos.pkgs.hello >&2");
# Create some containers imperatively. # Create some containers imperatively.
my $id1 = $machine->succeed("nixos-container create foo --ensure-unique-name"); my $id1 = $machine->succeed("nixos-container create foo --ensure-unique-name");

View File

@ -8,6 +8,7 @@ import ./make-test.nix {
virtualisation.memorySize = 768; virtualisation.memorySize = 768;
services.gitlab.enable = true; services.gitlab.enable = true;
services.gitlab.databasePassword = "gitlab"; services.gitlab.databasePassword = "gitlab";
systemd.services.gitlab.serviceConfig.TimeoutStartSec = "10min";
}; };
}; };

View File

@ -8,6 +8,10 @@ import ./make-test.nix {
slave = { slave = {
enable = true; enable = true;
master = "zk://localhost:2181/mesos"; master = "zk://localhost:2181/mesos";
attributes = {
tag1 = "foo";
tag2 = "bar";
};
}; };
master = { master = {
enable = true; enable = true;

View File

@ -1,5 +1,7 @@
import ./make-test.nix ({ pkgs, ... }: with pkgs.lib; let import ./make-test.nix ({ pkgs, ... }: with pkgs.lib; let
debug = false;
testVMConfig = vmName: attrs: { config, pkgs, ... }: { testVMConfig = vmName: attrs: { config, pkgs, ... }: {
boot.kernelParams = let boot.kernelParams = let
miniInit = '' miniInit = ''
@ -64,7 +66,7 @@ import ./make-test.nix ({ pkgs, ... }: with pkgs.lib; let
rotated = map (i: "${logfile}.${toString i}") (range 1 9); rotated = map (i: "${logfile}.${toString i}") (range 1 9);
all = concatMapStringsSep " " (f: "\"${f}\"") ([logfile] ++ rotated); all = concatMapStringsSep " " (f: "\"${f}\"") ([logfile] ++ rotated);
logcmd = "tail -F ${all} 2> /dev/null | logger -t \"${tag}\""; logcmd = "tail -F ${all} 2> /dev/null | logger -t \"${tag}\"";
in "$machine->execute(ru '${logcmd} & disown');"; in optionalString debug "$machine->execute(ru '${logcmd} & disown');";
testVM = vmName: vmScript: let testVM = vmName: vmScript: let
cfg = (import ../lib/eval-config.nix { cfg = (import ../lib/eval-config.nix {
@ -297,14 +299,16 @@ import ./make-test.nix ({ pkgs, ... }: with pkgs.lib; let
in { in {
name = "virtualbox"; name = "virtualbox";
machine = { pkgs, ... }: { machine = { pkgs, lib, config, ... }: {
imports = let imports = let
mkVMConf = name: val: val.machine // { key = "${name}-config"; }; mkVMConf = name: val: val.machine // { key = "${name}-config"; };
vmConfigs = mapAttrsToList mkVMConf vboxVMs; vmConfigs = mapAttrsToList mkVMConf vboxVMs;
in [ ./common/user-account.nix ./common/x11.nix ] ++ vmConfigs; in [ ./common/user-account.nix ./common/x11.nix ] ++ vmConfigs;
virtualisation.memorySize = 768; virtualisation.memorySize = 768;
services.virtualboxHost.enable = true; services.virtualboxHost.enable = true;
users.extraUsers.alice.extraGroups = [ "vboxusers" ]; users.extraUsers.alice.extraGroups = let
inherit (config.services.virtualboxHost) enableHardening;
in lib.mkIf enableHardening (lib.singleton "vboxusers");
}; };
testScript = '' testScript = ''

View File

@ -4,20 +4,19 @@
, mpg123, neon, faad2 , mpg123, neon, faad2
}: }:
let let version = "3.5.2"; in
version = "3.5.1";
in
stdenv.mkDerivation { stdenv.mkDerivation {
name = "audacious-${version}"; name = "audacious-${version}";
src = fetchurl { src = fetchurl {
url = "http://distfiles.audacious-media-player.org/audacious-${version}.tar.bz2"; url = "http://distfiles.audacious-media-player.org/audacious-${version}.tar.bz2";
sha256 = "01wmlvpp540gdjw759wif3byh98h3b3q6f5wawzp0b0ivqd0wf6z"; sha256 = "0mhrdj76h0g6q197wgp8rxk6gqsrirrw49hfidcb5b7q5rlvj59r";
}; };
pluginsSrc = fetchurl { pluginsSrc = fetchurl {
url = "http://distfiles.audacious-media-player.org/audacious-plugins-${version}.tar.bz2"; url = "http://distfiles.audacious-media-player.org/audacious-plugins-${version}.tar.bz2";
sha256 = "09lyvi15hbn3pvb2izyz2bm4021917mhcdrwxrn3q3sjvx337np6"; sha256 = "1nacd8n46q3pqnwavq3i2ayls609gvxfcp3qqpcsfcdfz3bh15hp";
}; };
buildInputs = buildInputs =

View File

@ -1,6 +1,6 @@
{ stdenv, fetchurl, pkgconfig, intltool, gtk3, glib, libid3tag, id3lib, taglib { stdenv, fetchurl, pkgconfig, intltool, gtk3, glib, libid3tag, id3lib, taglib
, libvorbis, libogg, flac, itstool, libxml2, gsettings_desktop_schemas , libvorbis, libogg, flac, itstool, libxml2, gsettings_desktop_schemas
, makeWrapper, gnome_icon_theme , makeWrapper, gnome_icon_theme, dconf
}: }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
@ -14,7 +14,8 @@ stdenv.mkDerivation rec {
preFixup = '' preFixup = ''
wrapProgram $out/bin/easytag \ wrapProgram $out/bin/easytag \
--prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH:$out/share" --prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS:$GSETTINGS_SCHEMAS_PATH:$out/share" \
--prefix GIO_EXTRA_MODULES : "${dconf}/lib/gio/modules"
''; '';
NIX_LDFLAGS = "-lid3tag -lz"; NIX_LDFLAGS = "-lid3tag -lz";
@ -22,7 +23,7 @@ stdenv.mkDerivation rec {
nativeBuildInputs = [ makeWrapper ]; nativeBuildInputs = [ makeWrapper ];
buildInputs = [ buildInputs = [
pkgconfig intltool gtk3 glib libid3tag id3lib taglib libvorbis libogg flac pkgconfig intltool gtk3 glib libid3tag id3lib taglib libvorbis libogg flac
itstool libxml2 gsettings_desktop_schemas gnome_icon_theme itstool libxml2 gsettings_desktop_schemas gnome_icon_theme dconf
]; ];
meta = { meta = {

View File

@ -0,0 +1,31 @@
{ fetchurl, stdenv, pythonPackages, libmms }:
let version = "3.2";
in
pythonPackages.buildPythonPackage {
name = "mimms-${version}";
src = fetchurl {
url = "http://download.savannah.gnu.org/releases/mimms/mimms-${version}.tar.bz2";
sha256 = "0zmcd670mpq85cs3nvdq3i805ba0d1alqahfy1m9cpf7kxrivfml";
};
postInstall = ''
wrapProgram $out/bin/mimms \
--prefix LD_LIBRARY_PATH : ${libmms}/lib
'';
meta = {
homepage = https://savannah.nongnu.org/projects/mimms/;
license = stdenv.lib.licenses.gpl3;
description = "An mms (e.g. mms://) stream downloader";
longDescription = ''
mimms is a program designed to allow you to download streams
using the MMS protocol and save them to your computer, as
opposed to watching them live. Similar functionality is
available in full media player suites such as Xine, MPlayer,
and VLC, but mimms is quick and easy to use and, for the time
being, remains a useful program.
'';
};
}

View File

@ -1,10 +1,11 @@
{ stdenv, fetchurl, python, pythonPackages, cdparanoia, cdrdao { stdenv, fetchurl, python, pythonPackages, cdparanoia, cdrdao
, pygobject, gst_python, gst_plugins_base, gst_plugins_good , pygobject, gst_python, gst_plugins_base, gst_plugins_good
, setuptools, utillinux, makeWrapper }: , setuptools, utillinux, makeWrapper, substituteAll }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "morituri-${version}"; name = "morituri-${version}";
version = "0.2.3"; version = "0.2.3";
namePrefix = "";
src = fetchurl { src = fetchurl {
url = "http://thomas.apestaart.org/download/morituri/${name}.tar.bz2"; url = "http://thomas.apestaart.org/download/morituri/${name}.tar.bz2";
@ -21,23 +22,12 @@ stdenv.mkDerivation rec {
gst_plugins_base gst_plugins_good gst_plugins_base gst_plugins_good
] ++ pythonPath; ] ++ pythonPath;
patches = [ ./paths.patch ]; patches = [
(substituteAll {
postPatch = '' src = ./paths.patch;
substituteInPlace morituri/extern/python-command/scripts/help2man \ inherit cdrdao cdparanoia python utillinux;
--replace /usr/bin/python ${python}/bin/python })
];
substituteInPlace morituri/common/program.py \
--replace umount ${utillinux}/bin/umount \
--replace \'eject \'${utillinux}/bin/eject
substituteInPlace morituri/program/cdparanoia.py \
--replace '"cdparanoia"' '"${cdparanoia}/bin/cdparanoia"'
substituteInPlace morituri/program/cdrdao.py \
--replace "['cdrdao', ]" "['${cdrdao}/bin/cdrdao', ]" \
--replace '"cdrdao"' '"${cdrdao}/bin/cdrdao"'
'';
# This package contains no binaries to patch or strip. # This package contains no binaries to patch or strip.
dontPatchELF = true; dontPatchELF = true;

View File

@ -1,6 +1,6 @@
diff -Nurp morituri-0.2.3-orig/doc/Makefile.in morituri-0.2.3/doc/Makefile.in diff -Nurp morituri-0.2.3-orig/doc/Makefile.in morituri-0.2.3/doc/Makefile.in
--- morituri-0.2.3-orig/doc/Makefile.in 2014-11-01 00:13:01.231364181 +0100 --- morituri-0.2.3-orig/doc/Makefile.in 2014-12-23 12:44:46.222410092 +0100
+++ morituri-0.2.3/doc/Makefile.in 2014-11-01 00:13:56.691812229 +0100 +++ morituri-0.2.3/doc/Makefile.in 2014-12-23 12:46:49.619756940 +0100
@@ -486,7 +486,7 @@ morituri.ics: $(top_srcdir)/morituri.doa @@ -486,7 +486,7 @@ morituri.ics: $(top_srcdir)/morituri.doa
-moap doap -f $(top_srcdir)/morituri.doap ical > morituri.ics -moap doap -f $(top_srcdir)/morituri.doap ical > morituri.ics
@ -10,3 +10,82 @@ diff -Nurp morituri-0.2.3-orig/doc/Makefile.in morituri-0.2.3/doc/Makefile.in
clean-local: clean-local:
@rm -rf reference @rm -rf reference
diff -Nurp morituri-0.2.3-orig/morituri/common/program.py morituri-0.2.3/morituri/common/program.py
--- morituri-0.2.3-orig/morituri/common/program.py 2014-12-23 12:44:46.218410048 +0100
+++ morituri-0.2.3/morituri/common/program.py 2014-12-23 12:46:49.647757245 +0100
@@ -92,13 +92,13 @@ class Program(log.Loggable):
"""
Load the given device.
"""
- os.system('eject -t %s' % device)
+ os.system('@utillinux@/bin/eject -t %s' % device)
def ejectDevice(self, device):
"""
Eject the given device.
"""
- os.system('eject %s' % device)
+ os.system('@utillinux@/bin/eject %s' % device)
def unmountDevice(self, device):
"""
@@ -112,7 +112,7 @@ class Program(log.Loggable):
proc = open('/proc/mounts').read()
if device in proc:
print 'Device %s is mounted, unmounting' % device
- os.system('umount %s' % device)
+ os.system('@utillinux@/bin/umount %s' % device)
def getFastToc(self, runner, toc_pickle, device):
"""
diff -Nurp morituri-0.2.3-orig/morituri/extern/python-command/scripts/help2man morituri-0.2.3/morituri/extern/python-command/scripts/help2man
--- morituri-0.2.3-orig/morituri/extern/python-command/scripts/help2man 2014-12-23 12:44:46.206409916 +0100
+++ morituri-0.2.3/morituri/extern/python-command/scripts/help2man 2014-12-23 12:46:49.631757074 +0100
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!@python@/bin/python
# -*- Mode: Python -*-
# vi:si:et:sw=4:sts=4:ts=4
diff -Nurp morituri-0.2.3-orig/morituri/program/cdparanoia.py morituri-0.2.3/morituri/program/cdparanoia.py
--- morituri-0.2.3-orig/morituri/program/cdparanoia.py 2014-12-23 12:44:46.202409873 +0100
+++ morituri-0.2.3/morituri/program/cdparanoia.py 2014-12-23 12:46:49.659757376 +0100
@@ -278,7 +278,7 @@ class ReadTrackTask(log.Loggable, task.T
stopTrack, stopOffset)
bufsize = 1024
- argv = ["cdparanoia", "--stderr-progress",
+ argv = ["@cdparanoia@/bin/cdparanoia", "--stderr-progress",
"--sample-offset=%d" % self._offset, ]
if self._device:
argv.extend(["--force-cdrom-device", self._device, ])
@@ -551,7 +551,7 @@ _VERSION_RE = re.compile(
def getCdParanoiaVersion():
getter = common.VersionGetter('cdparanoia',
- ["cdparanoia", "-V"],
+ ["@cdparanoia@/bin/cdparanoia", "-V"],
_VERSION_RE,
"%(version)s %(release)s")
diff -Nurp morituri-0.2.3-orig/morituri/program/cdrdao.py morituri-0.2.3/morituri/program/cdrdao.py
--- morituri-0.2.3-orig/morituri/program/cdrdao.py 2014-12-23 12:44:46.202409873 +0100
+++ morituri-0.2.3/morituri/program/cdrdao.py 2014-12-23 12:46:49.667757463 +0100
@@ -257,7 +257,7 @@ class CDRDAOTask(ctask.PopenTask):
def start(self, runner):
self.debug('Starting cdrdao with options %r', self.options)
- self.command = ['cdrdao', ] + self.options
+ self.command = ['@cdrdao@/bin/cdrdao', ] + self.options
ctask.PopenTask.start(self, runner)
@@ -515,7 +515,7 @@ _VERSION_RE = re.compile(
def getCDRDAOVersion():
getter = common.VersionGetter('cdrdao',
- ["cdrdao"],
+ ["@cdrdao@/bin/cdrdao"],
_VERSION_RE,
"%(version)s")

View File

@ -0,0 +1,28 @@
{ stdenv, fetchurl, unzip }:
stdenv.mkDerivation {
name = "mp3gain-1.5.2";
src = fetchurl {
url = "http://downloads.sourceforge.net/mp3gain/mp3gain-1_5_2-src.zip";
sha256 = "1jkgry59m8cnnfq05b9y1h4x4wpy3iq8j68slb9qffwa3ajcgbfv";
};
buildInputs = [ unzip ];
sourceRoot = ".";
buildFlags = [ "OSTYPE=linux" ];
installPhase = ''
mkdir -p $out/usr/bin
cp mp3gain $out/usr/bin
'';
meta = {
description = "Lossless mp3 normalizer with statistical analysis";
homepage = http://mp3gain.sourceforge.net/;
license = stdenv.lib.licenses.lgpl21;
platforms = stdenv.lib.platforms.linux;
maintainers = [ stdenv.lib.maintainers.devhell ];
};
}

View File

@ -2,12 +2,12 @@
, libiconvOrEmpty, boost, readline }: , libiconvOrEmpty, boost, readline }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
version = "0.6.1"; version = "0.6.2";
name = "ncmpcpp-${version}"; name = "ncmpcpp-${version}";
src = fetchurl { src = fetchurl {
url = "http://ncmpcpp.rybczak.net/stable/ncmpcpp-${version}.tar.bz2"; url = "http://ncmpcpp.rybczak.net/stable/ncmpcpp-${version}.tar.bz2";
sha256 = "033a18hj0q0smm5n0ykld9az7w95myr7jm2b1bjm0h2q5927x8qm"; sha256 = "1mrd6m6ph0fscxp9x96ipxh6ai7w0n1miapcfqrqfy058qx5zbck";
}; };
configureFlags = "BOOST_LIB_SUFFIX="; configureFlags = "BOOST_LIB_SUFFIX=";
@ -19,7 +19,7 @@ stdenv.mkDerivation rec {
description = "Curses-based interface for MPD (music player daemon)"; description = "Curses-based interface for MPD (music player daemon)";
homepage = http://unkart.ovh.org/ncmpcpp/; homepage = http://unkart.ovh.org/ncmpcpp/;
license = licenses.gpl2Plus; license = licenses.gpl2Plus;
maintainers = with maintainers; [ lovek323 mornfall ]; maintainers = with maintainers; [ lovek323 mornfall koral ];
platforms = platforms.all; platforms = platforms.all;
}; };
} }

View File

@ -1,5 +1,5 @@
{ fetchurl, stdenv, pkgconfig, intltool, pulseaudio, gtkmm3 { fetchurl, stdenv, pkgconfig, intltool, pulseaudio, gtkmm3
, libcanberra_gtk3 }: , libcanberra_gtk3, makeWrapper, gnome3 }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "pavucontrol-2.0"; name = "pavucontrol-2.0";
@ -9,7 +9,13 @@ stdenv.mkDerivation rec {
sha256 = "02s775m1531sshwlbvfddk3pz8zjmwkv1sgzggn386ja3gc9vwi2"; sha256 = "02s775m1531sshwlbvfddk3pz8zjmwkv1sgzggn386ja3gc9vwi2";
}; };
buildInputs = [ pulseaudio gtkmm3 libcanberra_gtk3 ]; preFixup = ''
wrapProgram "$out/bin/pavucontrol" \
--prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS"
'';
buildInputs = [ pulseaudio gtkmm3 libcanberra_gtk3 makeWrapper
gnome3.gnome_icon_theme ];
nativeBuildInputs = [ pkgconfig intltool ]; nativeBuildInputs = [ pkgconfig intltool ];

View File

@ -6,6 +6,7 @@
let version = "1.3"; in let version = "1.3"; in
buildPythonPackage { buildPythonPackage {
name = "picard-${version}"; name = "picard-${version}";
namePrefix = "";
src = fetchurl { src = fetchurl {
url = "ftp://ftp.musicbrainz.org/pub/musicbrainz/picard/picard-${version}.tar.gz"; url = "ftp://ftp.musicbrainz.org/pub/musicbrainz/picard/picard-${version}.tar.gz";

View File

@ -0,0 +1,8 @@
--- ./scripts/CrashPlanDesktop 2014-12-18 09:51:14.050804325 +0100
+++ ./scripts/CrashPlanDesktop-1 2014-12-18 09:51:32.271009382 +0100
@@ -9,4 +9,4 @@
cd ${TARGETDIR}
-${JAVACOMMON} ${GUI_JAVA_OPTS} -classpath "./lib/com.backup42.desktop.jar:./lang:./skin" com.backup42.desktop.CPDesktop > ${TARGETDIR}/log/ui_output.log 2> ${TARGETDIR}/log/ui_error.log &
+${JAVACOMMON} ${GUI_JAVA_OPTS} -classpath "./lib/com.backup42.desktop.jar:./lang:./skin" com.backup42.desktop.CPDesktop &

View File

@ -16,7 +16,7 @@ in stdenv.mkDerivation rec {
description = "An online/offline backup solution"; description = "An online/offline backup solution";
homepage = "http://www.crashplan.org"; homepage = "http://www.crashplan.org";
license = licenses.unfree; license = licenses.unfree;
maintainers = with maintainers; [ sztupi ]; maintainers = with maintainers; [ sztupi iElectric ];
}; };
buildInputs = [ makeWrapper cpio ]; buildInputs = [ makeWrapper cpio ];
@ -25,7 +25,7 @@ in stdenv.mkDerivation rec {
manifestdir = "${vardir}/manifest"; manifestdir = "${vardir}/manifest";
patches = [ ./CrashPlanEngine.patch ]; patches = [ ./CrashPlanEngine.patch ./CrashPlanDesktop.patch ];
installPhase = '' installPhase = ''
mkdir $out mkdir $out
@ -45,6 +45,7 @@ in stdenv.mkDerivation rec {
install -D -m 644 run.conf $out/bin/run.conf install -D -m 644 run.conf $out/bin/run.conf
install -D -m 755 scripts/CrashPlanDesktop $out/bin/CrashPlanDesktop install -D -m 755 scripts/CrashPlanDesktop $out/bin/CrashPlanDesktop
install -D -m 755 scripts/CrashPlanEngine $out/bin/CrashPlanEngine install -D -m 755 scripts/CrashPlanEngine $out/bin/CrashPlanEngine
install -D -m 644 scripts/CrashPlan.desktop $out/share/applications/CrashPlan.desktop
rm -r $out/log rm -r $out/log
ln -s $vardir/log $out/log ln -s $vardir/log $out/log
@ -72,6 +73,10 @@ in stdenv.mkDerivation rec {
substituteInPlace $f --replace sed ${gnused}/bin/sed substituteInPlace $f --replace sed ${gnused}/bin/sed
substituteInPlace $f --replace grep ${gnugrep}/bin/grep substituteInPlace $f --replace grep ${gnugrep}/bin/grep
done done
substituteInPlace $out/share/applications/CrashPlan.desktop \
--replace /usr/local $out \
--replace crashplan/skin skin
wrapProgram $out/bin/CrashPlanDesktop --prefix LD_LIBRARY_PATH ":" "${gtk2}/lib:${glib}/lib:${libXtst}/lib" wrapProgram $out/bin/CrashPlanDesktop --prefix LD_LIBRARY_PATH ":" "${gtk2}/lib:${glib}/lib:${libXtst}/lib"
''; '';

View File

@ -17,7 +17,7 @@ stdenv.mkDerivation rec {
description = "A powerful editor targeted towards programmers and webdevelopers"; description = "A powerful editor targeted towards programmers and webdevelopers";
homepage = http://bluefish.openoffice.nl/; homepage = http://bluefish.openoffice.nl/;
license = licenses.gpl3Plus; license = licenses.gpl3Plus;
maintainer = [maintainers.vbgl]; maintainers = [maintainers.vbgl];
platforms = platforms.all; platforms = platforms.all;
}; };
} }

View File

@ -1,18 +1,25 @@
{ stdenv, fetchgit, emacs, texinfo }: { stdenv, fetchurl, emacs, texinfo }:
stdenv.mkDerivation rec { let
name = "haskell-mode-20141113"; version = "13.10";
in
stdenv.mkDerivation {
name = "haskell-mode-${version}";
src = fetchgit { src = fetchurl {
url = "https://github.com/haskell/haskell-mode.git"; url = "https://github.com/haskell/haskell-mode/archive/v${version}.tar.gz";
sha256 = "fc2a15f3a88f2343663e8b078464991a1af5ffe36c8158ee4f61c5d0358c9daf"; sha256 = "0hcg7wpalcdw8j36m8vd854zrrgym074r7m903rpwfrhx9mlg02b";
}; };
buildInputs = [ emacs texinfo ]; buildInputs = [ emacs texinfo ];
makeFlags = "VERSION=${version} GIT_VERSION=${version}";
installPhase = '' installPhase = ''
mkdir -p "$out/share/emacs/site-lisp" mkdir -p $out/share/emacs/site-lisp
cp *.el *.elc *.hs "$out/share/emacs/site-lisp/" cp *.el *.elc *.hs $out/share/emacs/site-lisp/
mkdir -p $out/share/info
cp -v *.info* $out/share/info/
''; '';
meta = { meta = {

View File

@ -0,0 +1,39 @@
{ stdenv, fetchFromGitHub, emacs, texinfo }:
let
version = "13.10-299-g74b5a3c"; # git describe --tags
in
stdenv.mkDerivation {
name = "haskell-mode-${version}";
src = fetchFromGitHub {
owner = "haskell";
repo = "haskell-mode";
rev = "v${version}";
sha256 = "1qjrc1c4jsgbbhnhssvadg00qffn80a8slrxc9g1hnzp632kv8wl";
};
buildInputs = [ emacs texinfo ];
makeFlags = "VERSION=v${version} GIT_VERSION=v${version}";
installPhase = ''
mkdir -p $out/share/emacs/site-lisp
cp *.el *.elc *.hs $out/share/emacs/site-lisp/
mkdir -p $out/share/info
cp -v *.info* $out/share/info/
'';
# The test suite must run *after* copying the generated files to $out
# because "make check" implies "make clean".
doInstallCheck = true;
installCheckTarget = "check";
meta = {
homepage = "http://github.com/haskell/haskell-mode";
description = "Haskell mode for Emacs";
platforms = stdenv.lib.platforms.unix;
maintainers = [ stdenv.lib.maintainers.simons ];
};
}

View File

@ -74,12 +74,6 @@ let
&& jdk=${jdk}/lib/openjdk \ && jdk=${jdk}/lib/openjdk \
|| jdk=${jdk} || jdk=${jdk}
if [ "${stdenv.system}" == "x86_64-linux" ]; then
makeWrapper "$out/$name/bin/fsnotifier64" "$out/bin/fsnotifier64"
else
makeWrapper "$out/$name/bin/fsnotifier" "$out/bin/fsnotifier"
fi
makeWrapper "$out/$name/bin/${loName}.sh" "$out/bin/${loName}" \ makeWrapper "$out/$name/bin/${loName}.sh" "$out/bin/${loName}" \
--prefix PATH : "${jdk}/bin:${coreutils}/bin:${gnugrep}/bin:${which}/bin:${git}/bin" \ --prefix PATH : "${jdk}/bin:${coreutils}/bin:${gnugrep}/bin:${which}/bin:${git}/bin" \
--prefix LD_RUN_PATH : "${stdenv.gcc.gcc}/lib/" \ --prefix LD_RUN_PATH : "${stdenv.gcc.gcc}/lib/" \
@ -295,13 +289,13 @@ in
phpstorm = buildPhpStorm rec { phpstorm = buildPhpStorm rec {
name = "phpstorm-${version}"; name = "phpstorm-${version}";
version = "8.0.1"; version = "8.0.2";
build = "PS-138.2001"; build = "PS-139.732";
description = "Professional IDE for Web and PHP developers"; description = "Professional IDE for Web and PHP developers";
license = stdenv.lib.licenses.unfree; license = stdenv.lib.licenses.unfree;
src = fetchurl { src = fetchurl {
url = "http://download.jetbrains.com/webide/PhpStorm-${version}.tar.gz"; url = "http://download.jetbrains.com/webide/PhpStorm-${version}.tar.gz";
sha256 = "0d46442aa32174fe16846c3c31428178ab69b827d2e0ce31f633f13b64c01afc"; sha256 = "01b8vx6swi71sd0rc7i1jnicilqp11ch3zrm8gwb6xh1pmmpdirf";
}; };
}; };

View File

@ -3,7 +3,7 @@
let let
name = "zed-${version}"; name = "zed-${version}";
version = "0.13"; version = "1.0.0";
# When upgrading node.nix / node packages: # When upgrading node.nix / node packages:
# fetch package.json from Zed's repository # fetch package.json from Zed's repository
@ -31,7 +31,7 @@ let
src = fetchgit { src = fetchgit {
url = "git://github.com/zedapp/zed"; url = "git://github.com/zedapp/zed";
rev = "refs/tags/v${version}"; rev = "refs/tags/v${version}";
sha256 = "023nq4y6dgh57xpsgawdn2zqvfyhjz1p00ldnsfsjajyy4nn6yb1"; sha256 = "1kdvj9mvdwm4cswqw6nn9j6kgqvs4d7vycpsmmfha9a2rkryw9zh";
}; };
buildInputs = [ makeWrapper zip ]; buildInputs = [ makeWrapper zip ];

View File

@ -2,21 +2,21 @@
{ {
by-spec."accepts"."~1.1.0" = by-spec."accepts"."~1.1.0" =
self.by-version."accepts"."1.1.0"; self.by-version."accepts"."1.1.1";
by-version."accepts"."1.1.0" = lib.makeOverridable self.buildNodePackage { by-version."accepts"."1.1.1" = lib.makeOverridable self.buildNodePackage {
name = "node-accepts-1.1.0"; name = "node-accepts-1.1.1";
src = [ src = [
(fetchurl { (fetchurl {
url = "http://registry.npmjs.org/accepts/-/accepts-1.1.0.tgz"; url = "http://registry.npmjs.org/accepts/-/accepts-1.1.1.tgz";
name = "accepts-1.1.0.tgz"; name = "accepts-1.1.1.tgz";
sha1 = "43ba6d946374c80f91823eaec6bb43dc4955500b"; sha1 = "3b40bf6abc3fe3bc004534f4672ae1efd0063a96";
}) })
]; ];
buildInputs = buildInputs =
(self.nativeDeps."accepts" or []); (self.nativeDeps."accepts" or []);
deps = [ deps = [
self.by-version."mime-types"."2.0.1" self.by-version."mime-types"."2.0.2"
self.by-version."negotiator"."0.4.7" self.by-version."negotiator"."0.4.8"
]; ];
peerDependencies = [ peerDependencies = [
]; ];
@ -119,33 +119,33 @@
passthru.names = [ "block-stream" ]; passthru.names = [ "block-stream" ];
}; };
by-spec."body-parser"."^1.6.3" = by-spec."body-parser"."^1.6.3" =
self.by-version."body-parser"."1.8.1"; self.by-version."body-parser"."1.9.0";
by-version."body-parser"."1.8.1" = lib.makeOverridable self.buildNodePackage { by-version."body-parser"."1.9.0" = lib.makeOverridable self.buildNodePackage {
name = "node-body-parser-1.8.1"; name = "node-body-parser-1.9.0";
src = [ src = [
(fetchurl { (fetchurl {
url = "http://registry.npmjs.org/body-parser/-/body-parser-1.8.1.tgz"; url = "http://registry.npmjs.org/body-parser/-/body-parser-1.9.0.tgz";
name = "body-parser-1.8.1.tgz"; name = "body-parser-1.9.0.tgz";
sha1 = "f9f96d221c435c95d18aeaad2bcdea1371902aad"; sha1 = "95d72943b1a4f67f56bbac9e0dcc837b68703605";
}) })
]; ];
buildInputs = buildInputs =
(self.nativeDeps."body-parser" or []); (self.nativeDeps."body-parser" or []);
deps = [ deps = [
self.by-version."bytes"."1.0.0" self.by-version."bytes"."1.0.0"
self.by-version."depd"."0.4.4" self.by-version."depd"."1.0.0"
self.by-version."iconv-lite"."0.4.4" self.by-version."iconv-lite"."0.4.4"
self.by-version."media-typer"."0.3.0" self.by-version."media-typer"."0.3.0"
self.by-version."on-finished"."2.1.0" self.by-version."on-finished"."2.1.0"
self.by-version."qs"."2.2.3" self.by-version."qs"."2.2.4"
self.by-version."raw-body"."1.3.0" self.by-version."raw-body"."1.3.0"
self.by-version."type-is"."1.5.1" self.by-version."type-is"."1.5.2"
]; ];
peerDependencies = [ peerDependencies = [
]; ];
passthru.names = [ "body-parser" ]; passthru.names = [ "body-parser" ];
}; };
"body-parser" = self.by-version."body-parser"."1.8.1"; "body-parser" = self.by-version."body-parser"."1.9.0";
by-spec."boom"."0.4.x" = by-spec."boom"."0.4.x" =
self.by-version."boom"."0.4.2"; self.by-version."boom"."0.4.2";
by-version."boom"."0.4.2" = lib.makeOverridable self.buildNodePackage { by-version."boom"."0.4.2" = lib.makeOverridable self.buildNodePackage {
@ -166,25 +166,6 @@
]; ];
passthru.names = [ "boom" ]; passthru.names = [ "boom" ];
}; };
by-spec."buffer-crc32"."0.2.3" =
self.by-version."buffer-crc32"."0.2.3";
by-version."buffer-crc32"."0.2.3" = lib.makeOverridable self.buildNodePackage {
name = "node-buffer-crc32-0.2.3";
src = [
(fetchurl {
url = "http://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.3.tgz";
name = "buffer-crc32-0.2.3.tgz";
sha1 = "bb54519e95d107cbd2400e76d0cab1467336d921";
})
];
buildInputs =
(self.nativeDeps."buffer-crc32" or []);
deps = [
];
peerDependencies = [
];
passthru.names = [ "buffer-crc32" ];
};
by-spec."bytes"."1" = by-spec."bytes"."1" =
self.by-version."bytes"."1.0.0"; self.by-version."bytes"."1.0.0";
by-version."bytes"."1.0.0" = lib.makeOverridable self.buildNodePackage { by-version."bytes"."1.0.0" = lib.makeOverridable self.buildNodePackage {
@ -283,6 +264,25 @@
]; ];
passthru.names = [ "cookie-signature" ]; passthru.names = [ "cookie-signature" ];
}; };
by-spec."crc"."3.0.0" =
self.by-version."crc"."3.0.0";
by-version."crc"."3.0.0" = lib.makeOverridable self.buildNodePackage {
name = "node-crc-3.0.0";
src = [
(fetchurl {
url = "http://registry.npmjs.org/crc/-/crc-3.0.0.tgz";
name = "crc-3.0.0.tgz";
sha1 = "d11e97ec44a844e5eb15a74fa2c7875d0aac4b22";
})
];
buildInputs =
(self.nativeDeps."crc" or []);
deps = [
];
peerDependencies = [
];
passthru.names = [ "crc" ];
};
by-spec."cryptiles"."0.2.x" = by-spec."cryptiles"."0.2.x" =
self.by-version."cryptiles"."0.2.2"; self.by-version."cryptiles"."0.2.2";
by-version."cryptiles"."0.2.2" = lib.makeOverridable self.buildNodePackage { by-version."cryptiles"."0.2.2" = lib.makeOverridable self.buildNodePackage {
@ -361,15 +361,34 @@
]; ];
passthru.names = [ "delayed-stream" ]; passthru.names = [ "delayed-stream" ];
}; };
by-spec."depd"."0.4.4" = by-spec."depd"."0.4.5" =
self.by-version."depd"."0.4.4"; self.by-version."depd"."0.4.5";
by-version."depd"."0.4.4" = lib.makeOverridable self.buildNodePackage { by-version."depd"."0.4.5" = lib.makeOverridable self.buildNodePackage {
name = "node-depd-0.4.4"; name = "node-depd-0.4.5";
src = [ src = [
(fetchurl { (fetchurl {
url = "http://registry.npmjs.org/depd/-/depd-0.4.4.tgz"; url = "http://registry.npmjs.org/depd/-/depd-0.4.5.tgz";
name = "depd-0.4.4.tgz"; name = "depd-0.4.5.tgz";
sha1 = "07091fae75f97828d89b4a02a2d4778f0e7c0662"; sha1 = "1a664b53388b4a6573e8ae67b5f767c693ca97f1";
})
];
buildInputs =
(self.nativeDeps."depd" or []);
deps = [
];
peerDependencies = [
];
passthru.names = [ "depd" ];
};
by-spec."depd"."~1.0.0" =
self.by-version."depd"."1.0.0";
by-version."depd"."1.0.0" = lib.makeOverridable self.buildNodePackage {
name = "node-depd-1.0.0";
src = [
(fetchurl {
url = "http://registry.npmjs.org/depd/-/depd-1.0.0.tgz";
name = "depd-1.0.0.tgz";
sha1 = "2fda0d00e98aae2845d4991ab1bf1f2a199073d5";
}) })
]; ];
buildInputs = buildInputs =
@ -437,47 +456,46 @@
]; ];
passthru.names = [ "escape-html" ]; passthru.names = [ "escape-html" ];
}; };
by-spec."etag"."~1.3.0" = by-spec."etag"."~1.4.0" =
self.by-version."etag"."1.3.0"; self.by-version."etag"."1.4.0";
by-version."etag"."1.3.0" = lib.makeOverridable self.buildNodePackage { by-version."etag"."1.4.0" = lib.makeOverridable self.buildNodePackage {
name = "node-etag-1.3.0"; name = "node-etag-1.4.0";
src = [ src = [
(fetchurl { (fetchurl {
url = "http://registry.npmjs.org/etag/-/etag-1.3.0.tgz"; url = "http://registry.npmjs.org/etag/-/etag-1.4.0.tgz";
name = "etag-1.3.0.tgz"; name = "etag-1.4.0.tgz";
sha1 = "c837debfbfe0baf7eb8e2f0bbb3d1d9cc3229697"; sha1 = "3050991615857707c04119d075ba2088e0701225";
}) })
]; ];
buildInputs = buildInputs =
(self.nativeDeps."etag" or []); (self.nativeDeps."etag" or []);
deps = [ deps = [
self.by-version."buffer-crc32"."0.2.3" self.by-version."crc"."3.0.0"
]; ];
peerDependencies = [ peerDependencies = [
]; ];
passthru.names = [ "etag" ]; passthru.names = [ "etag" ];
}; };
by-spec."express"."^4.8.3" = by-spec."express"."^4.8.3" =
self.by-version."express"."4.9.0"; self.by-version."express"."4.9.5";
by-version."express"."4.9.0" = lib.makeOverridable self.buildNodePackage { by-version."express"."4.9.5" = lib.makeOverridable self.buildNodePackage {
name = "node-express-4.9.0"; name = "node-express-4.9.5";
src = [ src = [
(fetchurl { (fetchurl {
url = "http://registry.npmjs.org/express/-/express-4.9.0.tgz"; url = "http://registry.npmjs.org/express/-/express-4.9.5.tgz";
name = "express-4.9.0.tgz"; name = "express-4.9.5.tgz";
sha1 = "9b2ea4ebce57c7ac710604c74f6c303ab344a7f3"; sha1 = "7f62aa84ac8f5e96acfb98e2944dde0bf1cf8688";
}) })
]; ];
buildInputs = buildInputs =
(self.nativeDeps."express" or []); (self.nativeDeps."express" or []);
deps = [ deps = [
self.by-version."accepts"."1.1.0" self.by-version."accepts"."1.1.1"
self.by-version."buffer-crc32"."0.2.3"
self.by-version."cookie-signature"."1.0.5" self.by-version."cookie-signature"."1.0.5"
self.by-version."debug"."2.0.0" self.by-version."debug"."2.0.0"
self.by-version."depd"."0.4.4" self.by-version."depd"."0.4.5"
self.by-version."escape-html"."1.0.1" self.by-version."escape-html"."1.0.1"
self.by-version."etag"."1.3.0" self.by-version."etag"."1.4.0"
self.by-version."finalhandler"."0.2.0" self.by-version."finalhandler"."0.2.0"
self.by-version."fresh"."0.2.4" self.by-version."fresh"."0.2.4"
self.by-version."media-typer"."0.3.0" self.by-version."media-typer"."0.3.0"
@ -485,12 +503,12 @@
self.by-version."on-finished"."2.1.0" self.by-version."on-finished"."2.1.0"
self.by-version."parseurl"."1.3.0" self.by-version."parseurl"."1.3.0"
self.by-version."path-to-regexp"."0.1.3" self.by-version."path-to-regexp"."0.1.3"
self.by-version."proxy-addr"."1.0.1" self.by-version."proxy-addr"."1.0.3"
self.by-version."qs"."2.2.3" self.by-version."qs"."2.2.4"
self.by-version."range-parser"."1.0.2" self.by-version."range-parser"."1.0.2"
self.by-version."send"."0.9.1" self.by-version."send"."0.9.3"
self.by-version."serve-static"."1.6.1" self.by-version."serve-static"."1.6.3"
self.by-version."type-is"."1.5.1" self.by-version."type-is"."1.5.2"
self.by-version."vary"."1.0.0" self.by-version."vary"."1.0.0"
self.by-version."cookie"."0.1.2" self.by-version."cookie"."0.1.2"
self.by-version."merge-descriptors"."0.0.2" self.by-version."merge-descriptors"."0.0.2"
@ -500,7 +518,7 @@
]; ];
passthru.names = [ "express" ]; passthru.names = [ "express" ];
}; };
"express" = self.by-version."express"."4.9.0"; "express" = self.by-version."express"."4.9.5";
by-spec."finalhandler"."0.2.0" = by-spec."finalhandler"."0.2.0" =
self.by-version."finalhandler"."0.2.0"; self.by-version."finalhandler"."0.2.0";
by-version."finalhandler"."0.2.0" = lib.makeOverridable self.buildNodePackage { by-version."finalhandler"."0.2.0" = lib.makeOverridable self.buildNodePackage {
@ -563,6 +581,25 @@
]; ];
passthru.names = [ "form-data" ]; passthru.names = [ "form-data" ];
}; };
by-spec."forwarded"."~0.1.0" =
self.by-version."forwarded"."0.1.0";
by-version."forwarded"."0.1.0" = lib.makeOverridable self.buildNodePackage {
name = "node-forwarded-0.1.0";
src = [
(fetchurl {
url = "http://registry.npmjs.org/forwarded/-/forwarded-0.1.0.tgz";
name = "forwarded-0.1.0.tgz";
sha1 = "19ef9874c4ae1c297bcf078fde63a09b66a84363";
})
];
buildInputs =
(self.nativeDeps."forwarded" or []);
deps = [
];
peerDependencies = [
];
passthru.names = [ "forwarded" ];
};
by-spec."fresh"."0.2.4" = by-spec."fresh"."0.2.4" =
self.by-version."fresh"."0.2.4"; self.by-version."fresh"."0.2.4";
by-version."fresh"."0.2.4" = lib.makeOverridable self.buildNodePackage { by-version."fresh"."0.2.4" = lib.makeOverridable self.buildNodePackage {
@ -728,15 +765,15 @@
}; };
by-spec."inherits"."~2.0.0" = by-spec."inherits"."~2.0.0" =
self.by-version."inherits"."2.0.1"; self.by-version."inherits"."2.0.1";
by-spec."ipaddr.js"."0.1.2" = by-spec."ipaddr.js"."0.1.3" =
self.by-version."ipaddr.js"."0.1.2"; self.by-version."ipaddr.js"."0.1.3";
by-version."ipaddr.js"."0.1.2" = lib.makeOverridable self.buildNodePackage { by-version."ipaddr.js"."0.1.3" = lib.makeOverridable self.buildNodePackage {
name = "node-ipaddr.js-0.1.2"; name = "node-ipaddr.js-0.1.3";
src = [ src = [
(fetchurl { (fetchurl {
url = "http://registry.npmjs.org/ipaddr.js/-/ipaddr.js-0.1.2.tgz"; url = "http://registry.npmjs.org/ipaddr.js/-/ipaddr.js-0.1.3.tgz";
name = "ipaddr.js-0.1.2.tgz"; name = "ipaddr.js-0.1.3.tgz";
sha1 = "6a1fd3d854f5002965c34d7bbcd9b4a8d4b0467e"; sha1 = "27a9ca37f148d2102b0ef191ccbf2c51a8f025c6";
}) })
]; ];
buildInputs = buildInputs =
@ -846,15 +883,15 @@
self.by-version."mime"."1.2.11"; self.by-version."mime"."1.2.11";
by-spec."mime"."~1.2.9" = by-spec."mime"."~1.2.9" =
self.by-version."mime"."1.2.11"; self.by-version."mime"."1.2.11";
by-spec."mime-db"."~1.0.1" = by-spec."mime-db"."~1.1.0" =
self.by-version."mime-db"."1.0.1"; self.by-version."mime-db"."1.1.0";
by-version."mime-db"."1.0.1" = lib.makeOverridable self.buildNodePackage { by-version."mime-db"."1.1.0" = lib.makeOverridable self.buildNodePackage {
name = "node-mime-db-1.0.1"; name = "node-mime-db-1.1.0";
src = [ src = [
(fetchurl { (fetchurl {
url = "http://registry.npmjs.org/mime-db/-/mime-db-1.0.1.tgz"; url = "http://registry.npmjs.org/mime-db/-/mime-db-1.1.0.tgz";
name = "mime-db-1.0.1.tgz"; name = "mime-db-1.1.0.tgz";
sha1 = "35d99b0965967253bb30633a7d07a8de9975a952"; sha1 = "4613f418ab995450bf4bda240cd0ab38016a07a9";
}) })
]; ];
buildInputs = buildInputs =
@ -865,28 +902,26 @@
]; ];
passthru.names = [ "mime-db" ]; passthru.names = [ "mime-db" ];
}; };
by-spec."mime-types"."~2.0.0" = by-spec."mime-types"."~2.0.2" =
self.by-version."mime-types"."2.0.1"; self.by-version."mime-types"."2.0.2";
by-version."mime-types"."2.0.1" = lib.makeOverridable self.buildNodePackage { by-version."mime-types"."2.0.2" = lib.makeOverridable self.buildNodePackage {
name = "node-mime-types-2.0.1"; name = "node-mime-types-2.0.2";
src = [ src = [
(fetchurl { (fetchurl {
url = "http://registry.npmjs.org/mime-types/-/mime-types-2.0.1.tgz"; url = "http://registry.npmjs.org/mime-types/-/mime-types-2.0.2.tgz";
name = "mime-types-2.0.1.tgz"; name = "mime-types-2.0.2.tgz";
sha1 = "7f5b4712592e7dd46ca733fd1c5f5d71356de615"; sha1 = "c74b779f2896c367888622bd537aaaad4c0a2c08";
}) })
]; ];
buildInputs = buildInputs =
(self.nativeDeps."mime-types" or []); (self.nativeDeps."mime-types" or []);
deps = [ deps = [
self.by-version."mime-db"."1.0.1" self.by-version."mime-db"."1.1.0"
]; ];
peerDependencies = [ peerDependencies = [
]; ];
passthru.names = [ "mime-types" ]; passthru.names = [ "mime-types" ];
}; };
by-spec."mime-types"."~2.0.1" =
self.by-version."mime-types"."2.0.1";
by-spec."minimist"."0.0.8" = by-spec."minimist"."0.0.8" =
self.by-version."minimist"."0.0.8"; self.by-version."minimist"."0.0.8";
by-version."minimist"."0.0.8" = lib.makeOverridable self.buildNodePackage { by-version."minimist"."0.0.8" = lib.makeOverridable self.buildNodePackage {
@ -964,15 +999,15 @@
]; ];
passthru.names = [ "nan" ]; passthru.names = [ "nan" ];
}; };
by-spec."negotiator"."0.4.7" = by-spec."negotiator"."0.4.8" =
self.by-version."negotiator"."0.4.7"; self.by-version."negotiator"."0.4.8";
by-version."negotiator"."0.4.7" = lib.makeOverridable self.buildNodePackage { by-version."negotiator"."0.4.8" = lib.makeOverridable self.buildNodePackage {
name = "node-negotiator-0.4.7"; name = "node-negotiator-0.4.8";
src = [ src = [
(fetchurl { (fetchurl {
url = "http://registry.npmjs.org/negotiator/-/negotiator-0.4.7.tgz"; url = "http://registry.npmjs.org/negotiator/-/negotiator-0.4.8.tgz";
name = "negotiator-0.4.7.tgz"; name = "negotiator-0.4.8.tgz";
sha1 = "a4160f7177ec806738631d0d3052325da42abdc8"; sha1 = "96010b23b63c387f47a4bed96762a831cda39eab";
}) })
]; ];
buildInputs = buildInputs =
@ -1044,14 +1079,14 @@
by-spec."on-finished"."~2.1.0" = by-spec."on-finished"."~2.1.0" =
self.by-version."on-finished"."2.1.0"; self.by-version."on-finished"."2.1.0";
by-spec."options".">=0.0.5" = by-spec."options".">=0.0.5" =
self.by-version."options"."0.0.5"; self.by-version."options"."0.0.6";
by-version."options"."0.0.5" = lib.makeOverridable self.buildNodePackage { by-version."options"."0.0.6" = lib.makeOverridable self.buildNodePackage {
name = "node-options-0.0.5"; name = "node-options-0.0.6";
src = [ src = [
(fetchurl { (fetchurl {
url = "http://registry.npmjs.org/options/-/options-0.0.5.tgz"; url = "http://registry.npmjs.org/options/-/options-0.0.6.tgz";
name = "options-0.0.5.tgz"; name = "options-0.0.6.tgz";
sha1 = "9a3806378f316536d79038038ba90ccb724816c3"; sha1 = "ec22d312806bb53e731773e7cdaefcf1c643128f";
}) })
]; ];
buildInputs = buildInputs =
@ -1100,21 +1135,22 @@
]; ];
passthru.names = [ "path-to-regexp" ]; passthru.names = [ "path-to-regexp" ];
}; };
by-spec."proxy-addr"."1.0.1" = by-spec."proxy-addr"."~1.0.3" =
self.by-version."proxy-addr"."1.0.1"; self.by-version."proxy-addr"."1.0.3";
by-version."proxy-addr"."1.0.1" = lib.makeOverridable self.buildNodePackage { by-version."proxy-addr"."1.0.3" = lib.makeOverridable self.buildNodePackage {
name = "node-proxy-addr-1.0.1"; name = "node-proxy-addr-1.0.3";
src = [ src = [
(fetchurl { (fetchurl {
url = "http://registry.npmjs.org/proxy-addr/-/proxy-addr-1.0.1.tgz"; url = "http://registry.npmjs.org/proxy-addr/-/proxy-addr-1.0.3.tgz";
name = "proxy-addr-1.0.1.tgz"; name = "proxy-addr-1.0.3.tgz";
sha1 = "c7c566d5eb4e3fad67eeb9c77c5558ccc39b88a8"; sha1 = "17d824aac844707441249da6d1ea5e889007cdd6";
}) })
]; ];
buildInputs = buildInputs =
(self.nativeDeps."proxy-addr" or []); (self.nativeDeps."proxy-addr" or []);
deps = [ deps = [
self.by-version."ipaddr.js"."0.1.2" self.by-version."forwarded"."0.1.0"
self.by-version."ipaddr.js"."0.1.3"
]; ];
peerDependencies = [ peerDependencies = [
]; ];
@ -1139,15 +1175,15 @@
]; ];
passthru.names = [ "punycode" ]; passthru.names = [ "punycode" ];
}; };
by-spec."qs"."2.2.3" = by-spec."qs"."2.2.4" =
self.by-version."qs"."2.2.3"; self.by-version."qs"."2.2.4";
by-version."qs"."2.2.3" = lib.makeOverridable self.buildNodePackage { by-version."qs"."2.2.4" = lib.makeOverridable self.buildNodePackage {
name = "node-qs-2.2.3"; name = "node-qs-2.2.4";
src = [ src = [
(fetchurl { (fetchurl {
url = "http://registry.npmjs.org/qs/-/qs-2.2.3.tgz"; url = "http://registry.npmjs.org/qs/-/qs-2.2.4.tgz";
name = "qs-2.2.3.tgz"; name = "qs-2.2.4.tgz";
sha1 = "6139c1f47960eff5655e56aab0ef9f6dd16d4eeb"; sha1 = "2e9fbcd34b540e3421c924ecd01e90aa975319c8";
}) })
]; ];
buildInputs = buildInputs =
@ -1177,7 +1213,7 @@
]; ];
passthru.names = [ "qs" ]; passthru.names = [ "qs" ];
}; };
by-spec."range-parser"."~1.0.0" = by-spec."range-parser"."~1.0.2" =
self.by-version."range-parser"."1.0.2"; self.by-version."range-parser"."1.0.2";
by-version."range-parser"."1.0.2" = lib.makeOverridable self.buildNodePackage { by-version."range-parser"."1.0.2" = lib.makeOverridable self.buildNodePackage {
name = "node-range-parser-1.0.2"; name = "node-range-parser-1.0.2";
@ -1196,8 +1232,6 @@
]; ];
passthru.names = [ "range-parser" ]; passthru.names = [ "range-parser" ];
}; };
by-spec."range-parser"."~1.0.2" =
self.by-version."range-parser"."1.0.2";
by-spec."raw-body"."1.3.0" = by-spec."raw-body"."1.3.0" =
self.by-version."raw-body"."1.3.0"; self.by-version."raw-body"."1.3.0";
by-version."raw-body"."1.3.0" = lib.makeOverridable self.buildNodePackage { by-version."raw-body"."1.3.0" = lib.makeOverridable self.buildNodePackage {
@ -1270,25 +1304,25 @@
]; ];
passthru.names = [ "rimraf" ]; passthru.names = [ "rimraf" ];
}; };
by-spec."send"."0.9.1" = by-spec."send"."0.9.3" =
self.by-version."send"."0.9.1"; self.by-version."send"."0.9.3";
by-version."send"."0.9.1" = lib.makeOverridable self.buildNodePackage { by-version."send"."0.9.3" = lib.makeOverridable self.buildNodePackage {
name = "node-send-0.9.1"; name = "node-send-0.9.3";
src = [ src = [
(fetchurl { (fetchurl {
url = "http://registry.npmjs.org/send/-/send-0.9.1.tgz"; url = "http://registry.npmjs.org/send/-/send-0.9.3.tgz";
name = "send-0.9.1.tgz"; name = "send-0.9.3.tgz";
sha1 = "d93689f7c9ce36bd32f8ee572bb60bda032edc23"; sha1 = "b43a7414cd089b7fbec9b755246f7c37b7b85cc0";
}) })
]; ];
buildInputs = buildInputs =
(self.nativeDeps."send" or []); (self.nativeDeps."send" or []);
deps = [ deps = [
self.by-version."debug"."2.0.0" self.by-version."debug"."2.0.0"
self.by-version."depd"."0.4.4" self.by-version."depd"."0.4.5"
self.by-version."destroy"."1.0.3" self.by-version."destroy"."1.0.3"
self.by-version."escape-html"."1.0.1" self.by-version."escape-html"."1.0.1"
self.by-version."etag"."1.3.0" self.by-version."etag"."1.4.0"
self.by-version."fresh"."0.2.4" self.by-version."fresh"."0.2.4"
self.by-version."mime"."1.2.11" self.by-version."mime"."1.2.11"
self.by-version."ms"."0.6.2" self.by-version."ms"."0.6.2"
@ -1299,15 +1333,15 @@
]; ];
passthru.names = [ "send" ]; passthru.names = [ "send" ];
}; };
by-spec."serve-static"."~1.6.1" = by-spec."serve-static"."~1.6.3" =
self.by-version."serve-static"."1.6.1"; self.by-version."serve-static"."1.6.3";
by-version."serve-static"."1.6.1" = lib.makeOverridable self.buildNodePackage { by-version."serve-static"."1.6.3" = lib.makeOverridable self.buildNodePackage {
name = "node-serve-static-1.6.1"; name = "node-serve-static-1.6.3";
src = [ src = [
(fetchurl { (fetchurl {
url = "http://registry.npmjs.org/serve-static/-/serve-static-1.6.1.tgz"; url = "http://registry.npmjs.org/serve-static/-/serve-static-1.6.3.tgz";
name = "serve-static-1.6.1.tgz"; name = "serve-static-1.6.3.tgz";
sha1 = "2f257563afbe931d28cee4aa3dfeddc975a87193"; sha1 = "b214235d4d4516db050ea9f7b429b46212e79132";
}) })
]; ];
buildInputs = buildInputs =
@ -1315,7 +1349,7 @@
deps = [ deps = [
self.by-version."escape-html"."1.0.1" self.by-version."escape-html"."1.0.1"
self.by-version."parseurl"."1.3.0" self.by-version."parseurl"."1.3.0"
self.by-version."send"."0.9.1" self.by-version."send"."0.9.3"
self.by-version."utils-merge"."1.0.0" self.by-version."utils-merge"."1.0.0"
]; ];
peerDependencies = [ peerDependencies = [
@ -1424,21 +1458,21 @@
passthru.names = [ "tunnel-agent" ]; passthru.names = [ "tunnel-agent" ];
}; };
by-spec."type-is"."~1.5.1" = by-spec."type-is"."~1.5.1" =
self.by-version."type-is"."1.5.1"; self.by-version."type-is"."1.5.2";
by-version."type-is"."1.5.1" = lib.makeOverridable self.buildNodePackage { by-version."type-is"."1.5.2" = lib.makeOverridable self.buildNodePackage {
name = "node-type-is-1.5.1"; name = "node-type-is-1.5.2";
src = [ src = [
(fetchurl { (fetchurl {
url = "http://registry.npmjs.org/type-is/-/type-is-1.5.1.tgz"; url = "http://registry.npmjs.org/type-is/-/type-is-1.5.2.tgz";
name = "type-is-1.5.1.tgz"; name = "type-is-1.5.2.tgz";
sha1 = "5c1e62d874f79199fb16b34d16972dba376ccbed"; sha1 = "8291bbe845a904acfaffd05a41fdeb234bfa9e5f";
}) })
]; ];
buildInputs = buildInputs =
(self.nativeDeps."type-is" or []); (self.nativeDeps."type-is" or []);
deps = [ deps = [
self.by-version."media-typer"."0.3.0" self.by-version."media-typer"."0.3.0"
self.by-version."mime-types"."2.0.1" self.by-version."mime-types"."2.0.2"
]; ];
peerDependencies = [ peerDependencies = [
]; ];
@ -1499,7 +1533,7 @@
self.by-version."commander"."2.1.0" self.by-version."commander"."2.1.0"
self.by-version."nan"."1.0.0" self.by-version."nan"."1.0.0"
self.by-version."tinycolor"."0.0.1" self.by-version."tinycolor"."0.0.1"
self.by-version."options"."0.0.5" self.by-version."options"."0.0.6"
]; ];
peerDependencies = [ peerDependencies = [
]; ];

View File

@ -1,10 +1,10 @@
{ stdenv, fetchurl, gdal, cmake, qt4, flex, bison, proj, geos, x11, sqlite, gsl, { stdenv, fetchurl, gdal, cmake, qt4, flex, bison, proj, geos, x11, sqlite, gsl,
pyqt4, qwt, fcgi, python, libspatialindex, libspatialite, sip }: pyqt4, qwt, fcgi, python, libspatialindex, libspatialite }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "qgis-2.4.0"; name = "qgis-2.4.0";
buildInputs = [ gdal qt4 flex bison proj geos x11 sqlite gsl pyqt4 sip qwt buildInputs = [ gdal qt4 flex bison proj geos x11 sqlite gsl pyqt4 qwt
fcgi libspatialindex libspatialite ]; fcgi libspatialindex libspatialite ];
nativeBuildInputs = [ cmake python ]; nativeBuildInputs = [ cmake python ];

View File

@ -23,7 +23,7 @@ stdenv.mkDerivation rec {
meta = { meta = {
description = "A light-weight image viewer"; description = "A light-weight image viewer";
homepage = https://derf.homelinux.org/projects/feh/; homepage = https://derf.homelinux.org/projects/feh/;
license = "BSD"; license = stdenv.lib.licenses.mit;
maintainers = with stdenv.lib.maintainers; [viric]; maintainers = with stdenv.lib.maintainers; [viric];
platforms = with stdenv.lib.platforms; linux; platforms = with stdenv.lib.platforms; linux;
}; };

View File

@ -1,6 +1,6 @@
{ fetchurl, stdenv, m4, glibc, gtk3, libexif, libgphoto2, libsoup, libxml2, vala, sqlite, webkitgtk24x { fetchurl, stdenv, m4, glibc, gtk3, libexif, libgphoto2, libsoup, libxml2, vala, sqlite, webkitgtk24x
, pkgconfig, gnome3, gst_all_1, which, udev, libraw, glib, json_glib, gettext, desktop_file_utils , pkgconfig, gnome3, gst_all_1, which, udev, libraw, glib, json_glib, gettext, desktop_file_utils
, lcms2, gdk_pixbuf, librsvg, makeWrapper, gnome_doc_utils }: , lcms2, gdk_pixbuf, librsvg, makeWrapper, gnome_doc_utils, hicolor_icon_theme }:
# for dependencies see http://www.yorba.org/projects/shotwell/install/ # for dependencies see http://www.yorba.org/projects/shotwell/install/
@ -42,7 +42,8 @@ in stdenv.mkDerivation rec {
preFixup = '' preFixup = ''
wrapProgram "$out/bin/shotwell" \ wrapProgram "$out/bin/shotwell" \
--set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \ --set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE" \
--prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS:${gtk3}/share:$out/share:$GSETTINGS_SCHEMAS_PATH" --prefix XDG_DATA_DIRS : "$XDG_ICON_DIRS:${gtk3}/share:$out/share:$GSETTINGS_SCHEMAS_PATH" \
--prefix GIO_EXTRA_MODULES : "${gnome3.dconf}/lib/gio/modules"
rm $out/share/icons/hicolor/icon-theme.cache rm $out/share/icons/hicolor/icon-theme.cache
''; '';
@ -50,7 +51,9 @@ in stdenv.mkDerivation rec {
buildInputs = [ m4 glibc gtk3 libexif libgphoto2 libsoup libxml2 vala sqlite webkitgtk24x pkgconfig buildInputs = [ m4 glibc gtk3 libexif libgphoto2 libsoup libxml2 vala sqlite webkitgtk24x pkgconfig
gst_all_1.gstreamer gst_all_1.gst-plugins-base gnome3.libgee which udev gnome3.gexiv2 gst_all_1.gstreamer gst_all_1.gst-plugins-base gnome3.libgee which udev gnome3.gexiv2
libraw rest json_glib gettext desktop_file_utils glib lcms2 gdk_pixbuf librsvg libraw rest json_glib gettext desktop_file_utils glib lcms2 gdk_pixbuf librsvg
makeWrapper gnome_doc_utils ]; makeWrapper gnome_doc_utils
gnome3.gnome_icon_theme gnome3.gnome_icon_theme_symbolic
hicolor_icon_theme ];
meta = with stdenv.lib; { meta = with stdenv.lib; {
description = "Popular photo organizer for the GNOME desktop"; description = "Popular photo organizer for the GNOME desktop";

View File

@ -24,6 +24,6 @@ stdenv.mkDerivation rec {
homepage = http://www.yworks.com/en/products/yfiles/yed/; homepage = http://www.yworks.com/en/products/yfiles/yed/;
description = "A powerful desktop application that can be used to quickly and effectively generate high-quality diagrams"; description = "A powerful desktop application that can be used to quickly and effectively generate high-quality diagrams";
platforms = jre.meta.platforms; platforms = jre.meta.platforms;
maintainer = with maintainers; [ abbradar ]; maintainers = with maintainers; [ abbradar ];
}; };
} }

View File

@ -4,6 +4,7 @@
, zlib, fftw , zlib, fftw
, jackaudioSupport ? false, jack2 , jackaudioSupport ? false, jack2
, cudaSupport ? false, cudatoolkit6 , cudaSupport ? false, cudatoolkit6
, colladaSupport ? true, opencollada
}: }:
with lib; with lib;
@ -22,7 +23,8 @@ stdenv.mkDerivation rec {
opencolorio openexr openimageio /* openjpeg */ python zlib fftw opencolorio openexr openimageio /* openjpeg */ python zlib fftw
] ]
++ optional jackaudioSupport jack2 ++ optional jackaudioSupport jack2
++ optional cudaSupport cudatoolkit6; ++ optional cudaSupport cudatoolkit6
++ optional colladaSupport opencollada;
postUnpack = postUnpack =
'' ''
@ -30,8 +32,7 @@ stdenv.mkDerivation rec {
''; '';
cmakeFlags = cmakeFlags =
[ "-DWITH_OPENCOLLADA=OFF" [ "-DWITH_MOD_OCEANSIM=ON"
"-DWITH_MOD_OCEANSIM=ON"
"-DWITH_CODEC_FFMPEG=ON" "-DWITH_CODEC_FFMPEG=ON"
"-DWITH_CODEC_SNDFILE=ON" "-DWITH_CODEC_SNDFILE=ON"
"-DWITH_INSTALL_PORTABLE=OFF" "-DWITH_INSTALL_PORTABLE=OFF"
@ -41,7 +42,8 @@ stdenv.mkDerivation rec {
"-DPYTHON_VERSION=${python.majorVersion}" "-DPYTHON_VERSION=${python.majorVersion}"
] ]
++ optional jackaudioSupport "-DWITH_JACK=ON" ++ optional jackaudioSupport "-DWITH_JACK=ON"
++ optional cudaSupport "-DWITH_CYCLES_CUDA_BINARIES=ON"; ++ optional cudaSupport "-DWITH_CYCLES_CUDA_BINARIES=ON"
++ optional colladaSupport "-DWITH_OPENCOLLADA=ON";
NIX_CFLAGS_COMPILE = "-I${ilmbase}/include/OpenEXR -I${python}/include/${python.libPrefix}m"; NIX_CFLAGS_COMPILE = "-I${ilmbase}/include/OpenEXR -I${python}/include/${python.libPrefix}m";

View File

@ -5,11 +5,11 @@
}: }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "calibre-2.12.0"; name = "calibre-2.13.0";
src = fetchurl { src = fetchurl {
url = "mirror://sourceforge/calibre/${name}.tar.xz"; url = "mirror://sourceforge/calibre/${name}.tar.xz";
sha256 = "1qp3aq6f6ngfy8m0bj6rzdf6p2vmk4bxycxfby2n8byfhr8gaclf"; sha256 = "0sd9yanl4n1bmbxpvdvl68bisp0bgvfk6naddkvcahy9h7qc6h33";
}; };
inherit python; inherit python;

View File

@ -12,11 +12,6 @@ stdenv.mkDerivation rec {
sha256 = "0x95f57s0a96c4lifxdpf73v706iggwmdw8742mabbjnxq55l1qs"; sha256 = "0x95f57s0a96c4lifxdpf73v706iggwmdw8742mabbjnxq55l1qs";
}; };
patchPhase = ''
substituteInPlace "settings.c" \
--replace "xdgConfigOpen(\"dunst/dunstrc\", \"r\", &xdg" "fopen(\"$out/share/dunst/dunstrc\", \"r\""
'';
buildInputs = buildInputs =
[ coreutils unzip which pkgconfig dbus freetype libnotify gdk_pixbuf [ coreutils unzip which pkgconfig dbus freetype libnotify gdk_pixbuf
xdg_utils libXext glib pango cairo libX11 libxdg_basedir xdg_utils libXext glib pango cairo libX11 libxdg_basedir

View File

@ -1,6 +1,7 @@
{ stdenv, fetchurl, pythonPackages, slowaes, ecdsa, pyqt4 }: { stdenv, fetchurl, buildPythonPackage, slowaes, ecdsa, pyqt4 }:
pythonPackages.buildPythonPackage rec { buildPythonPackage rec {
namePrefix = "";
name = "electrum-${version}"; name = "electrum-${version}";
version = "1.9.8"; version = "1.9.8";
@ -11,7 +12,7 @@ pythonPackages.buildPythonPackage rec {
buildInputs = [ slowaes ecdsa ]; buildInputs = [ slowaes ecdsa ];
propagatedBuildInputs = [ propagatedBuildInputs = [
slowaes slowaes
ecdsa ecdsa
pyqt4 pyqt4
@ -29,4 +30,4 @@ pythonPackages.buildPythonPackage rec {
license = stdenv.lib.licenses.gpl3; license = stdenv.lib.licenses.gpl3;
maintainers = [ "emery@vfemail.net" ]; maintainers = [ "emery@vfemail.net" ];
}; };
} }

View File

@ -8,11 +8,11 @@ assert pulseaudioSupport -> pulseaudio != null;
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "gqrx-${version}"; name = "gqrx-${version}";
version = "2.3.0"; version = "2.3.2";
src = fetchurl { src = fetchurl {
url = "mirror://sourceforge/project/gqrx/${version}/${name}.tar.xz"; url = "mirror://sourceforge/project/gqrx/${version}/${name}.tar.xz";
sha256 = "0fyfkdd2ailg54ppv1y2fy2c692jmlmsyl1lxr20lyn6bvd9gpyn"; sha256 = "1vfqqa976xlbapqkpc9nka364zydvsy18xiwfqjy015kpasshdz1";
}; };
buildInputs = [ buildInputs = [

View File

@ -0,0 +1,28 @@
{stdenv, fetchurl, pkgconfig, gtk }:
stdenv.mkDerivation rec {
version = "0.1";
name = "gtk2fontsel-${version}";
src = fetchurl {
url = "mirror://sourceforge/gtk2fontsel/${name}.tar.gz";
sha256 = "0s2sj19n8ys92q9832hkn36ld91bb4qavicc6nygkry6qdpkkmjw";
};
buildInputs = [ stdenv pkgconfig gtk ];
preferLocalBuild = true;
meta = with stdenv.lib; {
description = "A font selection program for X11 using the GTK2 toolkit";
longDescription = ''
Font selection tool similar to xfontsel implemented using GTK+ 2.
Trivial, but useful nonetheless.
'';
homepage = http://gtk2fontsel.sourceforge.net/;
downloadPage = http://sourceforge.net/projects/gtk2fontsel/;
license = licenses.gpl2;
maintainers = [ maintainers.prikhi ];
platforms = platforms.linux;
};
}

View File

@ -0,0 +1,29 @@
{ stdenv, fetchurl, automake, autoconf, libtool, pkgconfig, libzen, libmediainfo, wxGTK, desktop_file_utils, libSM, imagemagick }:
let version = "0.7.71"; in
stdenv.mkDerivation {
name = "mediainfo-gui-${version}";
src = fetchurl {
url = "http://mediaarea.net/download/source/mediainfo/${version}/mediainfo_${version}.tar.bz2";
sha256 = "0sf0ym0v5ds5w4bxk66712adybr1prxxqwvrf9clm57ibs602jfq";
};
buildInputs = [ automake autoconf libtool pkgconfig libzen libmediainfo wxGTK desktop_file_utils libSM imagemagick ];
sourceRoot = "./MediaInfo/Project/GNU/GUI/";
preConfigure = "sh autogen";
meta = {
description = "Supplies technical and tag information about a video or audio file (GUI version)";
longDescription = ''
MediaInfo is a convenient unified display of the most relevant technical
and tag data for video and audio files.
'';
homepage = http://mediaarea.net/;
license = stdenv.lib.licenses.bsd2;
platforms = stdenv.lib.platforms.linux;
maintainers = [ stdenv.lib.maintainers.devhell ];
};
}

View File

@ -0,0 +1,30 @@
{ stdenv, fetchurl, automake, autoconf, libtool, pkgconfig, libzen, libmediainfo, zlib }:
let version = "0.7.71"; in
stdenv.mkDerivation {
name = "mediainfo-${version}";
src = fetchurl {
url = "http://mediaarea.net/download/source/mediainfo/${version}/mediainfo_${version}.tar.bz2";
sha256 = "0sf0ym0v5ds5w4bxk66712adybr1prxxqwvrf9clm57ibs602jfq";
};
buildInputs = [ automake autoconf libtool pkgconfig libzen libmediainfo zlib ];
sourceRoot = "./MediaInfo/Project/GNU/CLI/";
configureFlags = [ "--with-libmediainfo=${libmediainfo}" ];
preConfigure = "sh autogen";
meta = {
description = "Supplies technical and tag information about a video or audio file";
longDescription = ''
MediaInfo is a convenient unified display of the most relevant technical
and tag data for video and audio files.
'';
homepage = http://mediaarea.net/;
license = stdenv.lib.licenses.bsd2;
platforms = stdenv.lib.platforms.linux;
maintainers = [ stdenv.lib.maintainers.devhell ];
};
}

View File

@ -5,10 +5,10 @@ let
s = # Generated upstream information s = # Generated upstream information
rec { rec {
baseName="qpdfview"; baseName="qpdfview";
version="0.4.12"; version = "0.4.13";
name="${baseName}-${version}"; name="${baseName}-${version}";
url="https://launchpad.net/qpdfview/trunk/${version}/+download/qpdfview-${version}.tar.gz"; url="https://launchpad.net/qpdfview/trunk/${version}/+download/qpdfview-${version}.tar.gz";
sha256="1h6lrrh1vblqkxrd89nmid7d21anyn30iahj24z62yny35lidf0g"; sha256 = "0hcfy9wrgs6vygmq790rqipw2132br3av3nhzrm4gpxlbw2n7xcg";
}; };
buildInputs = [ buildInputs = [
qt4 popplerQt4 pkgconfig djvulibre libspectre cups file ghostscript qt4 popplerQt4 pkgconfig djvulibre libspectre cups file ghostscript

View File

@ -7,13 +7,13 @@ with stdenv.lib;
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "synergy-${version}"; name = "synergy-${version}";
version = "1.6.1"; version = "1.6.2";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "synergy"; owner = "synergy";
repo = "synergy"; repo = "synergy";
rev = "1.6.1"; rev = version;
sha256 = "1043101c4phv1nbxiqp2jn1jhgzspv9q6v75z0kfzwgii5n5xq1c"; sha256 = "0himg6c50x5wz5nc6rgd54rph1w6nin6j9f08pa4spsxn9b5h8ks";
}; };
patches = optional stdenv.isLinux ./cryptopp.patch; patches = optional stdenv.isLinux ./cryptopp.patch;

View File

@ -1,5 +1,5 @@
{ enableGUI ? true, enablePDFtoPPM ? true, useT1Lib ? false { enableGUI ? true, enablePDFtoPPM ? true, useT1Lib ? false
, stdenv, fetchurl, x11 ? null, motif ? null, freetype ? null, t1lib ? null , stdenv, fetchurl, zlib, libpng, x11 ? null, motif ? null, freetype ? null, t1lib ? null
, base14Fonts ? null , base14Fonts ? null
}: }:
@ -10,14 +10,14 @@ assert useT1Lib -> t1lib != null;
assert !useT1Lib; # t1lib has multiple unpatched security vulnerabilities assert !useT1Lib; # t1lib has multiple unpatched security vulnerabilities
stdenv.mkDerivation { stdenv.mkDerivation {
name = "xpdf-3.03"; name = "xpdf-3.04";
src = fetchurl { src = fetchurl {
url = ftp://ftp.foolabs.com/pub/xpdf/xpdf-3.03.tar.gz; url = ftp://ftp.foolabs.com/pub/xpdf/xpdf-3.04.tar.gz;
sha256 = "1jnfzdqc54wa73lw28kjv0m7120mksb0zkcn81jdlvijyvc67kq2"; sha256 = "1rbp54mr3z2x3a3a1qmz8byzygzi223vckfam9ib5g1sfds0qf8i";
}; };
buildInputs = buildInputs = [ zlib libpng ] ++
stdenv.lib.optionals enableGUI [x11 motif] ++ stdenv.lib.optionals enableGUI [x11 motif] ++
stdenv.lib.optional useT1Lib t1lib ++ stdenv.lib.optional useT1Lib t1lib ++
stdenv.lib.optional enablePDFtoPPM freetype; stdenv.lib.optional enablePDFtoPPM freetype;

View File

@ -11,14 +11,18 @@ stdenv.mkDerivation rec {
meta = { meta = {
description = "Lightweight WebKitGTK+ web browser"; description = "Lightweight WebKitGTK+ web browser";
homepage = "http://www.midori-browser.org"; homepage = "http://midori-browser.org";
license = stdenv.lib.licenses.lgpl21Plus; license = stdenv.lib.licenses.lgpl21Plus;
platforms = stdenv.lib.platforms.linux; platforms = stdenv.lib.platforms.linux;
maintainers = with stdenv.lib.maintainers; [ raskin iyzsong ]; maintainers = with stdenv.lib.maintainers; [ raskin iyzsong ];
}; };
src = fetchurl { src = fetchurl {
url = "${meta.homepage}/downloads/midori_${version}_all_.tar.bz2"; urls = [
"${meta.homepage}/downloads/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";
sha256 = "10ckm98rfqfbwr84b8mc1ssgj84wjgkr4dadvx2l7c64sigi66dg"; sha256 = "10ckm98rfqfbwr84b8mc1ssgj84wjgkr4dadvx2l7c64sigi66dg";
}; };

View File

@ -28,5 +28,6 @@ stdenv.mkDerivation rec {
description = "Synchronise your ownCloud with your computer using this desktop client"; description = "Synchronise your ownCloud with your computer using this desktop client";
homepage = https://owncloud.org; homepage = https://owncloud.org;
maintainers = with stdenv.lib.maintainers; [ qknight ]; maintainers = with stdenv.lib.maintainers; [ qknight ];
meta.platforms = stdenv.lib.platforms.unix;
}; };
} }

View File

@ -17,7 +17,11 @@ stdenv.mkDerivation rec {
rm $out/share/icons/hicolor/icon-theme.cache rm $out/share/icons/hicolor/icon-theme.cache
''; '';
meta = { meta = with stdenv.lib;
description = "GTK remote control for the Transmission BitTorrent client"; { description = "GTK remote control for the Transmission BitTorrent client";
}; homepage = http://code.google.com/p/transmission-remote-gtk/;
license = licenses.gpl2;
maintainers = [ maintainers.emery ];
platforms = platforms.linux;
};
} }

View File

@ -12,9 +12,9 @@ stdenv.mkDerivation rec {
configureFlags = "--with-ssl=openssl"; configureFlags = "--with-ssl=openssl";
meta = { meta = with stdenv.lib; {
description = "Minimalistic Murmur (Mumble server)"; description = "Minimalistic Murmur (Mumble server)";
license = "BSD"; license = licenses.bsd3;
homepage = http://code.google.com/p/umurmur/; homepage = http://code.google.com/p/umurmur/;
}; };
} }

View File

@ -6,11 +6,11 @@
}: }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "calligra-2.8.6"; name = "calligra-2.8.7";
src = fetchurl { src = fetchurl {
url = "mirror://kde/stable/${name}/${name}.tar.xz"; url = "mirror://kde/stable/${name}/${name}.tar.xz";
sha256 = "587dda4a340f46e28fe69de8f292fa33a3cf237445013f6ce5ceafa191cb3694"; sha256 = "1d8fx0xn8n8y6jglw8hhpk7kr6kbhsbaxqwqlfzmnzh7x9s8nsxg";
}; };
nativeBuildInputs = [ cmake perl pkgconfig ]; nativeBuildInputs = [ cmake perl pkgconfig ];

View File

@ -30,7 +30,7 @@ stdenv.mkDerivation {
meta = { meta = {
homepage = "http://ledger-cli.org/"; homepage = "http://ledger-cli.org/";
description = "A double-entry accounting system with a command-line reporting interface"; description = "A double-entry accounting system with a command-line reporting interface";
license = "BSD"; license = stdenv.lib.licenses.bsd3;
longDescription = '' longDescription = ''
Ledger is a powerful, double-entry accounting system that is accessed Ledger is a powerful, double-entry accounting system that is accessed

View File

@ -1,4 +1,4 @@
{ stdenv, fetchurl, libxslt, kdelibs, kdepimlibs, grantlee, qjson, qca2, libofx, sqlite, gettext }: { stdenv, fetchurl, libxslt, kdelibs, kdepimlibs, grantlee, qjson, qca2, libofx, sqlite, gettext, boost }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "skrooge-1.10.0"; name = "skrooge-1.10.0";
@ -8,7 +8,7 @@ stdenv.mkDerivation rec {
sha256 = "0rsw2xdgws5bvnf3h4hg16liahigcxgaxls7f8hzr9wipxx5xqda"; sha256 = "0rsw2xdgws5bvnf3h4hg16liahigcxgaxls7f8hzr9wipxx5xqda";
}; };
buildInputs = [ libxslt kdelibs kdepimlibs grantlee qjson qca2 libofx sqlite ]; buildInputs = [ libxslt kdelibs kdepimlibs grantlee qjson qca2 libofx sqlite boost ];
nativeBuildInputs = [ gettext ]; nativeBuildInputs = [ gettext ];

View File

@ -3,7 +3,7 @@
{stdenv, fetchgit, writeText, pkgconfig, ocaml, findlib, camlp5, ncurses, lablgtk ? null}: {stdenv, fetchgit, writeText, pkgconfig, ocaml, findlib, camlp5, ncurses, lablgtk ? null}:
let let
version = "8.5pre-52f51fb3"; version = "8.5pre-0c999f02";
coq-version = "8.5"; coq-version = "8.5";
buildIde = lablgtk != null; buildIde = lablgtk != null;
ideFlags = if buildIde then "-lablgtkdir ${lablgtk}/lib/ocaml/*/site-lib/lablgtk2 -coqide opt" else ""; ideFlags = if buildIde then "-lablgtkdir ${lablgtk}/lib/ocaml/*/site-lib/lablgtk2 -coqide opt" else "";
@ -17,8 +17,8 @@ stdenv.mkDerivation {
src = fetchgit { src = fetchgit {
url = git://scm.gforge.inria.fr/coq/coq.git; url = git://scm.gforge.inria.fr/coq/coq.git;
rev = "52f51fb385d6a1c90bd7d055185fee50ef2670be"; rev = "0c999f02ffcd61fcace0cc2d045056a82992a100";
sha256 = "0pgp59j2j8vk7nmcja5smly39dpkqfhpp29wpsn71piq6n52pql3"; sha256 = "1wk9lxdmw152665hr5cvnnzgnbbq7kg2845qkb4ag99nnfpsi26s";
}; };
buildInputs = [ pkgconfig ocaml findlib camlp5 ncurses lablgtk ]; buildInputs = [ pkgconfig ocaml findlib camlp5 ncurses lablgtk ];

View File

@ -69,6 +69,6 @@ stdenv.mkDerivation {
checking. checking.
''; '';
homepage = "http://hol.sourceforge.net/"; homepage = "http://hol.sourceforge.net/";
license = "BSD"; license = stdenv.lib.licenses.bsd3;
}; };
} }

View File

@ -55,7 +55,7 @@ rec {
]; ];
platforms = with a.lib.platforms; platforms = with a.lib.platforms;
linux; linux;
license = "BSD"; license = a.lib.licenses.bsd3;
inherit (sourceInfo) version; inherit (sourceInfo) version;
homepage = "http://page.mi.fu-berlin.de/cbenzmueller/leo/"; homepage = "http://page.mi.fu-berlin.de/cbenzmueller/leo/";
downloadPage = "http://page.mi.fu-berlin.de/cbenzmueller/leo/download.html"; downloadPage = "http://page.mi.fu-berlin.de/cbenzmueller/leo/download.html";

View File

@ -38,7 +38,7 @@ rec {
]; ];
platforms = with a.lib.platforms; platforms = with a.lib.platforms;
linux; linux;
license = "BSD"; license = a.lib.licenses.bsd2;
}; };
passthru = { passthru = {
updateInfo = { updateInfo = {

View File

@ -2,7 +2,7 @@
let let
name = "maxima"; name = "maxima";
version = "5.34.1"; version = "5.35.1";
searchPath = searchPath =
stdenv.lib.makeSearchPath "bin" stdenv.lib.makeSearchPath "bin"
@ -13,7 +13,7 @@ stdenv.mkDerivation {
src = fetchurl { src = fetchurl {
url = "mirror://sourceforge/${name}/${name}-${version}.tar.gz"; url = "mirror://sourceforge/${name}/${name}-${version}.tar.gz";
sha256 = "1dw9vfzldpj7lv303xbw0wpyn6ra6i2yzwlrjbcx7j0jm5n43ji0"; sha256 = "1wwqvay9z6gal7bsyyyhhcwh0fy5ak4h2a446ali0x6zmybaklcy";
}; };
buildInputs = [sbcl texinfo perl makeWrapper]; buildInputs = [sbcl texinfo perl makeWrapper];
@ -29,10 +29,9 @@ stdenv.mkDerivation {
ln -s ../maxima/${version}/doc $out/share/doc/maxima ln -s ../maxima/${version}/doc $out/share/doc/maxima
''; '';
# Failures in the regression test suite are not going to abort the # Failures in the regression test suite won't abort the build process. We run
# build process. We run the suite mostly so that potential errors show # the suite only so that potential errors show up in the build log. See also:
# up in the build log. See also: # http://sourceforge.net/tracker/?func=detail&aid=3365831&group_id=4933&atid=104933.
# <http://sourceforge.net/tracker/?func=detail&aid=3365831&group_id=4933&atid=104933>.
doCheck = true; doCheck = true;
enableParallelBuilding = true; enableParallelBuilding = true;

View File

@ -2,14 +2,14 @@
let let
name = "wxmaxima"; name = "wxmaxima";
version = "14.09.0"; version = "14.12.1";
in in
stdenv.mkDerivation { stdenv.mkDerivation {
name = "${name}-${version}"; name = "${name}-${version}";
src = fetchurl { src = fetchurl {
url = "mirror://sourceforge/${name}/wxMaxima/${version}/wxmaxima-${version}.tar.gz"; url = "mirror://sourceforge/${name}/wxMaxima/${version}/wxmaxima-${version}.tar.gz";
sha256 = "1wqiw9dgjc9vg94dqk4kif8xs7nlmn34xj3v4zm13fh1jihraksq"; sha256 = "0sjxvh0y5w5p2xdq3qzz3yhlsigrg3ynib9dkymhynpfnb51x82z";
}; };
buildInputs = [wxGTK maxima makeWrapper]; buildInputs = [wxGTK maxima makeWrapper];

View File

@ -40,7 +40,7 @@ stdenv.mkDerivation {
from the others by being extremely simple to setup and operate. from the others by being extremely simple to setup and operate.
''; '';
homepage = http://www.fossil-scm.org/; homepage = http://www.fossil-scm.org/;
license = "BSD"; license = stdenv.lib.licenses.bsd2;
platforms = with stdenv.lib.platforms; all; platforms = with stdenv.lib.platforms; all;
maintainers = [ #Add your name here! maintainers = [ #Add your name here!
stdenv.lib.maintainers.z77z stdenv.lib.maintainers.z77z

View File

@ -10,7 +10,7 @@
let let
version = "2.1.3"; version = "2.1.4";
svn = subversionClient.override { perlBindings = true; }; svn = subversionClient.override { perlBindings = true; };
@ -21,7 +21,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 = "0mvgvr2hz25p49dhhizcw9591f2h17y2699mpmndis3kzap0c6zy"; sha256 = "0gh57mfxz1qrxzfp1lpcaqswhixc246kmajlf0db7g0cn6wnhjd0";
}; };
patches = [ patches = [

View File

@ -2,7 +2,7 @@
, guiSupport ? false, tk ? null, curses }: , guiSupport ? false, tk ? null, curses }:
let let
version = "3.1.2"; version = "3.2.2";
name = "mercurial-${version}"; name = "mercurial-${version}";
in in
@ -11,7 +11,7 @@ stdenv.mkDerivation {
src = fetchurl { src = fetchurl {
url = "http://mercurial.selenic.com/release/${name}.tar.gz"; url = "http://mercurial.selenic.com/release/${name}.tar.gz";
sha256 = "0fldlypjpzn12az2gk4b3am615wih3r6ld69im97iqq76zmmrgjx"; sha256 = "1311ba2cgdc17ap8sl7pswzngc702pnkr4cd2rx6znb0w9jzgpmg";
}; };
inherit python; # pass it so that the same version can be used in hg2git inherit python; # pass it so that the same version can be used in hg2git

View File

@ -17,13 +17,13 @@ assert javahlBindings -> jdk != null && perl != null;
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
version = "1.8.10"; version = "1.8.11";
name = "subversion-${version}"; name = "subversion-${version}";
src = fetchurl { src = fetchurl {
url = "mirror://apache/subversion/${name}.tar.bz2"; url = "mirror://apache/subversion/${name}.tar.bz2";
sha256 = "1k3xskg2kjfp3zipl46lqx4fq4lhqnswd79qxp1kfhwplz401j8w"; sha1 = "161edaee328f4fdcfd2a7c10ecd3fbcd51c61275";
}; };
buildInputs = [ zlib apr aprutil sqlite ] buildInputs = [ zlib apr aprutil sqlite ]

View File

@ -30,7 +30,7 @@ stdenv.mkDerivation rec {
meta = { meta = {
homepage = http://www.alliedvisiontec.com/us/products/software/linux/avt-fire4linux.html; homepage = http://www.alliedvisiontec.com/us/products/software/linux/avt-fire4linux.html;
description = "AVT Viewer application for AVT cameras"; description = "AVT Viewer application for AVT cameras";
license = "BSD"; license = stdenv.lib.licenses.bsd3;
maintainers = [ stdenv.lib.maintainers.viric ]; maintainers = [ stdenv.lib.maintainers.viric ];
platforms = stdenv.lib.platforms.linux; platforms = stdenv.lib.platforms.linux;
hydraPlatforms = []; # because libdc1394avt is broken hydraPlatforms = []; # because libdc1394avt is broken

View File

@ -0,0 +1,30 @@
{ pkgs, stdenv, fetchurl, pythonPackages, buildPythonPackage, pygtk, ffmpeg, mplayer, vcdimager, cdrkit, dvdauthor }:
let
inherit (pythonPackages) dbus;
in buildPythonPackage rec {
name = "devede-3.23.0";
namePrefix = "";
src = fetchurl {
url = "http://www.rastersoft.com/descargas/${name}.tar.bz2";
sha256 = "9e217ca46f5f275cb0c3cadbe8c830fa1fde774c004bd95a343d1255be6f25e1";
};
buildInputs = [ ffmpeg ];
pythonPath = [ pygtk dbus ffmpeg mplayer dvdauthor vcdimager cdrkit ];
postPatch = ''
substituteInPlace devede --replace "/usr/share/devede" "$out/share/devede"
'';
meta = with stdenv.lib; {
description = "DVD Creator for Linux";
homepage = http://www.rastersoft.com/programas/devede.html;
license = licenses.gpl3;
maintainers = [ maintainers.bdimcheff ];
};
}

View File

@ -6,7 +6,8 @@ stdenv.mkDerivation {
name = "kmplayer-0.11.3d"; name = "kmplayer-0.11.3d";
src = fetchurl { src = fetchurl {
url = http://kmplayer.kde.org/pkgs/kmplayer-0.11.3d.tar.bz2; #url = http://kmplayer.kde.org/pkgs/kmplayer-0.11.3d.tar.bz2;
url = "mirror://gentoo/distfiles/kmplayer-0.11.3d.tar.bz2";
sha256 = "1yvbkb1hh5y7fqfvixjf2rryzm0fm0fpkx4lmvhi7k7d0v4wpgky"; sha256 = "1yvbkb1hh5y7fqfvixjf2rryzm0fm0fpkx4lmvhi7k7d0v4wpgky";
}; };

View File

@ -20,7 +20,7 @@ stdenv.mkDerivation rec {
version = "2.1.5"; version = "2.1.5";
src = fetchurl { src = fetchurl {
url = "http://download.videolan.org/pub/videolan/vlc/${version}/${name}.tar.xz"; url = "http://download.videolan.org/vlc/${version}/${name}.tar.xz";
sha256 = "0whzbn7ahn5maarcwl1yhk9lq10b0q0y9w5pjl9kh3frdjmncrbg"; sha256 = "0whzbn7ahn5maarcwl1yhk9lq10b0q0y9w5pjl9kh3frdjmncrbg";
}; };

View File

@ -26,7 +26,7 @@ stdenv.mkDerivation (edk2.setup "OvmfPkg/OvmfPkg${targetArch}.dsc" {
meta = { meta = {
description = "Sample UEFI firmware for QEMU and KVM"; description = "Sample UEFI firmware for QEMU and KVM";
homepage = http://sourceforge.net/apps/mediawiki/tianocore/index.php?title=OVMF; homepage = http://sourceforge.net/apps/mediawiki/tianocore/index.php?title=OVMF;
license = "BSD"; license = stdenv.lib.licenses.bsd2;
maintainers = [ stdenv.lib.maintainers.shlevy ]; maintainers = [ stdenv.lib.maintainers.shlevy ];
platforms = ["x86_64-linux" "i686-linux"]; platforms = ["x86_64-linux" "i686-linux"];
}; };

View File

@ -3,11 +3,11 @@ btrfsProgs, iptables, bash, e2fsprogs, xz}:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "docker-${version}"; name = "docker-${version}";
version = "1.3.1"; version = "1.3.3";
src = fetchurl { src = fetchurl {
url = "https://github.com/dotcloud/docker/archive/v${version}.tar.gz"; url = "https://github.com/dotcloud/docker/archive/v${version}.tar.gz";
sha256 = "0w1gz1apkcrmhgng2rkkzy7wmxm68zgs6a16bi4cx3a38n4mgday"; sha256 = "1jxvbm81zinh0achh8r2aac3x650aqiwn3w6iq1fg57fir1lw1cw";
}; };
buildInputs = [ makeWrapper go sqlite lxc iproute bridge_utils devicemapper btrfsProgs iptables e2fsprogs]; buildInputs = [ makeWrapper go sqlite lxc iproute bridge_utils devicemapper btrfsProgs iptables e2fsprogs];

View File

@ -1,6 +1,6 @@
{ stdenv, fetchurl, lib, iasl, dev86, pam, libxslt, libxml2, libX11, xproto, libXext { stdenv, fetchurl, lib, iasl, dev86, pam, libxslt, libxml2, libX11, xproto, libXext
, libXcursor, libXmu, qt4, libIDL, SDL, libcap, zlib, libpng, glib, kernel, lvm2 , libXcursor, libXmu, qt4, libIDL, SDL, libcap, zlib, libpng, glib, kernel, lvm2
, which, alsaLib, curl, libvpx, gawk , which, alsaLib, curl, libvpx, gawk, nettools
, xorriso, makeself, perl, pkgconfig, nukeReferences , xorriso, makeself, perl, pkgconfig, nukeReferences
, javaBindings ? false, jdk ? null , javaBindings ? false, jdk ? null
, pythonBindings ? false, python ? null , pythonBindings ? false, python ? null
@ -12,23 +12,25 @@
with stdenv.lib; with stdenv.lib;
let let
buildType = "release";
version = "4.3.20"; # changes ./guest-additions as well version = "4.3.20"; # changes ./guest-additions as well
forEachModule = action: '' forEachModule = action: ''
for mod in \ for mod in \
$sourcedir/out/linux.*/release/bin/src/vboxdrv \ out/linux.*/${buildType}/bin/src/vboxdrv \
$sourcedir/out/linux.*/release/bin/src/vboxpci \ out/linux.*/${buildType}/bin/src/vboxpci \
$sourcedir/out/linux.*/release/bin/src/vboxnetadp \ out/linux.*/${buildType}/bin/src/vboxnetadp \
$sourcedir/out/linux.*/release/bin/src/vboxnetflt out/linux.*/${buildType}/bin/src/vboxnetflt
do do
if [ "x$(basename "$mod")" != xvboxdrv -a ! -e "$mod/Module.symvers" ] if [ "x$(basename "$mod")" != xvboxdrv -a ! -e "$mod/Module.symvers" ]
then then
cp -v $sourcedir/out/linux.*/release/bin/src/vboxdrv/Module.symvers \ cp -v out/linux.*/${buildType}/bin/src/vboxdrv/Module.symvers \
"$mod/Module.symvers" "$mod/Module.symvers"
fi fi
INSTALL_MOD_PATH="$out" INSTALL_MOD_DIR=misc \ INSTALL_MOD_PATH="$out" INSTALL_MOD_DIR=misc \
make -C "$MODULES_BUILD_DIR" "M=$mod" DEPMOD=/do_not_use_depmod ${action} make -C "$MODULES_BUILD_DIR" DEPMOD=/do_not_use_depmod \
"M=\$(PWD)/$mod" BUILD_TYPE="${buildType}" ${action}
done done
''; '';
@ -86,8 +88,12 @@ in stdenv.mkDerivation {
patches = optional enableHardening ./hardened.patch; patches = optional enableHardening ./hardened.patch;
postPatch = ''
sed -i -e 's|/sbin/ifconfig|${nettools}/bin/ifconfig|' \
src/apps/adpctl/VBoxNetAdpCtl.cpp
'';
configurePhase = '' configurePhase = ''
sourcedir="$(pwd)"
cat >> LocalConfig.kmk <<LOCAL_CONFIG cat >> LocalConfig.kmk <<LOCAL_CONFIG
VBOX_WITH_TESTCASES := VBOX_WITH_TESTCASES :=
VBOX_WITH_TESTSUITE := VBOX_WITH_TESTSUITE :=
@ -124,7 +130,7 @@ in stdenv.mkDerivation {
buildPhase = '' buildPhase = ''
source env.sh source env.sh
kmk kmk BUILD_TYPE="${buildType}"
${forEachModule "modules"} ${forEachModule "modules"}
''; '';
@ -133,9 +139,9 @@ in stdenv.mkDerivation {
share="${if enableHardening then "$out/share/virtualbox" else "$libexec"}" share="${if enableHardening then "$out/share/virtualbox" else "$libexec"}"
# Install VirtualBox files # Install VirtualBox files
cd out/linux.*/release/bin mkdir -p "$libexec"
mkdir -p $libexec find out/linux.*/${buildType}/bin -mindepth 1 -maxdepth 1 \
cp -av * $libexec -name src -o -exec cp -avt "$libexec" {} +
# Install kernel modules # Install kernel modules
${forEachModule "modules_install"} ${forEachModule "modules_install"}
@ -169,9 +175,6 @@ in stdenv.mkDerivation {
ln -s $libexec/icons/$size/*.png $out/share/icons/hicolor/$size/apps ln -s $libexec/icons/$size/*.png $out/share/icons/hicolor/$size/apps
done done
# Get rid of src cruft.
rm -rf $out/libexec/virtualbox/src
# Get rid of a reference to linux.dev. # Get rid of a reference to linux.dev.
nuke-refs $out/lib/modules/*/misc/*.ko nuke-refs $out/lib/modules/*/misc/*.ko
''; '';

View File

@ -1,3 +1,64 @@
diff --git a/include/iprt/mangling.h b/include/iprt/mangling.h
index 70c596a..78972ed 100644
--- a/include/iprt/mangling.h
+++ b/include/iprt/mangling.h
@@ -1068,6 +1068,7 @@
# define RTPathStripSuffix RT_MANGLER(RTPathStripSuffix)
# define RTPathStripFilename RT_MANGLER(RTPathStripFilename)
# define RTPathStripTrailingSlash RT_MANGLER(RTPathStripTrailingSlash)
+# define RTPathSuidDir RT_MANGLER(RTPathSuidDir)
# define RTPathTemp RT_MANGLER(RTPathTemp)
# define RTPathTraverseList RT_MANGLER(RTPathTraverseList)
# define RTPathUnlink RT_MANGLER(RTPathUnlink)
@@ -1105,6 +1106,7 @@
# define RTProcGetAffinityMask RT_MANGLER(RTProcGetAffinityMask)
# define RTProcGetExecutablePath RT_MANGLER(RTProcGetExecutablePath)
# define RTProcGetPriority RT_MANGLER(RTProcGetPriority)
+# define RTProcGetSuidPath RT_MANGLER(RTProcGetSuidPath)
# define RTProcIsRunningByName RT_MANGLER(RTProcIsRunningByName)
# define RTProcQueryParent RT_MANGLER(RTProcQueryParent)
# define RTProcQueryUsername RT_MANGLER(RTProcQueryUsername)
diff --git a/include/iprt/path.h b/include/iprt/path.h
index 7e42754..b4de4c8 100644
--- a/include/iprt/path.h
+++ b/include/iprt/path.h
@@ -1049,6 +1049,15 @@ RTDECL(int) RTPathCalcRelative(char *pszPathDst, size_t cbPathDst,
RTDECL(int) RTPathExecDir(char *pszPath, size_t cchPath);
/**
+ * Gets the path to the NixOS setuid wrappers directory.
+ *
+ * @returns iprt status code.
+ * @param pszPath Buffer where to store the path.
+ * @param cchPath Buffer size in bytes.
+ */
+RTDECL(int) RTPathSuidDir(char *pszPath, size_t cchPath);
+
+/**
* Gets the user home directory.
*
* @returns iprt status code.
diff --git a/include/iprt/process.h b/include/iprt/process.h
index 2760306..0ce6c92 100644
--- a/include/iprt/process.h
+++ b/include/iprt/process.h
@@ -313,6 +313,16 @@ RTR3DECL(const char *) RTProcShortName(void);
RTR3DECL(char *) RTProcGetExecutablePath(char *pszExecPath, size_t cbExecPath);
/**
+ * Gets the path to the NixOS setuid wrappers directory.
+ *
+ * @returns pszExecPath on success. NULL on buffer overflow or other errors.
+ *
+ * @param pszExecPath Where to store the path.
+ * @param cbExecPath The size of the buffer.
+ */
+RTR3DECL(char *) RTProcGetSuidPath(char *pszExecPath, size_t cbExecPath);
+
+/**
* Daemonize the current process, making it a background process.
*
* The way this work is that it will spawn a detached / backgrounded /
diff --git a/src/VBox/HostDrivers/Support/SUPR3HardenedVerify.cpp b/src/VBox/HostDrivers/Support/SUPR3HardenedVerify.cpp diff --git a/src/VBox/HostDrivers/Support/SUPR3HardenedVerify.cpp b/src/VBox/HostDrivers/Support/SUPR3HardenedVerify.cpp
index c39d2f7..cd19186 100644 index c39d2f7..cd19186 100644
--- a/src/VBox/HostDrivers/Support/SUPR3HardenedVerify.cpp --- a/src/VBox/HostDrivers/Support/SUPR3HardenedVerify.cpp
@ -37,3 +98,108 @@ index 95dc9a7..39170bc 100644
size_t cchBufLeft = strlen(szPath); size_t cchBufLeft = strlen(szPath);
szPath[cchBufLeft++] = RTPATH_DELIMITER; szPath[cchBufLeft++] = RTPATH_DELIMITER;
szPath[cchBufLeft] = 0; szPath[cchBufLeft] = 0;
diff --git a/src/VBox/Main/src-server/NATNetworkServiceRunner.cpp b/src/VBox/Main/src-server/NATNetworkServiceRunner.cpp
index 090018e..7dcfc7a 100644
--- a/src/VBox/Main/src-server/NATNetworkServiceRunner.cpp
+++ b/src/VBox/Main/src-server/NATNetworkServiceRunner.cpp
@@ -75,7 +75,7 @@ int NATNetworkServiceRunner::start()
/* get the path to the executable */
char exePathBuf[RTPATH_MAX];
- const char *exePath = RTProcGetExecutablePath(exePathBuf, RTPATH_MAX);
+ const char *exePath = RTProcGetSuidPath(exePathBuf, RTPATH_MAX);
char *substrSl = strrchr(exePathBuf, '/');
char *substrBs = strrchr(exePathBuf, '\\');
char *suffix = substrSl ? substrSl : substrBs;
diff --git a/src/VBox/Main/src-server/NetworkServiceRunner.cpp b/src/VBox/Main/src-server/NetworkServiceRunner.cpp
index e9e1ba62..4d1c1e1 100644
--- a/src/VBox/Main/src-server/NetworkServiceRunner.cpp
+++ b/src/VBox/Main/src-server/NetworkServiceRunner.cpp
@@ -79,7 +79,7 @@ int NetworkServiceRunner::start()
/* get the path to the executable */
char exePathBuf[RTPATH_MAX];
- const char *exePath = RTProcGetExecutablePath(exePathBuf, RTPATH_MAX);
+ const char *exePath = RTProcGetSuidPath(exePathBuf, RTPATH_MAX);
char *substrSl = strrchr(exePathBuf, '/');
char *substrBs = strrchr(exePathBuf, '\\');
char *suffix = substrSl ? substrSl : substrBs;
diff --git a/src/VBox/Main/src-server/generic/NetIf-generic.cpp b/src/VBox/Main/src-server/generic/NetIf-generic.cpp
index 8559d2a..2177f27 100644
--- a/src/VBox/Main/src-server/generic/NetIf-generic.cpp
+++ b/src/VBox/Main/src-server/generic/NetIf-generic.cpp
@@ -47,7 +47,7 @@ static int NetIfAdpCtl(const char * pcszIfName, const char *pszAddr, const char
const char *args[] = { NULL, pcszIfName, pszAddr, pszOption, pszMask, NULL };
char szAdpCtl[RTPATH_MAX];
- int rc = RTPathExecDir(szAdpCtl, sizeof(szAdpCtl) - sizeof("/" VBOXNETADPCTL_NAME));
+ int rc = RTPathSuidDir(szAdpCtl, sizeof(szAdpCtl) - sizeof("/" VBOXNETADPCTL_NAME));
if (RT_FAILURE(rc))
{
LogRel(("NetIfAdpCtl: failed to get program path, rc=%Rrc.\n", rc));
@@ -90,7 +90,7 @@ static int NetIfAdpCtl(HostNetworkInterface * pIf, const char *pszAddr, const ch
int NetIfAdpCtlOut(const char * pcszName, const char * pcszCmd, char *pszBuffer, size_t cBufSize)
{
char szAdpCtl[RTPATH_MAX];
- int rc = RTPathExecDir(szAdpCtl, sizeof(szAdpCtl) - sizeof("/" VBOXNETADPCTL_NAME " ") - strlen(pcszCmd));
+ int rc = RTPathSuidDir(szAdpCtl, sizeof(szAdpCtl) - sizeof("/" VBOXNETADPCTL_NAME " ") - strlen(pcszCmd));
if (RT_FAILURE(rc))
{
LogRel(("NetIfAdpCtlOut: Failed to get program path, rc=%Rrc\n", rc));
@@ -202,7 +202,7 @@ int NetIfCreateHostOnlyNetworkInterface(VirtualBox *pVirtualBox,
progress.queryInterfaceTo(aProgress);
char szAdpCtl[RTPATH_MAX];
- int rc = RTPathExecDir(szAdpCtl, sizeof(szAdpCtl) - sizeof("/" VBOXNETADPCTL_NAME " add"));
+ int rc = RTPathSuidDir(szAdpCtl, sizeof(szAdpCtl) - sizeof("/" VBOXNETADPCTL_NAME " add"));
if (RT_FAILURE(rc))
{
progress->i_notifyComplete(E_FAIL,
diff --git a/src/VBox/Runtime/r3/path.cpp b/src/VBox/Runtime/r3/path.cpp
index be2ad8f..7ddf105 100644
--- a/src/VBox/Runtime/r3/path.cpp
+++ b/src/VBox/Runtime/r3/path.cpp
@@ -81,6 +81,12 @@ RTDECL(int) RTPathExecDir(char *pszPath, size_t cchPath)
}
+RTDECL(int) RTPathSuidDir(char *pszPath, size_t cchPath)
+{
+ return RTStrCopy(pszPath, cchPath, "/var/setuid-wrappers");
+}
+
+
RTDECL(int) RTPathAppPrivateNoArch(char *pszPath, size_t cchPath)
{
#if !defined(RT_OS_WINDOWS) && defined(RTPATH_APP_PRIVATE)
diff --git a/src/VBox/Runtime/r3/process.cpp b/src/VBox/Runtime/r3/process.cpp
index 7bde6af..2656cae 100644
--- a/src/VBox/Runtime/r3/process.cpp
+++ b/src/VBox/Runtime/r3/process.cpp
@@ -111,6 +111,26 @@ RTR3DECL(char *) RTProcGetExecutablePath(char *pszExecPath, size_t cbExecPath)
return NULL;
}
+/*
+ * Note the / at the end! This is important, because the functions using this
+ * will cut off everything after the rightmost / as this function is analogous
+ * to RTProcGetExecutablePath().
+ */
+#define SUIDDIR "/var/setuid-wrappers/"
+
+RTR3DECL(char *) RTProcGetSuidPath(char *pszExecPath, size_t cbExecPath)
+{
+ if (cbExecPath >= sizeof(SUIDDIR))
+ {
+ memcpy(pszExecPath, SUIDDIR, sizeof(SUIDDIR));
+ pszExecPath[sizeof(SUIDDIR)] = '\0';
+ return pszExecPath;
+ }
+
+ AssertMsgFailed(("Buffer too small (%zu <= %zu)\n", cbExecPath, sizeof(SUIDDIR)));
+ return NULL;
+}
+
RTR3DECL(const char *) RTProcShortName(void)
{

View File

@ -47,4 +47,9 @@ stdenv.mkDerivation rec {
maintainers = with stdenv.lib.maintainers; [viric]; maintainers = with stdenv.lib.maintainers; [viric];
platforms = with stdenv.lib.platforms; linux; platforms = with stdenv.lib.platforms; linux;
}; };
passthru = {
inherit lua;
};
} }

View File

@ -1,13 +1,13 @@
{ stdenv, fetchurl, lua, cairo, cmake, imagemagick, pkgconfig, gdk_pixbuf { stdenv, fetchurl, luaPackages, cairo, cmake, imagemagick, pkgconfig, gdk_pixbuf
, xlibs, libstartup_notification, libxdg_basedir, libpthreadstubs , xlibs, libstartup_notification, libxdg_basedir, libpthreadstubs
, xcb-util-cursor, lgi, makeWrapper, pango, gobjectIntrospection, unclutter , xcb-util-cursor, makeWrapper, pango, gobjectIntrospection, unclutter
, compton, procps, iproute, coreutils, curl, alsaUtils, findutils, rxvt_unicode , compton, procps, iproute, coreutils, curl, alsaUtils, findutils, rxvt_unicode
, which, dbus, nettools, git, asciidoc, doxygen, xmlto, docbook_xml_dtd_45 , which, dbus, nettools, git, asciidoc, doxygen, xmlto, docbook_xml_dtd_45
, docbook_xsl }: , docbook_xsl }:
let let
version = "3.5.5"; version = "3.5.5";
in in with luaPackages;
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "awesome-${version}"; name = "awesome-${version}";
@ -32,6 +32,7 @@ stdenv.mkDerivation rec {
dbus dbus
doxygen doxygen
gdk_pixbuf gdk_pixbuf
gobjectIntrospection
git git
imagemagick imagemagick
lgi lgi
@ -60,18 +61,22 @@ stdenv.mkDerivation rec {
LD_LIBRARY_PATH = "${cairo}/lib:${pango}/lib:${gobjectIntrospection}/lib"; LD_LIBRARY_PATH = "${cairo}/lib:${pango}/lib:${gobjectIntrospection}/lib";
GI_TYPELIB_PATH = "${pango}/lib/girepository-1.0"; GI_TYPELIB_PATH = "${pango}/lib/girepository-1.0";
LUA_CPATH = "${lgi}/lib/lua/5.1/?.so"; LUA_CPATH = "${lgi}/lib/lua/${lua.luaversion}/?.so";
LUA_PATH = "${lgi}/share/lua/5.1/?.lua;${lgi}/share/lua/5.1/lgi/?.lua"; LUA_PATH = "${lgi}/share/lua/${lua.luaversion}/?.lua;${lgi}/share/lua/${lua.luaversion}/lgi/?.lua";
postInstall = '' postInstall = ''
wrapProgram $out/bin/awesome \ wrapProgram $out/bin/awesome \
--set LUA_CPATH '"${lgi}/lib/lua/5.1/?.so"' \ --prefix LUA_CPATH ";" '"${lgi}/lib/lua/${lua.luaversion}/?.so"' \
--set LUA_PATH '"${lgi}/share/lua/5.1/?.lua;${lgi}/share/lua/5.1/lgi/?.lua"' \ --prefix LUA_PATH ";" '"${lgi}/share/lua/${lua.luaversion}/?.lua;${lgi}/share/lua/${lua.luaversion}/lgi/?.lua"' \
--set GI_TYPELIB_PATH "${pango}/lib/girepository-1.0" \ --prefix GI_TYPELIB_PATH : "$GI_TYPELIB_PATH" \
--prefix LD_LIBRARY_PATH : "${cairo}/lib:${pango}/lib:${gobjectIntrospection}/lib" \ --prefix LD_LIBRARY_PATH : "${cairo}/lib:${pango}/lib:${gobjectIntrospection}/lib" \
--prefix PATH : "${compton}/bin:${unclutter}/bin:${procps}/bin:${iproute}/sbin:${coreutils}/bin:${curl}/bin:${alsaUtils}/bin:${findutils}/bin:${rxvt_unicode}/bin" --prefix PATH : "${compton}/bin:${unclutter}/bin:${procps}/bin:${iproute}/sbin:${coreutils}/bin:${curl}/bin:${alsaUtils}/bin:${findutils}/bin:${rxvt_unicode}/bin"
wrapProgram $out/bin/awesome-client \ wrapProgram $out/bin/awesome-client \
--prefix PATH : "${which}/bin" --prefix PATH : "${which}/bin"
''; '';
passthru = {
inherit lua;
};
} }

View File

@ -23,7 +23,7 @@ stdenv.mkDerivation rec {
description = "A tiling window manager based on binary space partitioning"; description = "A tiling window manager based on binary space partitioning";
homepage = http://github.com/baskerville/bspwm; homepage = http://github.com/baskerville/bspwm;
maintainers = [ stdenv.lib.maintainers.meisternu ]; maintainers = [ stdenv.lib.maintainers.meisternu ];
license = "BSD"; license = stdenv.lib.licenses.bsd2;
platforms = stdenv.lib.platforms.linux; platforms = stdenv.lib.platforms.linux;
}; };
} }

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