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>
<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
<command>${python.interpreter} setup.py develop</command> for the package.
</para>

View File

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

View File

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

View File

@ -31,6 +31,23 @@ rec {
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:
let list = getValues defs; in
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:
<screen>
$ nixos-version
14.04.273.ea1952b (Baboon)
$ git checkout -b local ea1952b
$ <replaceable>/my/sources</replaceable>/nixpkgs/maintainers/scripts/update-channel-branches.sh
Fetching channels from https://nixos.org/channels:
* [new branch] cbe467e -> channels/remotes/nixos-unstable
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>
Or, to base your local branch on the latest version available in the
NixOS channel:
<screen>
$ curl -sI https://nixos.org/channels/nixos-unstable/ | grep Location
Location: https://releases.nixos.org/nixos/unstable/nixos-14.10pre43986.acaf4a6/
$ git checkout -b local acaf4a6
$ <replaceable>/my/sources</replaceable>/nixpkgs/maintainers/scripts/update-channel-branches.sh
$ git checkout -b local channels/remotes/nixos-unstable
</screen>
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>
<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
following incompatible changes:
<itemizedlist>
<listitem><para>The default version of Apache httpd is now 2.4. If
you use the <option>extraConfig</option> option to pass literal
Apache configuration text, you may need to update it — see <link
xlink:href="http://httpd.apache.org/docs/2.4/upgrading.html">Apaches
documentation</link> for details. If you wish to continue to use
httpd 2.2, add the following line to your NixOS configuration:
<listitem><para>The default version of Apache httpd is now 2.4. If
you use the <option>extraConfig</option> option to pass literal
Apache configuration text, you may need to update it — see <link
xlink:href="http://httpd.apache.org/docs/2.4/upgrading.html">Apaches
documentation</link> for details. If you wish to continue to use
httpd 2.2, add the following line to your NixOS configuration:
<programlisting>
services.httpd.package = pkgs.apacheHttpd_2_2;
</programlisting>
rogramlisting>
rvices.httpd.package = pkgs.apacheHttpd_2_2;
programlisting>
</para></listitem>
</para></listitem>
<listitem><para>PHP 5.3 has been removed because it is no longer
supported by the PHP project. A <link
xlink:href="http://php.net/migration54">migration guide</link> is
available.</para></listitem>
<listitem><para>PHP 5.3 has been removed because it is no longer
supported by the PHP project. A <link
xlink:href="http://php.net/migration54">migration guide</link> is
available.</para></listitem>
<listitem><para>The host side of a container virtual Ethernet pair
is now called <literal>ve-<replaceable>container-name</replaceable></literal>
rather than <literal>c-<replaceable>container-name</replaceable></literal>.</para></listitem>
<listitem><para>The host side of a container virtual Ethernet pair
is now called <literal>ve-<replaceable>container-name</replaceable></literal>
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
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>VirtualBox has been upgraded to 4.3.20 release. Users may be required to run
<command>rm -rf /tmp.vbox*</command>. <literal>imports = [ &lt;nixpkgs/nixos/modules/programs/virtualbox.nix&gt; ]</literal>
is no longer necessary, use <literal>services.virtualboxHost.enable = true</literal> instead.
</para>
<para>Also, hardening mode is now enabled by default, which means that unless you want to use
USB support, you no longer need to be a member of the <literal>vboxusers</literal> group.
</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>
<listitem><para>Chromium has been updated to 39.0.2171.65. <option>enablePepperPDF</option> is now enabled by default.
<literal>chromium*Wrapper</literal> packages no longer exist, because upstream removed NSAPI support.
<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>

View File

@ -16,7 +16,6 @@ let
[ p.mesa_drivers
p.mesa_noglu # mainly for libGL
(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
-I)
given_path="$1"; shift 1
absolute_path=$(readlink -m $given_path)
extraBuildFlags+=("$i" "/mnt$absolute_path")
extraBuildFlags+=("$i" "$given_path")
;;
--root)
mountPoint="$1"; shift 1
@ -250,7 +249,7 @@ chroot $mountPoint /nix/var/nix/profiles/system/activate
# 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..."
chroot $mountPoint /var/setuid-wrappers/passwd
fi

View File

@ -13,6 +13,7 @@ usage () {
xml=false
verbose=false
nixPath=""
option=""
@ -26,6 +27,7 @@ for arg; do
while test "$sarg" != "-"; do
case $sarg in
--*) longarg=$arg; sarg="--";;
-I) argfun="include_nixpath";;
-*) usage;;
esac
# remove the first letter option
@ -53,6 +55,9 @@ for arg; do
var=$(echo $argfun | sed 's,^set_,,')
eval $var=$arg
;;
include_nixpath)
nixPath="-I $arg $nixPath"
;;
esac
argfun=""
fi
@ -69,18 +74,114 @@ fi
#############################
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(){
local prefix="$1"
local strict="$2"
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(){
evalAttr "options" "" "$@"
evalAttr "option" "" "$@"
}
evalCfg(){
@ -90,8 +191,11 @@ evalCfg(){
findSources(){
local suffix=$1
echo "(import <nixos> {}).options${option:+.$option}.$suffix" |
evalNix --strict
evalNix --strict <<EOF
$header
option.$suffix
EOF
}
# 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.
if $xml; then
evalNix --xml --no-location <<EOF
$header
let
reach = attrs: attrs${option:+.$option};
nixos = import <nixos> {};
nixpkgs = import <nixpkgs> {};
sources = builtins.map (f: f.source);
opt = reach nixos.options;
cfg = reach nixos.config;
opt = option;
cfg = config;
in
with nixpkgs.lib;

View File

@ -173,6 +173,7 @@
peerflix = 163;
chronos = 164;
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!

View File

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

View File

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

View File

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

View File

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

View File

@ -35,7 +35,7 @@ in
enableHardening = mkOption {
type = types.bool;
default = false;
default = true;
description = ''
Enable hardened VirtualBox, which ensures that only the binaries in the
system path get access to the devices exposed by the kernel modules
@ -54,23 +54,21 @@ in
boot.extraModulePackages = [ 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
mkVboxStub = program: {
mkSuid = program: {
inherit program;
source = "${virtualbox}/libexec/virtualbox/${program}";
owner = "root";
group = "vboxusers";
setuid = true;
};
in mkIf cfg.enableHardening (map mkVboxStub [
in mkIf cfg.enableHardening (map mkSuid [
"VBoxHeadless"
"VBoxNetAdpCtl"
"VBoxNetDHCP"
"VBoxNetNAT"
"VBoxSDL"
"VBoxVolInfo"
"VirtualBox"
]);

View File

@ -64,7 +64,7 @@ in
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.
Defaults:root,%wheel env_keep+=TERMINFO_DIRS
@ -90,11 +90,10 @@ in
environment.etc = singleton
{ source =
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.
# (currently disabled - NIXOS-66)
"${pkgs.sudo}/sbin/visudo -f $src -c &&
cp $src $out";
"${pkgs.sudo}/sbin/visudo -f $src -c && cp $src $out";
target = "sudoers";
mode = "0440";
};

View File

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

View File

@ -5,6 +5,13 @@ with lib;
let
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 {
options.services.mesos = {
@ -31,9 +38,9 @@ in {
};
withHadoop = mkOption {
description = "Add the HADOOP_HOME to the slave.";
default = false;
type = types.bool;
description = "Add the HADOOP_HOME to the slave.";
default = false;
type = types.bool;
};
workDir = mkOption {
@ -44,10 +51,10 @@ in {
extraCmdLineOptions = mkOption {
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 = [ "" ];
type = types.listOf types.string;
example = [ "--gc_delay=3days" ];
@ -62,6 +69,19 @@ in {
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" ];
environment.MESOS_CONTAINERIZERS = "docker,mesos";
serviceConfig = {
ExecStart = ''
${pkgs.mesos}/bin/mesos-slave \
--port=${toString cfg.port} \
--master=${cfg.master} \
${optionalString cfg.withHadoop "--hadoop-home=${pkgs.hadoop}"} \
--work_dir=${cfg.workDir} \
--logging_level=${cfg.logLevel} \
--docker=${pkgs.docker}/libexec/docker/docker \
${toString cfg.extraCmdLineOptions}
'';
PermissionsStartOnly = true;
ExecStart = ''
${pkgs.mesos}/bin/mesos-slave \
--port=${toString cfg.port} \
--master=${cfg.master} \
${optionalString cfg.withHadoop "--hadoop-home=${pkgs.hadoop}"} \
${attribsArg} \
--work_dir=${cfg.workDir} \
--logging_level=${cfg.logLevel} \
--docker=${pkgs.docker}/libexec/docker/docker \
${toString cfg.extraCmdLineOptions}
'';
PermissionsStartOnly = true;
};
preStart = ''
mkdir -m 0700 -p ${cfg.workDir}
mkdir -m 0700 -p ${cfg.workDir}
'';
};
};

View File

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

View File

@ -118,7 +118,7 @@ in
systemd.services.strongswan = {
description = "strongSwan IPSec Service";
wantedBy = [ "multi-user.target" ];
path = with pkgs; [ kmod ]; # XXX Linux
path = with pkgs; [ kmod iproute iptables utillinux ]; # XXX Linux
wants = [ "keys.target" ];
after = [ "network.target" "keys.target" ];
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
+ optionalString cfg.client.enable ''
SOCKSPort ${cfg.client.socksListenAddress}
SOCKSPort ${cfg.client.socksListenAddress} IsolateDestAddr
SOCKSPort ${cfg.client.socksListenAddressFaster}
${opt "SocksPolicy" cfg.client.socksPolicy}
''
# Relay config
@ -93,10 +94,23 @@ in
example = "192.168.0.1:9100";
description = ''
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 {
type = types.nullOr types.str;
default = null;
@ -108,6 +122,22 @@ in
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 = {
@ -322,5 +352,16 @@ in
};
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;
optionalNullStr = b: v: optionalString (b != null) v;
configFile = ''
TorAddress ${toString (head (splitString ":" cfg.server))}
TorPort ${toString (tail (splitString ":" cfg.server))}
configFile = server: ''
TorAddress ${toString (head (splitString ":" server))}
TorPort ${toString (tail (splitString ":" server))}
OnionAddrRange ${cfg.onionAddrRange}
@ -19,13 +19,24 @@ let
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
{
options = {
services.tor.torsocks = {
enable = mkOption {
type = types.bool;
default = false;
default = config.services.tor.enable && config.services.tor.client.enable;
description = ''
Whether to build <literal>/etc/tor/torsocks.conf</literal>
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 {
type = types.str;
default = "127.42.42.0/24";
@ -89,10 +110,10 @@ in
};
config = mkIf cfg.enable {
environment.systemPackages = [ pkgs.torsocks ];
environment.systemPackages = [ pkgs.torsocks (wrapTorsocks "torsocks-faster" cfg.fasterServer) ];
environment.etc =
[ { source = pkgs.writeText "torsocks.conf" configFile;
[ { source = pkgs.writeText "torsocks.conf" (configFile cfg.server);
target = "tor/torsocks.conf";
}
];

View File

@ -152,7 +152,9 @@ in
xorg.xauth # used by kdesu
pkgs.shared_desktop_ontologies # used by nepomuk
pkgs.strigi # used by nepomuk
pkgs.kde4.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.bluetooth.enable pkgs.kde4.bluedevil

View File

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

View File

@ -5,6 +5,7 @@ with lib;
let
cfg = config.services.xserver.windowManager.awesome;
awesome = cfg.package;
in
@ -14,9 +15,24 @@ in
options = {
services.xserver.windowManager.awesome.enable = mkOption {
default = false;
description = "Enable the Awesome window manager.";
services.xserver.windowManager.awesome = {
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";
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=$!
'';
};
environment.systemPackages = [ pkgs.awesome ];
environment.systemPackages = [ awesome ];
};

View File

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

View File

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

View File

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

View File

@ -85,6 +85,12 @@ in
optionalString (cfg.defaultGatewayWindowSize != null)
"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);
} // optionalAttrs (cfg.defaultGateway != null) {
gateway = override [ cfg.defaultGateway ];
} // optionalAttrs (cfg.defaultGateway6 != null) {
gateway = override [ cfg.defaultGateway6 ];
} // optionalAttrs (domains != [ ]) {
domains = override domains;
};

View File

@ -233,8 +233,12 @@ in
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
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>
'';
};
@ -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 {
default = null;
example = 524288;

View File

@ -57,8 +57,7 @@ let
-name ${vmName} \
-m ${toString config.virtualisation.memorySize} \
${optionalString (pkgs.stdenv.system == "x86_64-linux") "-cpu kvm64"} \
-net nic,vlan=0,model=virtio \
-net user,vlan=0''${QEMU_NET_OPTS:+,$QEMU_NET_OPTS} \
${concatStringsSep " " config.virtualisation.qemu.networkingOptions} \
-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=''${SHARED_DIR:-$TMPDIR/xchg},security_model=none,mount_tag=shared \
@ -248,12 +247,31 @@ in
description = "Primary IP address used in /etc/hosts.";
};
virtualisation.qemu.options =
mkOption {
default = [];
example = [ "-vga std" ];
description = "Options passed to QEMU.";
};
virtualisation.qemu = {
options =
mkOption {
default = [];
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 =
mkOption {

View File

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

View File

@ -43,7 +43,7 @@ import ./make-test.nix {
$machine->fail("curl --fail --connect-timeout 2 http://$ip/ > /dev/null");
# 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.
my $id1 = $machine->succeed("nixos-container create foo --ensure-unique-name");

View File

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

View File

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

View File

@ -1,5 +1,7 @@
import ./make-test.nix ({ pkgs, ... }: with pkgs.lib; let
debug = false;
testVMConfig = vmName: attrs: { config, pkgs, ... }: {
boot.kernelParams = let
miniInit = ''
@ -64,7 +66,7 @@ import ./make-test.nix ({ pkgs, ... }: with pkgs.lib; let
rotated = map (i: "${logfile}.${toString i}") (range 1 9);
all = concatMapStringsSep " " (f: "\"${f}\"") ([logfile] ++ rotated);
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
cfg = (import ../lib/eval-config.nix {
@ -297,14 +299,16 @@ import ./make-test.nix ({ pkgs, ... }: with pkgs.lib; let
in {
name = "virtualbox";
machine = { pkgs, ... }: {
machine = { pkgs, lib, config, ... }: {
imports = let
mkVMConf = name: val: val.machine // { key = "${name}-config"; };
vmConfigs = mapAttrsToList mkVMConf vboxVMs;
in [ ./common/user-account.nix ./common/x11.nix ] ++ vmConfigs;
virtualisation.memorySize = 768;
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 = ''

View File

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

View File

@ -1,6 +1,6 @@
{ stdenv, fetchurl, pkgconfig, intltool, gtk3, glib, libid3tag, id3lib, taglib
, libvorbis, libogg, flac, itstool, libxml2, gsettings_desktop_schemas
, makeWrapper, gnome_icon_theme
, makeWrapper, gnome_icon_theme, dconf
}:
stdenv.mkDerivation rec {
@ -14,7 +14,8 @@ stdenv.mkDerivation rec {
preFixup = ''
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";
@ -22,7 +23,7 @@ stdenv.mkDerivation rec {
nativeBuildInputs = [ makeWrapper ];
buildInputs = [
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 = {

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
, pygobject, gst_python, gst_plugins_base, gst_plugins_good
, setuptools, utillinux, makeWrapper }:
, setuptools, utillinux, makeWrapper, substituteAll }:
stdenv.mkDerivation rec {
name = "morituri-${version}";
version = "0.2.3";
namePrefix = "";
src = fetchurl {
url = "http://thomas.apestaart.org/download/morituri/${name}.tar.bz2";
@ -21,23 +22,12 @@ stdenv.mkDerivation rec {
gst_plugins_base gst_plugins_good
] ++ pythonPath;
patches = [ ./paths.patch ];
postPatch = ''
substituteInPlace morituri/extern/python-command/scripts/help2man \
--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"'
'';
patches = [
(substituteAll {
src = ./paths.patch;
inherit cdrdao cdparanoia python utillinux;
})
];
# This package contains no binaries to patch or strip.
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
--- morituri-0.2.3-orig/doc/Makefile.in 2014-11-01 00:13:01.231364181 +0100
+++ morituri-0.2.3/doc/Makefile.in 2014-11-01 00:13:56.691812229 +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-12-23 12:46:49.619756940 +0100
@@ -486,7 +486,7 @@ morituri.ics: $(top_srcdir)/morituri.doa
-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:
@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 }:
stdenv.mkDerivation rec {
version = "0.6.1";
version = "0.6.2";
name = "ncmpcpp-${version}";
src = fetchurl {
url = "http://ncmpcpp.rybczak.net/stable/ncmpcpp-${version}.tar.bz2";
sha256 = "033a18hj0q0smm5n0ykld9az7w95myr7jm2b1bjm0h2q5927x8qm";
sha256 = "1mrd6m6ph0fscxp9x96ipxh6ai7w0n1miapcfqrqfy058qx5zbck";
};
configureFlags = "BOOST_LIB_SUFFIX=";
@ -19,7 +19,7 @@ stdenv.mkDerivation rec {
description = "Curses-based interface for MPD (music player daemon)";
homepage = http://unkart.ovh.org/ncmpcpp/;
license = licenses.gpl2Plus;
maintainers = with maintainers; [ lovek323 mornfall ];
maintainers = with maintainers; [ lovek323 mornfall koral ];
platforms = platforms.all;
};
}

View File

@ -1,5 +1,5 @@
{ fetchurl, stdenv, pkgconfig, intltool, pulseaudio, gtkmm3
, libcanberra_gtk3 }:
, libcanberra_gtk3, makeWrapper, gnome3 }:
stdenv.mkDerivation rec {
name = "pavucontrol-2.0";
@ -9,7 +9,13 @@ stdenv.mkDerivation rec {
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 ];

View File

@ -6,6 +6,7 @@
let version = "1.3"; in
buildPythonPackage {
name = "picard-${version}";
namePrefix = "";
src = fetchurl {
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";
homepage = "http://www.crashplan.org";
license = licenses.unfree;
maintainers = with maintainers; [ sztupi ];
maintainers = with maintainers; [ sztupi iElectric ];
};
buildInputs = [ makeWrapper cpio ];
@ -25,7 +25,7 @@ in stdenv.mkDerivation rec {
manifestdir = "${vardir}/manifest";
patches = [ ./CrashPlanEngine.patch ];
patches = [ ./CrashPlanEngine.patch ./CrashPlanDesktop.patch ];
installPhase = ''
mkdir $out
@ -45,6 +45,7 @@ in stdenv.mkDerivation rec {
install -D -m 644 run.conf $out/bin/run.conf
install -D -m 755 scripts/CrashPlanDesktop $out/bin/CrashPlanDesktop
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
ln -s $vardir/log $out/log
@ -72,6 +73,10 @@ in stdenv.mkDerivation rec {
substituteInPlace $f --replace sed ${gnused}/bin/sed
substituteInPlace $f --replace grep ${gnugrep}/bin/grep
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"
'';

View File

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

View File

@ -1,18 +1,25 @@
{ stdenv, fetchgit, emacs, texinfo }:
{ stdenv, fetchurl, emacs, texinfo }:
stdenv.mkDerivation rec {
name = "haskell-mode-20141113";
let
version = "13.10";
in
stdenv.mkDerivation {
name = "haskell-mode-${version}";
src = fetchgit {
url = "https://github.com/haskell/haskell-mode.git";
sha256 = "fc2a15f3a88f2343663e8b078464991a1af5ffe36c8158ee4f61c5d0358c9daf";
src = fetchurl {
url = "https://github.com/haskell/haskell-mode/archive/v${version}.tar.gz";
sha256 = "0hcg7wpalcdw8j36m8vd854zrrgym074r7m903rpwfrhx9mlg02b";
};
buildInputs = [ emacs texinfo ];
makeFlags = "VERSION=${version} GIT_VERSION=${version}";
installPhase = ''
mkdir -p "$out/share/emacs/site-lisp"
cp *.el *.elc *.hs "$out/share/emacs/site-lisp/"
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/
'';
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}
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}" \
--prefix PATH : "${jdk}/bin:${coreutils}/bin:${gnugrep}/bin:${which}/bin:${git}/bin" \
--prefix LD_RUN_PATH : "${stdenv.gcc.gcc}/lib/" \
@ -295,13 +289,13 @@ in
phpstorm = buildPhpStorm rec {
name = "phpstorm-${version}";
version = "8.0.1";
build = "PS-138.2001";
version = "8.0.2";
build = "PS-139.732";
description = "Professional IDE for Web and PHP developers";
license = stdenv.lib.licenses.unfree;
src = fetchurl {
url = "http://download.jetbrains.com/webide/PhpStorm-${version}.tar.gz";
sha256 = "0d46442aa32174fe16846c3c31428178ab69b827d2e0ce31f633f13b64c01afc";
sha256 = "01b8vx6swi71sd0rc7i1jnicilqp11ch3zrm8gwb6xh1pmmpdirf";
};
};

View File

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

View File

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

View File

@ -1,10 +1,10 @@
{ 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 {
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 ];
nativeBuildInputs = [ cmake python ];

View File

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

View File

@ -1,6 +1,6 @@
{ 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
, 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/
@ -42,7 +42,8 @@ in stdenv.mkDerivation rec {
preFixup = ''
wrapProgram "$out/bin/shotwell" \
--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
'';
@ -50,7 +51,9 @@ in stdenv.mkDerivation rec {
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
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; {
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/;
description = "A powerful desktop application that can be used to quickly and effectively generate high-quality diagrams";
platforms = jre.meta.platforms;
maintainer = with maintainers; [ abbradar ];
maintainers = with maintainers; [ abbradar ];
};
}

View File

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

View File

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

View File

@ -12,11 +12,6 @@ stdenv.mkDerivation rec {
sha256 = "0x95f57s0a96c4lifxdpf73v706iggwmdw8742mabbjnxq55l1qs";
};
patchPhase = ''
substituteInPlace "settings.c" \
--replace "xdgConfigOpen(\"dunst/dunstrc\", \"r\", &xdg" "fopen(\"$out/share/dunst/dunstrc\", \"r\""
'';
buildInputs =
[ coreutils unzip which pkgconfig dbus freetype libnotify gdk_pixbuf
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}";
version = "1.9.8";
@ -11,7 +12,7 @@ pythonPackages.buildPythonPackage rec {
buildInputs = [ slowaes ecdsa ];
propagatedBuildInputs = [
propagatedBuildInputs = [
slowaes
ecdsa
pyqt4
@ -29,4 +30,4 @@ pythonPackages.buildPythonPackage rec {
license = stdenv.lib.licenses.gpl3;
maintainers = [ "emery@vfemail.net" ];
};
}
}

View File

@ -8,11 +8,11 @@ assert pulseaudioSupport -> pulseaudio != null;
stdenv.mkDerivation rec {
name = "gqrx-${version}";
version = "2.3.0";
version = "2.3.2";
src = fetchurl {
url = "mirror://sourceforge/project/gqrx/${version}/${name}.tar.xz";
sha256 = "0fyfkdd2ailg54ppv1y2fy2c692jmlmsyl1lxr20lyn6bvd9gpyn";
sha256 = "1vfqqa976xlbapqkpc9nka364zydvsy18xiwfqjy015kpasshdz1";
};
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
rec {
baseName="qpdfview";
version="0.4.12";
version = "0.4.13";
name="${baseName}-${version}";
url="https://launchpad.net/qpdfview/trunk/${version}/+download/qpdfview-${version}.tar.gz";
sha256="1h6lrrh1vblqkxrd89nmid7d21anyn30iahj24z62yny35lidf0g";
sha256 = "0hcfy9wrgs6vygmq790rqipw2132br3av3nhzrm4gpxlbw2n7xcg";
};
buildInputs = [
qt4 popplerQt4 pkgconfig djvulibre libspectre cups file ghostscript

View File

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

View File

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

View File

@ -11,14 +11,18 @@ stdenv.mkDerivation rec {
meta = {
description = "Lightweight WebKitGTK+ web browser";
homepage = "http://www.midori-browser.org";
homepage = "http://midori-browser.org";
license = stdenv.lib.licenses.lgpl21Plus;
platforms = stdenv.lib.platforms.linux;
maintainers = with stdenv.lib.maintainers; [ raskin iyzsong ];
};
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";
};

View File

@ -28,5 +28,6 @@ stdenv.mkDerivation rec {
description = "Synchronise your ownCloud with your computer using this desktop client";
homepage = https://owncloud.org;
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
'';
meta = {
description = "GTK remote control for the Transmission BitTorrent client";
};
meta = with stdenv.lib;
{ 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";
meta = {
meta = with stdenv.lib; {
description = "Minimalistic Murmur (Mumble server)";
license = "BSD";
license = licenses.bsd3;
homepage = http://code.google.com/p/umurmur/;
};
}

View File

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

View File

@ -30,7 +30,7 @@ stdenv.mkDerivation {
meta = {
homepage = "http://ledger-cli.org/";
description = "A double-entry accounting system with a command-line reporting interface";
license = "BSD";
license = stdenv.lib.licenses.bsd3;
longDescription = ''
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 {
name = "skrooge-1.10.0";
@ -8,7 +8,7 @@ stdenv.mkDerivation rec {
sha256 = "0rsw2xdgws5bvnf3h4hg16liahigcxgaxls7f8hzr9wipxx5xqda";
};
buildInputs = [ libxslt kdelibs kdepimlibs grantlee qjson qca2 libofx sqlite ];
buildInputs = [ libxslt kdelibs kdepimlibs grantlee qjson qca2 libofx sqlite boost ];
nativeBuildInputs = [ gettext ];

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -10,7 +10,7 @@
let
version = "2.1.3";
version = "2.1.4";
svn = subversionClient.override { perlBindings = true; };
@ -21,7 +21,7 @@ stdenv.mkDerivation {
src = fetchurl {
url = "https://www.kernel.org/pub/software/scm/git/git-${version}.tar.xz";
sha256 = "0mvgvr2hz25p49dhhizcw9591f2h17y2699mpmndis3kzap0c6zy";
sha256 = "0gh57mfxz1qrxzfp1lpcaqswhixc246kmajlf0db7g0cn6wnhjd0";
};
patches = [

View File

@ -2,7 +2,7 @@
, guiSupport ? false, tk ? null, curses }:
let
version = "3.1.2";
version = "3.2.2";
name = "mercurial-${version}";
in
@ -11,7 +11,7 @@ stdenv.mkDerivation {
src = fetchurl {
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

View File

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

View File

@ -30,7 +30,7 @@ stdenv.mkDerivation rec {
meta = {
homepage = http://www.alliedvisiontec.com/us/products/software/linux/avt-fire4linux.html;
description = "AVT Viewer application for AVT cameras";
license = "BSD";
license = stdenv.lib.licenses.bsd3;
maintainers = [ stdenv.lib.maintainers.viric ];
platforms = stdenv.lib.platforms.linux;
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";
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";
};

View File

@ -20,7 +20,7 @@ stdenv.mkDerivation rec {
version = "2.1.5";
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";
};

View File

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

View File

@ -3,11 +3,11 @@ btrfsProgs, iptables, bash, e2fsprogs, xz}:
stdenv.mkDerivation rec {
name = "docker-${version}";
version = "1.3.1";
version = "1.3.3";
src = fetchurl {
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];

View File

@ -1,6 +1,6 @@
{ stdenv, fetchurl, lib, iasl, dev86, pam, libxslt, libxml2, libX11, xproto, libXext
, 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
, javaBindings ? false, jdk ? null
, pythonBindings ? false, python ? null
@ -12,23 +12,25 @@
with stdenv.lib;
let
buildType = "release";
version = "4.3.20"; # changes ./guest-additions as well
forEachModule = action: ''
for mod in \
$sourcedir/out/linux.*/release/bin/src/vboxdrv \
$sourcedir/out/linux.*/release/bin/src/vboxpci \
$sourcedir/out/linux.*/release/bin/src/vboxnetadp \
$sourcedir/out/linux.*/release/bin/src/vboxnetflt
out/linux.*/${buildType}/bin/src/vboxdrv \
out/linux.*/${buildType}/bin/src/vboxpci \
out/linux.*/${buildType}/bin/src/vboxnetadp \
out/linux.*/${buildType}/bin/src/vboxnetflt
do
if [ "x$(basename "$mod")" != xvboxdrv -a ! -e "$mod/Module.symvers" ]
then
cp -v $sourcedir/out/linux.*/release/bin/src/vboxdrv/Module.symvers \
"$mod/Module.symvers"
cp -v out/linux.*/${buildType}/bin/src/vboxdrv/Module.symvers \
"$mod/Module.symvers"
fi
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
'';
@ -86,8 +88,12 @@ in stdenv.mkDerivation {
patches = optional enableHardening ./hardened.patch;
postPatch = ''
sed -i -e 's|/sbin/ifconfig|${nettools}/bin/ifconfig|' \
src/apps/adpctl/VBoxNetAdpCtl.cpp
'';
configurePhase = ''
sourcedir="$(pwd)"
cat >> LocalConfig.kmk <<LOCAL_CONFIG
VBOX_WITH_TESTCASES :=
VBOX_WITH_TESTSUITE :=
@ -124,7 +130,7 @@ in stdenv.mkDerivation {
buildPhase = ''
source env.sh
kmk
kmk BUILD_TYPE="${buildType}"
${forEachModule "modules"}
'';
@ -133,9 +139,9 @@ in stdenv.mkDerivation {
share="${if enableHardening then "$out/share/virtualbox" else "$libexec"}"
# Install VirtualBox files
cd out/linux.*/release/bin
mkdir -p $libexec
cp -av * $libexec
mkdir -p "$libexec"
find out/linux.*/${buildType}/bin -mindepth 1 -maxdepth 1 \
-name src -o -exec cp -avt "$libexec" {} +
# Install kernel modules
${forEachModule "modules_install"}
@ -169,9 +175,6 @@ in stdenv.mkDerivation {
ln -s $libexec/icons/$size/*.png $out/share/icons/hicolor/$size/apps
done
# Get rid of src cruft.
rm -rf $out/libexec/virtualbox/src
# Get rid of a reference to linux.dev.
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
index c39d2f7..cd19186 100644
--- a/src/VBox/HostDrivers/Support/SUPR3HardenedVerify.cpp
@ -37,3 +98,108 @@ index 95dc9a7..39170bc 100644
size_t cchBufLeft = strlen(szPath);
szPath[cchBufLeft++] = RTPATH_DELIMITER;
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];
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
, xcb-util-cursor, lgi, makeWrapper, pango, gobjectIntrospection, unclutter
, xcb-util-cursor, makeWrapper, pango, gobjectIntrospection, unclutter
, compton, procps, iproute, coreutils, curl, alsaUtils, findutils, rxvt_unicode
, which, dbus, nettools, git, asciidoc, doxygen, xmlto, docbook_xml_dtd_45
, docbook_xsl }:
let
version = "3.5.5";
in
in with luaPackages;
stdenv.mkDerivation rec {
name = "awesome-${version}";
@ -32,6 +32,7 @@ stdenv.mkDerivation rec {
dbus
doxygen
gdk_pixbuf
gobjectIntrospection
git
imagemagick
lgi
@ -60,18 +61,22 @@ stdenv.mkDerivation rec {
LD_LIBRARY_PATH = "${cairo}/lib:${pango}/lib:${gobjectIntrospection}/lib";
GI_TYPELIB_PATH = "${pango}/lib/girepository-1.0";
LUA_CPATH = "${lgi}/lib/lua/5.1/?.so";
LUA_PATH = "${lgi}/share/lua/5.1/?.lua;${lgi}/share/lua/5.1/lgi/?.lua";
LUA_CPATH = "${lgi}/lib/lua/${lua.luaversion}/?.so";
LUA_PATH = "${lgi}/share/lua/${lua.luaversion}/?.lua;${lgi}/share/lua/${lua.luaversion}/lgi/?.lua";
postInstall = ''
wrapProgram $out/bin/awesome \
--set LUA_CPATH '"${lgi}/lib/lua/5.1/?.so"' \
--set LUA_PATH '"${lgi}/share/lua/5.1/?.lua;${lgi}/share/lua/5.1/lgi/?.lua"' \
--set GI_TYPELIB_PATH "${pango}/lib/girepository-1.0" \
--prefix LUA_CPATH ";" '"${lgi}/lib/lua/${lua.luaversion}/?.so"' \
--prefix LUA_PATH ";" '"${lgi}/share/lua/${lua.luaversion}/?.lua;${lgi}/share/lua/${lua.luaversion}/lgi/?.lua"' \
--prefix GI_TYPELIB_PATH : "$GI_TYPELIB_PATH" \
--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"
wrapProgram $out/bin/awesome-client \
--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";
homepage = http://github.com/baskerville/bspwm;
maintainers = [ stdenv.lib.maintainers.meisternu ];
license = "BSD";
license = stdenv.lib.licenses.bsd2;
platforms = stdenv.lib.platforms.linux;
};
}

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