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
- [ ] 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)
- [ ] NixOS
- [ ] OS X

View File

@ -119,6 +119,6 @@ done
</screen>
</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>

View File

@ -102,6 +102,7 @@
dmalikov = "Dmitry Malikov <malikov.d.y@gmail.com>";
dochang = "Desmond O. Chang <dochang@gmail.com>";
doublec = "Chris Double <chris.double@double.co.nz>";
drewkett = "Andrew Burkett <burkett.andrew@gmail.com>";
ebzzry = "Rommel Martinez <ebzzry@gmail.com>";
ederoyd46 = "Matthew Brown <matt@ederoyd.co.uk>";
eduarrrd = "Eduard Bachmakov <e.bachmakov@gmail.com>";
@ -253,7 +254,7 @@
notthemessiah = "Brian Cohen <brian.cohen.88@gmail.com>";
np = "Nicolas Pouillard <np.nix@nicolaspouillard.fr>";
nslqqq = "Nikita Mikhailov <nslqqq@gmail.com>";
obadz = "obadz <dav-nixos@odav.org>";
obadz = "obadz <nixos@obadz.com>";
ocharles = "Oliver Charles <ollie@ocharles.org.uk>";
odi = "Oliver Dunkl <oliver.dunkl@gmail.com>";
offline = "Jaka Hudoklin <jakahudoklin@gmail.com>";
@ -296,6 +297,7 @@
refnil = "Martin Lavoie <broemartino@gmail.com>";
relrod = "Ricky Elrod <ricky@elrod.me>";
renzo = "Renzo Carbonara <renzocarbonara@gmail.com>";
retrry = "Tadas Barzdžius <retrry@gmail.com>";
rick68 = "Wei-Ming Yang <rick68@gmail.com>";
rickynils = "Rickard Nilsson <rickynils@gmail.com>";
rnhmjoj = "Michele Guerini Rocco <micheleguerinirocco@me.com>";
@ -338,6 +340,7 @@
spwhitt = "Spencer Whitt <sw@swhitt.me>";
stephenmw = "Stephen Weinberg <stephen@q5comm.com>";
steveej = "Stefan Junker <mail@stefanjunker.de>";
swistak35 = "Rafał Łasocha <me@swistak35.com>";
szczyp = "Szczyp <qb@szczyp.com>";
sztupi = "Attila Sztupak <attila.sztupak@gmail.com>";
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
<filename>/nix/var/nix/profiles/per-user/root/channels/nixos</filename>).
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>
$ 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
$ cd nixpkgs
$ git remote add channels git://github.com/NixOS/nixpkgs-channels.git
$ git remote update channels
</screen>
This will check out the latest NixOS sources to
<filename><replaceable>/my/sources</replaceable>/nixpkgs/nixos</filename>
and the Nixpkgs sources to
<filename><replaceable>/my/sources</replaceable>/nixpkgs</filename>.
(The NixOS source tree lives in a subdirectory of the Nixpkgs
repository.) The remote <literal>channels</literal> refers to a
read-only repository that tracks the Nixpkgs/NixOS channels (see <xref
linkend="sec-upgrading"/> for more information about channels). Thus,
the Git branch <literal>channels/nixos-14.12</literal> will contain
the latest built and tested version available in the
<literal>nixos-14.12</literal> channel.</para>
This will check out the latest Nixpkgs sources to
<filename>./nixpkgs</filename> the NixOS sources to
<filename>./nixpkgs/nixos</filename>. (The NixOS source tree lives in
a subdirectory of the Nixpkgs repository.) The remote
<literal>channels</literal> refers to a read-only repository that
tracks the Nixpkgs/NixOS channels (see <xref linkend="sec-upgrading"/>
for more information about channels). Thus, the Git branch
<literal>channels/nixos-14.12</literal> will contain the latest built
and tested version available in the <literal>nixos-14.12</literal>
channel.</para>
<para>Its often inconvenient to develop directly on the master
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.
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:
# 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.
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}
# `nixos-rebuild' requires an /etc/NIXOS.

View File

@ -31,13 +31,13 @@ in
# unload module during suspend/hibernate as it crashes the whole system
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
powerManagement.resumeCommands = ''
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
echo "unpacking the NixOS/Nixpkgs sources..."
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
mkdir -m 0700 -p /root/.nix-defexpr
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
# 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
# /etc/NIXOS tag.
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

View File

@ -113,11 +113,11 @@ in
${pkgs.e2fsprogs}/bin/resize2fs $rootPart
# 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.
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.
rm -f /nix-path-registration

View File

@ -52,8 +52,7 @@ in
# Include some utilities that are useful for installing or repairing
# the system.
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.mssys # for writing Microsoft boot sectors / MBRs
pkgs.parted

View File

@ -49,8 +49,7 @@ in
# Include some utilities that are useful for installing or repairing
# the system.
environment.systemPackages =
[ pkgs.subversion # for nixos-checkout
pkgs.w3m # needed for the manual anyway
[ pkgs.w3m # needed for the manual anyway
pkgs.ddrescue
pkgs.ccrypt
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
# CD in the Nix database in the tmpfs.
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
fi
# nixos-rebuild also requires a "system" profile and an
# /etc/NIXOS tag.
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";
};
path = [ pkgs.gnutar pkgs.xz.bin config.nix.package ];
path = [ pkgs.gnutar pkgs.xz.bin config.nix.package.out ];
script = ''
${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
echo "building Nix..." >&2
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>' --add-root $tmpDir/nix.drv --indirect -A nix "${extraBuildFlags[@]}")"; then
nixStorePath="$(prebuiltNix "$(uname -m)")"

View File

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

View File

@ -263,6 +263,7 @@
caddy = 239;
taskd = 240;
factorio = 241;
emby = 242;
# 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;
taskd = 240;
factorio = 241;
emby = 242;
# When adding a gid, make sure it doesn't match an existing
# uid. Users and groups with the same name should have equal

View File

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

View File

@ -37,12 +37,12 @@ in {
# After booting, register the contents of the Nix store in the Nix
# database.
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
fi
# 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

View File

@ -68,6 +68,10 @@ with lib;
# proxy
(mkRenamedOptionModule [ "nix" "proxy" ] [ "networking" "proxy" "default" ])
# sandboxing
(mkRenamedOptionModule [ "nix" "useChroot" ] [ "nix" "useSandbox" ])
(mkRenamedOptionModule [ "nix" "chrootDirs" ] [ "nix" "sandboxPaths" ])
# KDE
(mkRenamedOptionModule [ "kde" "extraPackages" ] [ "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;
nix = cfg.package;
nix = cfg.package.out;
makeNixBuildUser = nr:
{ name = "nixbld${toString nr}";
@ -24,8 +24,8 @@ let
nixConf =
let
# If we're using a chroot for builds, then provide /bin/sh in
# the chroot as a bind-mount to bash. This means we also need to
# If we're using sandbox for builds, then provide /bin/sh in
# the sandbox as a bind-mount to bash. This means we also need to
# include the entire closure of bash.
sh = pkgs.stdenv.shell;
binshDeps = pkgs.writeReferencesToFile sh;
@ -39,8 +39,8 @@ let
build-users-group = nixbld
build-max-jobs = ${toString (cfg.maxJobs)}
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-chroot-dirs = ${toString cfg.chrootDirs} /bin/sh=${sh} $(echo $extraPaths)
build-use-sandbox = ${if (builtins.isBool cfg.useSandbox) then (if cfg.useSandbox then "true" else "false") else cfg.useSandbox}
build-sandbox-paths = ${toString cfg.sandboxPaths} /bin/sh=${sh} $(echo $extraPaths)
binary-caches = ${toString cfg.binaryCaches}
trusted-binary-caches = ${toString cfg.trustedBinaryCaches}
binary-cache-public-keys = ${toString cfg.binaryCachePublicKeys}
@ -65,8 +65,8 @@ in
package = mkOption {
type = types.package;
default = pkgs.nix.out;
defaultText = "pkgs.nix.out";
default = pkgs.nix;
defaultText = "pkgs.nix";
description = ''
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"]);
default = false;
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
impurities in builds by disallowing access to dependencies
outside of the Nix store.
";
};
chrootDirs = mkOption {
sandboxPaths = mkOption {
type = types.listOf types.str;
default = [];
example = [ "/dev" "/proc" ];
description =
''
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 =
{ 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;
};

View File

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

View File

@ -80,7 +80,7 @@ in
preStart = ''
mkdir -p -m 0755 /afs
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}/bin/fs setcrypt ${if cfg.crypt then "on" else "off"}
'';
@ -92,7 +92,7 @@ in
preStop = ''
${pkgs.utillinux}/bin/umount /afs
${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}/lib"; where = "${stateDir}/lib"; }
{ what = "${pkgs.mongodb248}/bin"; where = "${stateDir}/bin"; }
{ what = "${cfg.dataDir}"; where = "${stateDir}/data"; }
];
systemdMountPoints = map (m: "${utils.escapeSystemdPath m.where}.mount") mountPoints;
ports = [ 6080 6880 6443 6843 ];
@ -23,6 +24,15 @@ in
default = true;
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" ];
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_SECRET_KEY_FILE = cfg.secretKeyFile;

View File

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

View File

@ -17,6 +17,10 @@ let
what = "${pkgs.mongodb}/bin";
where = "${stateDir}/bin";
}
{
what = "${cfg.dataDir}";
where = "${stateDir}/data";
}
];
systemdMountPoints = map (m: "${utils.escapeSystemdPath m.where}.mount") mountPoints;
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 {
@ -62,7 +76,7 @@ in
bindsTo = systemdMountPoints;
unitConfig.RequiresMountsFor = stateDir;
# 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 = ''
# 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 (pkgs) heimdal;
inherit (pkgs) heimdalFull;
stateDir = "/var/heimdal";
in
@ -33,7 +33,7 @@ in
config = mkIf config.services.kerberos_server.enable {
environment.systemPackages = [ heimdal ];
environment.systemPackages = [ heimdalFull ];
services.xinetd.enable = true;
services.xinetd.services = lib.singleton
@ -42,7 +42,7 @@ in
protocol = "tcp";
user = "root";
server = "${pkgs.tcp_wrappers}/sbin/tcpd";
serverArgs = "${pkgs.heimdal}/sbin/kadmind";
serverArgs = "${pkgs.heimdalFull}/sbin/kadmind";
};
systemd.services.kdc = {
@ -51,13 +51,13 @@ in
preStart = ''
mkdir -m 0755 -p ${stateDir}
'';
script = "${heimdal}/sbin/kdc";
script = "${heimdalFull}/sbin/kdc";
};
systemd.services.kpasswdd = {
description = "Kerberos Password Changing daemon";
wantedBy = [ "multi-user.target" ];
script = "${heimdal}/sbin/kpasswdd";
script = "${heimdalFull}/sbin/kpasswdd";
};
};

View File

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

View File

@ -499,7 +499,7 @@ in
}
] ++ flip map args.devices (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;
nix = config.nix.package;
nix = config.nix.package.out;
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..."
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
userData=/etc/ec2-metadata/user-data

View File

@ -62,10 +62,10 @@ in
echo Register the paths in the Nix database.
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.
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 ""
echo nixos-rebuild requires an /etc/NIXOS.

View File

@ -62,10 +62,10 @@ in
# Register the paths in the Nix database.
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.
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 ""

View File

@ -28,14 +28,23 @@ let
# Initialise the container side of the veth pair.
if [ "$PRIVATE_NETWORK" = 1 ]; then
ip link set host0 name eth0
ip link set dev eth0 up
if [ -n "$LOCAL_ADDRESS" ]; then
ip addr add $LOCAL_ADDRESS dev eth0
fi
if [ -n "$LOCAL_ADDRESS6" ]; then
ip -6 addr add $LOCAL_ADDRESS6 dev eth0
fi
if [ -n "$HOST_ADDRESS" ]; then
ip route add $HOST_ADDRESS dev eth0
ip route add default via $HOST_ADDRESS
fi
if [ -n "$LOCAL_ADDRESS" ]; then
ip addr add $LOCAL_ADDRESS dev eth0
if [ -n "$HOST_ADDRESS6" ]; then
ip -6 route add $HOST_ADDRESS6 dev eth0
ip -6 route add default via $HOST_ADDRESS6
fi
fi
@ -48,7 +57,7 @@ let
system = config.nixpkgs.system;
bindMountOpts = { name, config, ... }: {
options = {
mountPoint = mkOption {
example = "/mnt/usb";
@ -68,13 +77,13 @@ let
description = "Determine whether the mounted path will be accessed in read-only mode.";
};
};
config = {
mountPoint = mkDefault name;
};
};
mkBindFlag = d:
let flagPrefix = if d.isReadOnly then " --bind-ro=" else " --bind=";
mountstr = if d.hostPath != null then "${d.hostPath}:${d.mountPoint}" else "${d.mountPoint}";
@ -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 {
type = types.nullOr types.str;
default = null;
example = "10.231.136.1";
description = ''
The IPv4 address assigned to the host interface.
(Not used when hostBridge is set.)
'';
};
hostAddress6 = mkOption {
type = types.nullOr types.string;
default = null;
example = "fc00::1";
description = ''
The IPv6 address assigned to the host interface.
(Not used when hostBridge is set.)
'';
};
@ -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 {
type = types.listOf types.string;
default = [];
@ -185,7 +225,7 @@ in
example = { "/home" = { hostPath = "/home/alice";
isReadOnly = false; };
};
description =
''
An extra list of directories that is bound to the container.
@ -238,154 +278,180 @@ in
};
config = mkIf (config.boot.enableContainers) {
config = mkIf (config.boot.enableContainers) (let
systemd.services."container@" =
{ description = "Container '%i'";
unit = {
description = "Container '%i'";
unitConfig.RequiresMountsFor = [ "/var/lib/containers/%i" ];
unitConfig.RequiresMountsFor = [ "/var/lib/containers/%i" ];
path = [ pkgs.iproute ];
path = [ pkgs.iproute ];
environment.INSTANCE = "%i";
environment.root = "/var/lib/containers/%i";
environment.INSTANCE = "%i";
environment.root = "/var/lib/containers/%i";
preStart =
''
# Clean up existing machined registration and interfaces.
machinectl terminate "$INSTANCE" 2> /dev/null || true
preStart =
''
# Clean up existing machined registration and interfaces.
machinectl terminate "$INSTANCE" 2> /dev/null || true
if [ "$PRIVATE_NETWORK" = 1 ]; then
ip link del dev "ve-$INSTANCE" 2> /dev/null || true
if [ "$PRIVATE_NETWORK" = 1 ]; then
ip link del dev "ve-$INSTANCE" 2> /dev/null || true
ip link del dev "vb-$INSTANCE" 2> /dev/null || true
fi
'';
script =
''
mkdir -p -m 0755 "$root/etc" "$root/var/lib"
mkdir -p -m 0700 "$root/var/lib/private" "$root/root" /run/containers
if ! [ -e "$root/etc/os-release" ]; then
touch "$root/etc/os-release"
fi
mkdir -p -m 0755 \
"/nix/var/nix/profiles/per-container/$INSTANCE" \
"/nix/var/nix/gcroots/per-container/$INSTANCE"
cp --remove-destination /etc/resolv.conf "$root/etc/resolv.conf"
if [ "$PRIVATE_NETWORK" = 1 ]; then
extraFlags+=" --network-veth"
if [ -n "$HOST_BRIDGE" ]; then
extraFlags+=" --network-bridge=$HOST_BRIDGE"
fi
fi
for iface in $INTERFACES; do
extraFlags+=" --network-interface=$iface"
done
if [ "$PRIVATE_NETWORK" = 1 ]; then
ip link del dev "ve-$INSTANCE" 2> /dev/null || true
for iface in $MACVLANS; do
extraFlags+=" --network-macvlan=$iface"
done
# If the host is 64-bit and the container is 32-bit, add a
# --personality flag.
${optionalString (config.nixpkgs.system == "x86_64-linux") ''
if [ "$(< ''${SYSTEM_PATH:-/nix/var/nix/profiles/per-container/$INSTANCE/system}/system)" = i686-linux ]; then
extraFlags+=" --personality=x86"
fi
'';
script =
''
mkdir -p -m 0755 "$root/etc" "$root/var/lib"
mkdir -p -m 0700 "$root/var/lib/private" "$root/root" /run/containers
if ! [ -e "$root/etc/os-release" ]; then
touch "$root/etc/os-release"
fi
mkdir -p -m 0755 \
"/nix/var/nix/profiles/per-container/$INSTANCE" \
"/nix/var/nix/gcroots/per-container/$INSTANCE"
cp --remove-destination /etc/resolv.conf "$root/etc/resolv.conf"
if [ "$PRIVATE_NETWORK" = 1 ]; then
extraFlags+=" --network-veth"
fi
for iface in $INTERFACES; do
extraFlags+=" --network-interface=$iface"
done
for iface in $MACVLANS; do
extraFlags+=" --network-macvlan=$iface"
done
# If the host is 64-bit and the container is 32-bit, add a
# --personality flag.
${optionalString (config.nixpkgs.system == "x86_64-linux") ''
if [ "$(< ''${SYSTEM_PATH:-/nix/var/nix/profiles/per-container/$INSTANCE/system}/system)" = i686-linux ]; then
extraFlags+=" --personality=x86"
fi
''}
''}
# Run systemd-nspawn without startup notification (we'll
# wait for the container systemd to signal readiness).
EXIT_ON_REBOOT=1 NOTIFY_SOCKET= \
exec ${config.systemd.package}/bin/systemd-nspawn \
--keep-unit \
-M "$INSTANCE" -D "$root" $extraFlags \
$EXTRA_NSPAWN_FLAGS \
--bind-ro=/nix/store \
--bind-ro=/nix/var/nix/db \
--bind-ro=/nix/var/nix/daemon-socket \
--bind=/run/systemd/notify:/var/lib/private/host-notify \
--bind="/nix/var/nix/profiles/per-container/$INSTANCE:/nix/var/nix/profiles" \
--bind="/nix/var/nix/gcroots/per-container/$INSTANCE:/nix/var/nix/gcroots" \
--setenv PRIVATE_NETWORK="$PRIVATE_NETWORK" \
--setenv HOST_ADDRESS="$HOST_ADDRESS" \
--setenv LOCAL_ADDRESS="$LOCAL_ADDRESS" \
--setenv PATH="$PATH" \
${containerInit} "''${SYSTEM_PATH:-/nix/var/nix/profiles/system}/init"
'';
# Run systemd-nspawn without startup notification (we'll
# wait for the container systemd to signal readiness).
EXIT_ON_REBOOT=1 NOTIFY_SOCKET= \
exec ${config.systemd.package}/bin/systemd-nspawn \
--keep-unit \
-M "$INSTANCE" -D "$root" $extraFlags \
$EXTRA_NSPAWN_FLAGS \
--bind-ro=/nix/store \
--bind-ro=/nix/var/nix/db \
--bind-ro=/nix/var/nix/daemon-socket \
--bind=/run/systemd/notify:/var/lib/private/host-notify \
--bind="/nix/var/nix/profiles/per-container/$INSTANCE:/nix/var/nix/profiles" \
--bind="/nix/var/nix/gcroots/per-container/$INSTANCE:/nix/var/nix/gcroots" \
--setenv PRIVATE_NETWORK="$PRIVATE_NETWORK" \
--setenv HOST_BRIDGE="$HOST_BRIDGE" \
--setenv HOST_ADDRESS="$HOST_ADDRESS" \
--setenv LOCAL_ADDRESS="$LOCAL_ADDRESS" \
--setenv HOST_ADDRESS6="$HOST_ADDRESS6" \
--setenv LOCAL_ADDRESS6="$LOCAL_ADDRESS6" \
--setenv PATH="$PATH" \
${containerInit} "''${SYSTEM_PATH:-/nix/var/nix/profiles/system}/init"
'';
postStart =
''
if [ "$PRIVATE_NETWORK" = 1 ]; then
postStart =
''
if [ "$PRIVATE_NETWORK" = 1 ]; then
if [ -z "$HOST_BRIDGE" ]; then
ifaceHost=ve-$INSTANCE
ip link set dev $ifaceHost up
if [ -n "$HOST_ADDRESS" ]; then
ip addr add $HOST_ADDRESS dev $ifaceHost
fi
if [ -n "$HOST_ADDRESS6" ]; then
ip -6 addr add $HOST_ADDRESS6 dev $ifaceHost
fi
if [ -n "$LOCAL_ADDRESS" ]; then
ip route add $LOCAL_ADDRESS dev $ifaceHost
fi
if [ -n "$LOCAL_ADDRESS6" ]; then
ip -6 route add $LOCAL_ADDRESS6 dev $ifaceHost
fi
fi
fi
# Get the leader PID so that we can signal it in
# preStop. We can't use machinectl there because D-Bus
# might be shutting down. FIXME: in systemd 219 we can
# just signal systemd-nspawn to do a clean shutdown.
machinectl show "$INSTANCE" | sed 's/Leader=\(.*\)/\1/;t;d' > "/run/containers/$INSTANCE.pid"
'';
# Get the leader PID so that we can signal it in
# preStop. We can't use machinectl there because D-Bus
# might be shutting down. FIXME: in systemd 219 we can
# just signal systemd-nspawn to do a clean shutdown.
machinectl show "$INSTANCE" | sed 's/Leader=\(.*\)/\1/;t;d' > "/run/containers/$INSTANCE.pid"
'';
preStop =
preStop =
''
pid="$(cat /run/containers/$INSTANCE.pid)"
if [ -n "$pid" ]; then
kill -RTMIN+4 "$pid"
fi
rm -f "/run/containers/$INSTANCE.pid"
'';
restartIfChanged = false;
serviceConfig = {
ExecReload = pkgs.writeScript "reload-container"
''
pid="$(cat /run/containers/$INSTANCE.pid)"
if [ -n "$pid" ]; then
kill -RTMIN+4 "$pid"
fi
rm -f "/run/containers/$INSTANCE.pid"
#! ${pkgs.stdenv.shell} -e
${nixos-container}/bin/nixos-container run "$INSTANCE" -- \
bash --login -c "''${SYSTEM_PATH:-/nix/var/nix/profiles/system}/bin/switch-to-configuration test"
'';
restartIfChanged = false;
#reloadIfChanged = true; # FIXME
SyslogIdentifier = "container %i";
serviceConfig = {
ExecReload = pkgs.writeScript "reload-container"
''
#! ${pkgs.stdenv.shell} -e
${nixos-container}/bin/nixos-container run "$INSTANCE" -- \
bash --login -c "''${SYSTEM_PATH:-/nix/var/nix/profiles/system}/bin/switch-to-configuration test"
'';
EnvironmentFile = "-/etc/containers/%i.conf";
SyslogIdentifier = "container %i";
Type = "notify";
EnvironmentFile = "-/etc/containers/%i.conf";
NotifyAccess = "all";
Type = "notify";
# Note that on reboot, systemd-nspawn returns 133, so this
# unit will be restarted. On poweroff, it returns 0, so the
# unit won't be restarted.
RestartForceExitStatus = "133";
SuccessExitStatus = "133";
NotifyAccess = "all";
Restart = "on-failure";
# Note that on reboot, systemd-nspawn returns 133, so this
# unit will be restarted. On poweroff, it returns 0, so the
# unit won't be restarted.
RestartForceExitStatus = "133";
SuccessExitStatus = "133";
Restart = "on-failure";
# Hack: we don't want to kill systemd-nspawn, since we call
# "machinectl poweroff" in preStop to shut down the
# container cleanly. But systemd requires sending a signal
# (at least if we want remaining processes to be killed
# after the timeout). So send an ignored signal.
KillMode = "mixed";
KillSignal = "WINCH";
};
# Hack: we don't want to kill systemd-nspawn, since we call
# "machinectl poweroff" in preStop to shut down the
# container cleanly. But systemd requires sending a signal
# (at least if we want remaining processes to be killed
# after the timeout). So send an ignored signal.
KillMode = "mixed";
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
# container so that container@.target can get the container
@ -396,12 +462,21 @@ in
SYSTEM_PATH=${cfg.path}
${optionalString cfg.privateNetwork ''
PRIVATE_NETWORK=1
${optionalString (cfg.hostBridge != null) ''
HOST_BRIDGE=${cfg.hostBridge}
''}
${optionalString (cfg.hostAddress != null) ''
HOST_ADDRESS=${cfg.hostAddress}
''}
${optionalString (cfg.hostAddress6 != null) ''
HOST_ADDRESS6=${cfg.hostAddress6}
''}
${optionalString (cfg.localAddress != null) ''
LOCAL_ADDRESS=${cfg.localAddress}
''}
${optionalString (cfg.localAddress6 != null) ''
LOCAL_ADDRESS6=${cfg.localAddress6}
''}
''}
INTERFACES="${toString cfg.interfaces}"
${optionalString cfg.autoStart ''
@ -420,31 +495,5 @@ in
networking.dhcpcd.denyInterfaces = [ "ve-*" ];
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.
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.
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 ""

View File

@ -149,11 +149,11 @@ let
${pkgs.mtools}/bin/mlabel -i /dev/vda2 ::boot
# Mount /boot; load necessary modules first.
${pkgs.module_init_tools}/sbin/insmod ${pkgs.linux}/lib/modules/*/kernel/fs/nls/nls_cp437.ko || true
${pkgs.module_init_tools}/sbin/insmod ${pkgs.linux}/lib/modules/*/kernel/fs/nls/nls_iso8859-1.ko || true
${pkgs.module_init_tools}/sbin/insmod ${pkgs.linux}/lib/modules/*/kernel/fs/fat/fat.ko || true
${pkgs.module_init_tools}/sbin/insmod ${pkgs.linux}/lib/modules/*/kernel/fs/fat/vfat.ko || 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/nls/nls_cp437.ko.xz || true
${pkgs.kmod}/sbin/insmod ${pkgs.linux}/lib/modules/*/kernel/fs/nls/nls_iso8859-1.ko.xz || true
${pkgs.kmod}/sbin/insmod ${pkgs.linux}/lib/modules/*/kernel/fs/fat/fat.ko.xz || true
${pkgs.kmod}/sbin/insmod ${pkgs.linux}/lib/modules/*/kernel/fs/fat/vfat.ko.xz || true
${pkgs.kmod}/sbin/insmod ${pkgs.linux}/lib/modules/*/kernel/fs/efivarfs/efivarfs.ko.xz || true
mkdir /boot
mount /dev/vda2 /boot
@ -403,7 +403,7 @@ in
boot.postBootCommands =
''
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
'';

View File

@ -64,6 +64,9 @@ in rec {
(all nixos.tests.installer.btrfsSubvols)
(all nixos.tests.installer.btrfsSubvolDefault)
(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.kde4)
#(all nixos.tests.lightdm)

View File

@ -199,7 +199,10 @@ in rec {
tests.cadvisor = hydraJob (import tests/cadvisor.nix { system = "x86_64-linux"; });
tests.chromium = callSubTests tests/chromium.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.dockerRegistry = hydraJob (import tests/docker-registry.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.
import ./make-test.nix ({ pkgs, ...} : {
name = "containers";
name = "containers-imperative";
meta = with pkgs.stdenv.lib.maintainers; {
maintainers = [ aristid aszlig eelco chaoflow ];
};
@ -11,40 +11,11 @@ import ./make-test.nix ({ 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");
# 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).
$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
"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.
foreach my $file ("${pkgs.groff.doc}/share/doc/*/examples/mom/penguin.pdf",
"${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")
{
$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,
expat, libid3tag, ffmpeg, soundtouch /*, portaudio - given up fighting their portaudio.patch */
}:
stdenv.mkDerivation rec {
version = "2.1.1";
version = "2.1.2";
name = "audacity-${version}";
src = fetchurl {
url = "https://github.com/audacity/audacity/archive/Audacity-${version}.tar.gz";
sha256 = "15c5ff7ac1c0b19b08f4bdcb0f4988743da2f9ed3fab41d6f07600e67cb9ddb6";
sha256 = "1ggr6g0mk36rqj7ahsg8b0b1r9kphwajzvxgn43md263rm87n04h";
};
patches = [(fetchpatch {
name = "new-ffmpeg.patch";
@ -18,12 +18,6 @@ stdenv.mkDerivation rec {
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 */ ''
mv lib-src lib-src-rm
mkdir lib-src
@ -31,11 +25,11 @@ stdenv.mkDerivation rec {
rm -r lib-src-rm/
'';
configureFlags = "--with-libsamplerate";
configureFlags = [ "--with-libsamplerate" ];
buildInputs = [
pkgconfig gettext wxGTK gtk expat alsaLib
libsndfile soxr libid3tag
pkgconfig gettext wxGTK30 expat alsaLib
libsndfile soxr libid3tag gtk
ffmpeg libmad lame libvorbis flac soundtouch
]; #ToDo: detach sbsms

View File

@ -4,12 +4,12 @@
stdenv.mkDerivation rec {
name = "non-${version}";
version = "2016-03-06";
version = "2016-04-05";
src = fetchFromGitHub {
owner = "original-male";
repo = "non";
rev = "3946d392216ee999b560d8b7cdee7c4347110e29";
sha256 = "02vnq2mfimgdrmv3lmz80yif4h9a1lympv0wqc5dr2l0f8amj2fp";
rev = "16885e69fe865495dc32d869d1454ab148b0dca6";
sha256 = "1nwzzgcdpbqh5kjvz40yy5nmzvpp8gcr9biyhhwi68s5bsg972ss";
};
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
, dbus, gtk, atk, pango, freetype, fontconfig, libgnome_keyring3, gdk_pixbuf
, gvfs, cairo, cups, expat, libgpgerror, nspr, gconf, nss, xorg, libcap, systemd
}:
{ stdenv, fetchurl, lib, makeWrapper, gvfs, atomEnv }:
let
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 {
stdenv.mkDerivation rec {
name = "atom-${version}";
version = "1.6.2";
@ -26,25 +12,25 @@ in stdenv.mkDerivation rec {
nativeBuildInputs = [ makeWrapper ];
phases = [ "installPhase" "fixupPhase" ];
installPhase = ''
mkdir -p $out
buildCommand = ''
mkdir -p $out/usr/
ar p $src data.tar.gz | tar -C $out -xz ./usr
substituteInPlace $out/usr/share/applications/atom.desktop \
--replace /usr/share/atom $out/bin
mv $out/usr/* $out/
rm -r $out/share/lintian
rm -r $out/usr/
wrapProgram $out/bin/atom \
--prefix "PATH" : "${gvfs}/bin"
fixupPhase
patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
--set-rpath "${atomEnv.libPath}:$out/share/atom" \
$out/share/atom/atom
patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
--set-rpath "${atomEnv.libPath}" \
$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; {

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
stdenv.mkDerivation rec {
name = "emacs-25.0.92";
name = "emacs-25.0.93";
builder = ./builder.sh;
src = fetchurl {
url = "ftp://alpha.gnu.org/gnu/emacs/pretest/emacs-25.0.92.tar.xz";
sha256 = "13jnj1js2l90k4yk219r3z67fff90r6mniprsp0sgip2kaak75y2";
url = "ftp://alpha.gnu.org/gnu/emacs/pretest/${name}.tar.xz";
sha256 = "1wbr2n723ycg16rlg81v9x17w9ciy7qyckxplnwghlyfj6j9k4dk";
};
patches = lib.optionals stdenv.isDarwin [

View File

@ -148,14 +148,14 @@ in
android-studio = buildAndroidStudio rec {
name = "android-studio-${version}";
version = "2.0.0.0";
build = "143.2443734";
version = "2.0.0.20";
build = "143.2739321";
description = "Android development environment based on IntelliJ IDEA";
license = stdenv.lib.licenses.asl20;
src = fetchurl {
url = "https://dl.google.com/dl/android/studio/ide-zips/${version}" +
"/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
version = "0.12.3";
sha256 = "001j4lvb5d9h3m6vgz2na07637x6xg4bdvxi2hg4a0j9rikb4y40";
in
stdenv.mkDerivation rec {
# qtEnv = with qt5; env "qt-${qtbase.version}" [ qtbase qttools ];
in stdenv.mkDerivation rec {
name = "tiled-${version}";
version = "0.16.0";
src = fetchurl {
name = "${name}.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 = {
description = "A free, easy to use and flexible tile map editor";
homepage = "http://www.mapeditor.org/";
# libtiled and tmxviewer is licensed under 2-calause BSD license.
# The rest is GPL2 or later.
license = stdenv.lib.licenses.gpl2Plus;
platforms = stdenv.lib.platforms.linux;
enableParallelBuilding = true;
meta = with stdenv.lib; {
description = "Free, easy to use and flexible tile map editor";
homepage = http://www.mapeditor.org/;
license = with licenses; [
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
, ...
} @ args:
{ stdenv, lib, callPackage, fetchurl, unzip, atomEnv, makeDesktopItem }:
let
atomEnv = callPackage ../../../development/tools/electron/env-atom.nix (args);
version = "1.0.0";
rev = "fa6d0f03813dfb9df4589c30121e9fcffa8a8ec8";
version = "0.10.10";
rev = "5b5f4db87c10345b9d5c8d0bed745bcad4533135";
sha256 = if stdenv.system == "i686-linux" then "1mmgq4fxi2h4hvz7yxgzzyvlznkb42qwr8i1g2b1akdlgnrvvpby"
else if stdenv.system == "x86_64-linux" then "1zjb6mys5qs9mb21rpgpnbgq4gpnw6gsgfn5imf7ca7myk1bxnvk"
else if stdenv.system == "x86_64-darwin" then "0y1as2s6nhicyvdfszphhqp76iv9wcygglrl2f0jamm98g9qp66p"
sha256 = if stdenv.system == "i686-linux" then "1nnsvr51k8cmq8rccksylam4ww40pdn9dnhnp9096z5ccrf4qa1b"
else if stdenv.system == "x86_64-linux" then "0p408pp2il6kawfsql8n5dvl75kmf2n2p0r266mjnww6vprmq4gw"
else if stdenv.system == "x86_64-darwin" then "06k41ljfvgyxbl364jlkdjk8lkwr6bpq2r051vin93cnqfxridkq"
else throw "Unsupported system: ${stdenv.system}";
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-darwin" then "darwin"
else throw "Unsupported system: ${stdenv.system}";
in
stdenv.mkDerivation rec {
name = "vscode-${version}";
@ -27,24 +23,35 @@ in
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 ];
installPhase = ''
mkdir -p $out/bin
cp -r ./* $out/bin
mkdir -p $out/lib/vscode $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 ''
patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
$out/bin/code
'' else ""}
mkdir -p $out/share/applications
cp $desktopItem/share/applications/* $out/share/applications
mkdir -p $out/share/pixmaps
cp $out/lib/vscode/resources/app/resources/linux/code.png $out/share/pixmaps/code.png
'';
postFixup = ''
${if (stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux") then ''
patchelf \
--set-rpath "${atomEnv}/lib:${atomEnv}/lib64:$out/bin:$(patchelf --print-rpath $out/bin/code)" \
$out/bin/code
'' else ""}
postFixup = lib.optionalString (stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux") ''
patchelf \
--set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
--set-rpath "${atomEnv.libPath}:$out/lib/vscode" \
$out/lib/vscode/code
'';
meta = with stdenv.lib; {

View File

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

View File

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

View File

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

View File

@ -26,10 +26,11 @@ stdenv.mkDerivation rec {
meta = with stdenv.lib; {
homepage = http://sourceforge.net/projects/cdrtools/;
description = "Highly portable CD/DVD/BluRay command line recording software";
# Licensing issues: This package contains code licensed under CDDL, GPL2
# and LGPL2. There is debate regarding the legality of this licensing.
# Marked as unfree to avoid any possible legal issues.
license = licenses.unfree;
license = with licenses; [ gpl2 lgpl2 cddl ];
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 }:
stdenv.mkDerivation rec {
name = "golden-cheetah-${version}";
version = "V4.0-DEV1603";
version = "4.0-DEV1603";
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";
};
buildInputs = [
@ -17,12 +18,13 @@ stdenv.mkDerivation rec {
echo 'QMAKE_LRELEASE = ${qttools}/bin/lrelease' >> src/gcconfig.pri
sed -i -e '21,23d' qwt/qwtconfig.pri # Removed forced installation to /usr/local
'';
postConfigure =
with (config.golden-cheetah);
stdenv.lib.optionalString (dropbox-client-id != null && dropbox-client-secret != null) ''
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
'';
#postConfigure =
# + (
# with (config.golden-cheetah);
# stdenv.lib.optionalString (dropbox-client-id != null && dropbox-client-secret != null) ''
# 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 = ''
mkdir -p $out/bin
cp src/GoldenCheetah $out/bin

View File

@ -2,11 +2,11 @@
stdenv.mkDerivation rec {
name = "gpsprune-${version}";
version = "18.3";
version = "18.4";
src = fetchurl {
url = "http://activityworkshop.net/software/gpsprune/gpsprune_${version}.jar";
sha256 = "1sas5n4k3afryg3k6y40w39kifs3d0yrnnk46nqp7axs4ay2aqim";
sha256 = "0wrkvff3c1w66373m2w2ib07rkn3rmbp3n7ixz72qd1swvbk6xx1";
};
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
, shared_mime_info, libvorbis, taglib , flac, libsamplerate
{ stdenv, lib, fetchurl, makeWrapper, automoc4, cmake, perl, pkgconfig
, shared_mime_info, libvorbis, taglib, flac, libsamplerate
, libdvdread, lame, libsndfile, libmad, gettext , transcode, cdrdao
, cdrtools, dvdplusrwtools, vcdimager, cdparanoia , kdelibs
, dvdplusrwtools, vcdimager, cdparanoia, kdelibs, libdvdcss, ffmpeg
, kdemultimedia, phonon, libkcddb ? null
}:
stdenv.mkDerivation rec {
name = "k3b-2.0.3a";
let
# 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 {
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
lame libsndfile libmad stdenv.cc.libc kdelibs
kdemultimedia phonon libkcddb makeWrapper cdparanoia
libdvdcss ffmpeg
];
enableParallelBuilding = true;
# at runtime, k3b needs the executables cdrdao, cdrecord, dvd+rw-format,
# eMovix, growisofs, mkisofs, normalize, readcd, transcode, vcdxbuild,
# vcdxminfo, and vcdxrip
propagatedUserEnvPkgs = [ cdrdao cdrtools dvdplusrwtools transcode vcdimager ];
NIX_CFLAGS_LINK = [ "-lcdda_interface" "-lcdda_paranoia" "-ldvdcss" ];
postInstall = ''
wrapProgram $out/bin/k3b \
--prefix LD_LIBRARY_PATH ":" "${cdparanoia}/lib"
--prefix PATH ":" "${binPath}"
'';
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 {
name = "pgadmin3-${version}";
@ -11,12 +11,17 @@ stdenv.mkDerivation rec {
enableParallelBuilding = true;
buildInputs = [ postgresql wxGTK libxml2 libxslt openssl ];
buildInputs = [ postgresql wxGTK openssl zlib ];
preConfigure = ''
substituteInPlace pgadmin/ver_svn.sh --replace "bin/bash" "$shell"
'';
configureFlags = [
"--with-libxml2=${libxml2}"
"--with-libxslt=${libxslt}"
];
meta = with stdenv.lib; {
description = "PostgreSQL administration GUI tool";
homepage = http://www.pgadmin.org;

View File

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

View File

@ -1,21 +1,31 @@
{ stdenv, fetchurl, autoreconfHook, pkgconfig
, libX11, libXinerama, pango, cairo
, libX11, libxkbcommon, pango, cairo, glib
, libxcb, xcbutil, xcbutilwm, which, git
, libstartup_notification, i3Support ? false, i3
}:
stdenv.mkDerivation rec {
name = "rofi-${version}";
version = "0.15.12";
version = "1.0.0";
src = fetchurl {
url = "https://github.com/DaveDavenport/rofi/archive/${version}.tar.gz";
sha256 = "112fgx2awsw1xf1983bmy3jvs33qwyi8qj7j59jqc4gx07nv1rp5";
url = "https://github.com/DaveDavenport/rofi/releases/download/${version}/${name}.tar.xz";
sha256 = "0ard95pjgykafm5ga8lfy7x206f07lrc6kara5s9irlhdgblq2m5";
};
buildInputs = [ autoreconfHook pkgconfig libX11 libXinerama pango
cairo libstartup_notification
preConfigure = ''
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;
doCheck = true;
meta = {
description = "Window switcher, run dialog and dmenu replacement";
homepage = https://davedavenport.github.io/rofi;

View File

@ -1,5 +1,5 @@
{ stdenv, fetchurl, autoconf, automake, gettext, intltool, libtool, pkgconfig,
libXtst, cheetah, libXScrnSaver,
libXtst, cheetah, libXScrnSaver, xorg,
glib, glibmm,
gtk, gtkmm,
atk,
@ -10,11 +10,15 @@
gdome2, gstreamer, libsigcxx }:
stdenv.mkDerivation rec {
version = "v1_10_6";
version = "1.10.6";
name = "workrave-${version}";
src = fetchurl {
url = "http://github.com/rcaelers/workrave/archive/${version}.tar.gz";
src = let
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";
};
@ -23,7 +27,7 @@ stdenv.mkDerivation rec {
libXScrnSaver
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";

View File

@ -4,22 +4,22 @@
, libXext, libXfixes, libXi, libXrandr, libXrender, libXtst, nspr, nss, pango
, libudev }:
let version = "0.0.1"; in
let version = "0.0.3"; in
stdenv.mkDerivation {
name = "discord-${version}";
src = fetchurl {
url = "https://storage.googleapis.com/discord-developer/test/discord-canary-${version}.tar.gz";
sha256 = "1skmwc84s4xqyc167qrplhy5ah06kwfa3d3rxiwi4c8rc55vdd0g";
url = "https://cdn-canary.discordapp.com/apps/linux/${version}/discord-canary-${version}.tar.gz";
sha256 = "1k1mnfkcx7183qbdc4qx1anngddqim969cribg9gzc7mixvj17ca";
};
libPath = stdenv.lib.makeLibraryPath [
stdenv.cc.cc alsaLib atk cairo cups dbus expat fontconfig freetype
gdk_pixbuf glib gnome.GConf gtk libnotify libX11 libXcomposite
libXcursor libXdamage libXext libXfixes libXi libXrandr libXrender
libXtst nspr nss pango libudev
libXtst nspr nss pango libudev.out
];
installPhase = ''
@ -35,12 +35,13 @@ stdenv.mkDerivation {
ln -s $out/DiscordCanary $out/bin/
# 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; {
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/";
downloadPage = "https://github.com/crmarsh/discord-linux-bugs";
license = licenses.unfree;
maintainers = [ maintainers.ldesgoui ];
platforms = [ "x86_64-linux" ];

View File

@ -38,13 +38,8 @@ stdenv.mkDerivation rec {
mkdir -p $out/{libexec/skype/,bin}
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)" \
--set-rpath "$fullPath" $out/libexec/skype/skype
--set-rpath "${lib.makeLibraryPath buildInputs}" $out/libexec/skype/skype
cat > $out/bin/skype << EOF
#!${stdenv.shell}

View File

@ -80,10 +80,9 @@ let
"CONFIG+=no-server"
];
installPhase = ''
cp scripts/mumble-overlay $out/bin
sed -i "s,/usr/lib,$out/lib,g" $out/bin/mumble-overlay
NIX_CFLAGS_COMPILE = optional speechdSupport "-I${speechd}/include/speech-dispatcher";
installPhase = ''
mkdir -p $out/share/applications
cp scripts/mumble.desktop $out/share/applications
@ -108,44 +107,25 @@ let
};
stableSource = rec {
version = "1.2.10";
version = "1.2.15";
qtVersion = 4;
src = fetchurl {
url = "https://github.com/mumble-voip/mumble/releases/download/${version}/mumble-${version}.tar.gz";
sha256 = "012vm0xf84x13414jlsx964c5a1nwnbn41jnspkciajlxxipldn6";
sha256 = "1yjywzybgq23ry5s2yihggs13ffrphhwl6rlp6lq79rkwvafa9v5";
};
};
gitSource = rec {
version = "1.3.0-git-2015-11-08";
version = "1.3.0-git-2016-04-10";
qtVersion = 5;
# Needs submodules
src = fetchgit {
url = "https://github.com/mumble-voip/mumble";
rev = "72038f6aa038f5964e2bba5a09d3d391d4680e5f";
sha256 = "03978b85f7y0bffl8vwkmakjnxxjqapfz3pn0b8zf3b1ppwjy9g4";
rev = "0502fa67b036bae9f07a586d9f05a8bf74c24291";
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 {
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
{
version = "4.4.2";
version = "5.0.7";
name = "seafile-client-${version}";
src = fetchurl
{
url = "https://github.com/haiwen/seafile-client/archive/v${version}.tar.gz";
sha256 = "0aj39xiayibxp3vcrwi58pn51h9vcsy2z04q8jm17qadmk9dzyw6";
sha256 = "ae6975bc1adf45d09cf9f6332ceac7cf285f8191f6cf50c6291ed45f8cf4ffa5";
};
buildInputs = [ pkgconfig cmake qt4 seafile-shared makeWrapper ];

View File

@ -1,7 +1,7 @@
{ stdenv, fetchurl }:
rec {
version = "3.2.1";
version = "3.1.2";
src = fetchurl {
# signed with key 0048 C8B0 26D4 C96F 0E58 9C2F 6C85 9FB1 4B96 A8C5
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 = ''
rm -f INSTALL
mkdir -p $out/bin
'';

View File

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

View File

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

View File

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

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
binPath = lib.makeBinPath [ cdrtools dvdauthor ffmpeg imagemagick lame mjpegtools sox transcode vorbis-tools ];
wrapper = writeScript "dvd-slideshow.sh" ''
#!/bin/bash
# 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"`
exe=`basename "$0"`

View File

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

View File

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

View File

@ -33,7 +33,7 @@ let
"$mod/Module.symvers"
fi
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}
done
'';
@ -144,7 +144,7 @@ in stdenv.mkDerivation {
buildPhase = ''
source env.sh
kmk BUILD_TYPE="${buildType}"
kmk -j $NIX_BUILD_CORES BUILD_TYPE="${buildType}"
${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 ];
buildCommand = ''
ln -s ${linux}/lib /lib
${module_init_tools}/bin/modprobe loop
${module_init_tools}/bin/modprobe ext4
${module_init_tools}/bin/modprobe hfs
${module_init_tools}/bin/modprobe hfsplus
${module_init_tools}/bin/modprobe squashfs
${module_init_tools}/bin/modprobe iso9660
${module_init_tools}/bin/modprobe ufs
${module_init_tools}/bin/modprobe cramfs
${kmod}/bin/modprobe loop
${kmod}/bin/modprobe ext4
${kmod}/bin/modprobe hfs
${kmod}/bin/modprobe hfsplus
${kmod}/bin/modprobe squashfs
${kmod}/bin/modprobe iso9660
${kmod}/bin/modprobe ufs
${kmod}/bin/modprobe cramfs
mknod /dev/loop0 b 7 0
mkdir -p $out
@ -355,12 +355,12 @@ rec {
buildInputs = [ utillinux mtdutils ];
buildCommand = ''
ln -s ${linux}/lib /lib
${module_init_tools}/bin/modprobe mtd
${module_init_tools}/bin/modprobe mtdram total_size=131072
${module_init_tools}/bin/modprobe mtdchar
${module_init_tools}/bin/modprobe mtdblock
${module_init_tools}/bin/modprobe jffs2
${module_init_tools}/bin/modprobe zlib
${kmod}/bin/modprobe mtd
${kmod}/bin/modprobe mtdram total_size=131072
${kmod}/bin/modprobe mtdchar
${kmod}/bin/modprobe mtdblock
${kmod}/bin/modprobe jffs2
${kmod}/bin/modprobe zlib
mknod /dev/mtd0 c 90 0
mknod /dev/mtdblock0 b 31 0

View File

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

View File

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

View File

@ -1,18 +1,17 @@
{ 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 {
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 ];
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.dconf ];
installFlags = [ "nautilus_extensiondir=$(out)/lib/nautilus/extensions-3.0" ];
meta = with stdenv.lib; {
homepage = https://wiki.gnome.org/Apps/FileRoller;
description = "Archive manager for the GNOME desktop environment";

View File

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

View File

@ -15,11 +15,11 @@ in
stdenv.mkDerivation rec {
name = "go-${version}";
version = "1.6";
version = "1.6.2";
src = fetchurl {
url = "https://github.com/golang/go/archive/go${version}.tar.gz";
sha256 = "04g7w34qamgy9gqpy75xm03s8xbbslv1735iv1a06z8sphpkgs7m";
sha256 = "17sfhg3xfnakk666wlsbhxp4vbn19hlywf5cn1zfcd4zqkcyx30h";
};
# perl is used for testing go vet
@ -96,12 +96,6 @@ stdenv.mkDerivation rec {
patches = [
./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
# https://github.com/golang/go/issues/11994

View File

@ -119,12 +119,6 @@ let result = stdenv.mkDerivation rec {
done
fi
# construct the rpath
rpath=
for i in $libraries; do
rpath=$rpath''${rpath:+:}$i/lib:$i/lib64
done
if test -z "$installjdk"; then
jrePath=$out
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] ++
(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.jre = result; # FIXME: use multiple outputs or return actual JRE package

View File

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

View File

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

View File

@ -1,11 +1,11 @@
{ stdenv, callPackage }:
callPackage ./generic.nix {
shortVersion = "1.7.0";
shortVersion = "1.8.0";
isRelease = true;
forceBundledLLVM = false;
configureFlags = [ "--release-channel=stable" ];
srcSha = "05f4v6sfmvkwsv6a7jp9sxsm84s0gdvqyf2wwdi1ilg9k8nxzgd4";
srcSha = "1s03aymmhhrndq29sv9cs8s4p1sg8qvq8ds6lyp6s4ny8nyvdpzy";
/* Rust is bootstrapped from an earlier built version. We need
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.
*/
snapshotHashLinux686 = "a09c4a4036151d0cb28e265101669731600e01f2";
snapshotHashLinux64 = "97e2a5eb8904962df8596e95d6e5d9b574d73bf4";
snapshotHashDarwin686 = "ca52d2d3ba6497ed007705ee3401cf7efc136ca1";
snapshotHashDarwin64 = "3c44ffa18f89567c2b81f8d695e711c86d81ffc7";
snapshotDate = "2015-12-18";
snapshotRev = "3391630";
snapshotHashLinux686 = "5f194aa7628c0703f0fd48adc4ec7f3cc64b98c7";
snapshotHashLinux64 = "d29b7607d13d64078b6324aec82926fb493f59ba";
snapshotHashDarwin686 = "4c8e42dd649e247f3576bf9dfa273327b4907f9c";
snapshotHashDarwin64 = "411a41363f922d1d93fa62ff2fedf5c35e9cccb2";
snapshotDate = "2016-02-17";
snapshotRev = "4d3eebf";
patches = [ ./patches/remove-uneeded-git.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