Merge branch 'master' of git://github.com/NixOS/nixpkgs into staging

This commit is contained in:
Nikolay Amiantov 2016-04-25 18:02:10 +03:00
commit 09f02b918e
303 changed files with 6249 additions and 1479 deletions

View File

@ -1,6 +1,6 @@
###### Things done ###### Things done
- [ ] Tested using sandboxing (`nix-build --option build-use-chroot true` or [nix.useChroot](http://nixos.org/nixos/manual/options.html#opt-nix.useChroot) on NixOS) - [ ] Tested using sandboxing (`nix-build --option build-use-sandbox true` or [nix.useSandbox](http://nixos.org/nixos/manual/options.html#opt-nix.useSandbox) on NixOS)
- Built on platform(s) - Built on platform(s)
- [ ] NixOS - [ ] NixOS
- [ ] OS X - [ ] OS X

View File

@ -119,6 +119,6 @@ done
</screen> </screen>
</para> </para>
<para>To extract dependency information from a Go package in automated way use <link xlink:href="https://github.com/cstrahan/go2nix">go2nix</link>.</para> <para>To extract dependency information from a Go package in automated way use <link xlink:href="https://github.com/kamilchm/go2nix">go2nix</link>.</para>
</section> </section>

View File

@ -102,6 +102,7 @@
dmalikov = "Dmitry Malikov <malikov.d.y@gmail.com>"; dmalikov = "Dmitry Malikov <malikov.d.y@gmail.com>";
dochang = "Desmond O. Chang <dochang@gmail.com>"; dochang = "Desmond O. Chang <dochang@gmail.com>";
doublec = "Chris Double <chris.double@double.co.nz>"; doublec = "Chris Double <chris.double@double.co.nz>";
drewkett = "Andrew Burkett <burkett.andrew@gmail.com>";
ebzzry = "Rommel Martinez <ebzzry@gmail.com>"; ebzzry = "Rommel Martinez <ebzzry@gmail.com>";
ederoyd46 = "Matthew Brown <matt@ederoyd.co.uk>"; ederoyd46 = "Matthew Brown <matt@ederoyd.co.uk>";
eduarrrd = "Eduard Bachmakov <e.bachmakov@gmail.com>"; eduarrrd = "Eduard Bachmakov <e.bachmakov@gmail.com>";
@ -253,7 +254,7 @@
notthemessiah = "Brian Cohen <brian.cohen.88@gmail.com>"; notthemessiah = "Brian Cohen <brian.cohen.88@gmail.com>";
np = "Nicolas Pouillard <np.nix@nicolaspouillard.fr>"; np = "Nicolas Pouillard <np.nix@nicolaspouillard.fr>";
nslqqq = "Nikita Mikhailov <nslqqq@gmail.com>"; nslqqq = "Nikita Mikhailov <nslqqq@gmail.com>";
obadz = "obadz <dav-nixos@odav.org>"; obadz = "obadz <nixos@obadz.com>";
ocharles = "Oliver Charles <ollie@ocharles.org.uk>"; ocharles = "Oliver Charles <ollie@ocharles.org.uk>";
odi = "Oliver Dunkl <oliver.dunkl@gmail.com>"; odi = "Oliver Dunkl <oliver.dunkl@gmail.com>";
offline = "Jaka Hudoklin <jakahudoklin@gmail.com>"; offline = "Jaka Hudoklin <jakahudoklin@gmail.com>";
@ -296,6 +297,7 @@
refnil = "Martin Lavoie <broemartino@gmail.com>"; refnil = "Martin Lavoie <broemartino@gmail.com>";
relrod = "Ricky Elrod <ricky@elrod.me>"; relrod = "Ricky Elrod <ricky@elrod.me>";
renzo = "Renzo Carbonara <renzocarbonara@gmail.com>"; renzo = "Renzo Carbonara <renzocarbonara@gmail.com>";
retrry = "Tadas Barzdžius <retrry@gmail.com>";
rick68 = "Wei-Ming Yang <rick68@gmail.com>"; rick68 = "Wei-Ming Yang <rick68@gmail.com>";
rickynils = "Rickard Nilsson <rickynils@gmail.com>"; rickynils = "Rickard Nilsson <rickynils@gmail.com>";
rnhmjoj = "Michele Guerini Rocco <micheleguerinirocco@me.com>"; rnhmjoj = "Michele Guerini Rocco <micheleguerinirocco@me.com>";
@ -338,6 +340,7 @@
spwhitt = "Spencer Whitt <sw@swhitt.me>"; spwhitt = "Spencer Whitt <sw@swhitt.me>";
stephenmw = "Stephen Weinberg <stephen@q5comm.com>"; stephenmw = "Stephen Weinberg <stephen@q5comm.com>";
steveej = "Stefan Junker <mail@stefanjunker.de>"; steveej = "Stefan Junker <mail@stefanjunker.de>";
swistak35 = "Rafał Łasocha <me@swistak35.com>";
szczyp = "Szczyp <qb@szczyp.com>"; szczyp = "Szczyp <qb@szczyp.com>";
sztupi = "Attila Sztupak <attila.sztupak@gmail.com>"; sztupi = "Attila Sztupak <attila.sztupak@gmail.com>";
taeer = "Taeer Bar-Yam <taeer@necsi.edu>"; taeer = "Taeer Bar-Yam <taeer@necsi.edu>";

View File

@ -11,35 +11,25 @@ uses the NixOS and Nixpkgs sources provided by the
<literal>nixos-unstable</literal> channel (kept in <literal>nixos-unstable</literal> channel (kept in
<filename>/nix/var/nix/profiles/per-user/root/channels/nixos</filename>). <filename>/nix/var/nix/profiles/per-user/root/channels/nixos</filename>).
To modify NixOS, however, you should check out the latest sources from To modify NixOS, however, you should check out the latest sources from
Git. This is done using the following command: Git. This is as follows:
<screen> <screen>
$ nixos-checkout <replaceable>/my/sources</replaceable>
</screen>
or
<screen>
$ mkdir -p <replaceable>/my/sources</replaceable>
$ cd <replaceable>/my/sources</replaceable>
$ nix-env -i git
$ git clone git://github.com/NixOS/nixpkgs.git $ git clone git://github.com/NixOS/nixpkgs.git
$ cd nixpkgs $ cd nixpkgs
$ git remote add channels git://github.com/NixOS/nixpkgs-channels.git $ git remote add channels git://github.com/NixOS/nixpkgs-channels.git
$ git remote update channels $ git remote update channels
</screen> </screen>
This will check out the latest NixOS sources to This will check out the latest Nixpkgs sources to
<filename><replaceable>/my/sources</replaceable>/nixpkgs/nixos</filename> <filename>./nixpkgs</filename> the NixOS sources to
and the Nixpkgs sources to <filename>./nixpkgs/nixos</filename>. (The NixOS source tree lives in
<filename><replaceable>/my/sources</replaceable>/nixpkgs</filename>. a subdirectory of the Nixpkgs repository.) The remote
(The NixOS source tree lives in a subdirectory of the Nixpkgs <literal>channels</literal> refers to a read-only repository that
repository.) The remote <literal>channels</literal> refers to a tracks the Nixpkgs/NixOS channels (see <xref linkend="sec-upgrading"/>
read-only repository that tracks the Nixpkgs/NixOS channels (see <xref for more information about channels). Thus, the Git branch
linkend="sec-upgrading"/> for more information about channels). Thus, <literal>channels/nixos-14.12</literal> will contain the latest built
the Git branch <literal>channels/nixos-14.12</literal> will contain and tested version available in the <literal>nixos-14.12</literal>
the latest built and tested version available in the channel.</para>
<literal>nixos-14.12</literal> channel.</para>
<para>Its often inconvenient to develop directly on the master <para>Its often inconvenient to develop directly on the master
branch, since if somebody has just committed (say) a change to GCC, branch, since if somebody has just committed (say) a change to GCC,

View File

@ -81,14 +81,14 @@ pkgs.vmTools.runInLinuxVM (
# Register the paths in the Nix database. # Register the paths in the Nix database.
printRegistration=1 perl ${pkgs.pathsFromGraph} /tmp/xchg/closure | \ printRegistration=1 perl ${pkgs.pathsFromGraph} /tmp/xchg/closure | \
chroot /mnt ${config.nix.package}/bin/nix-store --load-db --option build-users-group "" chroot /mnt ${config.nix.package.out}/bin/nix-store --load-db --option build-users-group ""
# Add missing size/hash fields to the database. FIXME: # Add missing size/hash fields to the database. FIXME:
# exportReferencesGraph should provide these directly. # exportReferencesGraph should provide these directly.
chroot /mnt ${config.nix.package}/bin/nix-store --verify --check-contents chroot /mnt ${config.nix.package.out}/bin/nix-store --verify --check-contents
# Create the system profile to allow nixos-rebuild to work. # Create the system profile to allow nixos-rebuild to work.
chroot /mnt ${config.nix.package}/bin/nix-env --option build-users-group "" \ chroot /mnt ${config.nix.package.out}/bin/nix-env --option build-users-group "" \
-p /nix/var/nix/profiles/system --set ${config.system.build.toplevel} -p /nix/var/nix/profiles/system --set ${config.system.build.toplevel}
# `nixos-rebuild' requires an /etc/NIXOS. # `nixos-rebuild' requires an /etc/NIXOS.

View File

@ -31,13 +31,13 @@ in
# unload module during suspend/hibernate as it crashes the whole system # unload module during suspend/hibernate as it crashes the whole system
powerManagement.powerDownCommands = '' powerManagement.powerDownCommands = ''
${pkgs.module_init_tools}/bin/rmmod -f facetimehd ${pkgs.kmod}/bin/lsmod | ${pkgs.gnugrep}/bin/grep -q "^facetimehd" && ${pkgs.kmod}/bin/rmmod -f -v facetimehd
''; '';
# and load it back on resume # and load it back on resume
powerManagement.resumeCommands = '' powerManagement.resumeCommands = ''
export MODULE_DIR=/run/current-system/kernel-modules/lib/modules export MODULE_DIR=/run/current-system/kernel-modules/lib/modules
${pkgs.module_init_tools}/bin/modprobe -v facetimehd ${pkgs.kmod}/bin/modprobe -v facetimehd
''; '';
}; };

View File

@ -34,7 +34,7 @@ in
if ! [ -e /var/lib/nixos/did-channel-init ]; then if ! [ -e /var/lib/nixos/did-channel-init ]; then
echo "unpacking the NixOS/Nixpkgs sources..." echo "unpacking the NixOS/Nixpkgs sources..."
mkdir -p /nix/var/nix/profiles/per-user/root mkdir -p /nix/var/nix/profiles/per-user/root
${config.nix.package}/bin/nix-env -p /nix/var/nix/profiles/per-user/root/channels \ ${config.nix.package.out}/bin/nix-env -p /nix/var/nix/profiles/per-user/root/channels \
-i ${channelSources} --quiet --option build-use-substitutes false -i ${channelSources} --quiet --option build-use-substitutes false
mkdir -m 0700 -p /root/.nix-defexpr mkdir -m 0700 -p /root/.nix-defexpr
ln -s /nix/var/nix/profiles/per-user/root/channels /root/.nix-defexpr/channels ln -s /nix/var/nix/profiles/per-user/root/channels /root/.nix-defexpr/channels

View File

@ -364,12 +364,12 @@ in
'' ''
# After booting, register the contents of the Nix store on the # After booting, register the contents of the Nix store on the
# CD in the Nix database in the tmpfs. # CD in the Nix database in the tmpfs.
${config.nix.package}/bin/nix-store --load-db < /nix/store/nix-path-registration ${config.nix.package.out}/bin/nix-store --load-db < /nix/store/nix-path-registration
# nixos-rebuild also requires a "system" profile and an # nixos-rebuild also requires a "system" profile and an
# /etc/NIXOS tag. # /etc/NIXOS tag.
touch /etc/NIXOS touch /etc/NIXOS
${config.nix.package}/bin/nix-env -p /nix/var/nix/profiles/system --set /run/current-system ${config.nix.package.out}/bin/nix-env -p /nix/var/nix/profiles/system --set /run/current-system
''; '';
# Add vfat support to the initrd to enable people to copy the # Add vfat support to the initrd to enable people to copy the

View File

@ -113,11 +113,11 @@ in
${pkgs.e2fsprogs}/bin/resize2fs $rootPart ${pkgs.e2fsprogs}/bin/resize2fs $rootPart
# Register the contents of the initial Nix store # Register the contents of the initial Nix store
${config.nix.package}/bin/nix-store --load-db < /nix-path-registration ${config.nix.package.out}/bin/nix-store --load-db < /nix-path-registration
# nixos-rebuild also requires a "system" profile and an /etc/NIXOS tag. # nixos-rebuild also requires a "system" profile and an /etc/NIXOS tag.
touch /etc/NIXOS touch /etc/NIXOS
${config.nix.package}/bin/nix-env -p /nix/var/nix/profiles/system --set /run/current-system ${config.nix.package.out}/bin/nix-env -p /nix/var/nix/profiles/system --set /run/current-system
# Prevents this from running on later boots. # Prevents this from running on later boots.
rm -f /nix-path-registration rm -f /nix-path-registration

View File

@ -52,8 +52,7 @@ in
# Include some utilities that are useful for installing or repairing # Include some utilities that are useful for installing or repairing
# the system. # the system.
environment.systemPackages = environment.systemPackages =
[ pkgs.subversion # for nixos-checkout [ pkgs.w3m # needed for the manual anyway
pkgs.w3m # needed for the manual anyway
pkgs.testdisk # useful for repairing boot problems pkgs.testdisk # useful for repairing boot problems
pkgs.mssys # for writing Microsoft boot sectors / MBRs pkgs.mssys # for writing Microsoft boot sectors / MBRs
pkgs.parted pkgs.parted

View File

@ -49,8 +49,7 @@ in
# Include some utilities that are useful for installing or repairing # Include some utilities that are useful for installing or repairing
# the system. # the system.
environment.systemPackages = environment.systemPackages =
[ pkgs.subversion # for nixos-checkout [ pkgs.w3m # needed for the manual anyway
pkgs.w3m # needed for the manual anyway
pkgs.ddrescue pkgs.ddrescue
pkgs.ccrypt pkgs.ccrypt
pkgs.cryptsetup # needed for dm-crypt volumes pkgs.cryptsetup # needed for dm-crypt volumes

View File

@ -78,14 +78,14 @@ in
# After booting, register the contents of the Nix store on the # After booting, register the contents of the Nix store on the
# CD in the Nix database in the tmpfs. # CD in the Nix database in the tmpfs.
if [ -f /nix-path-registration ]; then if [ -f /nix-path-registration ]; then
${config.nix.package}/bin/nix-store --load-db < /nix-path-registration && ${config.nix.package.out}/bin/nix-store --load-db < /nix-path-registration &&
rm /nix-path-registration rm /nix-path-registration
fi fi
# nixos-rebuild also requires a "system" profile and an # nixos-rebuild also requires a "system" profile and an
# /etc/NIXOS tag. # /etc/NIXOS tag.
touch /etc/NIXOS touch /etc/NIXOS
${config.nix.package}/bin/nix-env -p /nix/var/nix/profiles/system --set /run/current-system ${config.nix.package.out}/bin/nix-env -p /nix/var/nix/profiles/system --set /run/current-system
''; '';
}; };

View File

@ -78,7 +78,7 @@ let cfg = config.system.autoUpgrade; in
HOME = "/root"; HOME = "/root";
}; };
path = [ pkgs.gnutar pkgs.xz.bin config.nix.package ]; path = [ pkgs.gnutar pkgs.xz.bin config.nix.package.out ];
script = '' script = ''
${config.system.build.nixos-rebuild}/bin/nixos-rebuild switch ${toString cfg.flags} ${config.system.build.nixos-rebuild}/bin/nixos-rebuild switch ${toString cfg.flags}

View File

@ -1,60 +0,0 @@
# This module generates the nixos-checkout script, which performs a
# checkout of the Nixpkgs Git repository.
{ config, lib, pkgs, ... }:
with lib;
let
nixosCheckout = pkgs.substituteAll {
name = "nixos-checkout";
dir = "bin";
isExecutable = true;
src = pkgs.writeScript "nixos-checkout"
''
#! ${pkgs.stdenv.shell} -e
if [ "$1" == "-h" ] || [ "$1" == "--help" ]; then
echo "Usage: `basename $0` [PREFIX]. See NixOS Manual for more info."
exit 0
fi
prefix="$1"
if [ -z "$prefix" ]; then prefix=/etc/nixos; fi
mkdir -p "$prefix"
cd "$prefix"
if [ -z "$(type -P git)" ]; then
echo "installing Git..."
nix-env -iA nixos.git
fi
# Move any old nixpkgs directories out of the way.
backupTimestamp=$(date "+%Y%m%d%H%M%S")
if [ -e nixpkgs -a ! -e nixpkgs/.git ]; then
mv nixpkgs nixpkgs-$backupTimestamp
fi
# Check out the Nixpkgs sources.
if ! [ -e nixpkgs/.git ]; then
echo "Creating repository in $prefix/nixpkgs..."
git init --quiet nixpkgs
else
echo "Updating repository in $prefix/nixpkgs..."
fi
cd nixpkgs
git remote add origin git://github.com/NixOS/nixpkgs.git || true
git remote add channels git://github.com/NixOS/nixpkgs-channels.git || true
git remote set-url origin --push git@github.com:NixOS/nixpkgs.git
git remote update
git checkout master
'';
};
in
{
environment.systemPackages = [ nixosCheckout ];
}

View File

@ -271,7 +271,7 @@ remotePATH=
if [ -n "$buildNix" ]; then if [ -n "$buildNix" ]; then
echo "building Nix..." >&2 echo "building Nix..." >&2
nixDrv= nixDrv=
if ! nixDrv="$(nix-instantiate '<nixpkgs/nixos>' --add-root $tmpDir/nix.drv --indirect -A config.nix.package "${extraBuildFlags[@]}")"; then if ! nixDrv="$(nix-instantiate '<nixpkgs/nixos>' --add-root $tmpDir/nix.drv --indirect -A config.nix.package.out "${extraBuildFlags[@]}")"; then
if ! nixDrv="$(nix-instantiate '<nixpkgs/nixos>' --add-root $tmpDir/nix.drv --indirect -A nixFallback "${extraBuildFlags[@]}")"; then if ! nixDrv="$(nix-instantiate '<nixpkgs/nixos>' --add-root $tmpDir/nix.drv --indirect -A nixFallback "${extraBuildFlags[@]}")"; then
if ! nixDrv="$(nix-instantiate '<nixpkgs>' --add-root $tmpDir/nix.drv --indirect -A nix "${extraBuildFlags[@]}")"; then if ! nixDrv="$(nix-instantiate '<nixpkgs>' --add-root $tmpDir/nix.drv --indirect -A nix "${extraBuildFlags[@]}")"; then
nixStorePath="$(prebuiltNix "$(uname -m)")" nixStorePath="$(prebuiltNix "$(uname -m)")"

View File

@ -22,17 +22,17 @@ let
src = ./nixos-install.sh; src = ./nixos-install.sh;
inherit (pkgs) perl pathsFromGraph; inherit (pkgs) perl pathsFromGraph;
nix = config.nix.package; nix = config.nix.package.out;
nixClosure = pkgs.runCommand "closure" nixClosure = pkgs.runCommand "closure"
{ exportReferencesGraph = ["refs" config.nix.package]; } { exportReferencesGraph = ["refs" config.nix.package.out]; }
"cp refs $out"; "cp refs $out";
}; };
nixos-rebuild = makeProg { nixos-rebuild = makeProg {
name = "nixos-rebuild"; name = "nixos-rebuild";
src = ./nixos-rebuild.sh; src = ./nixos-rebuild.sh;
nix = config.nix.package; nix = config.nix.package.out;
}; };
nixos-generate-config = makeProg { nixos-generate-config = makeProg {

View File

@ -263,6 +263,7 @@
caddy = 239; caddy = 239;
taskd = 240; taskd = 240;
factorio = 241; factorio = 241;
emby = 242;
# When adding a uid, make sure it doesn't match an existing gid. And don't use uids above 399! # When adding a uid, make sure it doesn't match an existing gid. And don't use uids above 399!
@ -497,6 +498,7 @@
caddy = 239; caddy = 239;
taskd = 240; taskd = 240;
factorio = 241; factorio = 241;
emby = 242;
# When adding a gid, make sure it doesn't match an existing # When adding a gid, make sure it doesn't match an existing
# uid. Users and groups with the same name should have equal # uid. Users and groups with the same name should have equal

View File

@ -47,7 +47,6 @@
./i18n/input-method/nabi.nix ./i18n/input-method/nabi.nix
./i18n/input-method/uim.nix ./i18n/input-method/uim.nix
./installer/tools/auto-upgrade.nix ./installer/tools/auto-upgrade.nix
./installer/tools/nixos-checkout.nix
./installer/tools/tools.nix ./installer/tools/tools.nix
./misc/assertions.nix ./misc/assertions.nix
./misc/crashdump.nix ./misc/crashdump.nix
@ -159,6 +158,7 @@
./services/desktops/gnome3/tracker.nix ./services/desktops/gnome3/tracker.nix
./services/desktops/profile-sync-daemon.nix ./services/desktops/profile-sync-daemon.nix
./services/desktops/telepathy.nix ./services/desktops/telepathy.nix
./services/development/hoogle.nix
./services/games/factorio.nix ./services/games/factorio.nix
./services/games/ghost-one.nix ./services/games/ghost-one.nix
./services/games/minecraft-server.nix ./services/games/minecraft-server.nix
@ -216,6 +216,7 @@
./services/misc/dictd.nix ./services/misc/dictd.nix
./services/misc/disnix.nix ./services/misc/disnix.nix
./services/misc/docker-registry.nix ./services/misc/docker-registry.nix
./services/misc/emby.nix
./services/misc/etcd.nix ./services/misc/etcd.nix
./services/misc/felix.nix ./services/misc/felix.nix
./services/misc/folding-at-home.nix ./services/misc/folding-at-home.nix
@ -400,6 +401,7 @@
./services/networking/wicd.nix ./services/networking/wicd.nix
./services/networking/wpa_supplicant.nix ./services/networking/wpa_supplicant.nix
./services/networking/xinetd.nix ./services/networking/xinetd.nix
./services/networking/zerobin.nix
./services/networking/zerotierone.nix ./services/networking/zerotierone.nix
./services/networking/znc.nix ./services/networking/znc.nix
./services/printing/cupsd.nix ./services/printing/cupsd.nix

View File

@ -37,12 +37,12 @@ in {
# After booting, register the contents of the Nix store in the Nix # After booting, register the contents of the Nix store in the Nix
# database. # database.
if [ -f /nix-path-registration ]; then if [ -f /nix-path-registration ]; then
${config.nix.package}/bin/nix-store --load-db < /nix-path-registration && ${config.nix.package.out}/bin/nix-store --load-db < /nix-path-registration &&
rm /nix-path-registration rm /nix-path-registration
fi fi
# nixos-rebuild also requires a "system" profile # nixos-rebuild also requires a "system" profile
${config.nix.package}/bin/nix-env -p /nix/var/nix/profiles/system --set /run/current-system ${config.nix.package.out}/bin/nix-env -p /nix/var/nix/profiles/system --set /run/current-system
''; '';
# Install new init script # Install new init script

View File

@ -68,6 +68,10 @@ with lib;
# proxy # proxy
(mkRenamedOptionModule [ "nix" "proxy" ] [ "networking" "proxy" "default" ]) (mkRenamedOptionModule [ "nix" "proxy" ] [ "networking" "proxy" "default" ])
# sandboxing
(mkRenamedOptionModule [ "nix" "useChroot" ] [ "nix" "useSandbox" ])
(mkRenamedOptionModule [ "nix" "chrootDirs" ] [ "nix" "sandboxPaths" ])
# KDE # KDE
(mkRenamedOptionModule [ "kde" "extraPackages" ] [ "environment" "systemPackages" ]) (mkRenamedOptionModule [ "kde" "extraPackages" ] [ "environment" "systemPackages" ])
(mkRenamedOptionModule [ "environment" "kdePackages" ] [ "environment" "systemPackages" ]) (mkRenamedOptionModule [ "environment" "kdePackages" ] [ "environment" "systemPackages" ])

View File

@ -0,0 +1,70 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.services.hoogle;
hoogleEnv = pkgs.buildEnv {
name = "hoogle";
paths = [ (cfg.haskellPackages.ghcWithHoogle cfg.packages) ];
};
in {
options.services.hoogle = {
enable = mkEnableOption "Haskell documentation server";
port = mkOption {
type = types.int;
default = 8080;
description = ''
Port number Hoogle will be listening to.
'';
};
packages = mkOption {
default = hp: [];
defaultText = "hp: []";
example = "hp: with hp; [ text lens ]";
description = ''
The Haskell packages to generate documentation for.
The option value is a function that takes the package set specified in
the <varname>haskellPackages</varname> option as its sole parameter and
returns a list of packages.
'';
};
haskellPackages = mkOption {
description = "Which haskell package set to use.";
default = pkgs.haskellPackages;
defaultText = "pkgs.haskellPackages";
};
};
config = mkIf cfg.enable {
systemd.services.hoogle = {
description = "Haskell documentation server";
wantedBy = [ "multi-user.target" ];
serviceConfig = {
Restart = "always";
ExecStart = ''${hoogleEnv}/bin/hoogle server --local -p ${toString cfg.port}'';
User = "nobody";
Group = "nogroup";
PrivateTmp = true;
ProtectHome = true;
RuntimeDirectory = "hoogle";
WorkingDirectory = "%t/hoogle";
};
};
};
}

View File

@ -0,0 +1,64 @@
{ config, pkgs, lib, mono, ... }:
with lib;
let
cfg = config.services.emby;
emby = pkgs.emby;
in
{
options = {
services.emby = {
enable = mkEnableOption "Emby Media Server";
user = mkOption {
type = types.str;
default = "emby";
description = "User account under which Emby runs.";
};
group = mkOption {
type = types.str;
default = "emby";
description = "Group under which emby runs.";
};
};
};
config = mkIf cfg.enable {
systemd.services.emby = {
description = "Emby Media Server";
after = [ "network.target" ];
wantedBy = [ "multi-user.target" ];
preStart = ''
test -d /var/lib/emby/ProgramData-Server || {
echo "Creating initial Emby data directory in /var/lib/emby/ProgramData-Server"
mkdir -p /var/lib/emby/ProgramData-Server
chown -R ${cfg.user}:${cfg.group} /var/lib/emby/ProgramData-Server
}
'';
serviceConfig = {
Type = "simple";
User = cfg.user;
Group = cfg.group;
PermissionsStartOnly = "true";
ExecStart = "${pkgs.mono}/bin/mono ${pkgs.emby}/bin/MediaBrowser.Server.Mono.exe";
Restart = "on-failure";
};
};
users.extraUsers = mkIf (cfg.user == "emby") {
emby = {
group = cfg.group;
uid = config.ids.uids.emby;
};
};
users.extraGroups = mkIf (cfg.group == "emby") {
emby = {
gid = config.ids.gids.emby;
};
};
};
}

View File

@ -6,7 +6,7 @@ let
cfg = config.nix; cfg = config.nix;
nix = cfg.package; nix = cfg.package.out;
makeNixBuildUser = nr: makeNixBuildUser = nr:
{ name = "nixbld${toString nr}"; { name = "nixbld${toString nr}";
@ -24,8 +24,8 @@ let
nixConf = nixConf =
let let
# If we're using a chroot for builds, then provide /bin/sh in # If we're using sandbox for builds, then provide /bin/sh in
# the chroot as a bind-mount to bash. This means we also need to # the sandbox as a bind-mount to bash. This means we also need to
# include the entire closure of bash. # include the entire closure of bash.
sh = pkgs.stdenv.shell; sh = pkgs.stdenv.shell;
binshDeps = pkgs.writeReferencesToFile sh; binshDeps = pkgs.writeReferencesToFile sh;
@ -39,8 +39,8 @@ let
build-users-group = nixbld build-users-group = nixbld
build-max-jobs = ${toString (cfg.maxJobs)} build-max-jobs = ${toString (cfg.maxJobs)}
build-cores = ${toString (cfg.buildCores)} build-cores = ${toString (cfg.buildCores)}
build-use-chroot = ${if (builtins.isBool cfg.useChroot) then (if cfg.useChroot then "true" else "false") else cfg.useChroot} build-use-sandbox = ${if (builtins.isBool cfg.useSandbox) then (if cfg.useSandbox then "true" else "false") else cfg.useSandbox}
build-chroot-dirs = ${toString cfg.chrootDirs} /bin/sh=${sh} $(echo $extraPaths) build-sandbox-paths = ${toString cfg.sandboxPaths} /bin/sh=${sh} $(echo $extraPaths)
binary-caches = ${toString cfg.binaryCaches} binary-caches = ${toString cfg.binaryCaches}
trusted-binary-caches = ${toString cfg.trustedBinaryCaches} trusted-binary-caches = ${toString cfg.trustedBinaryCaches}
binary-cache-public-keys = ${toString cfg.binaryCachePublicKeys} binary-cache-public-keys = ${toString cfg.binaryCachePublicKeys}
@ -65,8 +65,8 @@ in
package = mkOption { package = mkOption {
type = types.package; type = types.package;
default = pkgs.nix.out; default = pkgs.nix;
defaultText = "pkgs.nix.out"; defaultText = "pkgs.nix";
description = '' description = ''
This option specifies the Nix package instance to use throughout the system. This option specifies the Nix package instance to use throughout the system.
''; '';
@ -98,25 +98,25 @@ in
''; '';
}; };
useChroot = mkOption { useSandbox = mkOption {
type = types.either types.bool (types.enum ["relaxed"]); type = types.either types.bool (types.enum ["relaxed"]);
default = false; default = false;
description = " description = "
If set, Nix will perform builds in a chroot-environment that it If set, Nix will perform builds in a sandboxed environment that it
will set up automatically for each build. This prevents will set up automatically for each build. This prevents
impurities in builds by disallowing access to dependencies impurities in builds by disallowing access to dependencies
outside of the Nix store. outside of the Nix store.
"; ";
}; };
chrootDirs = mkOption { sandboxPaths = mkOption {
type = types.listOf types.str; type = types.listOf types.str;
default = []; default = [];
example = [ "/dev" "/proc" ]; example = [ "/dev" "/proc" ];
description = description =
'' ''
Directories from the host filesystem to be included Directories from the host filesystem to be included
in the chroot. in the sandbox.
''; '';
}; };

View File

@ -52,7 +52,7 @@ in
systemd.services.nix-gc = systemd.services.nix-gc =
{ description = "Nix Garbage Collector"; { description = "Nix Garbage Collector";
script = "exec ${config.nix.package}/bin/nix-collect-garbage ${cfg.options}"; script = "exec ${config.nix.package.out}/bin/nix-collect-garbage ${cfg.options}";
startAt = optionalString cfg.automatic cfg.dates; startAt = optionalString cfg.automatic cfg.dates;
}; };

View File

@ -41,7 +41,7 @@ with lib;
PermitTTY no PermitTTY no
PermitTunnel no PermitTunnel no
X11Forwarding no X11Forwarding no
ForceCommand ${config.nix.package}/bin/nix-store --serve ForceCommand ${config.nix.package.out}/bin/nix-store --serve
Match All Match All
''; '';

View File

@ -80,7 +80,7 @@ in
preStart = '' preStart = ''
mkdir -p -m 0755 /afs mkdir -p -m 0755 /afs
mkdir -m 0700 -p ${cfg.cacheDirectory} mkdir -m 0700 -p ${cfg.cacheDirectory}
${pkgs.module_init_tools}/sbin/insmod ${openafsPkgs}/lib/openafs/libafs-*.ko || true ${pkgs.kmod}/sbin/insmod ${openafsPkgs}/lib/openafs/libafs-*.ko || true
${openafsPkgs}/sbin/afsd -confdir ${afsConfig} -cachedir ${cfg.cacheDirectory} ${if cfg.sparse then "-dynroot-sparse" else "-dynroot"} -fakestat -afsdb ${openafsPkgs}/sbin/afsd -confdir ${afsConfig} -cachedir ${cfg.cacheDirectory} ${if cfg.sparse then "-dynroot-sparse" else "-dynroot"} -fakestat -afsdb
${openafsPkgs}/bin/fs setcrypt ${if cfg.crypt then "on" else "off"} ${openafsPkgs}/bin/fs setcrypt ${if cfg.crypt then "on" else "off"}
''; '';
@ -92,7 +92,7 @@ in
preStop = '' preStop = ''
${pkgs.utillinux}/bin/umount /afs ${pkgs.utillinux}/bin/umount /afs
${openafsPkgs}/sbin/afsd -shutdown ${openafsPkgs}/sbin/afsd -shutdown
${pkgs.module_init_tools}/sbin/rmmod libafs ${pkgs.kmod}/sbin/rmmod libafs
''; '';
}; };
}; };

View File

@ -10,6 +10,7 @@ let
{ what = "${pkgs.mfi}/dl"; where = "${stateDir}/dl"; } { what = "${pkgs.mfi}/dl"; where = "${stateDir}/dl"; }
{ what = "${pkgs.mfi}/lib"; where = "${stateDir}/lib"; } { what = "${pkgs.mfi}/lib"; where = "${stateDir}/lib"; }
{ what = "${pkgs.mongodb248}/bin"; where = "${stateDir}/bin"; } { what = "${pkgs.mongodb248}/bin"; where = "${stateDir}/bin"; }
{ what = "${cfg.dataDir}"; where = "${stateDir}/data"; }
]; ];
systemdMountPoints = map (m: "${utils.escapeSystemdPath m.where}.mount") mountPoints; systemdMountPoints = map (m: "${utils.escapeSystemdPath m.where}.mount") mountPoints;
ports = [ 6080 6880 6443 6843 ]; ports = [ 6080 6880 6443 6843 ];
@ -23,6 +24,15 @@ in
default = true; default = true;
description = "Whether to open TCP ports ${concatMapStrings (a: "${toString a} ") ports}for the services."; description = "Whether to open TCP ports ${concatMapStrings (a: "${toString a} ") ports}for the services.";
}; };
dataDir = mkOption {
type = types.str;
default = "${stateDir}/data";
description = ''
Where to store the database and other data.
This directory will be bind-mounted to ${stateDir}/data as part of the service startup.
'';
};
}; };
}; };

View File

@ -50,7 +50,7 @@ in
after = [ "network.target" ]; after = [ "network.target" ];
wantedBy = [ "multi-user.target" ]; wantedBy = [ "multi-user.target" ];
path = [ config.nix.package pkgs.bzip2.bin ]; path = [ config.nix.package.out pkgs.bzip2.bin ];
environment.NIX_REMOTE = "daemon"; environment.NIX_REMOTE = "daemon";
environment.NIX_SECRET_KEY_FILE = cfg.secretKeyFile; environment.NIX_SECRET_KEY_FILE = cfg.secretKeyFile;

View File

@ -3,7 +3,7 @@
with lib; with lib;
let let
quassel = pkgs.quasselDaemon_qt5; quassel = pkgs.kde4.quasselDaemon;
cfg = config.services.quassel; cfg = config.services.quassel;
user = if cfg.user != null then cfg.user else "quassel"; user = if cfg.user != null then cfg.user else "quassel";
in in

View File

@ -17,6 +17,10 @@ let
what = "${pkgs.mongodb}/bin"; what = "${pkgs.mongodb}/bin";
where = "${stateDir}/bin"; where = "${stateDir}/bin";
} }
{
what = "${cfg.dataDir}";
where = "${stateDir}/data";
}
]; ];
systemdMountPoints = map (m: "${utils.escapeSystemdPath m.where}.mount") mountPoints; systemdMountPoints = map (m: "${utils.escapeSystemdPath m.where}.mount") mountPoints;
in in
@ -32,6 +36,16 @@ in
''; '';
}; };
services.unifi.dataDir = mkOption {
type = types.str;
default = "${stateDir}/data";
description = ''
Where to store the database and other data.
This directory will be bind-mounted to ${stateDir}/data as part of the service startup.
'';
};
}; };
config = mkIf cfg.enable { config = mkIf cfg.enable {
@ -62,7 +76,7 @@ in
bindsTo = systemdMountPoints; bindsTo = systemdMountPoints;
unitConfig.RequiresMountsFor = stateDir; unitConfig.RequiresMountsFor = stateDir;
# This a HACK to fix missing dependencies of dynamic libs extracted from jars # This a HACK to fix missing dependencies of dynamic libs extracted from jars
environment.LD_LIBRARY_PATH = with pkgs.stdenv; "${cc.cc}/lib"; environment.LD_LIBRARY_PATH = with pkgs.stdenv; "${cc.cc.lib}/lib";
preStart = '' preStart = ''
# Ensure privacy of state # Ensure privacy of state

View File

@ -0,0 +1,102 @@
{ config, pkgs, lib, nodes, ... }:
with lib;
let
cfg = config.services.zerobin;
zerobin_config = pkgs.writeText "zerobin-config.py" ''
PASTE_FILES_ROOT = "${cfg.dataDir}"
${cfg.extraConfig}
'';
in
{
options = {
services.zerobin = {
enable = mkEnableOption "0bin";
dataDir = mkOption {
type = types.str;
default = "/var/lib/zerobin";
description = ''
Path to the 0bin data directory
'';
};
user = mkOption {
type = types.str;
default = "zerobin";
description = ''
The user 0bin should run as
'';
};
group = mkOption {
type = types.str;
default = "zerobin";
description = ''
The group 0bin should run as
'';
};
listenPort = mkOption {
type = types.int;
default = 8000;
example = 1357;
description = ''
The port zerobin should listen on
'';
};
listenAddress = mkOption {
type = types.str;
default = "localhost";
example = "127.0.0.1";
description = ''
The address zerobin should listen to
'';
};
extraConfig = mkOption {
type = types.lines;
default = "";
example = ''
MENU = (
('Home', '/'),
)
COMPRESSED_STATIC_FILE = True
'';
description = ''
Extra configuration to be appended to the 0bin config file
(see https://0bin.readthedocs.org/en/latest/en/options.html)
'';
};
};
};
config = mkIf (cfg.enable) {
users.users."${cfg.user}" =
if cfg.user == "zerobin" then {
isSystemUser = true;
group = cfg.group;
home = cfg.dataDir;
createHome = true;
}
else {};
users.groups."${cfg.group}" = {};
systemd.services.zerobin = {
enable = true;
after = [ "network-interfaces.target" ];
wantedBy = [ "multi-user.target" ];
serviceConfig.ExecStart = "${pkgs.pythonPackages.zerobin}/bin/zerobin ${cfg.listenAddress} ${toString cfg.listenPort} false ${cfg.user} ${cfg.group} ${zerobin_config}";
serviceConfig.PrivateTmp="yes";
serviceConfig.User = cfg.user;
serviceConfig.Group = cfg.group;
preStart = ''
mkdir -p ${cfg.dataDir}
chown ${cfg.user} ${cfg.dataDir}
'';
};
};
}

View File

@ -4,7 +4,7 @@ let
inherit (lib) mkOption mkIf singleton; inherit (lib) mkOption mkIf singleton;
inherit (pkgs) heimdal; inherit (pkgs) heimdalFull;
stateDir = "/var/heimdal"; stateDir = "/var/heimdal";
in in
@ -33,7 +33,7 @@ in
config = mkIf config.services.kerberos_server.enable { config = mkIf config.services.kerberos_server.enable {
environment.systemPackages = [ heimdal ]; environment.systemPackages = [ heimdalFull ];
services.xinetd.enable = true; services.xinetd.enable = true;
services.xinetd.services = lib.singleton services.xinetd.services = lib.singleton
@ -42,7 +42,7 @@ in
protocol = "tcp"; protocol = "tcp";
user = "root"; user = "root";
server = "${pkgs.tcp_wrappers}/sbin/tcpd"; server = "${pkgs.tcp_wrappers}/sbin/tcpd";
serverArgs = "${pkgs.heimdal}/sbin/kadmind"; serverArgs = "${pkgs.heimdalFull}/sbin/kadmind";
}; };
systemd.services.kdc = { systemd.services.kdc = {
@ -51,13 +51,13 @@ in
preStart = '' preStart = ''
mkdir -m 0755 -p ${stateDir} mkdir -m 0755 -p ${stateDir}
''; '';
script = "${heimdal}/sbin/kdc"; script = "${heimdalFull}/sbin/kdc";
}; };
systemd.services.kpasswdd = { systemd.services.kpasswdd = {
description = "Kerberos Password Changing daemon"; description = "Kerberos Password Changing daemon";
wantedBy = [ "multi-user.target" ]; wantedBy = [ "multi-user.target" ];
script = "${heimdal}/sbin/kpasswdd"; script = "${heimdalFull}/sbin/kpasswdd";
}; };
}; };

View File

@ -94,11 +94,9 @@ in {
}; };
config = mkIf cfg.enable { config = mkIf cfg.enable {
systemd.services.redshift = { systemd.user.services.redshift = {
description = "Redshift colour temperature adjuster"; description = "Redshift colour temperature adjuster";
requires = [ "display-manager.service" ]; wantedBy = [ "default.target" ];
after = [ "display-manager.service" ];
wantedBy = [ "graphical.target" ];
serviceConfig = { serviceConfig = {
ExecStart = '' ExecStart = ''
${cfg.package}/bin/redshift \ ${cfg.package}/bin/redshift \
@ -108,9 +106,9 @@ in {
${lib.strings.concatStringsSep " " cfg.extraOptions} ${lib.strings.concatStringsSep " " cfg.extraOptions}
''; '';
RestartSec = 3; RestartSec = 3;
Restart = "always";
}; };
environment = { DISPLAY = ":0"; }; environment = { DISPLAY = ":0"; };
serviceConfig.Restart = "always";
}; };
}; };

View File

@ -499,7 +499,7 @@ in
} }
] ++ flip map args.devices (device: { ] ++ flip map args.devices (device: {
assertion = device == "nodev" || hasPrefix "/" device; assertion = device == "nodev" || hasPrefix "/" device;
message = "GRUB devices must be absolute paths, not ${dev} in ${args.path}"; message = "GRUB devices must be absolute paths, not ${device} in ${args.path}";
})); }));
}) })

View File

@ -14,7 +14,7 @@ let
inherit (pkgs) python gummiboot; inherit (pkgs) python gummiboot;
nix = config.nix.package; nix = config.nix.package.out;
timeout = if cfg.timeout != null then cfg.timeout else ""; timeout = if cfg.timeout != null then cfg.timeout else "";

View File

@ -8,7 +8,7 @@ let
echo "attempting to fetch configuration from EC2 user data..." echo "attempting to fetch configuration from EC2 user data..."
export PATH=${config.nix.package}/bin:${pkgs.systemd}/bin:${pkgs.gnugrep}/bin:${pkgs.gnused}/bin:${config.system.build.nixos-rebuild}/bin:$PATH export PATH=${pkgs.lib.makeBinPath [ config.nix.package pkgs.systemd pkgs.gnugrep pkgs.gnused config.system.build.nixos-rebuild]}:$PATH
export NIX_PATH=/nix/var/nix/profiles/per-user/root/channels/nixos:nixos-config=/etc/nixos/configuration.nix:/nix/var/nix/profiles/per-user/root/channels export NIX_PATH=/nix/var/nix/profiles/per-user/root/channels/nixos:nixos-config=/etc/nixos/configuration.nix:/nix/var/nix/profiles/per-user/root/channels
userData=/etc/ec2-metadata/user-data userData=/etc/ec2-metadata/user-data

View File

@ -62,10 +62,10 @@ in
echo Register the paths in the Nix database. echo Register the paths in the Nix database.
printRegistration=1 perl ${pkgs.pathsFromGraph} /tmp/xchg/closure | \ printRegistration=1 perl ${pkgs.pathsFromGraph} /tmp/xchg/closure | \
chroot /mnt ${config.nix.package}/bin/nix-store --load-db --option build-users-group "" chroot /mnt ${config.nix.package.out}/bin/nix-store --load-db --option build-users-group ""
echo Create the system profile to allow nixos-rebuild to work. echo Create the system profile to allow nixos-rebuild to work.
chroot /mnt ${config.nix.package}/bin/nix-env \ chroot /mnt ${config.nix.package.out}/bin/nix-env \
-p /nix/var/nix/profiles/system --set ${config.system.build.toplevel} --option build-users-group "" -p /nix/var/nix/profiles/system --set ${config.system.build.toplevel} --option build-users-group ""
echo nixos-rebuild requires an /etc/NIXOS. echo nixos-rebuild requires an /etc/NIXOS.

View File

@ -62,10 +62,10 @@ in
# Register the paths in the Nix database. # Register the paths in the Nix database.
printRegistration=1 perl ${pkgs.pathsFromGraph} /tmp/xchg/closure | \ printRegistration=1 perl ${pkgs.pathsFromGraph} /tmp/xchg/closure | \
chroot /mnt ${config.nix.package}/bin/nix-store --load-db --option build-users-group "" chroot /mnt ${config.nix.package.out}/bin/nix-store --load-db --option build-users-group ""
# Create the system profile to allow nixos-rebuild to work. # Create the system profile to allow nixos-rebuild to work.
chroot /mnt ${config.nix.package}/bin/nix-env \ chroot /mnt ${config.nix.package.out}/bin/nix-env \
-p /nix/var/nix/profiles/system --set ${config.system.build.toplevel} \ -p /nix/var/nix/profiles/system --set ${config.system.build.toplevel} \
--option build-users-group "" --option build-users-group ""

View File

@ -28,14 +28,23 @@ let
# Initialise the container side of the veth pair. # Initialise the container side of the veth pair.
if [ "$PRIVATE_NETWORK" = 1 ]; then if [ "$PRIVATE_NETWORK" = 1 ]; then
ip link set host0 name eth0 ip link set host0 name eth0
ip link set dev eth0 up ip link set dev eth0 up
if [ -n "$LOCAL_ADDRESS" ]; then
ip addr add $LOCAL_ADDRESS dev eth0
fi
if [ -n "$LOCAL_ADDRESS6" ]; then
ip -6 addr add $LOCAL_ADDRESS6 dev eth0
fi
if [ -n "$HOST_ADDRESS" ]; then if [ -n "$HOST_ADDRESS" ]; then
ip route add $HOST_ADDRESS dev eth0 ip route add $HOST_ADDRESS dev eth0
ip route add default via $HOST_ADDRESS ip route add default via $HOST_ADDRESS
fi fi
if [ -n "$LOCAL_ADDRESS" ]; then if [ -n "$HOST_ADDRESS6" ]; then
ip addr add $LOCAL_ADDRESS dev eth0 ip -6 route add $HOST_ADDRESS6 dev eth0
ip -6 route add default via $HOST_ADDRESS6
fi fi
fi fi
@ -142,12 +151,33 @@ in
''; '';
}; };
hostBridge = mkOption {
type = types.nullOr types.string;
default = null;
example = "br0";
description = ''
Put the host-side of the veth-pair into the named bridge.
Only one of hostAddress* or hostBridge can be given.
'';
};
hostAddress = mkOption { hostAddress = mkOption {
type = types.nullOr types.str; type = types.nullOr types.str;
default = null; default = null;
example = "10.231.136.1"; example = "10.231.136.1";
description = '' description = ''
The IPv4 address assigned to the host interface. The IPv4 address assigned to the host interface.
(Not used when hostBridge is set.)
'';
};
hostAddress6 = mkOption {
type = types.nullOr types.string;
default = null;
example = "fc00::1";
description = ''
The IPv6 address assigned to the host interface.
(Not used when hostBridge is set.)
''; '';
}; };
@ -161,6 +191,16 @@ in
''; '';
}; };
localAddress6 = mkOption {
type = types.nullOr types.string;
default = null;
example = "fc00::2";
description = ''
The IPv6 address assigned to <literal>eth0</literal>
in the container.
'';
};
interfaces = mkOption { interfaces = mkOption {
type = types.listOf types.string; type = types.listOf types.string;
default = []; default = [];
@ -238,10 +278,10 @@ in
}; };
config = mkIf (config.boot.enableContainers) { config = mkIf (config.boot.enableContainers) (let
systemd.services."container@" = unit = {
{ description = "Container '%i'"; description = "Container '%i'";
unitConfig.RequiresMountsFor = [ "/var/lib/containers/%i" ]; unitConfig.RequiresMountsFor = [ "/var/lib/containers/%i" ];
@ -257,11 +297,7 @@ in
if [ "$PRIVATE_NETWORK" = 1 ]; then if [ "$PRIVATE_NETWORK" = 1 ]; then
ip link del dev "ve-$INSTANCE" 2> /dev/null || true ip link del dev "ve-$INSTANCE" 2> /dev/null || true
fi ip link del dev "vb-$INSTANCE" 2> /dev/null || true
if [ "$PRIVATE_NETWORK" = 1 ]; then
ip link del dev "ve-$INSTANCE" 2> /dev/null || true
fi fi
''; '';
@ -281,6 +317,9 @@ in
if [ "$PRIVATE_NETWORK" = 1 ]; then if [ "$PRIVATE_NETWORK" = 1 ]; then
extraFlags+=" --network-veth" extraFlags+=" --network-veth"
if [ -n "$HOST_BRIDGE" ]; then
extraFlags+=" --network-bridge=$HOST_BRIDGE"
fi
fi fi
for iface in $INTERFACES; do for iface in $INTERFACES; do
@ -315,8 +354,11 @@ in
--bind="/nix/var/nix/profiles/per-container/$INSTANCE:/nix/var/nix/profiles" \ --bind="/nix/var/nix/profiles/per-container/$INSTANCE:/nix/var/nix/profiles" \
--bind="/nix/var/nix/gcroots/per-container/$INSTANCE:/nix/var/nix/gcroots" \ --bind="/nix/var/nix/gcroots/per-container/$INSTANCE:/nix/var/nix/gcroots" \
--setenv PRIVATE_NETWORK="$PRIVATE_NETWORK" \ --setenv PRIVATE_NETWORK="$PRIVATE_NETWORK" \
--setenv HOST_BRIDGE="$HOST_BRIDGE" \
--setenv HOST_ADDRESS="$HOST_ADDRESS" \ --setenv HOST_ADDRESS="$HOST_ADDRESS" \
--setenv LOCAL_ADDRESS="$LOCAL_ADDRESS" \ --setenv LOCAL_ADDRESS="$LOCAL_ADDRESS" \
--setenv HOST_ADDRESS6="$HOST_ADDRESS6" \
--setenv LOCAL_ADDRESS6="$LOCAL_ADDRESS6" \
--setenv PATH="$PATH" \ --setenv PATH="$PATH" \
${containerInit} "''${SYSTEM_PATH:-/nix/var/nix/profiles/system}/init" ${containerInit} "''${SYSTEM_PATH:-/nix/var/nix/profiles/system}/init"
''; '';
@ -324,14 +366,22 @@ in
postStart = postStart =
'' ''
if [ "$PRIVATE_NETWORK" = 1 ]; then if [ "$PRIVATE_NETWORK" = 1 ]; then
if [ -z "$HOST_BRIDGE" ]; then
ifaceHost=ve-$INSTANCE ifaceHost=ve-$INSTANCE
ip link set dev $ifaceHost up ip link set dev $ifaceHost up
if [ -n "$HOST_ADDRESS" ]; then if [ -n "$HOST_ADDRESS" ]; then
ip addr add $HOST_ADDRESS dev $ifaceHost ip addr add $HOST_ADDRESS dev $ifaceHost
fi fi
if [ -n "$HOST_ADDRESS6" ]; then
ip -6 addr add $HOST_ADDRESS6 dev $ifaceHost
fi
if [ -n "$LOCAL_ADDRESS" ]; then if [ -n "$LOCAL_ADDRESS" ]; then
ip route add $LOCAL_ADDRESS dev $ifaceHost ip route add $LOCAL_ADDRESS dev $ifaceHost
fi fi
if [ -n "$LOCAL_ADDRESS6" ]; then
ip -6 route add $LOCAL_ADDRESS6 dev $ifaceHost
fi
fi
fi fi
# Get the leader PID so that we can signal it in # Get the leader PID so that we can signal it in
@ -351,7 +401,6 @@ in
''; '';
restartIfChanged = false; restartIfChanged = false;
#reloadIfChanged = true; # FIXME
serviceConfig = { serviceConfig = {
ExecReload = pkgs.writeScript "reload-container" ExecReload = pkgs.writeScript "reload-container"
@ -386,6 +435,23 @@ in
KillSignal = "WINCH"; KillSignal = "WINCH";
}; };
}; };
in {
systemd.services = listToAttrs (filter (x: x.value != null) (
# The generic container template used by imperative containers
[{ name = "container@"; value = unit; }]
# declarative containers
++ (mapAttrsToList (name: cfg: nameValuePair "container@${name}" (
if cfg.autoStart then
unit // {
wantedBy = [ "multi-user.target" ];
wants = [ "network.target" ];
after = [ "network.target" ];
restartTriggers = [ cfg.path ];
reloadIfChanged = true;
}
else null
)) config.containers)
));
# Generate a configuration file in /etc/containers for each # Generate a configuration file in /etc/containers for each
# container so that container@.target can get the container # container so that container@.target can get the container
@ -396,12 +462,21 @@ in
SYSTEM_PATH=${cfg.path} SYSTEM_PATH=${cfg.path}
${optionalString cfg.privateNetwork '' ${optionalString cfg.privateNetwork ''
PRIVATE_NETWORK=1 PRIVATE_NETWORK=1
${optionalString (cfg.hostBridge != null) ''
HOST_BRIDGE=${cfg.hostBridge}
''}
${optionalString (cfg.hostAddress != null) '' ${optionalString (cfg.hostAddress != null) ''
HOST_ADDRESS=${cfg.hostAddress} HOST_ADDRESS=${cfg.hostAddress}
''} ''}
${optionalString (cfg.hostAddress6 != null) ''
HOST_ADDRESS6=${cfg.hostAddress6}
''}
${optionalString (cfg.localAddress != null) '' ${optionalString (cfg.localAddress != null) ''
LOCAL_ADDRESS=${cfg.localAddress} LOCAL_ADDRESS=${cfg.localAddress}
''} ''}
${optionalString (cfg.localAddress6 != null) ''
LOCAL_ADDRESS6=${cfg.localAddress6}
''}
''} ''}
INTERFACES="${toString cfg.interfaces}" INTERFACES="${toString cfg.interfaces}"
${optionalString cfg.autoStart '' ${optionalString cfg.autoStart ''
@ -420,31 +495,5 @@ in
networking.dhcpcd.denyInterfaces = [ "ve-*" ]; networking.dhcpcd.denyInterfaces = [ "ve-*" ];
environment.systemPackages = [ nixos-container ]; environment.systemPackages = [ nixos-container ];
});
# Start containers at boot time.
systemd.services.all-containers =
{ description = "All Containers";
wantedBy = [ "multi-user.target" ];
unitConfig.ConditionDirectoryNotEmpty = "/etc/containers";
serviceConfig.Type = "oneshot";
script =
''
res=0
shopt -s nullglob
for i in /etc/containers/*.conf; do
AUTO_START=
source "$i"
if [ "$AUTO_START" = 1 ]; then
systemctl start "container@$(basename "$i" .conf).service" || res=1
fi
done
exit $res
''; # */
};
};
} }

View File

@ -66,10 +66,10 @@ in
# Register the paths in the Nix database. # Register the paths in the Nix database.
printRegistration=1 perl ${pkgs.pathsFromGraph} /tmp/xchg/closure | \ printRegistration=1 perl ${pkgs.pathsFromGraph} /tmp/xchg/closure | \
chroot /mnt ${config.nix.package}/bin/nix-store --load-db --option build-users-group "" chroot /mnt ${config.nix.package.out}/bin/nix-store --load-db --option build-users-group ""
# Create the system profile to allow nixos-rebuild to work. # Create the system profile to allow nixos-rebuild to work.
chroot /mnt ${config.nix.package}/bin/nix-env \ chroot /mnt ${config.nix.package.out}/bin/nix-env \
-p /nix/var/nix/profiles/system --set ${config.system.build.toplevel} \ -p /nix/var/nix/profiles/system --set ${config.system.build.toplevel} \
--option build-users-group "" --option build-users-group ""

View File

@ -149,11 +149,11 @@ let
${pkgs.mtools}/bin/mlabel -i /dev/vda2 ::boot ${pkgs.mtools}/bin/mlabel -i /dev/vda2 ::boot
# Mount /boot; load necessary modules first. # Mount /boot; load necessary modules first.
${pkgs.module_init_tools}/sbin/insmod ${pkgs.linux}/lib/modules/*/kernel/fs/nls/nls_cp437.ko || true ${pkgs.kmod}/sbin/insmod ${pkgs.linux}/lib/modules/*/kernel/fs/nls/nls_cp437.ko.xz || true
${pkgs.module_init_tools}/sbin/insmod ${pkgs.linux}/lib/modules/*/kernel/fs/nls/nls_iso8859-1.ko || true ${pkgs.kmod}/sbin/insmod ${pkgs.linux}/lib/modules/*/kernel/fs/nls/nls_iso8859-1.ko.xz || true
${pkgs.module_init_tools}/sbin/insmod ${pkgs.linux}/lib/modules/*/kernel/fs/fat/fat.ko || true ${pkgs.kmod}/sbin/insmod ${pkgs.linux}/lib/modules/*/kernel/fs/fat/fat.ko.xz || true
${pkgs.module_init_tools}/sbin/insmod ${pkgs.linux}/lib/modules/*/kernel/fs/fat/vfat.ko || true ${pkgs.kmod}/sbin/insmod ${pkgs.linux}/lib/modules/*/kernel/fs/fat/vfat.ko.xz || true
${pkgs.module_init_tools}/sbin/insmod ${pkgs.linux}/lib/modules/*/kernel/fs/efivarfs/efivarfs.ko || true ${pkgs.kmod}/sbin/insmod ${pkgs.linux}/lib/modules/*/kernel/fs/efivarfs/efivarfs.ko.xz || true
mkdir /boot mkdir /boot
mount /dev/vda2 /boot mount /dev/vda2 /boot
@ -403,7 +403,7 @@ in
boot.postBootCommands = boot.postBootCommands =
'' ''
if [[ "$(cat /proc/cmdline)" =~ regInfo=([^ ]*) ]]; then if [[ "$(cat /proc/cmdline)" =~ regInfo=([^ ]*) ]]; then
${config.nix.package}/bin/nix-store --load-db < ''${BASH_REMATCH[1]} ${config.nix.package.out}/bin/nix-store --load-db < ''${BASH_REMATCH[1]}
fi fi
''; '';

View File

@ -64,6 +64,9 @@ in rec {
(all nixos.tests.installer.btrfsSubvols) (all nixos.tests.installer.btrfsSubvols)
(all nixos.tests.installer.btrfsSubvolDefault) (all nixos.tests.installer.btrfsSubvolDefault)
(all nixos.tests.boot.biosCdrom) (all nixos.tests.boot.biosCdrom)
(all nixos.tests.boot.biosUsb)
(all nixos.tests.boot.uefiCdrom)
(all nixos.tests.boot.uefiUsb)
(all nixos.tests.ipv6) (all nixos.tests.ipv6)
(all nixos.tests.kde4) (all nixos.tests.kde4)
#(all nixos.tests.lightdm) #(all nixos.tests.lightdm)

View File

@ -199,7 +199,10 @@ in rec {
tests.cadvisor = hydraJob (import tests/cadvisor.nix { system = "x86_64-linux"; }); tests.cadvisor = hydraJob (import tests/cadvisor.nix { system = "x86_64-linux"; });
tests.chromium = callSubTests tests/chromium.nix {}; tests.chromium = callSubTests tests/chromium.nix {};
tests.cjdns = callTest tests/cjdns.nix {}; tests.cjdns = callTest tests/cjdns.nix {};
tests.containers = callTest tests/containers.nix {}; tests.containers-ipv4 = callTest tests/containers-ipv4.nix {};
tests.containers-ipv6 = callTest tests/containers-ipv6.nix {};
tests.containers-bridge = callTest tests/containers-bridge.nix {};
tests.containers-imperative = callTest tests/containers-imperative.nix {};
tests.docker = hydraJob (import tests/docker.nix { system = "x86_64-linux"; }); tests.docker = hydraJob (import tests/docker.nix { system = "x86_64-linux"; });
tests.dockerRegistry = hydraJob (import tests/docker-registry.nix { system = "x86_64-linux"; }); tests.dockerRegistry = hydraJob (import tests/docker-registry.nix { system = "x86_64-linux"; });
tests.dnscrypt-proxy = callTest tests/dnscrypt-proxy.nix { system = "x86_64-linux"; }; tests.dnscrypt-proxy = callTest tests/dnscrypt-proxy.nix { system = "x86_64-linux"; };

View File

@ -0,0 +1,81 @@
# Test for NixOS' container support.
let
hostIp = "192.168.0.1";
containerIp = "192.168.0.100/24";
hostIp6 = "fc00::1";
containerIp6 = "fc00::2/7";
in
import ./make-test.nix ({ pkgs, ...} : {
name = "containers-bridge";
meta = with pkgs.stdenv.lib.maintainers; {
maintainers = [ aristid aszlig eelco chaoflow ];
};
machine =
{ config, pkgs, ... }:
{ imports = [ ../modules/installer/cd-dvd/channel.nix ];
virtualisation.writableStore = true;
virtualisation.memorySize = 768;
networking.bridges = {
br0 = {
interfaces = [];
};
};
networking.interfaces = {
br0 = {
ip4 = [{ address = hostIp; prefixLength = 24; }];
ip6 = [{ address = hostIp6; prefixLength = 7; }];
};
};
containers.webserver =
{
autoStart = true;
privateNetwork = true;
hostBridge = "br0";
localAddress = containerIp;
localAddress6 = containerIp6;
config =
{ services.httpd.enable = true;
services.httpd.adminAddr = "foo@example.org";
networking.firewall.allowedTCPPorts = [ 80 ];
networking.firewall.allowPing = true;
};
};
virtualisation.pathsInNixDB = [ pkgs.stdenv ];
};
testScript =
''
$machine->waitForUnit("default.target");
$machine->succeed("nixos-container list") =~ /webserver/ or die;
# Start the webserver container.
$machine->succeed("nixos-container status webserver") =~ /up/ or die;
"${containerIp}" =~ /([^\/]+)\/([0-9+])/;
my $ip = $1;
chomp $ip;
$machine->succeed("ping -n -c 1 $ip");
$machine->succeed("curl --fail http://$ip/ > /dev/null");
"${containerIp6}" =~ /([^\/]+)\/([0-9+])/;
my $ip6 = $1;
chomp $ip6;
$machine->succeed("ping6 -n -c 1 $ip6");
$machine->succeed("curl --fail http://[$ip6]/ > /dev/null");
# Stop the container.
$machine->succeed("nixos-container stop webserver");
$machine->fail("curl --fail --connect-timeout 2 http://$ip/ > /dev/null");
$machine->fail("curl --fail --connect-timeout 2 http://[$ip6]/ > /dev/null");
# Destroying a declarative container should fail.
$machine->fail("nixos-container destroy webserver");
'';
})

View File

@ -1,7 +1,7 @@
# Test for NixOS' container support. # Test for NixOS' container support.
import ./make-test.nix ({ pkgs, ...} : { import ./make-test.nix ({ pkgs, ...} : {
name = "containers"; name = "containers-imperative";
meta = with pkgs.stdenv.lib.maintainers; { meta = with pkgs.stdenv.lib.maintainers; {
maintainers = [ aristid aszlig eelco chaoflow ]; maintainers = [ aristid aszlig eelco chaoflow ];
}; };
@ -11,40 +11,11 @@ import ./make-test.nix ({ pkgs, ...} : {
{ imports = [ ../modules/installer/cd-dvd/channel.nix ]; { imports = [ ../modules/installer/cd-dvd/channel.nix ];
virtualisation.writableStore = true; virtualisation.writableStore = true;
virtualisation.memorySize = 768; virtualisation.memorySize = 768;
containers.webserver =
{ privateNetwork = true;
hostAddress = "10.231.136.1";
localAddress = "10.231.136.2";
config =
{ services.httpd.enable = true;
services.httpd.adminAddr = "foo@example.org";
networking.firewall.allowedTCPPorts = [ 80 ];
networking.firewall.allowPing = true;
};
};
virtualisation.pathsInNixDB = [ pkgs.stdenv ]; virtualisation.pathsInNixDB = [ pkgs.stdenv ];
}; };
testScript = testScript =
'' ''
$machine->succeed("nixos-container list") =~ /webserver/ or die;
# Start the webserver container.
$machine->succeed("nixos-container start webserver");
# Since "start" returns after the container has reached
# multi-user.target, we should now be able to access it.
my $ip = $machine->succeed("nixos-container show-ip webserver");
chomp $ip;
#$machine->succeed("ping -c1 $ip"); # FIXME
$machine->succeed("curl --fail http://$ip/ > /dev/null");
# Stop the container.
$machine->succeed("nixos-container stop webserver");
$machine->fail("curl --fail --connect-timeout 2 http://$ip/ > /dev/null");
# Make sure we have a NixOS tree (required by nixos-container create). # Make sure we have a NixOS tree (required by nixos-container create).
$machine->succeed("PAGER=cat nix-env -qa -A nixos.hello >&2"); $machine->succeed("PAGER=cat nix-env -qa -A nixos.hello >&2");
@ -111,9 +82,6 @@ import ./make-test.nix ({ pkgs, ...} : {
# Ensure that the container path is gone # Ensure that the container path is gone
"test ! -e /var/lib/containers/$id1" "test ! -e /var/lib/containers/$id1"
); );
# Destroying a declarative container should fail.
$machine->fail("nixos-container destroy webserver");
''; '';
}) })

View File

@ -0,0 +1,55 @@
# Test for NixOS' container support.
import ./make-test.nix ({ pkgs, ...} : {
name = "containers-ipv4";
meta = with pkgs.stdenv.lib.maintainers; {
maintainers = [ aristid aszlig eelco chaoflow ];
};
machine =
{ config, pkgs, ... }:
{ imports = [ ../modules/installer/cd-dvd/channel.nix ];
virtualisation.writableStore = true;
virtualisation.memorySize = 768;
containers.webserver =
{ privateNetwork = true;
hostAddress = "10.231.136.1";
localAddress = "10.231.136.2";
config =
{ services.httpd.enable = true;
services.httpd.adminAddr = "foo@example.org";
networking.firewall.allowedTCPPorts = [ 80 ];
networking.firewall.allowPing = true;
};
};
virtualisation.pathsInNixDB = [ pkgs.stdenv ];
};
testScript =
''
$machine->succeed("nixos-container list") =~ /webserver/ or die;
# Start the webserver container.
$machine->succeed("nixos-container start webserver");
# wait two seconds for the container to start and the network to be up
sleep 2;
# Since "start" returns after the container has reached
# multi-user.target, we should now be able to access it.
my $ip = $machine->succeed("nixos-container show-ip webserver");
chomp $ip;
$machine->succeed("ping -n -c1 $ip");
$machine->succeed("curl --fail http://$ip/ > /dev/null");
# Stop the container.
$machine->succeed("nixos-container stop webserver");
$machine->fail("curl --fail --connect-timeout 2 http://$ip/ > /dev/null");
# Destroying a declarative container should fail.
$machine->fail("nixos-container destroy webserver");
'';
})

View File

@ -0,0 +1,61 @@
# Test for NixOS' container support.
let
hostIp = "fc00::2";
localIp = "fc00::1";
in
import ./make-test.nix ({ pkgs, ...} : {
name = "containers-ipv6";
meta = with pkgs.stdenv.lib.maintainers; {
maintainers = [ aristid aszlig eelco chaoflow ];
};
machine =
{ config, pkgs, ... }:
{ imports = [ ../modules/installer/cd-dvd/channel.nix ];
virtualisation.writableStore = true;
virtualisation.memorySize = 768;
containers.webserver =
{ privateNetwork = true;
hostAddress6 = hostIp;
localAddress6 = localIp;
config =
{ services.httpd.enable = true;
services.httpd.adminAddr = "foo@example.org";
networking.firewall.allowedTCPPorts = [ 80 ];
networking.firewall.allowPing = true;
};
};
virtualisation.pathsInNixDB = [ pkgs.stdenv ];
};
testScript =
''
$machine->waitForUnit("default.target");
$machine->succeed("nixos-container list") =~ /webserver/ or die;
# Start the webserver container.
$machine->succeed("nixos-container start webserver");
# wait two seconds for the container to start and the network to be up
sleep 2;
# Since "start" returns after the container has reached
# multi-user.target, we should now be able to access it.
my $ip = "${localIp}";
chomp $ip;
$machine->succeed("ping6 -n -c 1 $ip");
$machine->succeed("curl --fail http://[$ip]/ > /dev/null");
# Stop the container.
$machine->succeed("nixos-container stop webserver");
$machine->fail("curl --fail --connect-timeout 2 http://[$ip]/ > /dev/null");
# Destroying a declarative container should fail.
$machine->fail("nixos-container destroy webserver");
'';
})

View File

@ -62,7 +62,7 @@ import ./make-test.nix ({pkgs, ... }: {
# Test printing various file types. # Test printing various file types.
foreach my $file ("${pkgs.groff.doc}/share/doc/*/examples/mom/penguin.pdf", foreach my $file ("${pkgs.groff.doc}/share/doc/*/examples/mom/penguin.pdf",
"${pkgs.groff.doc}/share/doc/*/meref.ps", "${pkgs.groff.doc}/share/doc/*/meref.ps",
"${pkgs.cups}/share/doc/cups/images/cups.png", "${pkgs.cups.out}/share/doc/cups/images/cups.png",
"${pkgs.pcre.doc}/share/doc/pcre/pcre.txt") "${pkgs.pcre.doc}/share/doc/pcre/pcre.txt")
{ {
$file =~ /([^\/]*)$/; my $fn = $1; $file =~ /([^\/]*)$/; my $fn = $1;

View File

@ -1,15 +1,15 @@
{ stdenv, fetchurl, wxGTK, pkgconfig, gettext, gtk, glib, zlib, perl, intltool, { stdenv, fetchurl, wxGTK30, pkgconfig, gettext, gtk, glib, zlib, perl, intltool,
libogg, libvorbis, libmad, alsaLib, libsndfile, soxr, flac, lame, fetchpatch, libogg, libvorbis, libmad, alsaLib, libsndfile, soxr, flac, lame, fetchpatch,
expat, libid3tag, ffmpeg, soundtouch /*, portaudio - given up fighting their portaudio.patch */ expat, libid3tag, ffmpeg, soundtouch /*, portaudio - given up fighting their portaudio.patch */
}: }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
version = "2.1.1"; version = "2.1.2";
name = "audacity-${version}"; name = "audacity-${version}";
src = fetchurl { src = fetchurl {
url = "https://github.com/audacity/audacity/archive/Audacity-${version}.tar.gz"; url = "https://github.com/audacity/audacity/archive/Audacity-${version}.tar.gz";
sha256 = "15c5ff7ac1c0b19b08f4bdcb0f4988743da2f9ed3fab41d6f07600e67cb9ddb6"; sha256 = "1ggr6g0mk36rqj7ahsg8b0b1r9kphwajzvxgn43md263rm87n04h";
}; };
patches = [(fetchpatch { patches = [(fetchpatch {
name = "new-ffmpeg.patch"; name = "new-ffmpeg.patch";
@ -18,12 +18,6 @@ stdenv.mkDerivation rec {
sha256 = "19fr674mw844zmkp1476yigkcnmb6zyn78av64ccdwi3p68i00rf"; sha256 = "19fr674mw844zmkp1476yigkcnmb6zyn78av64ccdwi3p68i00rf";
})]; })];
# fix with gcc-5 from http://lists.freebsd.org/pipermail/freebsd-ports-bugs/2012-December/245884.html
postPatch = ''
substituteInPlace lib-src/libnyquist/nyquist/ffts/src/fftlib.c \
--replace 'inline void' 'static inline void'
'';
preConfigure = /* we prefer system-wide libs */ '' preConfigure = /* we prefer system-wide libs */ ''
mv lib-src lib-src-rm mv lib-src lib-src-rm
mkdir lib-src mkdir lib-src
@ -31,11 +25,11 @@ stdenv.mkDerivation rec {
rm -r lib-src-rm/ rm -r lib-src-rm/
''; '';
configureFlags = "--with-libsamplerate"; configureFlags = [ "--with-libsamplerate" ];
buildInputs = [ buildInputs = [
pkgconfig gettext wxGTK gtk expat alsaLib pkgconfig gettext wxGTK30 expat alsaLib
libsndfile soxr libid3tag libsndfile soxr libid3tag gtk
ffmpeg libmad lame libvorbis flac soundtouch ffmpeg libmad lame libvorbis flac soundtouch
]; #ToDo: detach sbsms ]; #ToDo: detach sbsms

View File

@ -4,12 +4,12 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "non-${version}"; name = "non-${version}";
version = "2016-03-06"; version = "2016-04-05";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "original-male"; owner = "original-male";
repo = "non"; repo = "non";
rev = "3946d392216ee999b560d8b7cdee7c4347110e29"; rev = "16885e69fe865495dc32d869d1454ab148b0dca6";
sha256 = "02vnq2mfimgdrmv3lmz80yif4h9a1lympv0wqc5dr2l0f8amj2fp"; sha256 = "1nwzzgcdpbqh5kjvz40yy5nmzvpp8gcr9biyhhwi68s5bsg972ss";
}; };
buildInputs = [ pkgconfig python2 cairo libjpeg ntk libjack2 libsndfile buildInputs = [ pkgconfig python2 cairo libjpeg ntk libjack2 libsndfile

View File

@ -0,0 +1,43 @@
{ stdenv, fetchgit }:
stdenv.mkDerivation rec {
name = "svox-${version}";
version = "2016-01-25";
src = fetchgit {
url = "https://android.googlesource.com/platform/external/svox";
rev = "dfb9937746b1828d093faf3b1494f9dc403f392d";
sha256 = "1gkfj5avikzmr2vv8bhf83n15jcbz4phz5j13l0qnh3gjzh4f1bk";
};
postPatch = ''
cd pico
'';
buildPhase = ''
cd lib
for i in *.c; do
$CC -O2 -fPIC -c -o ''${i%.c}.o $i
done
$CC -shared -o libttspico.so *.o
cd ..
'';
installPhase = ''
install -Dm755 lib/libttspico.so $out/lib/libttspico.so
mkdir -p $out/include
cp lib/*.h $out/include
mkdir -p $out/share/pico/lang
cp lang/*.bin $out/share/pico/lang
'';
NIX_CFLAGS_COMPILE = [ "-include stdint.h" ];
meta = with stdenv.lib; {
description = "Text-to-speech engine";
homepage = https://android.googlesource.com/platform/external/svox;
platforms = platforms.linux;
license = licenses.asl20;
maintainers = with maintainers; [ abbradar ];
};
}

View File

@ -1,20 +1,6 @@
{ stdenv, fetchurl, lib, makeDesktopItem, makeWrapper, zlib, glib, alsaLib { stdenv, fetchurl, lib, makeWrapper, gvfs, atomEnv }:
, dbus, gtk, atk, pango, freetype, fontconfig, libgnome_keyring3, gdk_pixbuf
, gvfs, cairo, cups, expat, libgpgerror, nspr, gconf, nss, xorg, libcap, systemd
}:
let stdenv.mkDerivation rec {
atomPkgs = [
stdenv.cc.cc zlib glib dbus gtk atk pango freetype libgnome_keyring3
fontconfig gdk_pixbuf cairo cups expat libgpgerror alsaLib nspr gconf nss
xorg.libXrender xorg.libX11 xorg.libXext xorg.libXdamage xorg.libXtst
xorg.libXcomposite xorg.libXi xorg.libXfixes xorg.libXrandr
xorg.libXcursor libcap systemd
];
atomLib = lib.makeLibraryPath atomPkgs;
atomLib64 = lib.makeSearchPathOutputs "lib64" ["lib"] atomPkgs;
in stdenv.mkDerivation rec {
name = "atom-${version}"; name = "atom-${version}";
version = "1.6.2"; version = "1.6.2";
@ -26,25 +12,25 @@ in stdenv.mkDerivation rec {
nativeBuildInputs = [ makeWrapper ]; nativeBuildInputs = [ makeWrapper ];
phases = [ "installPhase" "fixupPhase" ]; buildCommand = ''
mkdir -p $out/usr/
installPhase = ''
mkdir -p $out
ar p $src data.tar.gz | tar -C $out -xz ./usr ar p $src data.tar.gz | tar -C $out -xz ./usr
substituteInPlace $out/usr/share/applications/atom.desktop \ substituteInPlace $out/usr/share/applications/atom.desktop \
--replace /usr/share/atom $out/bin --replace /usr/share/atom $out/bin
mv $out/usr/* $out/ mv $out/usr/* $out/
rm -r $out/share/lintian rm -r $out/share/lintian
rm -r $out/usr/ rm -r $out/usr/
wrapProgram $out/bin/atom \
--prefix "PATH" : "${gvfs}/bin"
fixupPhase
patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
--set-rpath "${atomEnv.libPath}:$out/share/atom" \
$out/share/atom/atom $out/share/atom/atom
patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
--set-rpath "${atomEnv.libPath}" \
$out/share/atom/resources/app/apm/bin/node $out/share/atom/resources/app/apm/bin/node
wrapProgram $out/bin/atom \
--prefix "LD_LIBRARY_PATH" : "${atomLib}:${atomLib64}" \
--prefix "PATH" : "${gvfs}/bin"
wrapProgram $out/bin/apm \
--prefix "LD_LIBRARY_PATH" : "${atomLib}:${atomLib64}"
''; '';
meta = with stdenv.lib; { meta = with stdenv.lib; {

View File

@ -0,0 +1,19 @@
{ stdenv, lib, zlib, glib, alsaLib, dbus, gtk, atk, pango, freetype, fontconfig
, libgnome_keyring3, gdk_pixbuf, gvfs, cairo, cups, expat, libgpgerror, nspr
, gconf, nss, xorg, libcap, systemd, libnotify
}:
let
packages = [
stdenv.cc.cc zlib glib dbus gtk atk pango freetype libgnome_keyring3
fontconfig gdk_pixbuf cairo cups expat libgpgerror alsaLib nspr gconf nss
xorg.libXrender xorg.libX11 xorg.libXext xorg.libXdamage xorg.libXtst
xorg.libXcomposite xorg.libXi xorg.libXfixes xorg.libXrandr
xorg.libXcursor libcap systemd libnotify
];
libPathNative = lib.makeLibraryPath packages;
libPath64 = lib.makeSearchPathOutputs "lib64" ["lib"] packages;
libPath = "${libPathNative}:${libPath64}";
in { inherit packages libPath; }

View File

@ -23,13 +23,13 @@ let
in in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "emacs-25.0.92"; name = "emacs-25.0.93";
builder = ./builder.sh; builder = ./builder.sh;
src = fetchurl { src = fetchurl {
url = "ftp://alpha.gnu.org/gnu/emacs/pretest/emacs-25.0.92.tar.xz"; url = "ftp://alpha.gnu.org/gnu/emacs/pretest/${name}.tar.xz";
sha256 = "13jnj1js2l90k4yk219r3z67fff90r6mniprsp0sgip2kaak75y2"; sha256 = "1wbr2n723ycg16rlg81v9x17w9ciy7qyckxplnwghlyfj6j9k4dk";
}; };
patches = lib.optionals stdenv.isDarwin [ patches = lib.optionals stdenv.isDarwin [

View File

@ -148,14 +148,14 @@ in
android-studio = buildAndroidStudio rec { android-studio = buildAndroidStudio rec {
name = "android-studio-${version}"; name = "android-studio-${version}";
version = "2.0.0.0"; version = "2.0.0.20";
build = "143.2443734"; build = "143.2739321";
description = "Android development environment based on IntelliJ IDEA"; description = "Android development environment based on IntelliJ IDEA";
license = stdenv.lib.licenses.asl20; license = stdenv.lib.licenses.asl20;
src = fetchurl { src = fetchurl {
url = "https://dl.google.com/dl/android/studio/ide-zips/${version}" + url = "https://dl.google.com/dl/android/studio/ide-zips/${version}" +
"/android-studio-ide-${build}-linux.zip"; "/android-studio-ide-${build}-linux.zip";
sha256 = "0j6bi87hb5jxjwfhfya64s673vdkdslsqc6sqa4zl97sabvafk2w"; sha256 = "14bb4ha868015wm8v8vivxfylfzm7gbvf01h82w4bhzdbzgn1zpr";
}; };
}; };

View File

@ -1,26 +1,31 @@
{ stdenv, fetchurl, qtbase, qttools, qmakeHook, pkgconfig, python }: { stdenv, fetchurl, pkgconfig, qmakeHook
, python, qtbase, qttools, zlib }:
let let
version = "0.12.3"; # qtEnv = with qt5; env "qt-${qtbase.version}" [ qtbase qttools ];
sha256 = "001j4lvb5d9h3m6vgz2na07637x6xg4bdvxi2hg4a0j9rikb4y40"; in stdenv.mkDerivation rec {
in
stdenv.mkDerivation rec {
name = "tiled-${version}"; name = "tiled-${version}";
version = "0.16.0";
src = fetchurl { src = fetchurl {
name = "${name}.tar.gz";
url = "https://github.com/bjorn/tiled/archive/v${version}.tar.gz"; url = "https://github.com/bjorn/tiled/archive/v${version}.tar.gz";
inherit sha256; sha256 = "1vlhfkgl126irp53xw94jw1xnj96l1hwnbxmm1s5az60460gfbf0";
}; };
buildInputs = [ qtbase qttools qmakeHook pkgconfig python ]; nativeBuildInputs = [ pkgconfig qmakeHook ];
buildInputs = [ python qtbase qttools ];
meta = { enableParallelBuilding = true;
description = "A free, easy to use and flexible tile map editor";
homepage = "http://www.mapeditor.org/"; meta = with stdenv.lib; {
# libtiled and tmxviewer is licensed under 2-calause BSD license. description = "Free, easy to use and flexible tile map editor";
# The rest is GPL2 or later. homepage = http://www.mapeditor.org/;
license = stdenv.lib.licenses.gpl2Plus; license = with licenses; [
platforms = stdenv.lib.platforms.linux; bsd2 # libtiled and tmxviewer
gpl2Plus # all the rest
];
platforms = platforms.linux;
maintainers = with maintainers; [ nckx ];
}; };
} }

View File

@ -1,22 +1,18 @@
{ stdenv, callPackage, fetchurl, unzip { stdenv, lib, callPackage, fetchurl, unzip, atomEnv, makeDesktopItem }:
, ...
} @ args:
let let
atomEnv = callPackage ../../../development/tools/electron/env-atom.nix (args); version = "1.0.0";
rev = "fa6d0f03813dfb9df4589c30121e9fcffa8a8ec8";
version = "0.10.10"; sha256 = if stdenv.system == "i686-linux" then "1nnsvr51k8cmq8rccksylam4ww40pdn9dnhnp9096z5ccrf4qa1b"
rev = "5b5f4db87c10345b9d5c8d0bed745bcad4533135"; else if stdenv.system == "x86_64-linux" then "0p408pp2il6kawfsql8n5dvl75kmf2n2p0r266mjnww6vprmq4gw"
sha256 = if stdenv.system == "i686-linux" then "1mmgq4fxi2h4hvz7yxgzzyvlznkb42qwr8i1g2b1akdlgnrvvpby" else if stdenv.system == "x86_64-darwin" then "06k41ljfvgyxbl364jlkdjk8lkwr6bpq2r051vin93cnqfxridkq"
else if stdenv.system == "x86_64-linux" then "1zjb6mys5qs9mb21rpgpnbgq4gpnw6gsgfn5imf7ca7myk1bxnvk"
else if stdenv.system == "x86_64-darwin" then "0y1as2s6nhicyvdfszphhqp76iv9wcygglrl2f0jamm98g9qp66p"
else throw "Unsupported system: ${stdenv.system}"; else throw "Unsupported system: ${stdenv.system}";
urlMod = if stdenv.system == "i686-linux" then "linux-ia32" urlMod = if stdenv.system == "i686-linux" then "linux-ia32"
else if stdenv.system == "x86_64-linux" then "linux-x64" else if stdenv.system == "x86_64-linux" then "linux-x64"
else if stdenv.system == "x86_64-darwin" then "darwin" else if stdenv.system == "x86_64-darwin" then "darwin"
else throw "Unsupported system: ${stdenv.system}"; else throw "Unsupported system: ${stdenv.system}";
in in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "vscode-${version}"; name = "vscode-${version}";
@ -27,24 +23,35 @@ in
inherit sha256; inherit sha256;
}; };
desktopItem = makeDesktopItem {
name = "code";
exec = "code";
icon = "code";
comment = "Visual Studio Code is a code editor redefined and optimized for building and debugging modern web and cloud applications";
desktopName = "Visual Studio Code";
genericName = "Text Editor";
categories = "GNOME;GTK;Utility;TextEditor;Development;";
};
buildInputs = [ unzip ]; buildInputs = [ unzip ];
installPhase = '' installPhase = ''
mkdir -p $out/bin mkdir -p $out/lib/vscode $out/bin
cp -r ./* $out/bin cp -r ./* $out/lib/vscode
ln -s $out/lib/vscode/code $out/bin
${if (stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux") then '' mkdir -p $out/share/applications
patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ cp $desktopItem/share/applications/* $out/share/applications
$out/bin/code
'' else ""} mkdir -p $out/share/pixmaps
cp $out/lib/vscode/resources/app/resources/linux/code.png $out/share/pixmaps/code.png
''; '';
postFixup = '' postFixup = lib.optionalString (stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux") ''
${if (stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux") then ''
patchelf \ patchelf \
--set-rpath "${atomEnv}/lib:${atomEnv}/lib64:$out/bin:$(patchelf --print-rpath $out/bin/code)" \ --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
$out/bin/code --set-rpath "${atomEnv.libPath}:$out/lib/vscode" \
'' else ""} $out/lib/vscode/code
''; '';
meta = with stdenv.lib; { meta = with stdenv.lib; {

View File

@ -1,6 +1,6 @@
{ lib, stdenv, fetchurl, pkgconfig, libtool { lib, stdenv, fetchurl, pkgconfig, libtool
, bzip2, zlib, libX11, libXext, libXt, fontconfig, freetype, ghostscript, libjpeg , bzip2, zlib, libX11, libXext, libXt, fontconfig, freetype, ghostscript, libjpeg
, lcms2, openexr, libpng, librsvg, libtiff, libxml2 , lcms2, openexr, libpng, librsvg, libtiff, libxml2, openjpeg
}: }:
let let
@ -39,7 +39,7 @@ stdenv.mkDerivation rec {
buildInputs = buildInputs =
[ pkgconfig libtool zlib fontconfig freetype ghostscript libjpeg [ pkgconfig libtool zlib fontconfig freetype ghostscript libjpeg
openexr libpng librsvg libtiff libxml2 openexr libpng librsvg libtiff libxml2 openjpeg
]; ];
propagatedBuildInputs = propagatedBuildInputs =

View File

@ -1,10 +1,10 @@
{ callPackage, fetchgit, ... } @ args: { callPackage, fetchgit, ... } @ args:
callPackage ./generic.nix (args // { callPackage ./generic.nix (args // {
version = "2016-04-14"; version = "2016-04-23";
src = fetchgit { src = fetchgit {
sha256 = "414fa7753043f8f3775d926eede01a9dbccf6255b2b2b961a3c48b4fa76a4952"; sha256 = "11bf60cd5a6b314e855a69a6f57a5ca0db3254527def55662bce25810a2314df";
rev = "19c128a23e27c1ab5a030fa6ff74da1b740629bb"; rev = "c8169b1e656f7f95c67946298da5a0e1c143f8e8";
url = "git://alioth.debian.org/git/sane/sane-backends.git"; url = "git://alioth.debian.org/git/sane/sane-backends.git";
}; };
}) })

View File

@ -5,12 +5,12 @@
}: }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
version = "2.54.0"; version = "2.55.0";
name = "calibre-${version}"; name = "calibre-${version}";
src = fetchurl { src = fetchurl {
url = "http://download.calibre-ebook.com/${version}/${name}.tar.xz"; url = "http://download.calibre-ebook.com/${version}/${name}.tar.xz";
sha256 = "1r2cxnqiqnx51gbw283z8lz58i9zpvbf0a5ncrg5b2i9bphdiq79"; sha256 = "12412d5vjp141xp5qvif50fskd1vsmr15h956z3bh6j99n8z5953";
}; };
inherit python; inherit python;

View File

@ -26,10 +26,11 @@ stdenv.mkDerivation rec {
meta = with stdenv.lib; { meta = with stdenv.lib; {
homepage = http://sourceforge.net/projects/cdrtools/; homepage = http://sourceforge.net/projects/cdrtools/;
description = "Highly portable CD/DVD/BluRay command line recording software"; description = "Highly portable CD/DVD/BluRay command line recording software";
# Licensing issues: This package contains code licensed under CDDL, GPL2 license = with licenses; [ gpl2 lgpl2 cddl ];
# and LGPL2. There is debate regarding the legality of this licensing.
# Marked as unfree to avoid any possible legal issues.
license = licenses.unfree;
platforms = platforms.linux; platforms = platforms.linux;
# Licensing issues: This package contains code licensed under CDDL, GPL2
# and LGPL2. There is a debate regarding the legality of distributing this
# package in binary form.
hydraPlatforms = [];
}; };
} }

View File

@ -2,9 +2,10 @@
, qttools, yacc, flex, zlib, config, qmakeHook, makeQtWrapper }: , qttools, yacc, flex, zlib, config, qmakeHook, makeQtWrapper }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "golden-cheetah-${version}"; name = "golden-cheetah-${version}";
version = "V4.0-DEV1603"; version = "4.0-DEV1603";
src = fetchurl { src = fetchurl {
url = "https://github.com/GoldenCheetah/GoldenCheetah/archive/${version}.tar.gz"; name = "${name}.tar.gz";
url = "https://github.com/GoldenCheetah/GoldenCheetah/archive/V${version}.tar.gz";
sha256 = "12knlzqmq8b3nyl3kvcsnzrbjksgd83mzwzj97wccyfiffjl4wah"; sha256 = "12knlzqmq8b3nyl3kvcsnzrbjksgd83mzwzj97wccyfiffjl4wah";
}; };
buildInputs = [ buildInputs = [
@ -17,12 +18,13 @@ stdenv.mkDerivation rec {
echo 'QMAKE_LRELEASE = ${qttools}/bin/lrelease' >> src/gcconfig.pri echo 'QMAKE_LRELEASE = ${qttools}/bin/lrelease' >> src/gcconfig.pri
sed -i -e '21,23d' qwt/qwtconfig.pri # Removed forced installation to /usr/local sed -i -e '21,23d' qwt/qwtconfig.pri # Removed forced installation to /usr/local
''; '';
postConfigure = #postConfigure =
with (config.golden-cheetah); # + (
stdenv.lib.optionalString (dropbox-client-id != null && dropbox-client-secret != null) '' # with (config.golden-cheetah);
echo 'DEFINES += GC_DROPBOX_CLIENT_ID=\\\"${config.golden-cheetah.dropbox-client-id}\\\"' >> src/gcconfig.pri # stdenv.lib.optionalString (dropbox-client-id != null && dropbox-client-secret != null) ''
echo 'DEFINES += GC_DROPBOX_CLIENT_SECRET=\\\"${config.golden-cheetah.dropbox-client-secret}\\\"' >> src/gcconfig.pri # echo 'DEFINES += GC_DROPBOX_CLIENT_ID=\\\"${config.golden-cheetah.dropbox-client-id}\\\"' >> src/gcconfig.pri
''; # echo 'DEFINES += GC_DROPBOX_CLIENT_SECRET=\\\"${config.golden-cheetah.dropbox-client-secret}\\\"' >> src/gcconfig.pri
# '');
installPhase = '' installPhase = ''
mkdir -p $out/bin mkdir -p $out/bin
cp src/GoldenCheetah $out/bin cp src/GoldenCheetah $out/bin

View File

@ -2,11 +2,11 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "gpsprune-${version}"; name = "gpsprune-${version}";
version = "18.3"; version = "18.4";
src = fetchurl { src = fetchurl {
url = "http://activityworkshop.net/software/gpsprune/gpsprune_${version}.jar"; url = "http://activityworkshop.net/software/gpsprune/gpsprune_${version}.jar";
sha256 = "1sas5n4k3afryg3k6y40w39kifs3d0yrnnk46nqp7axs4ay2aqim"; sha256 = "0wrkvff3c1w66373m2w2ib07rkn3rmbp3n7ixz72qd1swvbk6xx1";
}; };
phases = [ "installPhase" ]; phases = [ "installPhase" ];

View File

@ -0,0 +1,28 @@
{ stdenv, fetchurl, pythonPackages }:
pythonPackages.buildPythonApplication rec {
version = "0.3.1";
name = "haxor-news-${version}";
src = fetchurl {
url = "https://github.com/donnemartin/haxor-news/archive/0.3.1.tar.gz";
sha256 = "0jglx8fy38sjyszvvg7mvmyk66l53kyq4i09hmgdz7hb1hrm9m2m";
};
propagatedBuildInputs = with pythonPackages; [
click
colorama
requests2
pygments
prompt_toolkit_52
six
];
meta = with stdenv.lib; {
homepage = "https://github.com/donnemartin/haxor-news";
description = "Browse Hacker News like a haxor";
license = licenses.asl20;
maintainers = with maintainers; [ matthiasbeyer ];
};
}

View File

@ -1,12 +1,19 @@
{ stdenv, fetchurl, makeWrapper, automoc4, cmake, perl, pkgconfig { stdenv, lib, fetchurl, makeWrapper, automoc4, cmake, perl, pkgconfig
, shared_mime_info, libvorbis, taglib, flac, libsamplerate , shared_mime_info, libvorbis, taglib, flac, libsamplerate
, libdvdread, lame, libsndfile, libmad, gettext , transcode, cdrdao , libdvdread, lame, libsndfile, libmad, gettext , transcode, cdrdao
, cdrtools, dvdplusrwtools, vcdimager, cdparanoia , kdelibs , dvdplusrwtools, vcdimager, cdparanoia, kdelibs, libdvdcss, ffmpeg
, kdemultimedia, phonon, libkcddb ? null , kdemultimedia, phonon, libkcddb ? null
}: }:
stdenv.mkDerivation rec { let
name = "k3b-2.0.3a"; # at runtime, k3b needs the executables cdrdao, cdrecord, dvd+rw-format,
# eMovix, growisofs, mkisofs, normalize, readcd, transcode, vcdxbuild,
# vcdxminfo, and vcdxrip
binPath = lib.makeBinPath [ cdrdao dvdplusrwtools transcode vcdimager ];
in stdenv.mkDerivation rec {
name = "k3b-${version}";
version = "2.0.3a";
src = fetchurl { src = fetchurl {
url = "http://download.kde.org/stable/k3b/${name}.tar.xz"; url = "http://download.kde.org/stable/k3b/${name}.tar.xz";
@ -19,18 +26,16 @@ stdenv.mkDerivation rec {
shared_mime_info libvorbis taglib flac libsamplerate libdvdread shared_mime_info libvorbis taglib flac libsamplerate libdvdread
lame libsndfile libmad stdenv.cc.libc kdelibs lame libsndfile libmad stdenv.cc.libc kdelibs
kdemultimedia phonon libkcddb makeWrapper cdparanoia kdemultimedia phonon libkcddb makeWrapper cdparanoia
libdvdcss ffmpeg
]; ];
enableParallelBuilding = true; enableParallelBuilding = true;
# at runtime, k3b needs the executables cdrdao, cdrecord, dvd+rw-format, NIX_CFLAGS_LINK = [ "-lcdda_interface" "-lcdda_paranoia" "-ldvdcss" ];
# eMovix, growisofs, mkisofs, normalize, readcd, transcode, vcdxbuild,
# vcdxminfo, and vcdxrip
propagatedUserEnvPkgs = [ cdrdao cdrtools dvdplusrwtools transcode vcdimager ];
postInstall = '' postInstall = ''
wrapProgram $out/bin/k3b \ wrapProgram $out/bin/k3b \
--prefix LD_LIBRARY_PATH ":" "${cdparanoia}/lib" --prefix PATH ":" "${binPath}"
''; '';
meta = with stdenv.lib; { meta = with stdenv.lib; {

View File

@ -0,0 +1,23 @@
{ lib, buildEnv, k3b-original, cdrtools, makeWrapper }:
let
binPath = lib.makeBinPath [ cdrtools ];
in buildEnv {
name = "k3b-${k3b-original.version}";
paths = [ k3b-original ];
buildInputs = [ makeWrapper ];
postBuild = ''
# TODO: This could be avoided if buildEnv could be forced to create all directories
if [ -L $out/bin ]; then
rm $out/bin
mkdir $out/bin
for i in ${k3b-original}/bin/*; do
ln -s $i $out/bin
done
fi
wrapProgram $out/bin/k3b \
--prefix PATH ':' ${binPath}
'';
}

View File

@ -1,4 +1,4 @@
{ stdenv, fetchurl, postgresql, wxGTK, libxml2, libxslt, openssl }: { stdenv, fetchurl, postgresql, wxGTK, libxml2, libxslt, openssl, zlib }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "pgadmin3-${version}"; name = "pgadmin3-${version}";
@ -11,12 +11,17 @@ stdenv.mkDerivation rec {
enableParallelBuilding = true; enableParallelBuilding = true;
buildInputs = [ postgresql wxGTK libxml2 libxslt openssl ]; buildInputs = [ postgresql wxGTK openssl zlib ];
preConfigure = '' preConfigure = ''
substituteInPlace pgadmin/ver_svn.sh --replace "bin/bash" "$shell" substituteInPlace pgadmin/ver_svn.sh --replace "bin/bash" "$shell"
''; '';
configureFlags = [
"--with-libxml2=${libxml2}"
"--with-libxslt=${libxslt}"
];
meta = with stdenv.lib; { meta = with stdenv.lib; {
description = "PostgreSQL administration GUI tool"; description = "PostgreSQL administration GUI tool";
homepage = http://www.pgadmin.org; homepage = http://www.pgadmin.org;

View File

@ -1,36 +1,33 @@
{ stdenv, fetchFromGitHub, qt4, qmake4Hook }: { stdenv, fetchurl, qt5 }:
let let
version = "1.08.03"; version = "1.10.01";
in in
stdenv.mkDerivation { stdenv.mkDerivation {
name = "qtbitcointrader-${version}"; name = "qtbitcointrader-${version}";
src = fetchFromGitHub { src = fetchurl {
owner = "JulyIGHOR"; url = "https://github.com/JulyIGHOR/QtBitcoinTrader/archive/v${version}.tar.gz";
repo = "QtBitcoinTrader"; sha256 = "0pgj8rsk9yxvls7yjpzblzbci2vvd0mlf9c7wdbjhwf6qyi7dfi3";
rev = "ee30cf158fa8535f2155a387558d3b8994728c28";
sha256 = "0kxb0n11agqid0nyqdspfndm03b8l0nl8x4yx2hsrizs6m5z08h4";
}; };
buildInputs = [ qt4 ]; buildInputs = [ qt5.qtbase qt5.qtmultimedia qt5.qtscript ];
nativeBuildHooks = [ qmake4Hook ];
postUnpack = "sourceRoot=\${sourceRoot}/src"; postUnpack = "sourceRoot=\${sourceRoot}/src";
preConfigure = '' configurePhase = ''
qmakeFlags="$qmakeFlags \ qmake $qmakeFlags \
PREFIX=$out \
DESKTOPDIR=$out/share/applications \ DESKTOPDIR=$out/share/applications \
ICONDIR=$out/share/pixmaps \ ICONDIR=$out/share/pixmaps \
" QtBitcoinTrader_Desktop.pro
''; '';
meta = with stdenv.lib; meta = with stdenv.lib;
{ description = "Secure bitcoin trading client"; { description = "Bitcoin trading client";
homepage = https://centrabit.com/; homepage = https://centrabit.com/;
license = licenses.lgpl3; license = licenses.lgpl3;
platforms = qt4.meta.platforms; platforms = qt5.qtbase.meta.platforms;
maintainers = [ maintainers.ehmry ]; maintainers = [ maintainers.ehmry ];
}; };
} }

View File

@ -1,21 +1,31 @@
{ stdenv, fetchurl, autoreconfHook, pkgconfig { stdenv, fetchurl, autoreconfHook, pkgconfig
, libX11, libXinerama, pango, cairo , libX11, libxkbcommon, pango, cairo, glib
, libxcb, xcbutil, xcbutilwm, which, git
, libstartup_notification, i3Support ? false, i3 , libstartup_notification, i3Support ? false, i3
}: }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "rofi-${version}"; name = "rofi-${version}";
version = "0.15.12"; version = "1.0.0";
src = fetchurl { src = fetchurl {
url = "https://github.com/DaveDavenport/rofi/archive/${version}.tar.gz"; url = "https://github.com/DaveDavenport/rofi/releases/download/${version}/${name}.tar.xz";
sha256 = "112fgx2awsw1xf1983bmy3jvs33qwyi8qj7j59jqc4gx07nv1rp5"; sha256 = "0ard95pjgykafm5ga8lfy7x206f07lrc6kara5s9irlhdgblq2m5";
}; };
buildInputs = [ autoreconfHook pkgconfig libX11 libXinerama pango preConfigure = ''
cairo libstartup_notification patchShebangs "script"
# root not present in build /etc/passwd
sed -i 's/~root/~nobody/g' test/helper-expand.c
'';
buildInputs = [ autoreconfHook pkgconfig libX11 libxkbcommon pango
cairo libstartup_notification libxcb xcbutil xcbutilwm
which git
] ++ stdenv.lib.optional i3Support i3; ] ++ stdenv.lib.optional i3Support i3;
doCheck = true;
meta = { meta = {
description = "Window switcher, run dialog and dmenu replacement"; description = "Window switcher, run dialog and dmenu replacement";
homepage = https://davedavenport.github.io/rofi; homepage = https://davedavenport.github.io/rofi;

View File

@ -1,5 +1,5 @@
{ stdenv, fetchurl, autoconf, automake, gettext, intltool, libtool, pkgconfig, { stdenv, fetchurl, autoconf, automake, gettext, intltool, libtool, pkgconfig,
libXtst, cheetah, libXScrnSaver, libXtst, cheetah, libXScrnSaver, xorg,
glib, glibmm, glib, glibmm,
gtk, gtkmm, gtk, gtkmm,
atk, atk,
@ -10,11 +10,15 @@
gdome2, gstreamer, libsigcxx }: gdome2, gstreamer, libsigcxx }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
version = "v1_10_6"; version = "1.10.6";
name = "workrave-${version}"; name = "workrave-${version}";
src = fetchurl { src = let
url = "http://github.com/rcaelers/workrave/archive/${version}.tar.gz"; version_ = with stdenv.lib;
concatStringsSep "_" (splitString "." version);
in fetchurl {
name = "${name}.tar.gz";
url = "http://github.com/rcaelers/workrave/archive/v${version_}.tar.gz";
sha256 = "0q2p83n33chbqzdcdm7ykfsy73frfi6drxzm4qidxwzpzsxrysgq"; sha256 = "0q2p83n33chbqzdcdm7ykfsy73frfi6drxzm4qidxwzpzsxrysgq";
}; };
@ -23,7 +27,7 @@ stdenv.mkDerivation rec {
libXScrnSaver libXScrnSaver
glib glibmm gtk gtkmm atk pango pangomm cairo cairomm glib glibmm gtk gtkmm atk pango pangomm cairo cairomm
dbus dbus_glib GConf gconfmm gdome2 gstreamer libsigcxx dbus dbus_glib GConf gconfmm gdome2 gstreamer libsigcxx xorg.libICE xorg.libSM
]; ];
preConfigure = "./autogen.sh"; preConfigure = "./autogen.sh";

View File

@ -4,22 +4,22 @@
, libXext, libXfixes, libXi, libXrandr, libXrender, libXtst, nspr, nss, pango , libXext, libXfixes, libXi, libXrandr, libXrender, libXtst, nspr, nss, pango
, libudev }: , libudev }:
let version = "0.0.1"; in let version = "0.0.3"; in
stdenv.mkDerivation { stdenv.mkDerivation {
name = "discord-${version}"; name = "discord-${version}";
src = fetchurl { src = fetchurl {
url = "https://storage.googleapis.com/discord-developer/test/discord-canary-${version}.tar.gz"; url = "https://cdn-canary.discordapp.com/apps/linux/${version}/discord-canary-${version}.tar.gz";
sha256 = "1skmwc84s4xqyc167qrplhy5ah06kwfa3d3rxiwi4c8rc55vdd0g"; sha256 = "1k1mnfkcx7183qbdc4qx1anngddqim969cribg9gzc7mixvj17ca";
}; };
libPath = stdenv.lib.makeLibraryPath [ libPath = stdenv.lib.makeLibraryPath [
stdenv.cc.cc alsaLib atk cairo cups dbus expat fontconfig freetype stdenv.cc.cc alsaLib atk cairo cups dbus expat fontconfig freetype
gdk_pixbuf glib gnome.GConf gtk libnotify libX11 libXcomposite gdk_pixbuf glib gnome.GConf gtk libnotify libX11 libXcomposite
libXcursor libXdamage libXext libXfixes libXi libXrandr libXrender libXcursor libXdamage libXext libXfixes libXi libXrandr libXrender
libXtst nspr nss pango libudev libXtst nspr nss pango libudev.out
]; ];
installPhase = '' installPhase = ''
@ -35,12 +35,13 @@ stdenv.mkDerivation {
ln -s $out/DiscordCanary $out/bin/ ln -s $out/DiscordCanary $out/bin/
# Putting udev in the path won't work :( # Putting udev in the path won't work :(
ln -s ${libudev}/lib/libudev.so.1 $out ln -s ${libudev.out}/lib/libudev.so.1 $out
''; '';
meta = with stdenv.lib; { meta = with stdenv.lib; {
description = "All-in-one voice and text chat for gamers thats free, secure, and works on both your desktop and phone"; description = "All-in-one voice and text chat for gamers thats free, secure, and works on both your desktop and phone";
homepage = "https://discordapp.com/"; homepage = "https://discordapp.com/";
downloadPage = "https://github.com/crmarsh/discord-linux-bugs";
license = licenses.unfree; license = licenses.unfree;
maintainers = [ maintainers.ldesgoui ]; maintainers = [ maintainers.ldesgoui ];
platforms = [ "x86_64-linux" ]; platforms = [ "x86_64-linux" ];

View File

@ -38,13 +38,8 @@ stdenv.mkDerivation rec {
mkdir -p $out/{libexec/skype/,bin} mkdir -p $out/{libexec/skype/,bin}
cp -r * $out/libexec/skype/ cp -r * $out/libexec/skype/
fullPath=
for i in $nativeBuildInputs; do
fullPath=$fullPath''${fullPath:+:}$i/lib
done
patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ patchelf --interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
--set-rpath "$fullPath" $out/libexec/skype/skype --set-rpath "${lib.makeLibraryPath buildInputs}" $out/libexec/skype/skype
cat > $out/bin/skype << EOF cat > $out/bin/skype << EOF
#!${stdenv.shell} #!${stdenv.shell}

View File

@ -80,10 +80,9 @@ let
"CONFIG+=no-server" "CONFIG+=no-server"
]; ];
installPhase = '' NIX_CFLAGS_COMPILE = optional speechdSupport "-I${speechd}/include/speech-dispatcher";
cp scripts/mumble-overlay $out/bin
sed -i "s,/usr/lib,$out/lib,g" $out/bin/mumble-overlay
installPhase = ''
mkdir -p $out/share/applications mkdir -p $out/share/applications
cp scripts/mumble.desktop $out/share/applications cp scripts/mumble.desktop $out/share/applications
@ -108,44 +107,25 @@ let
}; };
stableSource = rec { stableSource = rec {
version = "1.2.10"; version = "1.2.15";
qtVersion = 4; qtVersion = 4;
src = fetchurl { src = fetchurl {
url = "https://github.com/mumble-voip/mumble/releases/download/${version}/mumble-${version}.tar.gz"; url = "https://github.com/mumble-voip/mumble/releases/download/${version}/mumble-${version}.tar.gz";
sha256 = "012vm0xf84x13414jlsx964c5a1nwnbn41jnspkciajlxxipldn6"; sha256 = "1yjywzybgq23ry5s2yihggs13ffrphhwl6rlp6lq79rkwvafa9v5";
}; };
}; };
gitSource = rec { gitSource = rec {
version = "1.3.0-git-2015-11-08"; version = "1.3.0-git-2016-04-10";
qtVersion = 5; qtVersion = 5;
# Needs submodules
src = fetchgit { src = fetchgit {
url = "https://github.com/mumble-voip/mumble"; url = "https://github.com/mumble-voip/mumble";
rev = "72038f6aa038f5964e2bba5a09d3d391d4680e5f"; rev = "0502fa67b036bae9f07a586d9f05a8bf74c24291";
sha256 = "03978b85f7y0bffl8vwkmakjnxxjqapfz3pn0b8zf3b1ppwjy9g4"; sha256 = "073v8nway17j1n1lm70x508722b1q3vb6h4fvmcbbma3d22y1h45";
}; };
# TODO: Remove fetchgit as it requires git
/*src = fetchFromGitHub {
owner = "mumble-voip";
repo = "mumble";
rev = "13e494c60beb20748eeb8be126b27e1226d168c8";
sha256 = "024my6wzahq16w7fjwrbksgnq98z4jjbdyy615kfyd9yk2qnpl80";
};
theme = fetchFromGitHub {
owner = "mumble-voip";
repo = "mumble-theme";
rev = "16b61d958f131ca85ab0f601d7331601b63d8f30";
sha256 = "0rbh825mwlh38j6nv2sran2clkiwvzj430mhvkdvzli9ysjxgsl3";
};
prePatch = ''
rmdir themes/Mumble
ln -s ${theme} themes/Mumble
'';*/
}; };
in { in {
mumble = client stableSource; mumble = client stableSource;

View File

@ -0,0 +1,24 @@
{ stdenv, lib, which, file, mumble, mumble_i686
}:
let
binPath = lib.makeBinPath [ which file ];
in stdenv.mkDerivation {
name = "mumble-overlay-${mumble.version}";
inherit (mumble) src;
phases = [ "unpackPhase" "installPhase" "fixupPhase" ];
installPhase = ''
mkdir -p $out/lib
ln -s ${mumble}/lib/libmumble.so.1.* $out/lib/libmumble.so.1
${lib.optionalString (mumble_i686 != null) ''
mkdir -p $out/lib32
ln -s ${mumble_i686}/lib/libmumble.so.1.* $out/lib32/libmumble.so.1
''}
install -Dm755 scripts/mumble-overlay $out/bin/mumble-overlay
sed -i "s,/usr/lib,$out/lib,g" $out/bin/mumble-overlay
sed -i '2iPATH="${binPath}:$PATH"' $out/bin/mumble-overlay
'';
}

View File

@ -2,13 +2,13 @@
stdenv.mkDerivation rec stdenv.mkDerivation rec
{ {
version = "4.4.2"; version = "5.0.7";
name = "seafile-client-${version}"; name = "seafile-client-${version}";
src = fetchurl src = fetchurl
{ {
url = "https://github.com/haiwen/seafile-client/archive/v${version}.tar.gz"; url = "https://github.com/haiwen/seafile-client/archive/v${version}.tar.gz";
sha256 = "0aj39xiayibxp3vcrwi58pn51h9vcsy2z04q8jm17qadmk9dzyw6"; sha256 = "ae6975bc1adf45d09cf9f6332ceac7cf285f8191f6cf50c6291ed45f8cf4ffa5";
}; };
buildInputs = [ pkgconfig cmake qt4 seafile-shared makeWrapper ]; buildInputs = [ pkgconfig cmake qt4 seafile-shared makeWrapper ];

View File

@ -1,7 +1,7 @@
{ stdenv, fetchurl }: { stdenv, fetchurl }:
rec { rec {
version = "3.2.1"; version = "3.1.2";
src = fetchurl { src = fetchurl {
# signed with key 0048 C8B0 26D4 C96F 0E58 9C2F 6C85 9FB1 4B96 A8C5 # signed with key 0048 C8B0 26D4 C96F 0E58 9C2F 6C85 9FB1 4B96 A8C5
url = "mirror://samba/rsync/src/rsync-${version}.tar.gz"; url = "mirror://samba/rsync/src/rsync-${version}.tar.gz";

View File

@ -0,0 +1,43 @@
{ stdenv, fetchhg, pkgs, pythonPackages }:
pythonPackages.buildPythonApplication rec {
version = "2016-04-10-b5721f1c6f01bd168a5781652e5e3167f7f8ceb3";
name = "beancount-${version}";
namePrefix = "";
src = fetchhg {
url = "https://bitbucket.org/blais/beancount";
rev = "b5721f1c6f01bd168a5781652e5e3167f7f8ceb3";
sha256 = "10nv3p9cix7yp23a9hnq5163rpl8cfs3hv75h90ld57dc24nxzn2";
};
buildInputs = with pythonPackages; [ nose ];
checkPhase = ''
nosetests $out
'';
propagatedBuildInputs = with pythonPackages; [
beautifulsoup4
bottle
chardet
dateutil
google_api_python_client
lxml
ply
python_magic
];
meta = {
homepage = http://furius.ca/beancount/;
description = "double-entry bookkeeping computer language";
longDescription = ''
A double-entry bookkeeping computer language that lets you define
financial transaction records in a text file, read them in memory,
generate a variety of reports from them, and provides a web interface.
'';
license = stdenv.lib.licenses.gpl2;
maintainers = with stdenv.lib.maintainers; [ matthiasbeyer ];
};
}

View File

@ -0,0 +1,523 @@
[
{
name = "libabw-0.1.1.tar.bz2";
md5 = "7a3815b506d064313ba309617b6f5a0b";
brief = true;
}
{
name = "commons-codec-1.6-src.tar.gz";
md5 = "2e482c7567908d334785ce7d69ddfff7";
brief = false;
}
{
name = "commons-httpclient-3.1-src.tar.gz";
md5 = "2c9b0f83ed5890af02c0df1c1776f39b";
brief = false;
}
{
name = "commons-lang-2.4-src.tar.gz";
md5 = "625ff5f2f968dd908bca43c9469d6e6b";
brief = false;
}
{
name = "commons-logging-1.2-src.tar.gz";
md5 = "ce977548f1cbf46918e93cd38ac35163";
brief = true;
}
{
name = "apr-1.4.8.tar.gz";
md5 = "eff9d741b0999a9bbab96862dd2a2a3d";
brief = true;
}
{
name = "apr-util-1.5.3.tar.gz";
md5 = "71a11d037240b292f824ba1eb537b4e3";
brief = true;
}
{
name = "boost_1_55_0.tar.bz2";
md5 = "d6eef4b4cacb2183f2bf265a5a03a354";
brief = false;
}
{
name = "bsh-2.0b5-src.zip";
md5 = "ec1941a74d3ef513c4ce57a9092b74e1";
brief = false;
}
{
name = "cairo-1.10.2.tar.gz";
md5 = "f101a9e88b783337b20b2e26dfd26d5f";
brief = false;
}
{
name = "libcdr-0.1.1.tar.bz2";
md5 = "b33fd0be3befdd1b37777e08ce058bd9";
brief = true;
}
{
name = "clucene-core-2.3.3.4.tar.gz";
md5 = "48d647fbd8ef8889e5a7f422c1bfda94";
brief = false;
}
{
name = "libcmis-0.5.0.tar.gz";
md5 = "5821b806a98e6c38370970e682ce76e8";
brief = false;
}
{
name = "CoinMP-1.7.6.tgz";
md5 = "1cce53bf4b40ae29790d2c5c9f8b1129";
brief = true;
}
{
name = "collada2gltf-master-cb1d97788a.tar.bz2";
md5 = "4b87018f7fff1d054939d19920b751a0";
brief = false;
}
{
name = "cppunit-1.13.2.tar.gz";
md5 = "d1c6bdd5a76c66d2c38331e2d287bc01";
brief = true;
}
{
name = "converttexttonumber-1-5-0.oxt";
md5 = "1f467e5bb703f12cbbb09d5cf67ecf4a";
brief = false;
}
{
name = "curl-7.43.0.tar.bz2";
md5 = "11bddbb452a8b766b932f859aaeeed39";
brief = true;
}
{
name = "libe-book-0.1.2.tar.bz2";
md5 = "6b48eda57914e6343efebc9381027b78";
brief = true;
}
{
name = "epm-3.7.tar.gz";
md5 = "3ade8cfe7e59ca8e65052644fed9fca4";
brief = false;
}
{
name = "libetonyek-0.1.3.tar.bz2";
md5 = "e5947373dd7834f27e93f1636faa419f";
brief = true;
}
{
name = "expat-2.1.0.tar.gz";
md5 = "dd7dab7a5fea97d2a6a43f511449b7cd";
brief = false;
}
{
name = "Firebird-2.5.2.26540-0.tar.bz2";
md5 = "21154d2004e025c8a3666625b0357bb5";
brief = true;
}
{
name = "fontconfig-2.8.0.tar.gz";
md5 = "77e15a92006ddc2adbb06f840d591c0e";
brief = false;
}
{
name = "crosextrafonts-20130214.tar.gz";
md5 = "368f114c078f94214a308a74c7e991bc";
brief = false;
}
{
name = "crosextrafonts-carlito-20130920.tar.gz";
md5 = "c74b7223abe75949b4af367942d96c7a";
brief = false;
}
{
name = "dejavu-fonts-ttf-2.34.zip";
md5 = "a4e565e220b5de082c23995e256e3c12";
brief = false;
}
{
name = "gentiumbasic-fonts-1.10.zip";
md5 = "35efabc239af896dfb79be7ebdd6e6b9";
brief = false;
}
{
name = "liberation-fonts-ttf-1.07.4.tar.gz";
md5 = "134d8262145fc793c6af494dcace3e71";
brief = false;
}
{
name = "liberation-fonts-ttf-2.00.1.tar.gz";
md5 = "5c781723a0d9ed6188960defba8e91cf";
brief = false;
}
{
name = "LinLibertineG-20120116.zip";
md5 = "e7a384790b13c29113e22e596ade9687";
brief = false;
}
{
name = "open-sans-font-ttf-1.10.tar.gz";
md5 = "7a15edea7d415ac5150ea403e27401fd";
brief = false;
}
{
name = "pt-serif-font-1.0000W.tar.gz";
md5 = "c3c1a8ba7452950636e871d25020ce0d";
brief = false;
}
{
name = "source-code-font-1.009.tar.gz";
md5 = "0279a21fab6f245e85a6f85fea54f511";
brief = false;
}
{
name = "source-sans-pro-2.010R-ro-1.065R-it.tar.gz";
md5 = "edc4d741888bc0d38e32dbaa17149596";
brief = false;
}
{
name = "libfreehand-0.1.1.tar.bz2";
md5 = "8cf70c5dc4d24d2dc4a107f509d2d6d7";
brief = true;
}
{
name = "freetype-2.4.8.tar.bz2";
md5 = "dbf2caca1d3afd410a29217a9809d397";
brief = false;
}
{
name = "glew-1.10.0.zip";
md5 = "594eb47b4b1210e25438d51825404d5a";
brief = false;
}
{
name = "glm-0.9.4.6-libreoffice.zip";
md5 = "bae83fa5dc7f081768daace6e199adc3";
brief = false;
}
{
name = "graphite2-1.2.4.tgz";
md5 = "2ef839348fe28e3b923bf8cced440227";
brief = true;
}
{
name = "harfbuzz-0.9.40.tar.bz2";
md5 = "0e27e531f4c4acff601ebff0957755c2";
brief = true;
}
{
name = "hsqldb_1_8_0.zip";
md5 = "17410483b5b5f267aa18b7e00b65e6e0";
brief = false;
}
{
name = "hunspell-1.3.3.tar.gz";
md5 = "4967da60b23413604c9e563beacc63b4";
brief = false;
}
{
name = "hyphen-2.8.8.tar.gz";
md5 = "5ade6ae2a99bc1e9e57031ca88d36dad";
brief = false;
}
{
name = "icu4c-54_1-src.tgz";
md5 = "e844caed8f2ca24c088505b0d6271bc0";
brief = false;
}
{
name = "flow-engine-0.9.4.zip";
md5 = "ba2930200c9f019c2d93a8c88c651a0f";
brief = false;
}
{
name = "flute-1.1.6.zip";
md5 = "d8bd5eed178db6e2b18eeed243f85aa8";
brief = false;
}
{
name = "libbase-1.1.6.zip";
md5 = "eeb2c7ddf0d302fba4bfc6e97eac9624";
brief = false;
}
{
name = "libfonts-1.1.6.zip";
md5 = "3bdf40c0d199af31923e900d082ca2dd";
brief = false;
}
{
name = "libformula-1.1.7.zip";
md5 = "3404ab6b1792ae5f16bbd603bd1e1d03";
brief = false;
}
{
name = "liblayout-0.2.10.zip";
md5 = "db60e4fde8dd6d6807523deb71ee34dc";
brief = false;
}
{
name = "libloader-1.1.6.zip";
md5 = "97b2d4dba862397f446b217e2b623e71";
brief = false;
}
{
name = "librepository-1.1.6.zip";
md5 = "8ce2fcd72becf06c41f7201d15373ed9";
brief = false;
}
{
name = "libserializer-1.1.6.zip";
md5 = "f94d9870737518e3b597f9265f4e9803";
brief = false;
}
{
name = "libxml-1.1.7.zip";
md5 = "ace6ab49184e329db254e454a010f56d";
brief = false;
}
{
name = "sacjava-1.3.zip";
md5 = "39bb3fcea1514f1369fcfc87542390fd";
brief = false;
}
{
name = "jpegsrc.v9a.tar.gz";
md5 = "3353992aecaee1805ef4109aadd433e7";
brief = true;
}
{
name = "libjpeg-turbo-1.3.1.tar.gz";
md5 = "2c3a68129dac443a72815ff5bb374b05";
brief = true;
}
{
name = "language-subtag-registry-2015-08-04.tar.bz2";
md5 = "bf5986dbfa1c9a0f26cf1b00ed369484";
brief = true;
}
{
name = "JLanguageTool-1.7.0.tar.bz2";
md5 = "b63e6340a02ff1cacfeadb2c42286161";
brief = false;
}
{
name = "lcms2-2.6.tar.gz";
md5 = "f4c08d38ceade4a664ebff7228910a33";
brief = true;
}
{
name = "libatomic_ops-7_2d.zip";
md5 = "c0b86562d5aa40761a87134f83e6adcf";
brief = true;
}
{
name = "libeot-0.01.tar.bz2";
md5 = "aa24f5dd2a2992f4a116aa72af817548";
brief = true;
}
{
name = "libexttextcat-3.4.4.tar.bz2";
md5 = "10d61fbaa6a06348823651b1bd7940fe";
brief = false;
}
{
name = "libgltf-0.0.2.tar.bz2";
md5 = "d63a9f47ab048f5009d90693d6aa6424";
brief = true;
subDir = "libgltf/";
}
{
name = "liblangtag-0.5.1.tar.bz2";
md5 = "36271d3fa0d9dec1632029b6d7aac925";
brief = false;
}
{
name = "xmlsec1-1.2.14.tar.gz";
md5 = "1f24ab1d39f4a51faf22244c94a6203f";
brief = false;
}
{
name = "libxml2-2.9.3.tar.gz";
md5 = "daece17e045f1c107610e137ab50c179";
brief = false;
}
{
name = "libxslt-1.1.28.tar.gz";
md5 = "9667bf6f9310b957254fdcf6596600b7";
brief = false;
}
{
name = "lp_solve_5.5.tar.gz";
md5 = "26b3e95ddf3d9c077c480ea45874b3b8";
brief = false;
}
{
name = "mariadb_client-2.0.0-src.tar.gz";
md5 = "a233181e03d3c307668b4c722d881661";
brief = false;
}
{
name = "mdds_0.12.1.tar.bz2";
md5 = "ef2560ed5416652a7fe195305b14cebe";
brief = true;
}
{
name = "libmspub-0.1.2.tar.bz2";
md5 = "ff9d0f9dd8fbc523408ea1953d5bde41";
brief = true;
}
{
name = "libmwaw-0.3.5.tar.bz2";
md5 = "bdc58bbf89aaaf6d29b3516d96830a06";
brief = true;
}
{
name = "mysql-connector-c++-1.1.4.tar.gz";
md5 = "7239a4430efd4d0189c4f24df67f08e5";
brief = false;
}
{
name = "mythes-1.2.4.tar.gz";
md5 = "a8c2c5b8f09e7ede322d5c602ff6a4b6";
brief = false;
}
{
name = "neon-0.29.5.tar.gz";
md5 = "ff369e69ef0f0143beb5626164e87ae2";
brief = false;
}
{
name = "nss-3.19.4-with-nspr-4.10.10.tar.gz";
md5 = "478e0e90ebc4a90159549e77021021fd";
brief = false;
}
{
name = "libodfgen-0.1.4.tar.bz2";
md5 = "8716be5c22ae8353f9aaa380d74840dc";
brief = true;
}
{
name = "OpenCOLLADA-master-6509aa13af.tar.bz2";
md5 = "4ca8a6ef0afeefc864e9ef21b9f14bd6";
brief = true;
}
{
name = "openldap-2.4.31.tgz";
md5 = "804c6cb5698db30b75ad0ff1c25baefd";
brief = false;
}
{
name = "openssl-1.0.2a.tar.gz";
md5 = "a06c547dac9044161a477211049f60ef";
brief = true;
}
{
name = "liborcus-0.7.0.tar.bz2";
md5 = "7681383be6ce489d84c1c74f4e7f9643";
brief = false;
}
{
name = "libpagemaker-0.0.2.tar.bz2";
md5 = "795cc7a59ace4db2b12586971d668671";
brief = true;
}
{
name = "pixman-0.24.4.tar.bz2";
md5 = "c63f411b3ad147db2bcce1bf262a0e02";
brief = false;
}
{
name = "libpng-1.5.24.tar.gz";
md5 = "6652e428d1d3fc3c6cb1362159b1cf3b";
brief = true;
}
{
name = "poppler-0.26.4.tar.gz";
md5 = "35c0660065d023365e9854c13e289d12";
brief = true;
}
{
name = "postgresql-9.2.1.tar.bz2";
md5 = "c0b4799ea9850eae3ead14f0a60e9418";
brief = false;
}
{
name = "Python-3.3.5.tgz";
md5 = "803a75927f8f241ca78633890c798021";
brief = true;
}
{
name = "raptor2-2.0.9.tar.gz";
md5 = "4ceb9316488b0ea01acf011023cf7fff";
brief = false;
}
{
name = "rasqal-0.9.30.tar.gz";
md5 = "b12c5f9cfdb6b04efce5a4a186b8416b";
brief = false;
}
{
name = "redland-1.0.16.tar.gz";
md5 = "32f8e1417a64d3c6f2c727f9053f55ea";
brief = false;
}
{
name = "librevenge-0.0.2.tar.bz2";
md5 = "2d4183bf17aea1a71842468a71a68c47";
brief = true;
}
{
name = "rhino1_5R5.zip";
md5 = "798b2ffdc8bcfe7bca2cf92b62caf685";
brief = false;
}
{
name = "serf-1.2.1.tar.bz2";
md5 = "4f8e76c9c6567aee1d66aba49f76a58b";
brief = true;
}
{
name = "swingExSrc.zip";
md5 = "35c94d2df8893241173de1d16b6034c0";
brief = false;
}
{
name = "ucpp-1.3.2.tar.gz";
md5 = "0168229624cfac409e766913506961a8";
brief = false;
}
{
name = "vigra1.6.0.tar.gz";
md5 = "d62650a6f908e85643e557a236ea989c";
brief = false;
}
{
name = "libvisio-0.1.1.tar.bz2";
md5 = "726c1f5be65eb7d649e0d48b63d920e7";
brief = true;
}
{
name = "libwpd-0.10.0.tar.bz2";
md5 = "0773d79a1f240ef9f4f20242b13c5bb7";
brief = true;
}
{
name = "libwpg-0.3.0.tar.bz2";
md5 = "17da9770cb8b317b7633f9807b32b71a";
brief = true;
}
{
name = "libwps-0.4.0.tar.bz2";
md5 = "e9162d2566421d9d71b3ad2377a68fd5";
brief = true;
}
{
name = "xsltml_2.1.2.zip";
md5 = "a7983f859eafb2677d7ff386a023bc40";
brief = false;
}
{
name = "zlib-1.2.8.tar.gz";
md5 = "44d667c142d7cda120332623eab69f40";
brief = true;
}
]

View File

@ -0,0 +1,255 @@
{ stdenv, fetchurl, pam, python3, tcsh, libxslt, perl, ArchiveZip
, CompressZlib, zlib, libjpeg, expat, pkgconfigUpstream, freetype, libwpd
, libxml2, db, sablotron, curl, fontconfig, libsndfile, neon
, bison, flex, zip, unzip, gtk3, gtk, libmspack, getopt, file, cairo, which
, icu, boost, jdk, ant, cups, xorg, libcmis
, openssl, gperf, cppunit, GConf, ORBit2, poppler
, librsvg, gnome_vfs, mesa, bsh, CoinMP, libwps, libabw
, autoconf, automake, openldap, bash, hunspell, librdf_redland, nss, nspr
, libwpg, dbus_glib, glibc, qt4, kde4, clucene_core, libcdr, lcms, vigra
, unixODBC, mdds, sane-backends, mythes, libexttextcat, libvisio
, fontsConf, pkgconfig, libzip, bluez5, libtool, maven
, libatomic_ops, graphite2, harfbuzz, libodfgen
, librevenge, libe-book, libmwaw, glm, glew, gst_all_1
, gdb, commonsLogging, librdf_rasqal, makeWrapper, gsettings_desktop_schemas
, defaultIconTheme, glib, ncurses
, langs ? [ "en-US" "en-GB" "ca" "ru" "eo" "fr" "nl" "de" "sl" "pl" ]
, withHelp ? true
, kdeIntegration ? false
}:
let
lib = stdenv.lib;
langsSpaces = lib.concatStringsSep " " langs;
major = "5";
minor = "0";
patch = "5";
tweak = "2";
subdir = "${major}.${minor}.${patch}";
version = "${subdir}${if tweak == "" then "" else "."}${tweak}";
fetchThirdParty = {name, md5, brief, subDir ? ""}: fetchurl {
inherit name md5;
url = if brief then
"http://dev-www.libreoffice.org/src/${subDir}${name}"
else
"http://dev-www.libreoffice.org/src/${subDir}${md5}-${name}";
};
fetchSrc = {name, sha256}: fetchurl {
url = "http://download.documentfoundation.org/libreoffice/src/${subdir}/libreoffice-${name}-${version}.tar.xz";
inherit sha256;
};
srcs = {
third_party = [ (fetchurl rec {
url = "http://dev-www.libreoffice.org/extern/${md5}-${name}";
md5 = "185d60944ea767075d27247c3162b3bc";
name = "unowinreg.dll";
}) ] ++ (map fetchThirdParty (import ./libreoffice-srcs-still.nix));
translations = fetchSrc {
name = "translations";
sha256 = "13cbfiqaycy8cxji5jfwfbgar8l4fzhg3aaggavsrwsmbvrqpbb7";
};
# TODO: dictionaries
help = fetchSrc {
name = "help";
sha256 = "0an081aj63hfhxv0k8h92vly0rnglbcpqax2pinybryk4dnljr36";
};
};
in stdenv.mkDerivation rec {
name = "libreoffice-${version}";
src = fetchurl {
url = "http://download.documentfoundation.org/libreoffice/src/${subdir}/libreoffice-${version}.tar.xz";
sha256 = "120vcxpxzs0za76fyfry281ysv6d1ianb37d1yq8py8chkdjkrqy";
};
# Openoffice will open libcups dynamically, so we link it directly
# to make its dlopen work.
# It also seems not to mention libdl explicitly in some places.
NIX_LDFLAGS = "-lcups -ldl";
# For some reason librdf_redland sometimes refers to rasqal.h instead
# of rasqal/rasqal.h
NIX_CFLAGS_COMPILE="-I${librdf_rasqal}/include/rasqal";
# If we call 'configure', 'make' will then call configure again without parameters.
# It's their system.
configureScript = "./autogen.sh";
dontUseCmakeConfigure = true;
postUnpack = ''
mkdir -v $sourceRoot/src
'' + (stdenv.lib.concatMapStrings (f: "ln -sfv ${f} $sourceRoot/src/${f.outputHash}-${f.name}\nln -sfv ${f} $sourceRoot/src/${f.name}\n") srcs.third_party)
+ ''
ln -sv ${srcs.help} $sourceRoot/src/${srcs.help.name}
ln -svf ${srcs.translations} $sourceRoot/src/${srcs.translations.name}
'';
QT4DIR = qt4;
# Fix boost 1.59 compat
# Try removing in the next version
CPPFLAGS = "-DBOOST_ERROR_CODE_HEADER_ONLY -DBOOST_SYSTEM_NO_DEPRECATED";
preConfigure = ''
configureFlagsArray=(
"--with-parallelism=$NIX_BUILD_CORES"
"--with-lang=${langsSpaces}"
);
chmod a+x ./bin/unpack-sources
patchShebangs .
# It is used only as an indicator of the proper current directory
touch solenv/inc/target.mk
# BLFS patch for Glibc 2.23 renaming isnan
sed -ire "s@isnan@std::&@g" xmloff/source/draw/ximp3dscene.cxx
'';
# fetch_Download_item tries to interpret the name as a variable name
# Let it do so…
postConfigure = ''
sed -e '1ilibreoffice-translations-${version}.tar.xz=libreoffice-translations-${version}.tar.xz' -i Makefile
sed -e '1ilibreoffice-help-${version}.tar.xz=libreoffice-help-${version}.tar.xz' -i Makefile
# unit test sd_tiledrendering seems to be fragile
# http://nabble.documentfoundation.org/libreoffice-5-0-failure-in-CUT-libreofficekit-tiledrendering-td4150319.html
echo > ./sd/CppunitTest_sd_tiledrendering.mk
sed -e /CppunitTest_sd_tiledrendering/d -i sd/Module_sd.mk
# one more fragile test?
sed -e '/CPPUNIT_TEST(testTdf96536);/d' -i sw/qa/extras/uiwriter/uiwriter.cxx
'';
makeFlags = "SHELL=${bash}/bin/bash";
enableParallelBuilding = true;
buildPhase = ''
# This is required as some cppunittests require fontconfig configured
export FONTCONFIG_FILE=${fontsConf}
# This to avoid using /lib:/usr/lib at linking
sed -i '/gb_LinkTarget_LDFLAGS/{ n; /rpath-link/d;}' solenv/gbuild/platform/unxgcc.mk
find -name "*.cmd" -exec sed -i s,/lib:/usr/lib,, {} \;
make
'';
# It installs only things to $out/lib/libreoffice
postInstall = ''
mkdir -p $out/bin $out/share/desktop
mkdir -p "$out/share/gsettings-schemas/collected-for-libreoffice/glib-2.0/schemas/"
for a in sbase scalc sdraw smath swriter spadmin simpress soffice; do
ln -s $out/lib/libreoffice/program/$a $out/bin/$a
wrapProgram "$out/bin/$a" \
--prefix XDG_DATA_DIRS : \
"$out/share:$GSETTINGS_SCHEMAS_PATH" \
;
done
ln -s $out/bin/soffice $out/bin/libreoffice
ln -s $out/lib/libreoffice/share/xdg $out/share/applications
for f in $out/share/applications/*.desktop; do
substituteInPlace "$f" --replace "Exec=libreofficedev${major}.${minor}" "Exec=libreoffice"
substituteInPlace "$f" --replace "Exec=libreoffice${major}.${minor}" "Exec=libreoffice"
substituteInPlace "$f" --replace "Exec=libreoffice" "Exec=libreoffice"
done
cp -r sysui/desktop/icons "$out/share"
sed -re 's@Icon=libreofficedev[0-9.]*-?@Icon=@' -i "$out/share/applications/"*.desktop
'';
configureFlags = [
"${if withHelp then "" else "--without-help"}"
"--with-boost=${boost.dev}"
"--with-boost-libdir=${boost.lib}/lib"
"--with-beanshell-jar=${bsh}"
"--with-vendor=NixOS"
"--with-commons-logging-jar=${commonsLogging}/share/java/commons-logging-1.2.jar"
"--disable-report-builder"
"--enable-python=system"
"--enable-dbus"
(lib.enableFeature kdeIntegration "kde4")
"--with-package-format=installed"
"--enable-epm"
"--with-jdk-home=${jdk.home}"
"--with-ant-home=${ant}/lib/ant"
"--with-system-cairo"
"--with-system-libs"
"--with-system-headers"
"--with-system-openssl"
"--with-system-libabw"
"--with-system-libcmis"
"--with-system-libwps"
"--with-system-openldap"
"--with-system-coinmp"
# Without these, configure does not finish
"--without-junit"
# I imagine this helps. Copied from go-oo.
# Modified on every upgrade, though
"--disable-odk"
"--disable-postgresql-sdbc"
"--disable-firebird-sdbc"
"--without-fonts"
"--without-myspell-dicts"
"--without-doxygen"
# TODO: package these as system libraries
"--with-system-beanshell"
"--without-system-hsqldb"
"--without-system-altlinuxhyph"
"--without-system-lpsolve"
"--without-system-npapi-headers"
"--without-system-libetonyek"
"--without-system-libfreehand"
"--without-system-liblangtag"
"--without-system-libmspub"
"--without-system-libpagemaker"
"--without-system-libgltf"
# https://github.com/NixOS/nixpkgs/commit/5c5362427a3fa9aefccfca9e531492a8735d4e6f
"--without-system-orcus"
];
checkPhase = ''
make unitcheck
make slowcheck
'';
buildInputs = with xorg;
[ ant ArchiveZip autoconf automake bison boost cairo clucene_core
CompressZlib cppunit cups curl db dbus_glib expat file flex fontconfig
freetype GConf getopt gnome_vfs gperf gtk3 gtk
hunspell icu jdk lcms libcdr libexttextcat unixODBC libjpeg
libmspack librdf_redland librsvg libsndfile libvisio libwpd libwpg libX11
libXaw libXext libXi libXinerama libxml2 libxslt libXtst
libXdmcp libpthreadstubs mesa mythes gst_all_1.gstreamer
gst_all_1.gst-plugins-base gsettings_desktop_schemas glib
neon nspr nss openldap openssl ORBit2 pam perl pkgconfig poppler
python3 sablotron sane-backends tcsh unzip vigra which zip zlib
mdds bluez5 glibc libcmis libwps libabw
libxshmfence libatomic_ops graphite2 harfbuzz
librevenge libe-book libmwaw glm glew ncurses
libodfgen CoinMP librdf_rasqal defaultIconTheme makeWrapper
]
++ lib.optional kdeIntegration kde4.kdelibs;
meta = with lib; {
description = "Comprehensive, professional-quality productivity suite (Still/stable release)";
homepage = http://libreoffice.org/;
license = licenses.lgpl3;
maintainers = with maintainers; [ viric raskin ];
platforms = platforms.linux;
};
}

View File

@ -15,6 +15,7 @@ stdenv.mkDerivation {
''; '';
preInstall = '' preInstall = ''
rm -f INSTALL
mkdir -p $out/bin mkdir -p $out/bin
''; '';

View File

@ -3,6 +3,7 @@
, ApplicationServices, cf-private }: , ApplicationServices, cf-private }:
let let
# if you bump version, update pkgs.tortoisehg too or ping maintainer
version = "3.7.3"; version = "3.7.3";
name = "mercurial-${version}"; name = "mercurial-${version}";
in in

View File

@ -1,6 +1,6 @@
{ stdenv, fetchdarcs, rustUnstable, openssl, libssh }: { stdenv, fetchdarcs, rustPlatform, openssl, libssh }:
with rustUnstable; with rustPlatform;
buildRustPackage rec { buildRustPackage rec {
name = "pijul-${version}"; name = "pijul-${version}";

View File

@ -2,12 +2,11 @@
pythonPackages.buildPythonApplication rec { pythonPackages.buildPythonApplication rec {
name = "tortoisehg-${version}"; name = "tortoisehg-${version}";
version = "3.7.1"; version = "3.7.3";
namePrefix = "";
src = fetchurl { src = fetchurl {
url = "https://bitbucket.org/tortoisehg/targz/downloads/${name}.tar.gz"; url = "https://bitbucket.org/tortoisehg/targz/downloads/${name}.tar.gz";
sha256 = "1ycf8knwk1rs99s5caq611sk4c4nzwyzq8g35hw5kwj15b6dl4k6"; sha256 = "1vahiavpkf9ib2mx8z5i6f0kh072zycazmbrc4sl94p5pvv5w1dh";
}; };
pythonPath = with pythonPackages; [ pyqt4 mercurial qscintilla iniparse ]; pythonPath = with pythonPackages; [ pyqt4 mercurial qscintilla iniparse ];
@ -15,13 +14,10 @@ pythonPackages.buildPythonApplication rec {
propagatedBuildInputs = with pythonPackages; [ qscintilla iniparse ]; propagatedBuildInputs = with pythonPackages; [ qscintilla iniparse ];
doCheck = false; doCheck = false;
dontStrip = true;
postUnpack = '' buildPhase = "";
substituteInPlace $sourceRoot/setup.py \ installPhase = ''
--replace "sharedir = os.path.join(installcmd.install_data[rootlen:], 'share')" "sharedir = '$out/share/'" ${pythonPackages.python.executable} setup.py install --prefix=$out
'';
postInstall = ''
ln -s $out/bin/thg $out/bin/tortoisehg #convenient alias ln -s $out/bin/thg $out/bin/tortoisehg #convenient alias
''; '';

View File

@ -1,10 +1,12 @@
{ stdenv, fetchurl, writeScript, cdrtools, dvdauthor, ffmpeg, imagemagick, lame, mjpegtools, sox, transcode, vorbis-tools }: { stdenv, lib, fetchurl, writeScript, cdrtools, dvdauthor, ffmpeg, imagemagick, lame, mjpegtools, sox, transcode, vorbis-tools }:
let let
binPath = lib.makeBinPath [ cdrtools dvdauthor ffmpeg imagemagick lame mjpegtools sox transcode vorbis-tools ];
wrapper = writeScript "dvd-slideshow.sh" '' wrapper = writeScript "dvd-slideshow.sh" ''
#!/bin/bash #!/bin/bash
# wrapper script for dvd-slideshow programs # wrapper script for dvd-slideshow programs
export PATH=${cdrtools}/bin:${dvdauthor}/bin:${ffmpeg.bin}/bin:${imagemagick}/bin:${lame}/bin:${mjpegtools}/bin:${sox}/bin:${transcode}/bin:${vorbis-tools}/bin:$PATH export PATH=${binPath}:$PATH
dir=`dirname "$0"` dir=`dirname "$0"`
exe=`basename "$0"` exe=`basename "$0"`

View File

@ -40,16 +40,16 @@ assert rtmpSupport -> rtmpdump != null;
let let
rel = "Jarvis"; rel = "Jarvis";
ffmpeg_2_8_6 = fetchurl { ffmpeg_2_8_6 = fetchurl {
url = "https://github.com/xbmc/FFmpeg/archive/2.8.6-${rel}-16.0.tar.gz"; url = "https://github.com/xbmc/FFmpeg/archive/2.8.6-${rel}-16.1.tar.gz";
sha256 = "00cvjwfpz6ladmln4yny4d4viwflrbgrid1na412g5pif70qv3dh"; sha256 = "1qp8b97298l2pnhhcp7xczdfwr7q7ibxlk4vp8pfmxli2h272wan";
}; };
in stdenv.mkDerivation rec { in stdenv.mkDerivation rec {
name = "kodi-" + version; name = "kodi-" + version;
version = "16.0"; version = "16.1";
src = fetchurl { src = fetchurl {
url = "https://github.com/xbmc/xbmc/archive/${version}-${rel}.tar.gz"; url = "https://github.com/xbmc/xbmc/archive/${version}-${rel}.tar.gz";
sha256 = "0iirspvv7czf785l2lqf232dvdaj87srbn9ni97ngvnd6w9yl884"; sha256 = "047xpmz78k3d6nhk1x9s8z0bw1b1w9kca46zxkg86p3iyapwi0kx";
}; };
buildInputs = [ buildInputs = [

View File

@ -1,15 +1,15 @@
{ stdenv, lib, autoreconfHook, acl, go, file, git, wget, gnupg1, trousers, squashfsTools, { stdenv, lib, autoreconfHook, acl, go, file, git, wget, gnupg1, trousers, squashfsTools,
cpio, fetchurl, fetchFromGitHub, iptables, systemd, makeWrapper }: cpio, fetchurl, fetchFromGitHub, iptables, systemd, makeWrapper, glibc }:
let let
coreosImageRelease = "794.1.0"; coreosImageRelease = "991.0.0";
coreosImageSystemdVersion = "222"; coreosImageSystemdVersion = "225";
# TODO: track https://github.com/coreos/rkt/issues/1758 to allow "host" flavor. # TODO: track https://github.com/coreos/rkt/issues/1758 to allow "host" flavor.
stage1Flavours = [ "coreos" "fly" "host" ]; stage1Flavours = [ "coreos" "fly" "host" ];
in stdenv.mkDerivation rec { in stdenv.mkDerivation rec {
version = "1.2.0"; version = "1.4.0";
name = "rkt-${version}"; name = "rkt-${version}";
BUILDDIR="build-${name}"; BUILDDIR="build-${name}";
@ -17,15 +17,16 @@ in stdenv.mkDerivation rec {
rev = "v${version}"; rev = "v${version}";
owner = "coreos"; owner = "coreos";
repo = "rkt"; repo = "rkt";
sha256 = "0icsrh118mm3rabbcr0gd3b22m5rizdbqlrfp9d79g591p7bjh38"; sha256 = "0lnvqhg88aa6zx4wnkz17v3f529i9hi0y2aihfsq09pvsn56hwjl";
}; };
stage1BaseImage = fetchurl { stage1BaseImage = fetchurl {
url = "http://alpha.release.core-os.net/amd64-usr/${coreosImageRelease}/coreos_production_pxe_image.cpio.gz"; url = "http://alpha.release.core-os.net/amd64-usr/${coreosImageRelease}/coreos_production_pxe_image.cpio.gz";
sha256 = "05nzl3av6cawr8v203a8c95c443g6h1nfy2n4jmgvn0j4iyy44ym"; sha256 = "1vaimrbynhjh4f30rq92bv1h3c1lxnf8isx5c2qvnn3lghypss9k";
}; };
buildInputs = [ buildInputs = [
glibc.out glibc.static
autoreconfHook go file git wget gnupg1 trousers squashfsTools cpio acl systemd autoreconfHook go file git wget gnupg1 trousers squashfsTools cpio acl systemd
makeWrapper makeWrapper
]; ];

View File

@ -33,7 +33,7 @@ let
"$mod/Module.symvers" "$mod/Module.symvers"
fi fi
INSTALL_MOD_PATH="$out" INSTALL_MOD_DIR=misc \ INSTALL_MOD_PATH="$out" INSTALL_MOD_DIR=misc \
make -C "$MODULES_BUILD_DIR" DEPMOD=/do_not_use_depmod \ make -j $NIX_BUILD_CORES -C "$MODULES_BUILD_DIR" DEPMOD=/do_not_use_depmod \
"M=\$(PWD)/$mod" BUILD_TYPE="${buildType}" ${action} "M=\$(PWD)/$mod" BUILD_TYPE="${buildType}" ${action}
done done
''; '';
@ -144,7 +144,7 @@ in stdenv.mkDerivation {
buildPhase = '' buildPhase = ''
source env.sh source env.sh
kmk BUILD_TYPE="${buildType}" kmk -j $NIX_BUILD_CORES BUILD_TYPE="${buildType}"
${forEachModule "modules"} ${forEachModule "modules"}
''; '';

View File

@ -0,0 +1,74 @@
#!/bin/sh
# The file from which to extract *.ico files or a particular *.ico file.
# (e.g.: './KeePass.exe', './myLibrary.dll', './my/path/to/app.ico').
# As you notived, the utility can extract icons from a windows executable or
# dll.
rscFile=$1
# A regexp that can extract the image size from the file name. Because we
# use 'icotool', this value should usually be set to something like
# '[^\.]+\.exe_[0-9]+_[0-9]+_[0-9]+_[0-9]+_([0-9]+x[0-9]+)x[0-9]+\.png'.
# A reg expression may be written at some point that relegate this to
# an implementation detail.
sizeRegex=$2
# A regexp replace expression that will be used with 'sizeRegex' to create
# a proper size directory (e.g.: '48x48'). Usually this is left to '\1'.
sizeReplaceExp=$3
# A regexp that can extract the name of the target image from the file name
# of the image (usually png) extracted from the *.ico file(s). A good
# default is '([^\.]+).+' which gets the basename without extension.
nameRegex=$4
# A regexp replace expression that will be used alongside 'nameRegex' to create
# a icon file name. Note that you usually put directly you icon name here
# without any extension (e.g.: 'my-app'). But in case you've got something
# fancy, it will usually be '\1'.
nameReplaceExp=$5
# The
# out=./myOut
out=$6
# An optional temp dir.
if [ "" != "$7" ]; then
tmp=$7
isOwnerOfTmpDir=false
else
tmp=`mktemp -d`
isOwnerOfTmpDir=true
fi
rm -rf $tmp/png $tmp/ico
mkdir -p $tmp/png $tmp/ico
# Extract the ressource file's extension.
rscFileExt=`echo "$rscFile" | sed -re 's/.+\.(.+)$/\1/'`
if [ "ico" = "$rscFileExt" ]; then
cp -p $rscFile $tmp/ico
else
wrestool -x --output=$tmp/ico -t14 $rscFile
fi
icotool --icon -x --palette-size=0 -o $tmp/png $tmp/ico/*.ico
mkdir -p $out
for i in $tmp/png/*.png; do
fn=`basename "$i"`
size=$(echo $fn | sed -re 's/'${sizeRegex}'/'${sizeReplaceExp}'/')
name=$(echo $fn | sed -re 's/'${nameRegex}'/'${nameReplaceExp}'/')
targetDir=$out/share/icons/hicolor/$size/apps
targetFile=$targetDir/$name.png
mkdir -p $targetDir
mv $i $targetFile
done
rm -rf "$tmp/png" "$tmp/ico"
if $isOwnerOfTmpDir; then
rm -rf "$tmp"
fi

View File

@ -0,0 +1,28 @@
#!/bin/sh
SCRIPT_DIR=`cd "$(dirname $0)" && pwd`
# The '*.ico' file that needs to be converted (e.g.: "./my/path/to/file.ico").
icoFile="$1"
# The desired name of created icon files without extension. (e.g.: "my-app").
targetIconName="$2"
# The output directory where the free desktop hierarchy will be created.
# (e.g.: "./path/to/my/out" or usually in nix "$out"). Note that the
# whole directory hierarchy to the icon will be created in the specified
# output directory (e.g.: "$out/share/icons/hicolor/48x48/apps/my-app.png").
out="$3"
# An optional temp directory location (e.g.: ./tmp). If not specified
# a random '/tmp' directory will be created.
tmp="$4"
$SCRIPT_DIR/extractWinRscIconsToStdFreeDesktopDir.sh \
"$icoFile" \
'[^\.]+_[0-9]+_([0-9]+x[0-9]+)x[0-9]+\.png' \
'\1' \
'([^\.]+).+' \
"$targetIconName" \
"$out" \
"$tmp"

View File

@ -0,0 +1,31 @@
{ stdenv, icoutils }:
stdenv.mkDerivation {
name = "icon-conv-tools-0.0.0";
src = ./.;
buildInputs = [ icoutils ];
patchPhase = ''
substituteInPlace "./bin/extractWinRscIconsToStdFreeDesktopDir.sh" \
--replace "icotool" "${icoutils}/bin/icotool" \
--replace "wrestool" "${icoutils}/bin/wrestool"
'';
buildPhase = ''
mkdir -p "$out/bin"
cp -p "./bin/"* "$out/bin"
'';
installPhase = "true";
dontPatchELF = true;
dontStrip = true;
meta = {
description = "Tools for icon conversion specific to nix package manager";
maintainers = with stdenv.lib.maintainers; [ jraygauthier ];
};
}

View File

@ -329,14 +329,14 @@ rec {
buildInputs = [ utillinux ]; buildInputs = [ utillinux ];
buildCommand = '' buildCommand = ''
ln -s ${linux}/lib /lib ln -s ${linux}/lib /lib
${module_init_tools}/bin/modprobe loop ${kmod}/bin/modprobe loop
${module_init_tools}/bin/modprobe ext4 ${kmod}/bin/modprobe ext4
${module_init_tools}/bin/modprobe hfs ${kmod}/bin/modprobe hfs
${module_init_tools}/bin/modprobe hfsplus ${kmod}/bin/modprobe hfsplus
${module_init_tools}/bin/modprobe squashfs ${kmod}/bin/modprobe squashfs
${module_init_tools}/bin/modprobe iso9660 ${kmod}/bin/modprobe iso9660
${module_init_tools}/bin/modprobe ufs ${kmod}/bin/modprobe ufs
${module_init_tools}/bin/modprobe cramfs ${kmod}/bin/modprobe cramfs
mknod /dev/loop0 b 7 0 mknod /dev/loop0 b 7 0
mkdir -p $out mkdir -p $out
@ -355,12 +355,12 @@ rec {
buildInputs = [ utillinux mtdutils ]; buildInputs = [ utillinux mtdutils ];
buildCommand = '' buildCommand = ''
ln -s ${linux}/lib /lib ln -s ${linux}/lib /lib
${module_init_tools}/bin/modprobe mtd ${kmod}/bin/modprobe mtd
${module_init_tools}/bin/modprobe mtdram total_size=131072 ${kmod}/bin/modprobe mtdram total_size=131072
${module_init_tools}/bin/modprobe mtdchar ${kmod}/bin/modprobe mtdchar
${module_init_tools}/bin/modprobe mtdblock ${kmod}/bin/modprobe mtdblock
${module_init_tools}/bin/modprobe jffs2 ${kmod}/bin/modprobe jffs2
${module_init_tools}/bin/modprobe zlib ${kmod}/bin/modprobe zlib
mknod /dev/mtd0 c 90 0 mknod /dev/mtd0 c 90 0
mknod /dev/mtdblock0 b 31 0 mknod /dev/mtdblock0 b 31 0

View File

@ -8,7 +8,7 @@ let
in in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "geolite-legacy-${version}"; name = "geolite-legacy-${version}";
version = "2016-04-19"; version = "2016-04-25";
srcGeoIP = fetchDB srcGeoIP = fetchDB
"GeoLiteCountry/GeoIP.dat.gz" "GeoIP.dat.gz" "GeoLiteCountry/GeoIP.dat.gz" "GeoIP.dat.gz"
@ -24,10 +24,10 @@ stdenv.mkDerivation rec {
"11igx6r0fypih5i3f0mrcv044pivnl45mq6pkq81i81cv28hfcn8"; "11igx6r0fypih5i3f0mrcv044pivnl45mq6pkq81i81cv28hfcn8";
srcGeoIPASNum = fetchDB srcGeoIPASNum = fetchDB
"asnum/GeoIPASNum.dat.gz" "GeoIPASNum.dat.gz" "asnum/GeoIPASNum.dat.gz" "GeoIPASNum.dat.gz"
"0xf5ciqclk9pb82kz9zkv15wb8vm32i456jcwkf6rjv18h3wjl74"; "1b7w8sdazxq5sv3nz1s28420374vf4wn6h2zasbg68kc2cxwdh2w";
srcGeoIPASNumv6 = fetchDB srcGeoIPASNumv6 = fetchDB
"asnum/GeoIPASNumv6.dat.gz" "GeoIPASNumv6.dat.gz" "asnum/GeoIPASNumv6.dat.gz" "GeoIPASNumv6.dat.gz"
"0bgxw4xdkvpwhg7fdillnk8qk14hgld4icvp81d15pz4j0b9jwq9"; "1iy6myanmx8h4ha493bz80q6wjwgjlbk7cmliyw1806dd7fhqvwi";
meta = with stdenv.lib; { meta = with stdenv.lib; {
description = "GeoLite Legacy IP geolocation databases"; description = "GeoLite Legacy IP geolocation databases";

View File

@ -1,11 +1,13 @@
{stdenv, fetchurl, pkgconfig, atk, cairo, glib, gtk, pango, {stdenv, fetchurl, pkgconfig, atk, cairo, glib, gtk, pango,
libxml2Python, perl, intltool, gettext}: libxml2Python, perl, intltool, gettext}:
stdenv.mkDerivation { stdenv.mkDerivation rec {
name = "gtksourceview-2.9.9"; name = "gtksourceview-${version}";
version = "2.10.5";
src = fetchurl { src = fetchurl {
url = mirror://gnome/sources/gtksourceview/2.9/gtksourceview-2.9.9.tar.bz2; url = "mirror://gnome/sources/gtksourceview/2.10/${name}.tar.bz2";
sha256 = "0d0i586nj8jsqqfcjcvaj0yzc3sid3s1a4y62xr0qbddkbn1wllj"; sha256 = "c585773743b1df8a04b1be7f7d90eecdf22681490d6810be54c81a7ae152191e";
}; };
buildInputs = [pkgconfig atk cairo glib gtk pango libxml2Python perl intltool buildInputs = [pkgconfig atk cairo glib gtk pango libxml2Python perl intltool
gettext]; gettext];

View File

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

View File

@ -40,8 +40,8 @@
, ghcjsBootSrc ? fetchgit { , ghcjsBootSrc ? fetchgit {
url = git://github.com/ghcjs/ghcjs-boot.git; url = git://github.com/ghcjs/ghcjs-boot.git;
rev = "758e79e420403e0f6625eda19b10c46564f7cbb5"; rev = "8c549931da27ba9e607f77195208ec156c840c8a";
sha256 = "0gq1mc86cb2z875a7sdj44yy8g95rwxzkl3z1q8gg33k05s3b58r"; sha256 = "0yg9bnabja39qysh9pg1335qbvbc0r2mdw6cky94p7kavacndfdv";
fetchSubmodules = true; fetchSubmodules = true;
} }
, ghcjsBoot ? import ./ghcjs-boot.nix { , ghcjsBoot ? import ./ghcjs-boot.nix {

View File

@ -15,11 +15,11 @@ in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "go-${version}"; name = "go-${version}";
version = "1.6"; version = "1.6.2";
src = fetchurl { src = fetchurl {
url = "https://github.com/golang/go/archive/go${version}.tar.gz"; url = "https://github.com/golang/go/archive/go${version}.tar.gz";
sha256 = "04g7w34qamgy9gqpy75xm03s8xbbslv1735iv1a06z8sphpkgs7m"; sha256 = "17sfhg3xfnakk666wlsbhxp4vbn19hlywf5cn1zfcd4zqkcyx30h";
}; };
# perl is used for testing go vet # perl is used for testing go vet
@ -96,12 +96,6 @@ stdenv.mkDerivation rec {
patches = [ patches = [
./remove-tools-1.5.patch ./remove-tools-1.5.patch
# Fix bug when using musl (see https://github.com/golang/go/issues/14476)
# Should be fixed by go 1.6.1
(fetchpatch {
url = "https://github.com/golang/go/commit/1439158120742e5f41825de90a76b680da64bf76.patch";
sha256 = "0yixpbx056ns5wgd3f4absgiyc2ymmqk8mkhhz5ja90dvilzxcwd";
})
] ]
# -ldflags=-s is required to compile on Darwin, see # -ldflags=-s is required to compile on Darwin, see
# https://github.com/golang/go/issues/11994 # https://github.com/golang/go/issues/11994

View File

@ -119,12 +119,6 @@ let result = stdenv.mkDerivation rec {
done done
fi fi
# construct the rpath
rpath=
for i in $libraries; do
rpath=$rpath''${rpath:+:}$i/lib:$i/lib64
done
if test -z "$installjdk"; then if test -z "$installjdk"; then
jrePath=$out jrePath=$out
else else
@ -176,6 +170,8 @@ let result = stdenv.mkDerivation rec {
[stdenv.cc.libc glib libxml2 libav_0_8 ffmpeg libxslt mesa_noglu xorg.libXxf86vm alsaLib fontconfig freetype gnome.pango gnome.gtk cairo gdk_pixbuf atk] ++ [stdenv.cc.libc glib libxml2 libav_0_8 ffmpeg libxslt mesa_noglu xorg.libXxf86vm alsaLib fontconfig freetype gnome.pango gnome.gtk cairo gdk_pixbuf atk] ++
(if swingSupport then [xorg.libX11 xorg.libXext xorg.libXtst xorg.libXi xorg.libXp xorg.libXt xorg.libXrender stdenv.cc.cc] else []); (if swingSupport then [xorg.libX11 xorg.libXext xorg.libXtst xorg.libXi xorg.libXp xorg.libXt xorg.libXrender stdenv.cc.cc] else []);
rpath = stdenv.lib.strings.makeLibraryPath libraries;
passthru.mozillaPlugin = if installjdk then "/jre/lib/${architecture}/plugins" else "/lib/${architecture}/plugins"; passthru.mozillaPlugin = if installjdk then "/jre/lib/${architecture}/plugins" else "/lib/${architecture}/plugins";
passthru.jre = result; # FIXME: use multiple outputs or return actual JRE package passthru.jre = result; # FIXME: use multiple outputs or return actual JRE package

View File

@ -1,9 +1,9 @@
import ./jdk-linux-base.nix { import ./jdk-linux-base.nix {
productVersion = "8"; productVersion = "8";
patchVersion = "77"; patchVersion = "91";
downloadUrl = http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html; downloadUrl = http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html;
sha256_i686 = "14hyniai5l9qpg0pbnxa4rhyhk90qgihszfkn8h3vziqhmvrp27j"; sha256_i686 = "0lndni81vfpz2l6zb8zsshaavk0483q5jc8yzj4fdjv6wnshbkay";
sha256_x86_64 = "0hyzvvj4bf0r4jda8fv3k06d9bf37nji37qbq067mcjp5abc0zd4"; sha256_x86_64 = "0lkm3fz1vdi69f34sysavvh3abx603j1frc9hxvr08pwvmm536vg";
jceName = "jce_policy-8.zip"; jceName = "jce_policy-8.zip";
jceDownloadUrl = http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html; jceDownloadUrl = http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html;
sha256JCE = "0n8b6b8qmwb14lllk2lk1q1ahd3za9fnjigz5xn65mpg48whl0pk"; sha256JCE = "0n8b6b8qmwb14lllk2lk1q1ahd3za9fnjigz5xn65mpg48whl0pk";

View File

@ -1,9 +1,9 @@
import ./jdk-linux-base.nix { import ./jdk-linux-base.nix {
productVersion = "8"; productVersion = "8";
patchVersion = "77"; patchVersion = "92";
downloadUrl = http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html; downloadUrl = http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html;
sha256_i686 = "14hyniai5l9qpg0pbnxa4rhyhk90qgihszfkn8h3vziqhmvrp27j"; sha256_i686 = "095j2hh2xas05jajy4qdj9hxq3k460x4m12rcaxkaxw754imj0vj";
sha256_x86_64 = "0hyzvvj4bf0r4jda8fv3k06d9bf37nji37qbq067mcjp5abc0zd4"; sha256_x86_64 = "11wrqd3qbkhimbw9n4g9i0635pjhhnijwxyid7lvjv26kdgg58vr";
jceName = "jce_policy-8.zip"; jceName = "jce_policy-8.zip";
jceDownloadUrl = http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html; jceDownloadUrl = http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html;
sha256JCE = "0n8b6b8qmwb14lllk2lk1q1ahd3za9fnjigz5xn65mpg48whl0pk"; sha256JCE = "0n8b6b8qmwb14lllk2lk1q1ahd3za9fnjigz5xn65mpg48whl0pk";

View File

@ -1,11 +1,11 @@
{ stdenv, callPackage }: { stdenv, callPackage }:
callPackage ./generic.nix { callPackage ./generic.nix {
shortVersion = "1.7.0"; shortVersion = "1.8.0";
isRelease = true; isRelease = true;
forceBundledLLVM = false; forceBundledLLVM = false;
configureFlags = [ "--release-channel=stable" ]; configureFlags = [ "--release-channel=stable" ];
srcSha = "05f4v6sfmvkwsv6a7jp9sxsm84s0gdvqyf2wwdi1ilg9k8nxzgd4"; srcSha = "1s03aymmhhrndq29sv9cs8s4p1sg8qvq8ds6lyp6s4ny8nyvdpzy";
/* Rust is bootstrapped from an earlier built version. We need /* Rust is bootstrapped from an earlier built version. We need
to fetch these earlier versions, which vary per platform. to fetch these earlier versions, which vary per platform.
@ -15,12 +15,12 @@ callPackage ./generic.nix {
for the tagged release and not a snapshot in the current HEAD. for the tagged release and not a snapshot in the current HEAD.
*/ */
snapshotHashLinux686 = "a09c4a4036151d0cb28e265101669731600e01f2"; snapshotHashLinux686 = "5f194aa7628c0703f0fd48adc4ec7f3cc64b98c7";
snapshotHashLinux64 = "97e2a5eb8904962df8596e95d6e5d9b574d73bf4"; snapshotHashLinux64 = "d29b7607d13d64078b6324aec82926fb493f59ba";
snapshotHashDarwin686 = "ca52d2d3ba6497ed007705ee3401cf7efc136ca1"; snapshotHashDarwin686 = "4c8e42dd649e247f3576bf9dfa273327b4907f9c";
snapshotHashDarwin64 = "3c44ffa18f89567c2b81f8d695e711c86d81ffc7"; snapshotHashDarwin64 = "411a41363f922d1d93fa62ff2fedf5c35e9cccb2";
snapshotDate = "2015-12-18"; snapshotDate = "2016-02-17";
snapshotRev = "3391630"; snapshotRev = "4d3eebf";
patches = [ ./patches/remove-uneeded-git.patch ] patches = [ ./patches/remove-uneeded-git.patch ]
++ stdenv.lib.optional stdenv.needsPax ./patches/grsec.patch; ++ stdenv.lib.optional stdenv.needsPax ./patches/grsec.patch;

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