diff --git a/.version b/.version
index 381796ec8b7..07167f90842 100644
--- a/.version
+++ b/.version
@@ -1 +1 @@
-13.10
\ No newline at end of file
+14.02
\ No newline at end of file
diff --git a/doc/meta.xml b/doc/meta.xml
index 09252410d80..00e9b8ac67a 100644
--- a/doc/meta.xml
+++ b/doc/meta.xml
@@ -118,6 +118,56 @@ interpretation:
package).
+
+ platforms
+ The list of Nix platform types on which the
+ package is supported. If this attribute is set, the package will
+ refuse to build, and won’t show up in nix-env
+ -qa output, on any platform not listed
+ here. An example is:
+
+
+meta.platforms = [ "x86_64-linux" "i686-linux" "x86_64-darwin" ];
+
+
+ The set lib.platforms defines various common
+ lists of platforms types, so it’s more typical to write:
+
+
+meta.platforms = stdenv.lib.platforms.linux ++ stdenv.lib.platforms.darwin;
+
+
+
+
+
+
+ hydraPlatforms
+ The list of Nix platform types for which the Hydra
+ instance at hydra.nixos.org should build the
+ package. (Hydra is the Nix-based continuous build system.) It
+ defaults to the value of meta.platforms. Thus,
+ the only reason to set meta.hydraPlatforms is
+ if you want hydra.nixos.org to build the
+ package on a subset of meta.platforms, or not
+ at all, e.g.
+
+
+meta.platforms = stdenv.lib.platforms.linux;
+meta.hydraPlatforms = [];
+
+
+
+
+
+
+ broken
+ If set to true, the package is
+ marked as “broken”, meaning that it won’t show up in
+ nix-env -qa, and cannot be built or installed.
+ Sush packages should be removed from Nixpkgs eventually unless
+ they are fixed.
+
+
diff --git a/lib/attrsets.nix b/lib/attrsets.nix
index 7c93d8698de..da735d71b25 100644
--- a/lib/attrsets.nix
+++ b/lib/attrsets.nix
@@ -1,7 +1,7 @@
# Operations on attribute sets.
with {
- inherit (builtins) head tail isString;
+ inherit (builtins) head tail;
inherit (import ./trivial.nix) or;
inherit (import ./default.nix) fold;
inherit (import ./strings.nix) concatStringsSep;
@@ -20,7 +20,7 @@ rec {
let attr = head attrPath;
in
if attrPath == [] then e
- else if builtins ? hasAttr && hasAttr attr e
+ else if hasAttr attr e
then attrByPath (tail attrPath) default (getAttr attr e)
else default;
@@ -100,7 +100,7 @@ rec {
(AttrSet -> Bool) -> AttrSet -> AttrSet
Example:
- collect builtins.isList { a = { b = ["b"]; }; c = [1]; }
+ collect isList { a = { b = ["b"]; }; c = [1]; }
=> [["b"] [1]]
collect (x: x ? outPath)
@@ -110,7 +110,7 @@ rec {
collect = pred: attrs:
if pred attrs then
[ attrs ]
- else if builtins.isAttrs attrs then
+ else if isAttrs attrs then
concatMap (collect pred) (attrValues attrs)
else
[];
diff --git a/lib/default.nix b/lib/default.nix
index fc92e04503b..4b6027c437b 100644
--- a/lib/default.nix
+++ b/lib/default.nix
@@ -21,8 +21,6 @@ let
in
{ inherit trivial lists strings stringsWithDeps attrsets sources options
modules types meta debug maintainers licenses platforms systems;
- # Pull in some builtins not included elsewhere.
- inherit (builtins) pathExists readFile;
}
# !!! don't include everything at top-level; perhaps only the most
# commonly used functions.
diff --git a/lib/lists.nix b/lib/lists.nix
index d0b09539bf6..d6e8628f03a 100644
--- a/lib/lists.nix
+++ b/lib/lists.nix
@@ -1,14 +1,16 @@
# General list operations.
-let
- inherit (import ./trivial.nix) deepSeq;
+with import ./trivial.nix;
+
+let
inc = builtins.add 1;
dec = n: builtins.sub n 1;
in rec {
- inherit (builtins) head tail length isList add sub lessThan elemAt;
+
+ inherit (builtins) head tail length isList elemAt concatLists filter elem;
# Create a list consisting of a single element. `singleton x' is
@@ -55,10 +57,6 @@ in rec {
else [ (f (inc n) (elemAt list n)) ] ++ imap' (inc n);
in imap' 0;
-
- # Concatenate a list of lists.
- concatLists = builtins.concatLists or (fold (x: y: x ++ y) []);
-
# Map and concatenate the result.
concatMap = f: list: concatLists (map f list);
@@ -72,24 +70,10 @@ in rec {
then fold (x: y: (flatten x) ++ y) [] x
else [x];
-
- # Filter a list using a predicate; that is, return a list containing
- # every element from `list' for which `pred' returns true.
- filter =
- builtins.filter or
- (pred: list:
- fold (x: y: if pred x then [x] ++ y else y) [] list);
-
# Remove elements equal to 'e' from a list. Useful for buildInputs.
remove = e: filter (x: x != e);
-
- # Return true if `list' has an element `x'.
- elem =
- builtins.elem or
- (x: list: fold (a: bs: x == a || bs) false list);
-
# Find the sole element in the list matching the specified
# predicate, returns `default' if no such element exists, or
@@ -106,7 +90,7 @@ in rec {
findFirst = pred: default: list:
let found = filter pred list;
in if found == [] then default else head found;
-
+
# Return true iff function `pred' returns true for at least element
# of `list'.
@@ -136,16 +120,16 @@ in rec {
# If argument is a list, return it; else, wrap it in a singleton
# list. If you're using this, you should almost certainly
# reconsider if there isn't a more "well-typed" approach.
- toList = x: if builtins.isList x then x else [x];
+ toList = x: if isList x then x else [x];
+
-
# Return a list of integers from `first' up to and including `last'.
range = first: last:
- if builtins.lessThan last first
+ if lessThan last first
then []
- else [first] ++ range (builtins.add first 1) last;
+ else [first] ++ range (add first 1) last;
+
-
# Partition the elements of a list in two lists, `right' and
# `wrong', depending on the evaluation of a predicate.
partition = pred:
@@ -160,7 +144,7 @@ in rec {
let
len1 = length fst;
len2 = length snd;
- len = if builtins.lessThan len1 len2 then len1 else len2;
+ len = if lessThan len1 len2 then len1 else len2;
zipListsWith' = n:
if n != len then
[ (f (elemAt fst n) (elemAt snd n)) ]
@@ -207,7 +191,7 @@ in rec {
[ (elemAt list n) ] ++ take' (inc n);
in take' 0;
-
+
# Remove the first (at most) N elements of a list.
drop = count: list:
let
@@ -219,7 +203,8 @@ in rec {
drop' (dec n) ++ [ (elemAt list n) ];
in drop' (dec len);
-
+
+ # Return the last element of a list.
last = list:
assert list != []; elemAt list (dec (length list));
@@ -237,5 +222,7 @@ in rec {
else [];
in zipTwoLists' 0;
+
deepSeqList = xs: y: if any (x: deepSeq x false) xs then y else y;
+
}
diff --git a/lib/maintainers.nix b/lib/maintainers.nix
index 7f84e11e561..221201a6041 100644
--- a/lib/maintainers.nix
+++ b/lib/maintainers.nix
@@ -63,4 +63,5 @@
winden = "Antonio Vargas Gonzalez ";
z77z = "Marco Maggesi ";
zef = "Zef Hemel ";
+ zoomulator = "Kim Simmons ";
}
diff --git a/lib/modules.nix b/lib/modules.nix
index 071809daa58..fa31ce6399c 100644
--- a/lib/modules.nix
+++ b/lib/modules.nix
@@ -42,7 +42,7 @@ rec {
closeModules = modules: args:
let
toClosureList = file: parentKey: imap (n: x:
- if isAttrs x || builtins.isFunction x then
+ if isAttrs x || isFunction x then
unifyModuleSyntax file "${parentKey}:anon-${toString n}" (applyIfFunction x args)
else
unifyModuleSyntax (toString x) (toString x) (applyIfFunction (import x) args));
@@ -74,7 +74,7 @@ rec {
config = removeAttrs m ["key" "_file" "require" "imports"];
};
- applyIfFunction = f: arg: if builtins.isFunction f then f arg else f;
+ applyIfFunction = f: arg: if isFunction f then f arg else f;
/* Merge a list of modules. This will recurse over the option
declarations in all modules, combining them into a single set.
@@ -260,7 +260,7 @@ rec {
options' = opt.options or
(throw "Option `${showOption loc'}' has type optionSet but has no option attribute.");
coerce = x:
- if builtins.isFunction x then x
+ if isFunction x then x
else { config, ... }: { options = x; };
options = map coerce (flatten options');
f = tp:
diff --git a/lib/options.nix b/lib/options.nix
index 63798c4faa3..71e02db58f6 100644
--- a/lib/options.nix
+++ b/lib/options.nix
@@ -34,12 +34,12 @@ rec {
mergeDefaultOption = loc: defs:
let list = getValues defs; in
if length list == 1 then head list
- else if all builtins.isFunction list then x: mergeDefaultOption loc (map (f: f x) list)
+ else if all isFunction list then x: mergeDefaultOption loc (map (f: f x) list)
else if all isList list then concatLists list
else if all isAttrs list then fold lib.mergeAttrs {} list
- else if all builtins.isBool list then fold lib.or false list
- else if all builtins.isString list then lib.concatStrings list
- else if all builtins.isInt list && all (x: x == head list) list then head list
+ else if all isBool list then fold lib.or false list
+ else if all isString list then lib.concatStrings list
+ else if all isInt list && all (x: x == head list) list then head list
else throw "Cannot merge definitions of `${showOption loc}' given in ${showFiles (getFiles defs)}.";
/* Obsolete, will remove soon. Specify an option type or apply
@@ -54,7 +54,7 @@ rec {
mergeListOption = mergeTypedOption "list" isList concatLists;
- mergeStringOption = mergeTypedOption "string" builtins.isString lib.concatStrings;
+ mergeStringOption = mergeTypedOption "string" isString lib.concatStrings;
mergeOneOption = loc: defs:
if defs == [] then abort "This case should never happen."
diff --git a/lib/platforms.nix b/lib/platforms.nix
index 8be37d7ed1e..76df389deac 100644
--- a/lib/platforms.nix
+++ b/lib/platforms.nix
@@ -2,9 +2,9 @@ let lists = import ./lists.nix; in
rec {
gnu = linux; /* ++ hurd ++ kfreebsd ++ ... */
- linux = ["i686-linux" "x86_64-linux" "powerpc-linux" "armv5tel-linux" "armv7l-linux" "mips64el-linux"];
+ linux = ["i686-linux" "x86_64-linux" "armv5tel-linux" "armv7l-linux" "mips64el-linux"];
darwin = ["x86_64-darwin"];
- freebsd = ["i686-freebsd" "x86_64-freebsd" "powerpc-freebsd"];
+ freebsd = ["i686-freebsd" "x86_64-freebsd"];
openbsd = ["i686-openbsd" "x86_64-openbsd"];
netbsd = ["i686-netbsd" "x86_64-netbsd"];
cygwin = ["i686-cygwin"];
diff --git a/lib/strings.nix b/lib/strings.nix
index 024a9ac7d7a..cd748f02cc6 100644
--- a/lib/strings.nix
+++ b/lib/strings.nix
@@ -7,7 +7,8 @@ inherit (builtins) add sub lessThan length;
in
rec {
- inherit (builtins) stringLength substring head tail;
+
+ inherit (builtins) stringLength substring head tail isString;
# Concatenate a list of strings.
diff --git a/lib/trivial.nix b/lib/trivial.nix
index 8af3474f2a6..760a74ce666 100644
--- a/lib/trivial.nix
+++ b/lib/trivial.nix
@@ -16,7 +16,7 @@ rec {
or = x: y: x || y;
and = x: y: x && y;
mergeAttrs = x: y: x // y;
-
+
# Take a function and evaluate it with its own returned value.
fix = f: let result = f result; in result;
@@ -26,7 +26,7 @@ rec {
# `seq x y' evaluates x, then returns y. That is, it forces strict
# evaluation of its first argument.
seq = x: y: if x == null then y else y;
-
+
# Like `seq', but recurses into lists and attribute sets to force evaluation
# of all list elements/attributes.
deepSeq = x: y:
@@ -35,4 +35,10 @@ rec {
else if builtins.isAttrs x
then deepSeqAttrs x y
else seq x y;
+
+ # Pull in some builtins not included elsewhere.
+ inherit (builtins)
+ pathExists readFile isBool isFunction
+ isInt add sub lessThan;
+
}
diff --git a/lib/types.nix b/lib/types.nix
index 09b29a762e1..bdd21f12395 100644
--- a/lib/types.nix
+++ b/lib/types.nix
@@ -48,19 +48,19 @@ rec {
bool = mkOptionType {
name = "boolean";
- check = builtins.isBool;
+ check = isBool;
merge = loc: fold (x: y: x.value || y) false;
};
int = mkOptionType {
name = "integer";
- check = builtins.isInt;
+ check = isInt;
merge = mergeOneOption;
};
str = mkOptionType {
name = "string";
- check = builtins.isString;
+ check = isString;
merge = mergeOneOption;
};
@@ -68,7 +68,7 @@ rec {
# separator between the values).
separatedString = sep: mkOptionType {
name = "string";
- check = builtins.isString;
+ check = isString;
merge = loc: defs: concatStringsSep sep (getValues defs);
};
@@ -170,7 +170,7 @@ rec {
functionTo = elemType: mkOptionType {
name = "function that evaluates to a(n) ${elemType.name}";
- check = builtins.isFunction;
+ check = isFunction;
merge = loc: defs:
fnArgs: elemType.merge loc (map (fn: { inherit (fn) file; value = fn.value fnArgs; }) defs);
getSubOptions = elemType.getSubOptions;
@@ -183,10 +183,10 @@ rec {
in
mkOptionType rec {
name = "submodule";
- check = x: isAttrs x || builtins.isFunction x;
+ check = x: isAttrs x || isFunction x;
merge = loc: defs:
let
- coerce = def: if builtins.isFunction def then def else { config = def; };
+ coerce = def: if isFunction def then def else { config = def; };
modules = opts' ++ map (def: { _file = def.file; imports = [(coerce def.value)]; }) defs;
in (evalModules { inherit modules; args.name = last loc; prefix = loc; }).config;
getSubOptions = prefix: (evalModules
diff --git a/nixos/doc/manual/default.nix b/nixos/doc/manual/default.nix
index db3245fcc07..6d5039e8177 100644
--- a/nixos/doc/manual/default.nix
+++ b/nixos/doc/manual/default.nix
@@ -1,6 +1,4 @@
-{ pkgs, options
-, revision ? "master"
-}:
+{ pkgs, options, version, revision }:
with pkgs.lib;
@@ -60,6 +58,7 @@ in rec {
buildCommand = ''
ln -s $sources/*.xml . # */
ln -s ${optionsDocBook} options-db.xml
+ echo "${version}" > version
# Check the validity of the manual sources.
xmllint --noout --nonet --xinclude --noxincludenode \
diff --git a/nixos/doc/manual/installation.xml b/nixos/doc/manual/installation.xml
index 88ef589dd06..70001577692 100644
--- a/nixos/doc/manual/installation.xml
+++ b/nixos/doc/manual/installation.xml
@@ -369,9 +369,23 @@ $ nixos-rebuild build-vm
$ ./result/bin/run-*-vm
-The VM does not have use any data from your host system, so your
-existing user accounts and home directories will not be
-available.
+The VM does not have any data from your host system, so your existing
+user accounts and home directories will not be available. You can
+forward ports on the host to the guest. For instance, the following
+will forward host port 2222 to guest port 22 (SSH):
+
+
+$ QEMU_NET_OPTS="hostfwd=tcp::2222-:22" ./result/bin/run-*-vm
+
+
+allowing you to log in via SSH (assuming you have set the appropriate
+passwords or SSH authorized keys):
+
+
+$ ssh -p 2222 localhost
+
+
+
diff --git a/nixos/doc/manual/manual.xml b/nixos/doc/manual/manual.xml
index dfbd865b505..6e13281cbd9 100644
--- a/nixos/doc/manual/manual.xml
+++ b/nixos/doc/manual/manual.xml
@@ -5,6 +5,7 @@
NixOS Manual
+ Version
diff --git a/nixos/maintainers/scripts/ec2/create-ebs-amis.py b/nixos/maintainers/scripts/ec2/create-ebs-amis.py
index 93971ac9504..2e7a3273118 100755
--- a/nixos/maintainers/scripts/ec2/create-ebs-amis.py
+++ b/nixos/maintainers/scripts/ec2/create-ebs-amis.py
@@ -16,7 +16,7 @@ parser.add_argument('--hvm', dest='hvm', action='store_true', help='Create HVM i
parser.add_argument('--key', dest='key_name', action='store_true', help='Keypair used for HVM instance creation', default="rob")
args = parser.parse_args()
-instance_type = "cc1.4xlarge" if args.hvm else "m1.small"
+instance_type = "m3.xlarge" if args.hvm else "m1.small"
ebs_size = 8 if args.hvm else 20
@@ -72,7 +72,8 @@ print >> sys.stderr, "NixOS version is {0}".format(version)
m.upload_file("./amazon-base-config.nix", "/mnt/etc/nixos/configuration.nix")
m.run_command("nixos-install")
if args.hvm:
- m.run_command('cp /mnt/nix/store/*-grub-0.97*/lib/grub/i386-pc/* /mnt/boot/grub')
+ m.run_command('nix-env -iA nixos.pkgs.grub')
+ m.run_command('cp /nix/store/*-grub-0.97*/lib/grub/i386-pc/* /mnt/boot/grub')
m.run_command('sed -i "s|hd0|hd0,0|" /mnt/boot/grub/menu.lst')
m.run_command('echo "(hd1) /dev/xvdg" > device.map')
m.run_command('echo -e "root (hd1,0)\nsetup (hd1)" | grub --device-map=device.map --batch')
@@ -98,7 +99,7 @@ def check():
m.connect()
volume = m._conn.get_all_volumes([], filters={'attachment.instance-id': m.resource_id, 'attachment.device': "/dev/sdg"})[0]
if args.hvm:
- instance = m._conn.run_instances( image_id="ami-6a9e4503"
+ instance = m._conn.run_instances( image_id="ami-5f491f36"
, instance_type=instance_type
, key_name=args.key_name
, placement=m.zone
@@ -185,7 +186,7 @@ f.write(
'''.format(args.region, ami_id, instance_type))
f.close()
-test_depl = deployment.create_deployment(db)
+test_depl = db.create_deployment()
test_depl.auto_response = "y"
test_depl.name = "ebs-creator-test"
test_depl.nix_exprs = [os.path.abspath("./ebs-test.nix")]
diff --git a/nixos/maintainers/scripts/ec2/create-s3-amis.sh b/nixos/maintainers/scripts/ec2/create-s3-amis.sh
index 1aaac283239..140b4fcbddb 100755
--- a/nixos/maintainers/scripts/ec2/create-s3-amis.sh
+++ b/nixos/maintainers/scripts/ec2/create-s3-amis.sh
@@ -1,9 +1,8 @@
#! /bin/sh -e
-nixos=$(nix-instantiate --find-file nixos)
export NIXOS_CONFIG=$(dirname $(readlink -f $0))/amazon-base-config.nix
-version=$(nix-instantiate --eval-only '' -A config.system.nixosVersion | sed s/'"'//g)
+version=$(nix-instantiate --eval-only '' -A config.system.nixosVersion | sed s/'"'//g)
echo "NixOS version is $version"
buildAndUploadFor() {
@@ -11,13 +10,13 @@ buildAndUploadFor() {
arch="$2"
echo "building $system image..."
- nix-build '' \
+ nix-build '' \
-A config.system.build.amazonImage --argstr system "$system" -o ec2-ami
ec2-bundle-image -i ./ec2-ami/nixos.img --user "$AWS_ACCOUNT" --arch "$arch" \
-c "$EC2_CERT" -k "$EC2_PRIVATE_KEY"
- for region in eu-west-1 us-east-1 us-west-1 us-west-2; do
+ for region in eu-west-1; do
echo "uploading $system image for $region..."
name=nixos-$version-$arch-s3
diff --git a/nixos/modules/config/pulseaudio.nix b/nixos/modules/config/pulseaudio.nix
index 7a6cc542273..e7cbe7a28f3 100644
--- a/nixos/modules/config/pulseaudio.nix
+++ b/nixos/modules/config/pulseaudio.nix
@@ -131,7 +131,7 @@ in {
users.extraGroups.pulse.gid = gid;
systemd.services.pulseaudio = {
- description = "PulseAudio system-wide server";
+ description = "PulseAudio System-Wide Server";
wantedBy = [ "sound.target" ];
before = [ "sound.target" ];
path = [ cfg.package ];
diff --git a/nixos/modules/config/shells-environment.nix b/nixos/modules/config/shells-environment.nix
index e3fbdd7aaec..0b4f75a3521 100644
--- a/nixos/modules/config/shells-environment.nix
+++ b/nixos/modules/config/shells-environment.nix
@@ -31,9 +31,9 @@ in
res = (head defs').value;
in
if isList res then concatLists (getValues defs')
- else if builtins.lessThan 1 (length defs') then
+ else if lessThan 1 (length defs') then
throw "The option `${showOption loc}' is defined multiple times, in ${showFiles (getFiles defs)}."
- else if !builtins.isString res then
+ else if !isString res then
throw "The option `${showOption loc}' does not have a string value, in ${showFiles (getFiles defs)}."
else res;
});
diff --git a/nixos/modules/config/sysctl.nix b/nixos/modules/config/sysctl.nix
index 31441bad615..f987c9c9e94 100644
--- a/nixos/modules/config/sysctl.nix
+++ b/nixos/modules/config/sysctl.nix
@@ -6,7 +6,7 @@ let
sysctlOption = mkOptionType {
name = "sysctl option value";
- check = x: builtins.isBool x || builtins.isString x || builtins.isInt x;
+ check = x: isBool x || isString x || isInt x;
merge = args: defs: (last defs).value; # FIXME: hacky way to allow overriding in configuration.nix.
};
diff --git a/nixos/modules/config/users-groups.nix b/nixos/modules/config/users-groups.nix
index fb8b0229c1d..714de646eb7 100644
--- a/nixos/modules/config/users-groups.nix
+++ b/nixos/modules/config/users-groups.nix
@@ -188,6 +188,20 @@ in
options = [ groupOpts ];
};
+ security.initialRootPassword = mkOption {
+ type = types.str;
+ default = "";
+ example = "!";
+ description = ''
+ The (hashed) password for the root account set on initial
+ installation. The empty string denotes that root can login
+ locally without a password (but not via remote services such
+ as SSH, or indirectly via su or
+ sudo). The string !
+ prevents root from logging in using a password.
+ '';
+ };
+
};
@@ -240,7 +254,23 @@ in
# Can't use useradd, since it complains that it doesn't know us
# (bootstrap problem!).
echo "root:x:0:0:System administrator:$rootHome:${config.users.defaultUserShell}" >> /etc/passwd
- echo "root::::::::" >> /etc/shadow
+ echo "root:${config.security.initialRootPassword}:::::::" >> /etc/shadow
+ fi
+ '';
+
+ # Print a reminder for users to set a root password.
+ environment.interactiveShellInit =
+ ''
+ if [ "$UID" = 0 ]; then
+ read _l < /etc/shadow
+ if [ "''${_l:0:6}" = root:: ]; then
+ cat >&2 < $out/loader/entries/nixos-livecd.conf
+ echo "linux /boot/bzImage" >> $out/loader/entries/nixos-livecd.conf
+ echo "initrd /boot/initrd" >> $out/loader/entries/nixos-livecd.conf
+ echo "options init=${config.system.build.toplevel}/init ${toString config.boot.kernelParams}" >> $out/loader/entries/nixos-livecd.conf
+ echo "default nixos-livecd" > $out/loader/loader.conf
+ echo "timeout 5" >> $out/loader/loader.conf
+ '';
+
efiImg = pkgs.runCommand "efi-image_eltorito" { buildInputs = [ pkgs.mtools ]; }
''
#Let's hope 10M is enough
dd bs=2048 count=5120 if=/dev/zero of="$out"
${pkgs.dosfstools}/sbin/mkfs.vfat "$out"
- mmd -i "$out" efi
- mmd -i "$out" efi/boot
- mmd -i "$out" efi/nixos
- mmd -i "$out" loader
- mmd -i "$out" loader/entries
+ mcopy -svi "$out" ${efiDir}/* ::
+ mmd -i "$out" boot
mcopy -v -i "$out" \
- ${pkgs.gummiboot}/lib/gummiboot/gummiboot${targetArch}.efi \
- ::efi/boot/boot${targetArch}.efi
+ ${config.boot.kernelPackages.kernel}/bzImage ::boot/bzImage
mcopy -v -i "$out" \
- ${config.boot.kernelPackages.kernel}/bzImage ::bzImage
- mcopy -v -i "$out" \
- ${config.system.build.initialRamdisk}/initrd ::efi/nixos/initrd
- echo "title NixOS LiveCD" > boot-params
- echo "linux /bzImage" >> boot-params
- echo "initrd /efi/nixos/initrd" >> boot-params
- echo "options init=${config.system.build.toplevel}/init ${toString config.boot.kernelParams}" >> boot-params
- mcopy -v -i "$out" boot-params ::loader/entries/nixos-livecd.conf
- echo "default nixos-livecd" > boot-params
- echo "timeout 5" >> boot-params
- mcopy -v -i "$out" boot-params ::loader/loader.conf
+ ${config.system.build.initialRamdisk}/initrd ::boot/initrd
'';
targetArch = if pkgs.stdenv.isi686 then
@@ -263,6 +261,12 @@ in
{ source = efiImg;
target = "/boot/efi.img";
}
+ { source = "${efiDir}/efi";
+ target = "/efi";
+ }
+ { source = "${efiDir}/loader";
+ target = "/loader";
+ }
] ++ mapAttrsToList (n: v: { source = v; target = "/boot/${n}"; }) config.boot.loader.grub.extraFiles;
# The Grub menu.
diff --git a/nixos/modules/installer/tools/nixos-generate-config.pl b/nixos/modules/installer/tools/nixos-generate-config.pl
index 0f9142990ec..6b42058a892 100644
--- a/nixos/modules/installer/tools/nixos-generate-config.pl
+++ b/nixos/modules/installer/tools/nixos-generate-config.pl
@@ -386,9 +386,6 @@ if ($showHardwareConfig) {
boot.loader.grub.enable = false;
boot.loader.gummiboot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
- # !!! Remove this when nixos is on 3.10 or greater by default
- # EFI booting requires kernel >= 3.10
- boot.kernelPackages = pkgs.linuxPackages_3_10;
EOF
} else {
$bootLoaderConfig = < ${exprToConfig value}";
-
- repeatedAttrsToConfig = values:
- concatStringsSep "\n" (map valueToConfig values);
-
- attrsToConfig = attrs:
- let
- attrToConfig = name: valueToConfig {
- inherit name;
- value = (getAttr name attrs);
- };
- in
- concatStringsSep "\n" (map attrToConfig (attrNames attrs));
-
- exprToConfig = expr:
- let
- isCustomType = expr: (isAttrs expr) && (expr ? __type);
-
- isFloat = expr: (isCustomType expr) && (expr.__type == "float");
-
- isHash = expr: (isCustomType expr) && (expr.__type == "hash");
-
- isRepeatedAttrs = expr: (isCustomType expr) && (expr.__type == "repeated");
- in
- if builtins.isBool expr then (if expr then "true" else "false") else
- if builtins.isString expr then ''"${expr}"'' else
- if builtins.isInt expr then toString expr else
- if isFloat expr then expr.value else
- if isList expr then listToConfig expr else
- if isHash expr then hashToConfig expr.value else
- if isRepeatedAttrs expr then repeatedAttrsToConfig expr.values
- else attrsToConfig expr;
-
- mergeConfigs = configs:
- let
- op = attrs: newAttrs:
- let
- isRepeated = newAttrs ? __type && newAttrs.__type == "repeated";
- in {
- values = attrs.values ++ (if isRepeated then newAttrs.values else
- map (name: { inherit name; value = getAttr name newAttrs; })
- (attrNames newAttrs));
- };
- in (foldl op { values = []; } configs) // { __type = "repeated"; };
-
in
{
@@ -78,48 +14,45 @@ in
services.logstash = {
enable = mkOption {
default = false;
- description = ''
- Enable logstash.
- '';
+ description = "Enable logstash";
};
inputConfig = mkOption {
- default = {};
- description = ''
- An attribute set (or an expression generated by mkNameValuePairs)
- representing a logstash configuration's input section.
- Logstash configs are name-value pairs, where values can be bools,
- strings, numbers, arrays, hashes, or other name-value pairs,
- and names are strings that can be repeated. Name-value pairs with no
- repeats are represented by attr sets. Bools, strings, ints, and
- arrays are mapped directly. Name-value pairs with repeats can be
- generated by the config.lib.logstash.mkNameValuePairs function, which
- takes a list of attrsets and combines them while preserving attribute
- name duplicates if they occur. Similarly, there are the mkFloat and
- mkHash functions, which take a string representation of a float and an
- attrset, respectively.
+ default = ''stdin { type => "example" }'';
+ description = "Logstash input configuration";
+ example = ''
+ # Read from journal
+ pipe {
+ command => "${pkgs.systemd}/bin/journalctl -f -o json"
+ type => "syslog" codec => json {}
+ }
'';
- apply = mergeConfigs;
};
filterConfig = mkOption {
- default = {};
- description = ''
- An attribute set (or an expression generated by mkNameValuePairs)
- representing a logstash configuration's filter section.
- See inputConfig description for details.
+ default = ''noop {}'';
+ description = "logstash filter configuration";
+ example = ''
+ if [type] == "syslog" {
+ # Keep only relevant systemd fields
+ # http://www.freedesktop.org/software/systemd/man/systemd.journal-fields.html
+ prune {
+ whitelist_names => [
+ "type", "@timestamp", "@version",
+ "MESSAGE", "PRIORITY", "SYSLOG_FACILITY",
+ ]
+ }
+ }
'';
- apply = mergeConfigs;
};
outputConfig = mkOption {
- default = {};
- description = ''
- An attribute set (or an expression generated by mkNameValuePairs)
- representing a logstash configuration's output section.
- See inputConfig description for details.
+ default = ''stdout { debug => true debug_format => "json"}'';
+ description = "Logstash output configuration";
+ example = ''
+ redis { host => "localhost" data_type => "list" key => "logstash" codec => json }
+ elasticsearch { embedded => true }
'';
- apply = mergeConfigs;
};
};
};
@@ -127,35 +60,26 @@ in
###### implementation
- config = mkMerge [ {
- lib.logstash = {
- mkFloat = stringRep: { __type = "float"; value = stringRep; };
-
- mkHash = attrs: { __type = "hash"; value = attrs; };
-
- mkNameValuePairs = mergeConfigs;
- };
- } ( mkIf cfg.enable {
+ config = mkIf cfg.enable {
systemd.services.logstash = with pkgs; {
description = "Logstash daemon";
-
wantedBy = [ "multi-user.target" ];
- path = [ jre ];
+ serviceConfig = {
+ ExecStart = "${jre}/bin/java -jar ${logstash} agent -f ${writeText "logstash.conf" ''
+ input {
+ ${cfg.inputConfig}
+ }
- script = "cd /tmp && exec java -jar ${logstash} agent -f ${writeText "logstash.conf" ''
- input {
- ${exprToConfig cfg.inputConfig}
- }
+ filter {
+ ${cfg.filterConfig}
+ }
- filter {
- ${exprToConfig cfg.filterConfig}
- }
-
- output {
- ${exprToConfig cfg.outputConfig}
- }
- ''} &> /var/log/logstash.log";
+ output {
+ ${cfg.outputConfig}
+ }
+ ''}";
+ };
};
- })];
+ };
}
diff --git a/nixos/modules/services/misc/disnix.nix b/nixos/modules/services/misc/disnix.nix
index 6419e6f8fc7..82526b154e7 100644
--- a/nixos/modules/services/misc/disnix.nix
+++ b/nixos/modules/services/misc/disnix.nix
@@ -15,6 +15,7 @@ let
enablePostgreSQLDatabase = config.services.postgresql.enable;
enableSubversionRepository = config.services.svnserve.enable;
enableTomcatWebApplication = config.services.tomcat.enable;
+ enableMongoDatabase = config.services.mongodb.enable;
});
in
@@ -110,7 +111,7 @@ in
// optionalAttrs (config.services.tomcat.enable) { tomcatPort = 8080; }
// optionalAttrs (config.services.svnserve.enable) { svnBaseDir = config.services.svnserve.svnBaseDir; }
// optionalAttrs (cfg.publishInfrastructure.enableAuthentication) (
- optionalAttrs (config.services.mysql.enable) { mysqlUsername = "root"; mysqlPassword = builtins.readFile config.services.mysql.rootPassword; })
+ optionalAttrs (config.services.mysql.enable) { mysqlUsername = "root"; mysqlPassword = readFile config.services.mysql.rootPassword; })
)
;
@@ -125,17 +126,18 @@ in
++ optional config.services.httpd.enable "httpd.service"
++ optional config.services.mysql.enable "mysql.service"
++ optional config.services.tomcat.enable "tomcat.service"
- ++ optional config.services.svnserve.enable "svnserve.service";
+ ++ optional config.services.svnserve.enable "svnserve.service"
+ ++ optional config.services.mongodb.enable "mongodb.service";
restartIfChanged = false;
- path = [ pkgs.nix pkgs.disnix ];
-
- script =
- ''
- export HOME=/root
- disnix-service --dysnomia-modules-dir=${dysnomia}/libexec/dysnomia
- '';
+ path = [ pkgs.nix pkgs.disnix pkgs.dysnomia ];
+
+ environment = {
+ HOME = "/root";
+ };
+
+ exec = "disnix-service";
};
} // optionalAttrs cfg.publishAvahi {
disnixAvahi =
@@ -150,7 +152,7 @@ in
${concatMapStrings (infrastructureAttrName:
let infrastructureAttrValue = getAttr infrastructureAttrName (cfg.infrastructure);
in
- if builtins.isInt infrastructureAttrValue then
+ if isInt infrastructureAttrValue then
''${infrastructureAttrName}=${toString infrastructureAttrValue} \
''
else
diff --git a/nixos/modules/services/misc/gurobi.nix b/nixos/modules/services/misc/gurobi.nix
deleted file mode 100644
index 9cd76a1e78f..00000000000
--- a/nixos/modules/services/misc/gurobi.nix
+++ /dev/null
@@ -1,41 +0,0 @@
-{ config, pkgs, ... }:
-
-with pkgs.lib;
-
-let
- cfg = config.services.gurobi.tokenServer;
-in {
- options = {
- services.gurobi.tokenServer = {
- enable = mkOption {
- default = false;
-
- description = "Whether to enable the Gurobi token server";
-
- type = types.bool;
- };
-
- license = mkOption {
- description = "Path to the Gurobi license file";
-
- type = types.path;
- };
- };
- };
-
- config = mkIf cfg.enable {
- systemd.services.gurobi-token-server = {
- description = "Gurobi token server";
-
- wantedBy = [ "multi-user.target" ];
-
- environment.GRB_LICENSE_FILE = cfg.license;
-
- serviceConfig = {
- ExecStart = "${pkgs.gurobi}/bin/grb_ts";
-
- Type = "forking";
- };
- };
- };
-}
diff --git a/nixos/modules/services/misc/nixos-manual.nix b/nixos/modules/services/misc/nixos-manual.nix
index 885b8fa2d0c..1a8b85db329 100644
--- a/nixos/modules/services/misc/nixos-manual.nix
+++ b/nixos/modules/services/misc/nixos-manual.nix
@@ -23,6 +23,7 @@ let
manual = import ../../../doc/manual {
inherit pkgs;
+ version = config.system.nixosVersion;
revision = config.system.nixosRevision;
options = eval.options;
};
diff --git a/nixos/modules/services/monitoring/apcupsd.nix b/nixos/modules/services/monitoring/apcupsd.nix
index 114bad5c947..58ec8a49694 100644
--- a/nixos/modules/services/monitoring/apcupsd.nix
+++ b/nixos/modules/services/monitoring/apcupsd.nix
@@ -148,7 +148,7 @@ in
# wall: cannot get tty name: Inappropriate ioctl for device
# The message still gets through.
systemd.services.apcupsd = {
- description = "APC UPS daemon";
+ description = "APC UPS Daemon";
wantedBy = [ "multi-user.target" ];
preStart = "mkdir -p /run/apcupsd/";
serviceConfig = {
@@ -172,7 +172,7 @@ in
before = [ "final.target" ];
wantedBy = [ "shutdown.target" ];
unitConfig = {
- Description = "APC UPS killpower";
+ Description = "APC UPS Kill Power";
ConditionPathExists = "/run/apcupsd/powerfail";
DefaultDependencies = "no";
};
diff --git a/nixos/modules/services/monitoring/graphite.nix b/nixos/modules/services/monitoring/graphite.nix
index 08e6ef662cc..be57b8c5c03 100644
--- a/nixos/modules/services/monitoring/graphite.nix
+++ b/nixos/modules/services/monitoring/graphite.nix
@@ -15,6 +15,7 @@ let
PYTHONPATH = "${pkgs.python27Packages.carbon}/lib/python2.7/site-packages";
GRAPHITE_ROOT = dataDir;
GRAPHITE_CONF_DIR = "/etc/graphite/";
+ GRAPHITE_STORAGE_DIR = dataDir;
};
in {
@@ -171,7 +172,7 @@ in {
];
systemd.services.carbonCache = mkIf cfg.carbon.enableCache {
- description = "Graphite data storage backend";
+ description = "Graphite Data Storage Backend";
wantedBy = [ "multi-user.target" ];
after = [ "network-interfaces.target" ];
environment = carbonEnv;
@@ -189,7 +190,7 @@ in {
};
systemd.services.carbonAggregator = mkIf cfg.carbon.enableAggregator {
- description = "Carbon data aggregator";
+ description = "Carbon Data Aggregator";
wantedBy = [ "multi-user.target" ];
after = [ "network-interfaces.target" ];
environment = carbonEnv;
@@ -200,7 +201,7 @@ in {
};
systemd.services.carbonRelay = mkIf cfg.carbon.enableRelay {
- description = "Carbon data relay";
+ description = "Carbon Data Relay";
wantedBy = [ "multi-user.target" ];
after = [ "network-interfaces.target" ];
environment = carbonEnv;
@@ -211,7 +212,7 @@ in {
};
systemd.services.graphiteWeb = mkIf cfg.web.enable {
- description = "Graphite web interface";
+ description = "Graphite Web Interface";
wantedBy = [ "multi-user.target" ];
after = [ "network-interfaces.target" ];
environment = {
diff --git a/nixos/modules/services/monitoring/munin.nix b/nixos/modules/services/monitoring/munin.nix
index 42d5f61af30..153f4942902 100644
--- a/nixos/modules/services/monitoring/munin.nix
+++ b/nixos/modules/services/monitoring/munin.nix
@@ -182,7 +182,7 @@ in
}) (mkIf nodeCfg.enable {
systemd.services.munin-node = {
- description = "Munin node, the agent process";
+ description = "Munin Node";
after = [ "network.target" ];
wantedBy = [ "multi-user.target" ];
path = [ pkgs.munin ];
diff --git a/nixos/modules/services/network-filesystems/samba.nix b/nixos/modules/services/network-filesystems/samba.nix
index e18d9d7b67b..4f6fce6cd52 100644
--- a/nixos/modules/services/network-filesystems/samba.nix
+++ b/nixos/modules/services/network-filesystems/samba.nix
@@ -57,7 +57,7 @@ let
nssModulesPath = config.system.nssModules.path;
daemonService = appName: args:
- { description = "Samba Service daemon ${appName}";
+ { description = "Samba Service Daemon ${appName}";
wantedBy = [ "samba.target" ];
partOf = [ "samba.target" ];
@@ -211,7 +211,7 @@ in
systemd = {
targets.samba = {
- description = "Samba server";
+ description = "Samba Server";
requires = [ "samba-setup.service" ];
after = [ "samba-setup.service" "network.target" ];
wantedBy = [ "multi-user.target" ];
@@ -222,7 +222,7 @@ in
"samba-smbd" = daemonService "smbd" "-F";
"samba-winbindd" = daemonService "winbindd" "-F";
"samba-setup" = {
- description = "Samba setup task";
+ description = "Samba Setup Task";
script = setupScript;
unitConfig.RequiresMountsFor = "/home/smbd /var/samba /var/log/samba";
};
diff --git a/nixos/modules/services/networking/networkmanager.nix b/nixos/modules/services/networking/networkmanager.nix
index 2e8d17d872d..62bf38e4e70 100644
--- a/nixos/modules/services/networking/networkmanager.nix
+++ b/nixos/modules/services/networking/networkmanager.nix
@@ -55,15 +55,19 @@ let
fi
'';
+ ns = xs: writeText "nameservers" (
+ concatStrings (map (s: "nameserver ${s}\n") xs)
+ );
+
overrideNameserversScript = writeScript "02overridedns" ''
#!/bin/sh
- ${optionalString cfg.overrideNameservers "${gnused}/bin/sed -i '/nameserver /d' /etc/resolv.conf"}
- ${concatStrings (map (s: ''
- ${optionalString cfg.appendNameservers
- "${gnused}/bin/sed -i '/nameserver ${s}/d' /etc/resolv.conf"
- }
- echo 'nameserver ${s}' >> /etc/resolv.conf
- '') config.networking.nameservers)}
+ tmp=`${coreutils}/bin/mktemp`
+ ${gnused}/bin/sed '/nameserver /d' /etc/resolv.conf > $tmp
+ ${gnugrep}/bin/grep 'nameserver ' /etc/resolv.conf | \
+ ${gnugrep}/bin/grep -vf ${ns (cfg.appendNameservers ++ cfg.insertNameservers)} > $tmp.ns
+ ${optionalString (cfg.appendNameservers != []) "${coreutils}/bin/cat $tmp $tmp.ns ${ns cfg.appendNameservers} > /etc/resolv.conf"}
+ ${optionalString (cfg.insertNameservers != []) "${coreutils}/bin/cat $tmp ${ns cfg.insertNameservers} $tmp.ns > /etc/resolv.conf"}
+ ${coreutils}/bin/rm -f $tmp $tmp.ns
'';
in {
@@ -95,23 +99,21 @@ in {
apply = list: [ networkmanager modemmanager wpa_supplicant ] ++ list;
};
- overrideNameservers = mkOption {
- default = false;
+ appendNameservers = mkOption {
+ type = types.listOf types.string;
+ default = [];
description = ''
- If enabled, any nameservers received by DHCP or configured in
- NetworkManager will be replaced by the nameservers configured
- in the networking.nameservers option. This
- option overrides the appendNameservers option
- if both are enabled.
+ A list of name servers that should be appended
+ to the ones configured in NetworkManager or received by DHCP.
'';
};
- appendNameservers = mkOption {
- default = false;
+ insertNameservers = mkOption {
+ type = types.listOf types.string;
+ default = [];
description = ''
- If enabled, the name servers configured in the
- networking.nameservers option will be appended
- to the ones configured in NetworkManager or received by DHCP.
+ A list of name servers that should be inserted before
+ the ones configured in NetworkManager or received by DHCP.
'';
};
@@ -144,7 +146,7 @@ in {
{ source = "${networkmanager_openconnect}/etc/NetworkManager/VPN/nm-openconnect-service.name";
target = "NetworkManager/VPN/nm-openconnect-service.name";
}
- ] ++ pkgs.lib.optional (cfg.overrideNameservers || cfg.appendNameservers)
+ ] ++ pkgs.lib.optional (cfg.appendNameservers == [] || cfg.insertNameservers == [])
{ source = overrideNameserversScript;
target = "NetworkManager/dispatcher.d/02overridedns";
};
diff --git a/nixos/modules/services/networking/ssh/sshd.nix b/nixos/modules/services/networking/ssh/sshd.nix
index 7a2335847e3..85b6ab1efec 100644
--- a/nixos/modules/services/networking/ssh/sshd.nix
+++ b/nixos/modules/services/networking/ssh/sshd.nix
@@ -19,7 +19,7 @@ let
knownHostsFile = pkgs.writeText "ssh_known_hosts" (
flip concatMapStrings knownHosts (h:
- "${concatStringsSep "," h.hostNames} ${builtins.readFile h.publicKeyFile}"
+ "${concatStringsSep "," h.hostNames} ${readFile h.publicKeyFile}"
)
);
@@ -59,7 +59,7 @@ let
mode = "0444";
source = pkgs.writeText "${u.name}-authorized_keys" ''
${concatStringsSep "\n" u.openssh.authorizedKeys.keys}
- ${concatMapStrings (f: builtins.readFile f + "\n") u.openssh.authorizedKeys.keyFiles}
+ ${concatMapStrings (f: readFile f + "\n") u.openssh.authorizedKeys.keyFiles}
'';
};
usersWithKeys = attrValues (flip filterAttrs config.users.extraUsers (n: u:
diff --git a/nixos/modules/services/networking/vsftpd.nix b/nixos/modules/services/networking/vsftpd.nix
index 0a6355e6ff1..1c77cc6df4e 100644
--- a/nixos/modules/services/networking/vsftpd.nix
+++ b/nixos/modules/services/networking/vsftpd.nix
@@ -24,6 +24,7 @@ let
cfgText = "${vsftpdName}=${if getAttr nixosName cfg then "YES" else "NO"}";
nixosOption = {
+ type = types.bool;
name = nixosName;
value = mkOption {
inherit description default;
@@ -33,27 +34,26 @@ let
};
optionDescription = [
-
(yesNoOption "anonymousUser" "anonymous_enable" false ''
- Whether to enable the anonymous FTP user.
+ Whether to enable the anonymous FTP user.
'')
(yesNoOption "localUsers" "local_enable" false ''
- Whether to enable FTP for local users.
+ Whether to enable FTP for local users.
'')
(yesNoOption "writeEnable" "write_enable" false ''
- Whether any write activity is permitted to users.
+ Whether any write activity is permitted to users.
'')
(yesNoOption "anonymousUploadEnable" "anon_upload_enable" false ''
- Whether any uploads are permitted to anonymous users.
+ Whether any uploads are permitted to anonymous users.
'')
(yesNoOption "anonymousMkdirEnable" "anon_mkdir_write_enable" false ''
- Whether any uploads are permitted to anonymous users.
+ Whether any uploads are permitted to anonymous users.
'')
(yesNoOption "chrootlocalUser" "chroot_local_user" false ''
- Whether local users are confined to their home directory.
+ Whether local users are confined to their home directory.
'')
(yesNoOption "userlistEnable" "userlist_enable" false ''
- Whether users are included.
+ Whether users are included.
'')
(yesNoOption "userlistDeny" "userlist_deny" false ''
Specifies whether is a list of user
@@ -61,35 +61,37 @@ let
The default false means whitelist/allow.
'')
(yesNoOption "forceLocalLoginsSSL" "force_local_logins_ssl" false ''
- Only applies if is true. Non anonymous (local) users
- must use a secure SSL connection to send a password.
+ Only applies if is true. Non anonymous (local) users
+ must use a secure SSL connection to send a password.
'')
(yesNoOption "forceLocalDataSSL" "force_local_data_ssl" false ''
- Only applies if is true. Non anonymous (local) users
- must use a secure SSL connection for sending/receiving data on data connection.
+ Only applies if is true. Non anonymous (local) users
+ must use a secure SSL connection for sending/receiving data on data connection.
'')
(yesNoOption "ssl_tlsv1" "ssl_tlsv1" true '' '')
(yesNoOption "ssl_sslv2" "ssl_sslv2" false '' '')
(yesNoOption "ssl_sslv3" "ssl_sslv3" false '' '')
+ ];
- {
- cfgText = if cfg.rsaCertFile == null then ""
- else ''
+ configFile = pkgs.writeText "vsftpd.conf"
+ ''
+ ${concatMapStrings (x: "${x.cfgText}\n") optionDescription}
+ ${optionalString (cfg.rsaCertFile != null) ''
ssl_enable=YES
rsa_cert_file=${cfg.rsaCertFile}
- '';
-
- nixosOption = {
- name = "rsaCertFile";
- value = mkOption {
- default = null;
- description = ''
- rsa certificate file.
- '';
- };
- };
- }
- ];
+ ''}
+ ${optionalString (cfg.userlistFile != null) ''
+ userlist_file=${cfg.userlistFile}
+ ''}
+ background=YES
+ listen=YES
+ nopriv_user=vsftpd
+ secure_chroot_dir=/var/empty
+ syslog_enable=YES
+ ${optionalString (pkgs.stdenv.system == "x86_64-linux") ''
+ seccomp_sandbox=NO
+ ''}
+ '';
in
@@ -108,10 +110,7 @@ in
userlist = mkOption {
default = [];
-
- description = ''
- See .
- '';
+ description = "See .";
};
userlistFile = mkOption {
@@ -127,13 +126,20 @@ in
};
anonymousUserHome = mkOption {
+ type = types.path;
default = "/home/ftp/";
- description = ''
- Directory to consider the HOME of the anonymous user.
- '';
+ description = ''
+ Directory to consider the HOME of the anonymous user.
+ '';
};
- } // (listToAttrs (catAttrs "nixosOption" optionDescription)) ;
+ rsaCertFile = mkOption {
+ type = types.nullOr types.path;
+ default = null;
+ description = "RSA certificate file.";
+ };
+
+ } // (listToAttrs (catAttrs "nixosOption" optionDescription));
};
@@ -142,14 +148,12 @@ in
config = mkIf cfg.enable {
- assertions = [
- {
- assertion =
+ assertions = singleton
+ { assertion =
(cfg.forceLocalLoginsSSL -> cfg.rsaCertFile != null)
&& (cfg.forceLocalDataSSL -> cfg.rsaCertFile != null);
message = "vsftpd: If forceLocalLoginsSSL or forceLocalDataSSL is true then a rsaCertFile must be provided!";
- }
- ];
+ };
users.extraUsers =
[ { name = "vsftpd";
@@ -157,7 +161,7 @@ in
description = "VSFTPD user";
home = "/homeless-shelter";
}
- ] ++ pkgs.lib.optional cfg.anonymousUser
+ ] ++ optional cfg.anonymousUser
{ name = "ftp";
uid = config.ids.uids.ftp;
group = "ftp";
@@ -165,41 +169,27 @@ in
home = cfg.anonymousUserHome;
};
- users.extraGroups = singleton
- { name = "ftp";
- gid = config.ids.gids.ftp;
- };
+ users.extraGroups.ftp.gid = config.ids.gids.ftp;
# If you really have to access root via FTP use mkOverride or userlistDeny
# = false and whitelist root
services.vsftpd.userlist = if cfg.userlistDeny then ["root"] else [];
- environment.etc."vsftpd.conf".text =
- concatMapStrings (x: "${x.cfgText}\n") optionDescription
- + ''
- ${if cfg.userlistFile == null then ""
- else "userlist_file=${cfg.userlistFile}"}
- background=NO
- listen=YES
- nopriv_user=vsftpd
- secure_chroot_dir=/var/empty
- '';
+ systemd.services.vsftpd =
+ { description = "Vsftpd Server";
- jobs.vsftpd =
- { description = "vsftpd server";
-
- startOn = "started network-interfaces";
- stopOn = "stopping network-interfaces";
+ wantedBy = [ "multi-user.target" ];
preStart =
- ''
- ${if cfg.anonymousUser then ''
+ optionalString cfg.anonymousUser
+ ''
mkdir -p -m 555 ${cfg.anonymousUserHome}
chown -R ftp:ftp ${cfg.anonymousUserHome}
- '' else ""}
- '';
+ '';
- exec = "${vsftpd}/sbin/vsftpd /etc/vsftpd.conf";
+ serviceConfig.ExecStart = "@${vsftpd}/sbin/vsftpd vsftpd ${configFile}";
+ serviceConfig.Restart = "always";
+ serviceConfig.Type = "forking";
};
};
diff --git a/nixos/modules/services/scheduling/fcron.nix b/nixos/modules/services/scheduling/fcron.nix
index 0c0811ca6e0..fda29ca0482 100644
--- a/nixos/modules/services/scheduling/fcron.nix
+++ b/nixos/modules/services/scheduling/fcron.nix
@@ -8,11 +8,14 @@ let
queuelen = if cfg.queuelen == null then "" else "-q ${toString cfg.queuelen}";
+ # Duplicate code, also found in cron.nix. Needs deduplication.
systemCronJobs =
''
SHELL=${pkgs.bash}/bin/bash
PATH=${config.system.path}/bin:${config.system.path}/sbin
- MAILTO="${config.services.cron.mailto}"
+ ${optionalString (config.services.cron.mailto != null) ''
+ MAILTO="${config.services.cron.mailto}"
+ ''}
NIX_CONF_DIR=/etc/nix
${pkgs.lib.concatStrings (map (job: job + "\n") config.services.cron.systemCronJobs)}
'';
diff --git a/nixos/modules/services/search/elasticsearch.nix b/nixos/modules/services/search/elasticsearch.nix
index 9d345e30361..b3d934862ab 100644
--- a/nixos/modules/services/search/elasticsearch.nix
+++ b/nixos/modules/services/search/elasticsearch.nix
@@ -91,7 +91,7 @@ in {
target = "elasticsearch/logging.yml"; }
];
- systemd.services.elasticsearch = mkIf cfg.enable {
+ systemd.services.elasticsearch = {
description = "Elasticsearch daemon";
wantedBy = [ "multi-user.target" ];
after = [ "network-interfaces.target" ];
diff --git a/nixos/modules/services/torrent/transmission.nix b/nixos/modules/services/torrent/transmission.nix
index 063332d4862..68f9b0647c0 100644
--- a/nixos/modules/services/torrent/transmission.nix
+++ b/nixos/modules/services/torrent/transmission.nix
@@ -15,7 +15,7 @@ let
toOption = x:
if x == true then "true"
else if x == false then "false"
- else if builtins.isInt x then toString x
+ else if isInt x then toString x
else toString ''\"${x}\"'';
# All lines in settings.json end with a ',' (comma), except for the last
diff --git a/nixos/modules/services/web-servers/apache-httpd/default.nix b/nixos/modules/services/web-servers/apache-httpd/default.nix
index d21b6da0e77..90094889348 100644
--- a/nixos/modules/services/web-servers/apache-httpd/default.nix
+++ b/nixos/modules/services/web-servers/apache-httpd/default.nix
@@ -17,8 +17,8 @@ let
getPort = cfg: if cfg.port != 0 then cfg.port else if cfg.enableSSL then 443 else 80;
extraModules = attrByPath ["extraModules"] [] mainCfg;
- extraForeignModules = filter builtins.isAttrs extraModules;
- extraApacheModules = filter (x: !(builtins.isAttrs x)) extraModules; # I'd prefer using builtins.isString here, but doesn't exist yet
+ extraForeignModules = filter isAttrs extraModules;
+ extraApacheModules = filter isString extraModules;
makeServerInfo = cfg: {
diff --git a/nixos/modules/services/web-servers/apache-httpd/mediawiki.nix b/nixos/modules/services/web-servers/apache-httpd/mediawiki.nix
index dcc05b03891..f1b5b675161 100644
--- a/nixos/modules/services/web-servers/apache-httpd/mediawiki.nix
+++ b/nixos/modules/services/web-servers/apache-httpd/mediawiki.nix
@@ -72,11 +72,11 @@ let
# Unpack Mediawiki and put the config file in its root directory.
mediawikiRoot = pkgs.stdenv.mkDerivation rec {
- name= "mediawiki-1.20.5";
+ name= "mediawiki-1.20.7";
src = pkgs.fetchurl {
url = "http://download.wikimedia.org/mediawiki/1.20/${name}.tar.gz";
- sha256 = "0ix6khrilfdncjqnh41xjs0bd49i1q0rywycjaixjfpwj6vjbqbl";
+ sha256 = "0cdl2mq3nw1jymanlxn7pi3qbf5y5003q53kmc8dip73nvrwnfxm";
};
skins = config.skins;
diff --git a/nixos/modules/services/web-servers/nginx/default.nix b/nixos/modules/services/web-servers/nginx/default.nix
index b26af1aa744..4a1b6de2873 100644
--- a/nixos/modules/services/web-servers/nginx/default.nix
+++ b/nixos/modules/services/web-servers/nginx/default.nix
@@ -4,7 +4,7 @@ with pkgs.lib;
let
cfg = config.services.nginx;
- nginx = pkgs.nginx.override { fullWebDAV = cfg.fullWebDAV; };
+ nginx = cfg.package;
configFile = pkgs.writeText "nginx.conf" ''
user ${cfg.user} ${cfg.group};
daemon off;
@@ -22,6 +22,13 @@ in
";
};
+ package = mkOption {
+ default = pkgs.nginx;
+ description = "
+ Nginx package to use.
+ ";
+ };
+
config = mkOption {
default = "events {}";
description = "
@@ -46,10 +53,6 @@ in
description = "Group account under which nginx runs.";
};
- fullWebDAV = mkOption {
- default = false;
- description = "Compile in a third party module providing full WebDAV support";
- };
};
};
diff --git a/nixos/modules/services/x11/desktop-managers/default.nix b/nixos/modules/services/x11/desktop-managers/default.nix
index ab3ced4c9e2..035b23b4e1b 100644
--- a/nixos/modules/services/x11/desktop-managers/default.nix
+++ b/nixos/modules/services/x11/desktop-managers/default.nix
@@ -17,7 +17,7 @@ in
# Note: the order in which desktop manager modules are imported here
# determines the default: later modules (if enabled) are preferred.
# E.g., if KDE is enabled, it supersedes xterm.
- imports = [ ./none.nix ./xterm.nix ./xfce.nix ./gnome.nix ./kde4.nix ./e17.nix ];
+ imports = [ ./none.nix ./xterm.nix ./xfce.nix ./kde4.nix ./e17.nix ];
options = {
diff --git a/nixos/modules/services/x11/desktop-managers/gnome.nix b/nixos/modules/services/x11/desktop-managers/gnome.nix
deleted file mode 100644
index b0212446ad3..00000000000
--- a/nixos/modules/services/x11/desktop-managers/gnome.nix
+++ /dev/null
@@ -1,42 +0,0 @@
-{ config, pkgs, ... }:
-
-with pkgs.lib;
-
-let
-
- cfg = config.services.xserver.desktopManager.gnome;
- gnome = pkgs.gnome;
-
-in
-
-{
-
- options = {
-
- services.xserver.desktopManager.gnome.enable = mkOption {
- default = false;
- example = true;
- description = "Enable a gnome terminal as a desktop manager.";
- };
-
- };
-
- config = mkIf cfg.enable {
-
- services.xserver.desktopManager.session = singleton
- { name = "gnome";
- start = ''
- ${gnome.gnometerminal}/bin/gnome-terminal -ls &
- waitPID=$!
- '';
- };
-
- environment.systemPackages =
- [ gnome.gnometerminal
- gnome.GConf
- gnome.gconfeditor
- ];
-
- };
-
-}
diff --git a/nixos/modules/services/x11/desktop-managers/xfce.nix b/nixos/modules/services/x11/desktop-managers/xfce.nix
index 8199829ef90..d20010c70a6 100644
--- a/nixos/modules/services/x11/desktop-managers/xfce.nix
+++ b/nixos/modules/services/x11/desktop-managers/xfce.nix
@@ -72,6 +72,7 @@ in
pkgs.xfce.thunar_volman
pkgs.xfce.gvfs
pkgs.xfce.xfce4_appfinder
+ pkgs.xfce.tumbler
]
++ optional config.powerManagement.enable pkgs.xfce.xfce4_power_manager;
diff --git a/nixos/modules/services/x11/display-managers/default.nix b/nixos/modules/services/x11/display-managers/default.nix
index c4fce3706dc..80f559bddc4 100644
--- a/nixos/modules/services/x11/display-managers/default.nix
+++ b/nixos/modules/services/x11/display-managers/default.nix
@@ -44,7 +44,9 @@ let
# since presumably the desktop environment will handle these.
if [ -z "$_INHIBITION_LOCK_TAKEN" ]; then
export _INHIBITION_LOCK_TAKEN=1
- exec ${config.systemd.package}/bin/systemd-inhibit --what=handle-lid-switch:handle-power-key "$0" "$sessionType"
+ if ! ${config.systemd.package}/bin/loginctl show-session $XDG_SESSION_ID | grep -q '^RemoteHost='; then
+ exec ${config.systemd.package}/bin/systemd-inhibit --what=handle-lid-switch:handle-power-key "$0" "$sessionType"
+ fi
fi
''}
diff --git a/nixos/modules/services/x11/hardware/synaptics.nix b/nixos/modules/services/x11/hardware/synaptics.nix
index 5884e9aa31c..91e01f2e30b 100644
--- a/nixos/modules/services/x11/hardware/synaptics.nix
+++ b/nixos/modules/services/x11/hardware/synaptics.nix
@@ -57,6 +57,13 @@ let cfg = config.services.xserver.synaptics; in
description = "Whether to enable tap buttons.";
};
+ buttonsMap = mkOption {
+ default = [1 2 3];
+ example = [1 3 2];
+ description = "Remap touchpad buttons.";
+ apply = map toString;
+ };
+
palmDetect = mkOption {
default = false;
example = true;
@@ -104,10 +111,13 @@ let cfg = config.services.xserver.synaptics; in
Option "MinSpeed" "${cfg.minSpeed}"
Option "MaxSpeed" "${cfg.maxSpeed}"
Option "AccelFactor" "${cfg.accelFactor}"
- Option "TapButton1" "${if cfg.tapButtons then "1" else "0"}"
- Option "TapButton2" "${if cfg.tapButtons then "2" else "0"}"
- Option "TapButton3" "${if cfg.tapButtons then "3" else "0"}"
${if cfg.tapButtons then "" else ''Option "MaxTapTime" "0"''}
+ Option "TapButton1" "${builtins.elemAt cfg.buttonsMap 0}"
+ Option "TapButton2" "${builtins.elemAt cfg.buttonsMap 1}"
+ Option "TapButton3" "${builtins.elemAt cfg.buttonsMap 2}"
+ Option "ClickFinger1" "${builtins.elemAt cfg.buttonsMap 0}"
+ Option "ClickFinger2" "${builtins.elemAt cfg.buttonsMap 1}"
+ Option "ClickFinger3" "${builtins.elemAt cfg.buttonsMap 2}"
Option "VertTwoFingerScroll" "${if cfg.twoFingerScroll then "1" else "0"}"
Option "HorizTwoFingerScroll" "${if cfg.twoFingerScroll then "1" else "0"}"
Option "VertEdgeScroll" "${if cfg.vertEdgeScroll then "1" else "0"}"
diff --git a/nixos/modules/services/x11/terminal-server.nix b/nixos/modules/services/x11/terminal-server.nix
index ab05639aeca..72ecb8fe2fd 100644
--- a/nixos/modules/services/x11/terminal-server.nix
+++ b/nixos/modules/services/x11/terminal-server.nix
@@ -17,27 +17,17 @@ let
#! ${pkgs.stdenv.shell}
export XKB_BINDIR=${pkgs.xorg.xkbcomp}/bin
export XORG_DRI_DRIVER_PATH=${pkgs.mesa}/lib/dri
- exec ${pkgs.xorg.xorgserver}/bin/Xvfb "$@" -xkbdir "${pkgs.xkeyboard_config}/etc/X11/xkb"
+ exec ${pkgs.xorg.xorgserver}/bin/Xvfb "$@" -xkbdir ${pkgs.xkeyboard_config}/etc/X11/xkb
'';
- # ‘xinetd’ is insanely braindamaged in that it sends stderr to
- # stdout. Thus requires just about any xinetd program to be
- # wrapped to redirect its stderr. Sigh.
- x11vncWrapper = pkgs.writeScriptBin "x11vnc-wrapper"
- ''
- #! ${pkgs.stdenv.shell}
- export PATH=${makeSearchPath "bin" [ xvfbWrapper pkgs.gawk pkgs.which pkgs.openssl pkgs.xorg.xauth pkgs.nettools pkgs.shadow pkgs.procps pkgs.utillinux pkgs.bash ]}:$PATH
- export FD_GEOM=1024x786x24
- exec ${pkgs.x11vnc}/bin/x11vnc -inetd -display WAIT:1024x786:cmd=FINDCREATEDISPLAY-Xvfb.xdmcp -unixpw -ssl SAVE 2> /var/log/x11vnc.log
- '';
-
-in
+in
{
config = {
-
+
services.xserver.enable = true;
+ services.xserver.videoDrivers = [];
# Enable KDM. Any display manager will do as long as it supports XDMCP.
services.xserver.displayManager.kdm.enable = true;
@@ -52,13 +42,38 @@ in
Xaccess=${pkgs.writeText "Xaccess" "localhost"}
'';
- services.xinetd.enable = true;
- services.xinetd.services = singleton
- { name = "x11vnc";
- port = 5900;
- unlisted = true;
- user = "root";
- server = "${x11vncWrapper}/bin/x11vnc-wrapper";
+ networking.firewall.allowedTCPPorts = [ 5900 ];
+
+ systemd.sockets.terminal-server =
+ { description = "Terminal Server Socket";
+ wantedBy = [ "sockets.target" ];
+ before = [ "multi-user.target" ];
+ socketConfig.Accept = true;
+ socketConfig.ListenStream = 5900;
+ };
+
+ systemd.services."terminal-server@" =
+ { description = "Terminal Server";
+
+ path =
+ [ xvfbWrapper pkgs.gawk pkgs.which pkgs.openssl pkgs.xorg.xauth
+ pkgs.nettools pkgs.shadow pkgs.procps pkgs.utillinux pkgs.bash
+ ];
+
+ environment.FD_GEOM = "1024x786x24";
+ environment.FD_XDMCP_IF = "127.0.0.1";
+ #environment.FIND_DISPLAY_OUTPUT = "/tmp/foo"; # to debug the "find display" script
+
+ serviceConfig =
+ { StandardInput = "socket";
+ StandardOutput = "socket";
+ StandardError = "journal";
+ ExecStart = "@${pkgs.x11vnc}/bin/x11vnc x11vnc -inetd -display WAIT:1024x786:cmd=FINDCREATEDISPLAY-Xvfb.xdmcp -unixpw -ssl SAVE";
+ # Don't kill the X server when the user quits the VNC
+ # connection. FIXME: the X server should run in a
+ # separate systemd session.
+ KillMode = "process";
+ };
};
};
diff --git a/nixos/modules/services/x11/xserver.nix b/nixos/modules/services/x11/xserver.nix
index da94f7cad53..0253c70f2dd 100644
--- a/nixos/modules/services/x11/xserver.nix
+++ b/nixos/modules/services/x11/xserver.nix
@@ -343,6 +343,18 @@ in
'';
};
+ serverFlagsSection = mkOption {
+ default = "";
+ example =
+ ''
+ Option "BlankTime" "0"
+ Option "StandbyTime" "0"
+ Option "SuspendTime" "0"
+ Option "OffTime" "0"
+ '';
+ description = "Contents of the ServerFlags section of the X server configuration file.";
+ };
+
moduleSection = mkOption {
type = types.lines;
default = "";
@@ -586,6 +598,7 @@ in
''
Section "ServerFlags"
Option "AllowMouseOpenFail" "on"
+ ${cfg.serverFlagsSection}
EndSection
Section "Module"
diff --git a/nixos/modules/system/activation/activation-script.nix b/nixos/modules/system/activation/activation-script.nix
index e012c977164..1545bcb8a1f 100644
--- a/nixos/modules/system/activation/activation-script.nix
+++ b/nixos/modules/system/activation/activation-script.nix
@@ -71,7 +71,7 @@ in
${
let
- set' = mapAttrs (n: v: if builtins.isString v then noDepEntry v else v) set;
+ set' = mapAttrs (n: v: if isString v then noDepEntry v else v) set;
withHeadlines = addAttributeName set';
in textClosureMap id (withHeadlines) (attrNames withHeadlines)
}
diff --git a/nixos/modules/system/boot/systemd.nix b/nixos/modules/system/boot/systemd.nix
index c1fb2c45165..8895f9bf727 100644
--- a/nixos/modules/system/boot/systemd.nix
+++ b/nixos/modules/system/boot/systemd.nix
@@ -348,14 +348,14 @@ let
${concatStrings (mapAttrsToList (name: unit:
concatMapStrings (name2: ''
- mkdir -p $out/${name2}.wants
- ln -sfn ../${name} $out/${name2}.wants/
+ mkdir -p $out/'${name2}.wants'
+ ln -sfn '../${name}' $out/'${name2}.wants'/
'') unit.wantedBy) cfg.units)}
${concatStrings (mapAttrsToList (name: unit:
concatMapStrings (name2: ''
- mkdir -p $out/${name2}.requires
- ln -sfn ../${name} $out/${name2}.requires/
+ mkdir -p $out/'${name2}.requires'
+ ln -sfn '../${name}' $out/'${name2}.requires'/
'') unit.requiredBy) cfg.units)}
ln -s ${cfg.defaultUnit} $out/default.target
@@ -486,6 +486,16 @@ in
'';
};
+ systemd.extraConfig = mkOption {
+ default = "";
+ type = types.lines;
+ example = "DefaultLimitCORE=infinity";
+ description = ''
+ Extra config options for systemd. See man systemd-system.conf for
+ available options.
+ '';
+ };
+
services.journald.console = mkOption {
default = "";
type = types.str;
@@ -518,7 +528,7 @@ in
services.logind.extraConfig = mkOption {
default = "";
- type = types.str;
+ type = types.lines;
example = "HandleLidSwitch=ignore";
description = ''
Extra config options for systemd-logind. See man logind.conf for
@@ -555,6 +565,7 @@ in
environment.etc."systemd/system.conf".text =
''
[Manager]
+ ${config.systemd.extraConfig}
'';
environment.etc."systemd/journald.conf".text =
diff --git a/nixos/modules/tasks/filesystems/zfs.nix b/nixos/modules/tasks/filesystems/zfs.nix
index efd546f3baa..7c3c662eeac 100644
--- a/nixos/modules/tasks/filesystems/zfs.nix
+++ b/nixos/modules/tasks/filesystems/zfs.nix
@@ -76,7 +76,7 @@ in
};
systemd.services."zfs-mount" = {
- description = "Mount zfs volumes";
+ description = "Mount ZFS Volumes";
after = [ "zpool-import.service" ];
wantedBy = [ "local-fs.target" ];
serviceConfig = {
diff --git a/nixos/modules/virtualisation/amazon-image.nix b/nixos/modules/virtualisation/amazon-image.nix
index cfc582170e6..abd2a1084bd 100644
--- a/nixos/modules/virtualisation/amazon-image.nix
+++ b/nixos/modules/virtualisation/amazon-image.nix
@@ -160,4 +160,9 @@ with pkgs.lib;
environment.systemPackages = [ pkgs.cryptsetup ];
boot.initrd.supportedFilesystems = [ "unionfs-fuse" ];
+
+ # Prevent logging in as root without a password. This doesn't really matter,
+ # since the only PAM services that allow logging in with a null
+ # password are local ones that are inaccessible on EC2 machines.
+ security.initialRootPassword = "!";
}
diff --git a/nixos/modules/virtualisation/libvirtd.nix b/nixos/modules/virtualisation/libvirtd.nix
index d3884a503bc..552441f6a62 100644
--- a/nixos/modules/virtualisation/libvirtd.nix
+++ b/nixos/modules/virtualisation/libvirtd.nix
@@ -82,8 +82,11 @@ in
mkdir -p /var/log/libvirt/qemu -m 755
rm -f /var/run/libvirtd.pid
- mkdir -p /var/lib/libvirt -m 700
- mkdir -p /var/lib/libvirt/dnsmasq -m 700
+ mkdir -p /var/lib/libvirt
+ mkdir -p /var/lib/libvirt/dnsmasq
+
+ chmod 755 /var/lib/libvirt
+ chmod 755 /var/lib/libvirt/dnsmasq
# Libvirt unfortunately writes mutable state (such as
# runtime changes to VM, network or filter configurations)
diff --git a/nixos/modules/virtualisation/nova.nix b/nixos/modules/virtualisation/nova.nix
index 05c68e2bbff..e0d25183574 100644
--- a/nixos/modules/virtualisation/nova.nix
+++ b/nixos/modules/virtualisation/nova.nix
@@ -113,7 +113,7 @@ in
jobs.nova_objectstore =
{ name = "nova-objectstore";
- description = "Nova simple object store service";
+ description = "Nova Simple Object Store Service";
startOn = "ip-up";
@@ -129,7 +129,7 @@ in
jobs.nova_scheduler =
{ name = "nova-scheduler";
- description = "Nova scheduler service";
+ description = "Nova Scheduler Service";
startOn = "ip-up";
@@ -140,7 +140,7 @@ in
jobs.nova_compute =
{ name = "nova-compute";
- description = "Nova compute service";
+ description = "Nova Compute Service";
startOn = "ip-up";
@@ -157,7 +157,7 @@ in
jobs.nova_network =
{ name = "nova-network";
- description = "Nova network service";
+ description = "Nova Network Service";
startOn = "ip-up";
diff --git a/nixos/modules/virtualisation/virtualbox-image.nix b/nixos/modules/virtualisation/virtualbox-image.nix
index beed36b6a51..71bdf31a98d 100644
--- a/nixos/modules/virtualisation/virtualbox-image.nix
+++ b/nixos/modules/virtualisation/virtualbox-image.nix
@@ -107,4 +107,9 @@ with pkgs.lib;
boot.loader.grub.device = "/dev/sda";
services.virtualbox.enable = true;
+
+ # Prevent logging in as root without a password. For NixOps, we
+ # don't need this because the user can login via SSH, and for the
+ # demo images, there is a demo user account that can sudo to root.
+ security.initialRootPassword = "!";
}
diff --git a/nixos/modules/virtualisation/xen-dom0.nix b/nixos/modules/virtualisation/xen-dom0.nix
index 4c24c6a7826..40f6929be4f 100644
--- a/nixos/modules/virtualisation/xen-dom0.nix
+++ b/nixos/modules/virtualisation/xen-dom0.nix
@@ -107,7 +107,7 @@ in
'';
jobs.xend =
- { description = "Xen control daemon";
+ { description = "Xen Control Daemon";
startOn = "stopped udevtrigger";
diff --git a/nixos/release.nix b/nixos/release.nix
index 1ffb334d90a..ff094cce05f 100644
--- a/nixos/release.nix
+++ b/nixos/release.nix
@@ -123,11 +123,13 @@ in rec {
inherit system;
});
+ /*
iso_minimal_new_kernel = forAllSystems (system: makeIso {
module = ./modules/installer/cd-dvd/installation-cd-minimal-new-kernel.nix;
type = "minimal-new-kernel";
inherit system;
});
+ */
iso_graphical = forAllSystems (system: makeIso {
module = ./modules/installer/cd-dvd/installation-cd-graphical.nix;
@@ -137,20 +139,13 @@ in rec {
# A variant with a more recent (but possibly less stable) kernel
# that might support more hardware.
+ /*
iso_new_kernel = forAllSystems (system: makeIso {
module = ./modules/installer/cd-dvd/installation-cd-new-kernel.nix;
type = "new-kernel";
inherit system;
});
-
- # A variant with efi booting support. Once cd-minimal has a newer kernel,
- # this should be enabled by default.
- iso_efi = forAllSystems (system: makeIso {
- module = ./modules/installer/cd-dvd/installation-cd-efi.nix;
- type = "efi";
- maintainers = [ "shlevy" ];
- inherit system;
- });
+ */
# A bootable VirtualBox virtual appliance as an OVA file (i.e. packaged OVF).
diff --git a/nixos/tests/default.nix b/nixos/tests/default.nix
index ce5776c8e46..574e1dd2f8b 100644
--- a/nixos/tests/default.nix
+++ b/nixos/tests/default.nix
@@ -16,6 +16,7 @@ with import ../lib/testing.nix { inherit system minimal; };
kde4 = makeTest (import ./kde4.nix);
#kexec = makeTest (import ./kexec.nix);
login = makeTest (import ./login.nix {});
+ logstash = makeTest (import ./logstash.nix);
latestKernel.login = makeTest (import ./login.nix ({ config, pkgs, ... }: { boot.kernelPackages = pkgs.linuxPackages_latest; }));
misc = makeTest (import ./misc.nix);
#mpich = makeTest (import ./mpich.nix);
diff --git a/nixos/tests/efi-installer.nix b/nixos/tests/efi-installer.nix
index 8a05dbf2a61..990f2b84a6c 100644
--- a/nixos/tests/efi-installer.nix
+++ b/nixos/tests/efi-installer.nix
@@ -12,7 +12,7 @@ let
(import ../lib/eval-config.nix {
inherit system;
modules =
- [ ../modules/installer/cd-dvd/installation-cd-efi.nix
+ [ ../modules/installer/cd-dvd/installation-cd-minimal.nix
../modules/testing/test-instrumentation.nix
{ key = "serial";
@@ -38,7 +38,6 @@ let
config = builtins.toFile "configuration.nix" ''
{ pkgs, ... }: {
imports = [ ./hardware-configuration.nix ];
- boot.kernelPackages = pkgs.linuxPackages_3_10;
boot.loader.grub.enable = false;
boot.loader.efi.canTouchEfiVariables = true;
boot.loader.gummiboot.enable = true;
diff --git a/nixos/tests/logstash.nix b/nixos/tests/logstash.nix
new file mode 100644
index 00000000000..ee309d39f87
--- /dev/null
+++ b/nixos/tests/logstash.nix
@@ -0,0 +1,40 @@
+{ pkgs, ... }:
+
+# This test runs logstash and checks if messages flows and elasticsearch is
+# started
+
+{
+ nodes = {
+ one =
+ { config, pkgs, ... }:
+ {
+ services = {
+ logstash = {
+ enable = true;
+ inputConfig = ''
+ exec { command => "echo flowers" interval => 1 type => "test" }
+ exec { command => "echo dragons" interval => 1 type => "test" }
+ '';
+ filterConfig = ''
+ if [type] == "test" {
+ grep { match => ["message", "flowers"] drop => true }
+ }
+ '';
+ outputConfig = ''
+ stdout { codec => rubydebug }
+ elasticsearch { embedded => true }
+ '';
+ };
+ };
+ };
+ };
+
+ testScript = ''
+ startAll;
+
+ $one->waitForUnit("logstash.service");
+ $one->waitUntilSucceeds("journalctl -n 20 _SYSTEMD_UNIT=logstash.service | grep flowers");
+ $one->fail("journalctl -n 20 _SYSTEMD_UNIT=logstash.service | grep dragons");
+ $one->waitUntilSucceeds("curl -s http://127.0.0.1:9200/_status?pretty=true | grep logstash");
+ '';
+}
diff --git a/pkgs/applications/audio/milkytracker/decompressor_gzip.patch b/pkgs/applications/audio/milkytracker/decompressor_gzip.patch
new file mode 100644
index 00000000000..c64421116de
--- /dev/null
+++ b/pkgs/applications/audio/milkytracker/decompressor_gzip.patch
@@ -0,0 +1,20 @@
+https://bugs.archlinux.org/task/31324
+https://410333.bugs.gentoo.org/attachment.cgi?id=322456
+
+diff -ur src.old/compression/DecompressorGZIP.cpp src/compression/DecompressorGZIP.cpp
+--- src.old/compression/DecompressorGZIP.cpp 2012-08-28 17:54:46.000000000 +0200
++++ src/compression/DecompressorGZIP.cpp 2012-08-28 17:55:21.000000000 +0200
+@@ -57,11 +57,11 @@
+
+ bool DecompressorGZIP::decompress(const PPSystemString& outFileName, Hints hint)
+ {
+- gzFile *gz_input_file = NULL;
++ gzFile gz_input_file = NULL;
+ int len = 0;
+ pp_uint8 *buf;
+
+- if ((gz_input_file = (void **)gzopen (fileName.getStrBuffer(), "r")) == NULL)
++ if ((gz_input_file = gzopen (fileName.getStrBuffer(), "r")) == NULL)
+ return false;
+
+ if ((buf = new pp_uint8[0x10000]) == NULL)
diff --git a/pkgs/applications/audio/milkytracker/default.nix b/pkgs/applications/audio/milkytracker/default.nix
new file mode 100644
index 00000000000..965c941113c
--- /dev/null
+++ b/pkgs/applications/audio/milkytracker/default.nix
@@ -0,0 +1,44 @@
+{ stdenv, fetchurl, SDL, alsaLib, autoconf, automake, jackaudio, perl
+, zlib, zziplib
+}:
+
+stdenv.mkDerivation rec {
+ version = "0.90.85";
+ name = "milkytracker-${version}";
+
+ src = fetchurl {
+ url = "http://milkytracker.org/files/milkytracker-0.90.85.tar.gz";
+ sha256 = "184pk0k9nv461a61sh6lb62wfadjwwk8ri3z5kpdbqnyssz0zfpv";
+ };
+
+ # Get two official patches.
+ no_zzip_patch = fetchurl {
+ url = "http://www.milkytracker.org/files/patches-0.90.85/no_zziplib_dep.patch";
+ sha256 = "1w550q7pxa7w6v2v19ljk03hayacrs6y887izg11a1983wk7qzb3";
+ };
+
+ fix_64bit_patch = fetchurl {
+ url = "http://www.milkytracker.org/files/patches-0.90.85/64bit_freebsd_fix.patch";
+ sha256 = "0gwd4zslbd8kih80k4v7n2c65kvm2cq3kl6d7y33z1l007vzyvf6";
+ };
+
+ patchPhase = ''
+ patch ./src/tracker/sdl/SDL_Main.cpp < ${fix_64bit_patch}
+ patch < ${no_zzip_patch}
+ patch ./src/compression/DecompressorGZIP.cpp < ${./decompressor_gzip.patch}
+ '';
+
+ preBuild=''
+ export CPATH=${zlib}/lib
+ '';
+
+ buildInputs = [ SDL alsaLib autoconf automake jackaudio perl zlib zziplib ];
+
+ meta = {
+ description = "Music tracker application, similar to Fasttracker II.";
+ homepage = http://milkytracker.org;
+ license = stdenv.lib.licenses.gpl3Plus;
+ platforms = [ "x86_64-linux" "i686-linux" ];
+ maintainers = [ stdenv.lib.maintainers.zoomulator ];
+ };
+}
diff --git a/pkgs/applications/audio/mopidy/default.nix b/pkgs/applications/audio/mopidy/default.nix
index 611d9f4226d..b684fee37d5 100644
--- a/pkgs/applications/audio/mopidy/default.nix
+++ b/pkgs/applications/audio/mopidy/default.nix
@@ -39,6 +39,6 @@ pythonPackages.buildPythonPackage rec {
local hard drive.
'';
maintainers = [ stdenv.lib.maintainers.rickynils ];
- platforms = [];
+ hydraPlatforms = [];
};
}
diff --git a/pkgs/applications/audio/quodlibet/default.nix b/pkgs/applications/audio/quodlibet/default.nix
index 9f4859d6e07..c865314cb17 100644
--- a/pkgs/applications/audio/quodlibet/default.nix
+++ b/pkgs/applications/audio/quodlibet/default.nix
@@ -1,11 +1,18 @@
{ stdenv, fetchurl, python, buildPythonPackage, mutagen, pygtk, pygobject
-, pythonDBus, gst_python, gst_plugins_base, gst_plugins_good, gst_plugins_ugly }:
+, pythonDBus, gst_python, withGstPlugins ? false, gst_plugins_base ? null
+, gst_plugins_good ? null, gst_plugins_ugly ? null, gst_plugins_bad ? null }:
-let version = "2.5"; in
+assert withGstPlugins -> gst_plugins_base != null
+ || gst_plugins_good != null
+ || gst_plugins_ugly != null
+ || gst_plugins_bad != null;
+
+let version = "2.6.3"; in
buildPythonPackage {
# call the package quodlibet and just quodlibet
- name = "quodlibet-${version}";
+ name = "quodlibet-${version}"
+ + stdenv.lib.optionalString withGstPlugins "-with-gst-plugins";
namePrefix = "";
# XXX, tests fail
@@ -13,12 +20,12 @@ buildPythonPackage {
src = [
(fetchurl {
- url = "https://quodlibet.googlecode.com/files/quodlibet-${version}.tar.gz";
- sha256 = "0qrmlz7m1jpmriy8bgycjiwzbf3annznkn4x5k32yy9bylxa7lwb";
+ url = "https://bitbucket.org/lazka/quodlibet-files/raw/default/releases/quodlibet-${version}.tar.gz";
+ sha256 = "0ilasi4b0ay8r6v6ba209wsm80fq2nmzigzc5kvphrk71jwypx6z";
})
(fetchurl {
- url = "https://quodlibet.googlecode.com/files/quodlibet-plugins-${version}.tar.gz";
- sha256 = "0kf2mkq2zk38626bn48gscvy6ir04f5b2z57ahlxlqy8imv2cjff";
+ url = "https://bitbucket.org/lazka/quodlibet-files/raw/default/releases/quodlibet-plugins-${version}.tar.gz";
+ sha256 = "1rv08rhdjad8sjhplqsspcf4vkazgkxyshsqmbfbrrk5kvv57ybc";
})
];
@@ -30,19 +37,23 @@ buildPythonPackage {
'';
patches = [ ./quodlibet-package-plugins.patch ];
- buildInputs = [
- gst_plugins_base gst_plugins_good gst_plugins_ugly
+ buildInputs = stdenv.lib.optionals withGstPlugins [
+ gst_plugins_base gst_plugins_good gst_plugins_ugly gst_plugins_bad
];
propagatedBuildInputs = [
mutagen pygtk pygobject pythonDBus gst_python
];
- postInstall = ''
+ postInstall = stdenv.lib.optionalString withGstPlugins ''
# Wrap quodlibet so it finds the GStreamer plug-ins
wrapProgram "$out/bin/quodlibet" --prefix \
GST_PLUGIN_PATH ":" \
- "${gst_plugins_base}/lib/gstreamer-0.10:${gst_plugins_good}/lib/gstreamer-0.10:${gst_plugins_ugly}/lib/gstreamer-0.10"
+ ${ stdenv.lib.concatStringsSep ":"
+ (map (s: s+"/lib/gstreamer-0.10")
+ (stdenv.lib.filter (s: s != null) [
+ gst_plugins_base gst_plugins_good gst_plugins_ugly gst_plugins_bad
+ ])) }
'';
meta = {
@@ -62,6 +73,7 @@ buildPythonPackage {
& internet radio, and all major audio formats.
'';
+ maintainer = [ stdenv.lib.maintainers.coroa ];
homepage = http://code.google.com/p/quodlibet/;
};
}
diff --git a/pkgs/applications/editors/emacs-modes/offlineimap/default.nix b/pkgs/applications/editors/emacs-modes/offlineimap/default.nix
new file mode 100644
index 00000000000..d94da4f88d9
--- /dev/null
+++ b/pkgs/applications/editors/emacs-modes/offlineimap/default.nix
@@ -0,0 +1,28 @@
+{ stdenv, fetchgit, emacs }:
+
+stdenv.mkDerivation rec {
+ rev = "646482203aacdf847d57d0a96263fddcfc33fb61";
+ name = "emacs-offlineimap-${rev}";
+
+ src = fetchgit {
+ inherit rev;
+ url = "git://git.naquadah.org/offlineimap-el.git";
+ sha256 = "0az4llfgva4wvpljyc5s2m7ggfnj06ssp32x8bncr5fzksha3r7b";
+ };
+
+ buildInputs = [ emacs ];
+
+ installPhase = ''
+ substituteInPlace offlineimap.el --replace "Machine.MachineUI" "machineui"
+ emacs --batch -f batch-byte-compile offlineimap.el
+ install -d $out/share/emacs/site-lisp
+ install offlineimap.el offlineimap.elc $out/share/emacs/site-lisp
+ '';
+
+ meta = {
+ description = "OfflineIMAP support for Emacs";
+ homepage = "http://julien.danjou.info/projects/emacs-packages#offlineimap";
+ platforms = stdenv.lib.platforms.all;
+ maintainers = [ stdenv.lib.maintainers.garbas ];
+ };
+}
diff --git a/pkgs/applications/editors/vim/qvim.nix b/pkgs/applications/editors/vim/qvim.nix
new file mode 100644
index 00000000000..15a147319a1
--- /dev/null
+++ b/pkgs/applications/editors/vim/qvim.nix
@@ -0,0 +1,115 @@
+args@{...}: with args;
+
+
+let inherit (args.composableDerivation) composableDerivation edf; in
+composableDerivation {
+ # use gccApple to compile on darwin
+ mkDerivation = ( if stdenv.isDarwin
+ then stdenvAdapters.overrideGCC stdenv gccApple
+ else stdenv ).mkDerivation;
+} (fix: {
+
+ name = "qvim-7.4";
+
+ enableParallelBuilding = true; # test this
+
+ src = fetchgit {
+ url = https://bitbucket.org/equalsraf/vim-qt.git ;
+ rev = "4160bfd5c1380e899d2f426b494fc4f1cf6ae85e";
+ sha256 = "1qa3xl1b9gqw66p71h53l7ibs4y3zfyj553jss70ybxaxchbhi5b";
+ };
+
+ # FIXME: adopt Darwin fixes from vim/default.nix, then chage meta.platforms.linux
+ # to meta.platforms.unix
+ preConfigure = assert (! stdenv.isDarwin); "";
+
+ configureFlags = [ "--with-vim-name=qvim" "--enable-gui=qt" "--with-features=${args.features}" ];
+
+ nativeBuildInputs
+ = [ ncurses pkgconfig libX11 libXext libSM libXpm libXt libXaw libXau
+ libXmu libICE qt4];
+
+ # most interpreters aren't tested yet.. (see python for example how to do it)
+ flags = {
+ ftNix = {
+ # because we cd to src in the main patch phase, we can't just add this
+ # patch to the list, we have to apply it manually
+ postPatch = ''
+ cd runtime
+ patch -p2 < ${./ft-nix-support.patch}
+ cd ..
+ '';
+ };
+ }
+ // edf { name = "darwin"; } #Disable Darwin (Mac OS X) support.
+ // edf { name = "xsmp"; } #Disable XSMP session management
+ // edf { name = "xsmp_interact"; } #Disable XSMP interaction
+ // edf { name = "mzscheme"; } #Include MzScheme interpreter.
+ // edf { name = "perl"; feat = "perlinterp"; enable = { nativeBuildInputs = [perl]; };} #Include Perl interpreter.
+
+ // edf {
+ name = "python";
+ feat = "pythoninterp";
+ enable = {
+ nativeBuildInputs = [ python ];
+ } // lib.optionalAttrs stdenv.isDarwin {
+ configureFlags
+ = [ "--enable-pythoninterp=yes"
+ "--with-python-config-dir=${python}/lib" ];
+ };
+ }
+
+ // edf { name = "tcl"; enable = { nativeBuildInputs = [tcl]; }; } #Include Tcl interpreter.
+ // edf { name = "ruby"; feat = "rubyinterp"; enable = { nativeBuildInputs = [ruby]; };} #Include Ruby interpreter.
+ // edf { name = "lua" ; feat = "luainterp"; enable = { nativeBuildInputs = [lua]; configureFlags = ["--with-lua-prefix=${args.lua}"];};}
+ // edf { name = "cscope"; } #Include cscope interface.
+ // edf { name = "workshop"; } #Include Sun Visual Workshop support.
+ // edf { name = "netbeans"; } #Disable NetBeans integration support.
+ // edf { name = "sniff"; feat = "sniff" ; } #Include Sniff interface.
+ // edf { name = "multibyte"; } #Include multibyte editing support.
+ // edf { name = "hangulinput"; feat = "hangulinput" ;} #Include Hangul input support.
+ // edf { name = "xim"; } #Include XIM input support.
+ // edf { name = "fontset"; } #Include X fontset output support.
+ // edf { name = "acl"; } #Don't check for ACL support.
+ // edf { name = "gpm"; } #Don't use gpm (Linux mouse daemon).
+ // edf { name = "nls"; enable = {nativeBuildInputs = [gettext];}; } #Don't support NLS (gettext()).
+ ;
+
+ cfg = {
+ pythonSupport = config.vim.python or true;
+ rubySupport = config.vim.ruby or true;
+ nlsSupport = config.vim.nls or false;
+ tclSupport = config.vim.tcl or false;
+ multibyteSupport = config.vim.multibyte or false;
+ cscopeSupport = config.vim.cscope or false;
+ netbeansSupport = config.netbeans or true; # eg envim is using it
+
+ # by default, compile with darwin support if we're compiling on darwin, but
+ # allow this to be disabled by setting config.vim.darwin to false
+ darwinSupport = stdenv.isDarwin && (config.vim.darwin or true);
+
+ # add .nix filetype detection and minimal syntax highlighting support
+ ftNixSupport = config.vim.ftNix or true;
+ };
+
+ postInstall = stdenv.lib.optionalString stdenv.isLinux ''
+ rpath=`patchelf --print-rpath $out/bin/qvim`;
+ for i in $nativeBuildInputs; do
+ echo adding $i/lib
+ rpath=$rpath:$i/lib
+ done
+ echo $nativeBuildInputs
+ echo $rpath
+ patchelf --set-rpath $rpath $out/bin/qvim
+ '';
+
+ dontStrip = 1;
+
+ meta = with stdenv.lib; {
+ description = "The most popular clone of the VI editor (Qt GUI fork)";
+ homepage = https://bitbucket.org/equalsraf/vim-qt/wiki/Home;
+ maintainers = with maintainers; [ smironov ];
+ platforms = platforms.linux;
+ };
+})
+
diff --git a/pkgs/applications/graphics/ImageMagick/default.nix b/pkgs/applications/graphics/ImageMagick/default.nix
index c2a661c82fd..aa0bdbfe56c 100644
--- a/pkgs/applications/graphics/ImageMagick/default.nix
+++ b/pkgs/applications/graphics/ImageMagick/default.nix
@@ -1,6 +1,8 @@
{ stdenv
, fetchurl
+, pkgconfig
, bzip2
+, fontconfig
, freetype
, ghostscript ? null
, libjpeg
@@ -16,14 +18,14 @@
}:
let
- version = "6.8.6-9";
+ version = "6.8.7-5";
in
stdenv.mkDerivation rec {
name = "ImageMagick-${version}";
src = fetchurl {
url = "mirror://imagemagick/${name}.tar.xz";
- sha256 = "1bpj8676mph5cvyjsdgf27i6yg2iw9iskk5c69mvpxkyawgjw1vg";
+ sha256 = "1cn1kg7scs6r7r00qlqirhnmqjnmyczbidab3vgqarw9qszh2ri6";
};
enableParallelBuilding = true;
@@ -42,17 +44,18 @@ stdenv.mkDerivation rec {
'';
propagatedBuildInputs =
- [ bzip2 freetype libjpeg libpng libtiff libxml2 zlib librsvg
+ [ bzip2 fontconfig freetype libjpeg libpng libtiff libxml2 zlib librsvg
libtool jasper libX11
] ++ stdenv.lib.optional (ghostscript != null && stdenv.system != "x86_64-darwin") ghostscript;
- buildInputs = [ tetex ];
+ buildInputs = [ tetex pkgconfig ];
postInstall = ''(cd "$out/include" && ln -s ImageMagick* ImageMagick)'';
- meta = {
+ meta = with stdenv.lib; {
homepage = http://www.imagemagick.org/;
description = "A software suite to create, edit, compose, or convert bitmap images";
- platforms = stdenv.lib.platforms.linux;
+ platforms = platforms.linux ++ [ "x86_64-darwin" ];
+ maintainers = with maintainers; [ the-kenny ];
};
}
diff --git a/pkgs/applications/graphics/gimp/2.8.nix b/pkgs/applications/graphics/gimp/2.8.nix
index 4e12e232081..d6b005e8e3d 100644
--- a/pkgs/applications/graphics/gimp/2.8.nix
+++ b/pkgs/applications/graphics/gimp/2.8.nix
@@ -4,11 +4,11 @@
, python, pygtk, libart_lgpl, libexif, gettext, xlibs }:
stdenv.mkDerivation rec {
- name = "gimp-2.8.6";
+ name = "gimp-2.8.8";
src = fetchurl {
url = "ftp://ftp.gimp.org/pub/gimp/v2.8/${name}.tar.bz2";
- md5 = "12b3fdf33d1f07ae79b412a9e38b9693";
+ md5 = "ef2547c3514a1096931637bd6250635a";
};
buildInputs =
diff --git a/pkgs/applications/graphics/gimp/plugins/default.nix b/pkgs/applications/graphics/gimp/plugins/default.nix
index d314d93ea4c..234249e8562 100644
--- a/pkgs/applications/graphics/gimp/plugins/default.nix
+++ b/pkgs/applications/graphics/gimp/plugins/default.nix
@@ -68,18 +68,18 @@ rec {
};
};
- fourier = pluginDerivation {
+ fourier = pluginDerivation rec {
/* menu:
Filters/Generic/FFT Forward
Filters/Generic/FFT Inverse
*/
- name = "fourier-0.3.3";
- buildInputs = [ gimp pkgs.fftwSinglePrec pkgconfig glib] ++ gimp.nativeBuildInputs;
+ name = "fourier-0.4.1";
+ buildInputs = [ gimp pkgs.fftw pkgconfig glib] ++ gimp.nativeBuildInputs;
postInstall = "fail";
installPhase = "installPlugins fourier";
src = fetchurl {
- url = http://people.via.ecp.fr/~remi/soft/gimp/fourier-0.3.3.tar.gz;
- sha256 = "0xxgp0lrjxsj54sgygi31c7q41jkqzn0v18qyznrviv8r099v29p";
+ url = "http://registry.gimp.org/files/${name}.tar.gz";
+ sha256 = "1pr3y3zl9w8xs1circdrxpr98myz9m8wfzy022al79z4pdanwvs1";
};
};
@@ -110,6 +110,9 @@ rec {
url = mirror://sourceforge/gimp-texturize/texturize-2.1_src.tgz;
sha256 = "0cdjq25g3yfxx6bzx6nid21kq659s1vl9id4wxyjs2dhcv229cg3";
};
+ patchPhase = ''
+ sed -i '/.*gimpimage_pdb.h.*/ d' src/*.c*
+ '';
installPhase = "installPlugins src/texturize";
};
@@ -140,21 +143,23 @@ rec {
installPhase = "installPlugins src/gimp-lqr-plugin";
};
- # this is more than a gimp plugin !
- # it can be made to compile the gimp plugin only though..
gmic =
- let imagemagick = pkgs.imagemagickBig; # maybe the non big version is enough?
- in pluginDerivation {
- name = "gmic-1.3.2.0";
- buildInputs = [ imagemagick pkgconfig gimp pkgs.fftwSinglePrec ] ++ gimp.nativeBuildInputs;
+ let
+ imagemagick = pkgs.imagemagickBig; # maybe the non big version is enough?
+ fftw = pkgs.fftw.override {pthreads = true;};
+ in pluginDerivation rec {
+ name = "gmic-1.5.7.2";
+ buildInputs = [imagemagick pkgconfig fftw gimp] ++ gimp.nativeBuildInputs;
src = fetchurl {
- url = mirror://sourceforge/gmic/gmic_1.3.2.0.tar.gz;
- sha256 = "0mxq664vzzc2l6k6sqm9syp34mihhi262i6fixk1g12lmc28797h";
+ url = mirror://sourceforge/gmic/gmic_1.5.7.2.tar.gz;
+ sha256 = "1cpbxb3p2c8bcv2cbr150whapzjc7w09i3jza0z9x3xj8c0vdyv1";
};
preConfigure = ''
export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -I${imagemagick}/include/ImageMagick"
'';
- installPhase = "installPlugins src/gmic4gimp";
+ sourceRoot = "${name}/src";
+ buildPhase = "make gimp";
+ installPhase = "installPlugins gmic_gimp";
meta = {
description = "script language for image processing which comes with its open-source interpreter";
homepage = http://gmic.sourceforge.net/repository.shtml;
@@ -170,9 +175,9 @@ rec {
# this is more than a gimp plugin !
# either load the raw image with gimp (and the import dialog will popup)
# or use the binary
- ufraw = pluginDerivation {
- name = "ufraw-0.15";
- buildInputs = [pkgs.lcms gimp] ++ gimp.nativeBuildInputs;
+ ufraw = pluginDerivation rec {
+ name = "ufraw-0.19.2";
+ buildInputs = [pkgs.gtkimageview pkgs.lcms gimp] ++ gimp.nativeBuildInputs;
# --enable-mime - install mime files, see README for more information
# --enable-extras - build extra (dcraw, nikon-curve) executables
# --enable-dst-correction - enable DST correction for file timestamps.
@@ -184,8 +189,8 @@ rec {
configureFlags = "--enable-extras --enable-dst-correction --enable-contrast";
src = fetchurl {
- url = mirror://sourceforge/ufraw/ufraw-0.15.tar.gz;
- sha256 = "0cf3csksjkyl91zxhjnn74vc31l14nm6n1i02s76xdvvkk9ics8k";
+ url = "mirror://sourceforge/ufraw/${name}.tar.gz";
+ sha256 = "1lxba7pb3vcsq94dwapg9bk9mb3ww6r3pvvcyb0ah5gh2sgzxgkk";
};
installPhase = "
installPlugins ufraw-gimp
diff --git a/pkgs/applications/graphics/mirage/default.nix b/pkgs/applications/graphics/mirage/default.nix
index dd1fbcc7e07..cd5388c1b88 100644
--- a/pkgs/applications/graphics/mirage/default.nix
+++ b/pkgs/applications/graphics/mirage/default.nix
@@ -17,6 +17,10 @@ buildPythonPackage rec {
buildInputs = [ stdenv libX11 gettext ];
+ patchPhase = ''
+ sed -i "s@/usr/local/share/locale@$out/share/locale@" mirage.py
+ '';
+
pythonPath = [ pygtk pil ];
meta = {
diff --git a/pkgs/applications/graphics/sane/backends-git.nix b/pkgs/applications/graphics/sane/backends-git.nix
index c9cea4109dc..7ba6e1756ba 100644
--- a/pkgs/applications/graphics/sane/backends-git.nix
+++ b/pkgs/applications/graphics/sane/backends-git.nix
@@ -1,4 +1,6 @@
-{ stdenv, fetchurl, fetchgit, hotplugSupport ? true, libusb ? null, gt68xxFirmware ? null }:
+{ stdenv, fetchurl, fetchgit, hotplugSupport ? true, libusb ? null
+, gt68xxFirmware ? null, snapscanFirmware ? null
+}:
let
firmware = gt68xxFirmware { inherit fetchurl; };
in
@@ -29,6 +31,11 @@ stdenv.mkDerivation {
if gt68xxFirmware != null then
"mkdir -p \${out}/share/sane/gt68xx ; ln -s " + firmware.fw +
" \${out}/share/sane/gt68xx/" + firmware.name
+ else if snapscanFirmware != null then
+ "mkdir -p \${out}/share/sane/snapscan ; ln -s " + snapscanFirmware +
+ " \${out}/share/sane/snapscan/your-firmwarefile.bin ;" +
+ "mkdir -p \${out}/etc/sane.d ; " +
+ "echo epson2 > \${out}/etc/sane.d/dll.conf"
else "";
meta = {
diff --git a/pkgs/applications/graphics/sane/backends.nix b/pkgs/applications/graphics/sane/backends.nix
index a53466ae818..eaf1c3b725f 100644
--- a/pkgs/applications/graphics/sane/backends.nix
+++ b/pkgs/applications/graphics/sane/backends.nix
@@ -1,4 +1,6 @@
-{ stdenv, fetchurl, hotplugSupport ? true, libusb ? null, libv4l ? null, pkgconfig ? null , gt68xxFirmware ? null }:
+{ stdenv, fetchurl, hotplugSupport ? true, libusb ? null, libv4l ? null
+, pkgconfig ? null, gt68xxFirmware ? null, snapscanFirmware ? null
+}:
assert hotplugSupport -> (stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux");
@@ -36,6 +38,9 @@ stdenv.mkDerivation rec {
if gt68xxFirmware != null then
"mkdir -p \${out}/share/sane/gt68xx ; ln -s " + firmware.fw +
" \${out}/share/sane/gt68xx/" + firmware.name
+ else if snapscanFirmware != null then
+ "mkdir -p \${out}/share/sane/snapscan ; ln -s " + snapscanFirmware +
+ " \${out}/share/sane/snapscan/your-firmwarefile.bin"
else "";
meta = {
diff --git a/pkgs/applications/graphics/sane/xsane.nix b/pkgs/applications/graphics/sane/xsane.nix
index de8d4c33652..32b39c0160d 100644
--- a/pkgs/applications/graphics/sane/xsane.nix
+++ b/pkgs/applications/graphics/sane/xsane.nix
@@ -1,4 +1,9 @@
-{ stdenv, fetchurl, saneBackends, saneFrontends, libX11, gtk, pkgconfig, libpng, libusb ? null }:
+{ stdenv, fetchurl, saneBackends, saneFrontends, libX11, gtk, pkgconfig, libpng
+, libusb ? null
+, gimpSupport ? false, gimp_2_8 ? null
+}:
+
+assert gimpSupport -> gimp_2_8 != null;
stdenv.mkDerivation rec {
name = "xsane-0.998";
@@ -12,8 +17,9 @@ stdenv.mkDerivation rec {
sed -e '/SANE_CAP_ALWAYS_SETTABLE/d' -i src/xsane-back-gtk.c
'';
- buildInputs = [libpng saneBackends saneFrontends libX11 gtk pkgconfig ] ++
- (if libusb != null then [libusb] else []);
+ buildInputs = [libpng saneBackends saneFrontends libX11 gtk pkgconfig ]
+ ++ (if libusb != null then [libusb] else [])
+ ++ stdenv.lib.optional gimpSupport gimp_2_8;
meta = {
homepage = http://www.sane-project.org/;
diff --git a/pkgs/applications/graphics/smartdeblur/default.nix b/pkgs/applications/graphics/smartdeblur/default.nix
new file mode 100644
index 00000000000..83f3c751029
--- /dev/null
+++ b/pkgs/applications/graphics/smartdeblur/default.nix
@@ -0,0 +1,33 @@
+{ fetchurl, stdenv, cmake, qt4, fftw }:
+
+let
+ rev = "9895036d26";
+in
+stdenv.mkDerivation rec {
+ name = "smartdeblur-git-${rev}";
+
+ src = fetchurl {
+ url = "https://github.com/Y-Vladimir/SmartDeblur/tarball/${rev}";
+ name = "${name}.tar.gz";
+ sha256 = "126x9x1zhqdarjz9in0p1qhmqg3jwz7frizadjvx723g2ppi33s4";
+ };
+
+ preConfigure = ''
+ cd src
+ '';
+
+ enableParallelBuilding = true;
+
+ buildInputs = [ cmake qt4 fftw ];
+
+ cmakeFlags = "-DUSE_SYSTEM_FFTW=ON";
+
+ meta = {
+ homepage = "https://github.com/Y-Vladimir/SmartDeblur";
+ description = "Tool for restoring blurry and defocused images";
+ license = "GPLv3";
+ maintainers = with stdenv.lib.maintainers; [ viric ];
+ platforms = with stdenv.lib.platforms; linux;
+ };
+}
+
diff --git a/pkgs/applications/graphics/zgrviewer/default.nix b/pkgs/applications/graphics/zgrviewer/default.nix
index 5fe30bd7a03..93d1b28854a 100644
--- a/pkgs/applications/graphics/zgrviewer/default.nix
+++ b/pkgs/applications/graphics/zgrviewer/default.nix
@@ -22,7 +22,7 @@ stdenv.mkDerivation rec {
'';
meta = {
# Quicker to unpack locally than load Hydra
- platforms = [];
+ hydraPlatforms = [];
maintainers = with stdenv.lib.maintainers; [raskin];
license = with stdenv.lib.licenses; lgpl21Plus;
description = "GraphViz graph viewer/navigator";
diff --git a/pkgs/applications/misc/adobe-reader/default.nix b/pkgs/applications/misc/adobe-reader/default.nix
index 46ccdb39946..a186f5f5ee0 100644
--- a/pkgs/applications/misc/adobe-reader/default.nix
+++ b/pkgs/applications/misc/adobe-reader/default.nix
@@ -3,7 +3,7 @@
assert stdenv.system == "i686-linux";
-let version = "9.5.1"; in
+let version = "9.5.5"; in
stdenv.mkDerivation {
name = "adobe-reader-${version}-1";
@@ -12,7 +12,7 @@ stdenv.mkDerivation {
src = fetchurl {
url = "http://ardownload.adobe.com/pub/adobe/reader/unix/9.x/${version}/enu/AdbeRdr${version}-1_i486linux_enu.tar.bz2";
- sha256 = "19mwhbfsivb21zmrz2hllf0kh4i225ac697y026bakyysn0vig56";
+ sha256 = "0h35misxrqkl5zlmmvray1bqf4ywczkm89n9qw7d9arqbg3aj3pf";
};
# !!! Adobe Reader contains copies of OpenSSL, libcurl, and libicu.
diff --git a/pkgs/applications/misc/dunst/default.nix b/pkgs/applications/misc/dunst/default.nix
index cb594e494db..1b61d75ddf2 100644
--- a/pkgs/applications/misc/dunst/default.nix
+++ b/pkgs/applications/misc/dunst/default.nix
@@ -5,7 +5,7 @@
stdenv.mkDerivation rec {
rev = "6a3a855b48a3db64821d1cf8a91c5ee2815a2b2d";
- name = "dunst-${rev}";
+ name = "dunst-0-${stdenv.lib.strings.substring 0 7 rev}";
# 1.0.0 release doesn't include 100% CPU fix
# https://github.com/knopwob/dunst/issues/98
diff --git a/pkgs/applications/misc/fbreader/default.nix b/pkgs/applications/misc/fbreader/default.nix
index fa361308ff1..612285c697c 100644
--- a/pkgs/applications/misc/fbreader/default.nix
+++ b/pkgs/applications/misc/fbreader/default.nix
@@ -25,10 +25,11 @@ stdenv.mkDerivation {
--replace "/usr/share" "$out/share"
'';
- meta = {
+ meta = with stdenv.lib; {
description = "An e-book reader for Linux";
homepage = http://www.fbreader.org/;
- license = "GPL";
- maintainer = [ stdenv.lib.maintainers.coroa ];
+ license = licenses.gpl3;
+ platforms = platforms.linux; # possibly also on unix general
+ maintainer = [ maintainers.coroa ];
};
}
diff --git a/pkgs/applications/misc/gnuradio/default.nix b/pkgs/applications/misc/gnuradio/default.nix
new file mode 100644
index 00000000000..3c47e3bf8a8
--- /dev/null
+++ b/pkgs/applications/misc/gnuradio/default.nix
@@ -0,0 +1,76 @@
+{ stdenv, fetchurl
+# core dependencies
+, cmake, pkgconfig, git, boost, cppunit, fftw
+# python wrappers
+, python, swig2, numpy, scipy, matplotlib
+# grc - the gnu radio companion
+, cheetahTemplate, pygtk
+# gr-wavelet: collection of wavelet blocks
+, gsl
+# gr-qtgui: the Qt-based GUI
+, qt4, qwt, pyqt4 #, pyqwt
+# gr-wxgui: the Wx-based GUI
+, wxPython, lxml
+# gr-audio: audio subsystems (system/OS dependent)
+, alsaLib
+# uhd: the Ettus USRP Hardware Driver Interface
+, uhd
+# gr-video-sdl: PAL and NTSC display
+, SDL
+, libusb1, orc, pyopengl
+, makeWrapper }:
+
+stdenv.mkDerivation rec {
+ name = "gnuradio-${version}";
+ version = "3.7.1";
+
+ src = fetchurl {
+ url = "http://gnuradio.org/releases/gnuradio/${name}.tar.gz";
+ sha256 = "1kfni8vpgr6v9rdiz3zsmwc07qj6zka9x22z2y0y4rak2xnzdxz9";
+ };
+
+ buildInputs = [
+ cmake pkgconfig git boost cppunit fftw python swig2 orc lxml qt4 qwt
+ alsaLib SDL libusb1 uhd gsl makeWrapper
+ ];
+
+ propagatedBuildInputs = [
+ cheetahTemplate numpy scipy matplotlib pyqt4 pygtk wxPython pyopengl
+ ];
+
+ preConfigure = ''
+ export NIX_CFLAGS_COMPILE="$NIX_CFLAGS_COMPILE -Wno-unused-variable"
+ '';
+
+ # - Ensure we get an interactive backend for matplotlib. If not the gr_plot_*
+ # programs will not display anything. Yes, $MATPLOTLIBRC must point to the
+ # *dirname* where matplotlibrc is located, not the file itself.
+ # - GNU Radio core is C++ but the user interface (GUI and API) is Python, so
+ # we must wrap the stuff in bin/.
+ postInstall = ''
+ printf "backend : Qt4Agg\n" > "$out/share/gnuradio/matplotlibrc"
+
+ for file in "$out"/bin/*; do
+ wrapProgram "$file" \
+ --set PYTHONPATH $PYTHONPATH:$(toPythonPath "$out") \
+ --set MATPLOTLIBRC "$out/share/gnuradio"
+ done
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Software Defined Radio (SDR) software";
+ longDescription = ''
+ GNU Radio is a free & open-source software development toolkit that
+ provides signal processing blocks to implement software radios. It can be
+ used with readily-available low-cost external RF hardware to create
+ software-defined radios, or without hardware in a simulation-like
+ environment. It is widely used in hobbyist, academic and commercial
+ environments to support both wireless communications research and
+ real-world radio systems.
+ '';
+ homepage = http://www.gnuradio.org;
+ license = licenses.gpl3;
+ platforms = platforms.linux;
+ maintainers = [ maintainers.bjornfor ];
+ };
+}
diff --git a/pkgs/applications/misc/ikiwiki/default.nix b/pkgs/applications/misc/ikiwiki/default.nix
index baf97e7a824..b8bf0f38d10 100644
--- a/pkgs/applications/misc/ikiwiki/default.nix
+++ b/pkgs/applications/misc/ikiwiki/default.nix
@@ -23,7 +23,7 @@ assert mercurialSupport -> (mercurial != null);
let
name = "ikiwiki";
- version = "3.20130518";
+ version = "3.20130904.1";
lib = stdenv.lib;
in
@@ -32,7 +32,7 @@ stdenv.mkDerivation {
src = fetchurl {
url = "http://ftp.de.debian.org/debian/pool/main/i/ikiwiki/${name}_${version}.tar.gz";
- sha256 = "00mmxxlbzv6bz3cz3746r5lqwby6liwsg7m3jfba8258y52w13qp";
+ sha256 = "1nxycsz49y6801lbrvazzg7qc9q2vpr2ny1sba26f9gwc00c650h";
};
buildInputs = [ perl TextMarkdown URI HTMLParser HTMLScrubber HTMLTemplate
diff --git a/pkgs/applications/misc/mupdf/default.nix b/pkgs/applications/misc/mupdf/default.nix
index 220309a8e22..17b86910de0 100644
--- a/pkgs/applications/misc/mupdf/default.nix
+++ b/pkgs/applications/misc/mupdf/default.nix
@@ -10,8 +10,10 @@ stdenv.mkDerivation rec {
buildInputs = [ pkgconfig zlib freetype libjpeg jbig2dec openjpeg libX11 libXext ];
+ enableParallelBuilding = true;
+
preBuild = ''
- export makeFlags="prefix=$out"
+ export makeFlags="prefix=$out build=release"
export NIX_CFLAGS_COMPILE=" $NIX_CFLAGS_COMPILE -I$(echo ${openjpeg}/include/openjpeg-*) "
'';
diff --git a/pkgs/applications/misc/redshift/default.nix b/pkgs/applications/misc/redshift/default.nix
index 3bed6e1a2d7..ae983aedc67 100644
--- a/pkgs/applications/misc/redshift/default.nix
+++ b/pkgs/applications/misc/redshift/default.nix
@@ -28,7 +28,7 @@ stdenv.mkDerivation rec {
wrapProgram "$out/bin/redshift-gtk" --prefix PYTHONPATH : $PYTHONPATH:${pygtk}/lib/${python.libPrefix}/site-packages/gtk-2.0:${pyxdg}/lib/${python.libPrefix}/site-packages/pyxdg:$out/lib/${python.libPrefix}/site-packages
'';
- meta = {
+ meta = with stdenv.lib; {
description = "changes the color temperature of your screen gradually";
longDescription = ''
The color temperature is set according to the position of the
@@ -39,5 +39,6 @@ stdenv.mkDerivation rec {
'';
license = "GPLv3+";
homepage = "http://jonls.dk/redshift";
+ platforms = platforms.linux;
};
}
diff --git a/pkgs/applications/networking/browsers/icecat-3/default.nix b/pkgs/applications/networking/browsers/icecat-3/default.nix
index 7e181669cd1..84269a290e9 100644
--- a/pkgs/applications/networking/browsers/icecat-3/default.nix
+++ b/pkgs/applications/networking/browsers/icecat-3/default.nix
@@ -114,5 +114,6 @@ stdenv.mkDerivation {
passthru = {
inherit gtk version;
isFirefox3Like = true;
+ broken = true;
};
}
diff --git a/pkgs/applications/networking/browsers/mozilla-plugins/flashplayer-11/default.nix b/pkgs/applications/networking/browsers/mozilla-plugins/flashplayer-11/default.nix
index 0363176257f..d4d95f7e5b9 100644
--- a/pkgs/applications/networking/browsers/mozilla-plugins/flashplayer-11/default.nix
+++ b/pkgs/applications/networking/browsers/mozilla-plugins/flashplayer-11/default.nix
@@ -44,9 +44,9 @@ let
throw "no x86_64 debugging version available"
else rec {
# -> http://labs.adobe.com/downloads/flashplayer10.html
- version = "11.2.202.297";
+ version = "11.2.202.310";
url = "http://fpdownload.macromedia.com/get/flashplayer/pdc/${version}/install_flash_player_11_linux.x86_64.tar.gz";
- sha256 = "0jfigq56p6zp61pmc4jl12p8gv2jhfmim18j1b30iikw3iv26lh8";
+ sha256 = "03r9r7h3l4i15hw62k9il6pjzq122nldbgxr37b4y10xp08a9izj";
}
else if stdenv.system == "i686-linux" then
if debug then {
@@ -55,9 +55,9 @@ let
url = http://fpdownload.macromedia.com/pub/flashplayer/updaters/11/flashplayer_11_plugin_debug.i386.tar.gz;
sha256 = "1z3649lv9sh7jnwl8d90a293nkaswagj2ynhsr4xmwiy7c0jz2lk";
} else rec {
- version = "11.2.202.297";
+ version = "11.2.202.310";
url = "http://fpdownload.macromedia.com/get/flashplayer/pdc/${version}/install_flash_player_11_linux.i386.tar.gz";
- sha256 = "0mpj25b2ar7gccqmw5lffdzlr3yyfalphpgwnl18s05wy1fx484y";
+ sha256 = "0qf09p92silp81pjfcg2vcfcfi1padizmb58q5iaarnapgkawlbh";
}
else throw "Flash Player is not supported on this platform";
diff --git a/pkgs/applications/networking/browsers/netsurf/haru.nix b/pkgs/applications/networking/browsers/netsurf/haru.nix
index 883cf94b06f..47f0c2f6455 100644
--- a/pkgs/applications/networking/browsers/netsurf/haru.nix
+++ b/pkgs/applications/networking/browsers/netsurf/haru.nix
@@ -21,5 +21,6 @@ stdenv.mkDerivation {
license = "ZLIB/LIBPNG"; # see README.
maintainers = [args.lib.maintainers.marcweber];
platforms = args.lib.platforms.linux;
+ broken = true;
};
}
diff --git a/pkgs/applications/networking/browsers/netsurf/libParserUtils.nix b/pkgs/applications/networking/browsers/netsurf/libParserUtils.nix
index 8ee8518c531..fec93c39ab9 100644
--- a/pkgs/applications/networking/browsers/netsurf/libParserUtils.nix
+++ b/pkgs/applications/networking/browsers/netsurf/libParserUtils.nix
@@ -16,5 +16,6 @@ stdenv.mkDerivation {
license = "MIT";
maintainers = [args.lib.maintainers.marcweber];
platforms = args.lib.platforms.linux;
+ broken = true;
};
}
diff --git a/pkgs/applications/networking/browsers/netsurf/libnsgif.nix b/pkgs/applications/networking/browsers/netsurf/libnsgif.nix
index 63ae2ef86d4..5894e5c1c03 100644
--- a/pkgs/applications/networking/browsers/netsurf/libnsgif.nix
+++ b/pkgs/applications/networking/browsers/netsurf/libnsgif.nix
@@ -16,5 +16,6 @@ stdenv.mkDerivation {
license = "MIT";
maintainers = [args.lib.maintainers.marcweber];
platforms = args.lib.platforms.linux;
+ broken = true;
};
}
diff --git a/pkgs/applications/networking/ftp/filezilla/default.nix b/pkgs/applications/networking/ftp/filezilla/default.nix
index 24fdd105341..b7c9a76e151 100644
--- a/pkgs/applications/networking/ftp/filezilla/default.nix
+++ b/pkgs/applications/networking/ftp/filezilla/default.nix
@@ -1,30 +1,33 @@
-{ stdenv, fetchurl, dbus, gnutls2, wxGTK28, libidn, tinyxml, gettext, pkgconfig, xdg_utils, gtk2, sqlite }:
+{ stdenv, fetchurl, dbus, gnutls2, wxGTK28, libidn, tinyxml, gettext
+, pkgconfig, xdg_utils, gtk2, sqlite }:
-let version = "3.6.0.2"; in
+let version = "3.7.3"; in
stdenv.mkDerivation {
name = "filezilla-${version}";
src = fetchurl {
url = "mirror://sourceforge/project/filezilla/FileZilla_Client/${version}/FileZilla_${version}_src.tar.bz2";
- sha256 = "01n6k1q21i21451rdx3rgc4hhxghdn5b0ldzpjsp44ipgww5wsjk";
+ sha256 = "0hn043jjb7qh040dgyhffp9jrrmca1xxbc998vyqyg83lrq2j09b";
};
configureFlags = [
"--disable-manualupdatecheck"
];
- buildInputs = [ dbus gnutls2 wxGTK28 libidn tinyxml gettext pkgconfig xdg_utils gtk2 sqlite ];
+ buildInputs = [
+ dbus gnutls2 wxGTK28 libidn tinyxml gettext pkgconfig xdg_utils gtk2 sqlite
+ ];
- meta = {
+ meta = with stdenv.lib; {
homepage = "http://filezilla-project.org/";
description = "Graphical FTP, FTPS and SFTP client";
- license = "GPLv2";
-
+ license = licenses.gpl2;
longDescription = ''
FileZilla Client is a free, open source FTP client. It supports
FTP, SFTP, and FTPS (FTP over SSL/TLS). The client is available
under many platforms, binaries for Windows, Linux and Mac OS X are
provided.
'';
+ platforms = platforms.linux;
};
}
diff --git a/pkgs/applications/networking/instant-messengers/toxic/default.nix b/pkgs/applications/networking/instant-messengers/toxic/default.nix
index c2af1274a24..59aef8c6c43 100644
--- a/pkgs/applications/networking/instant-messengers/toxic/default.nix
+++ b/pkgs/applications/networking/instant-messengers/toxic/default.nix
@@ -2,8 +2,8 @@
, libtoxcore, pkgconfig }:
let
- version = "75d356e52a";
- date = "20131011";
+ version = "5570b7c98aa";
+ date = "20131112";
in
stdenv.mkDerivation rec {
name = "toxic-${date}-${version}";
@@ -11,7 +11,7 @@ stdenv.mkDerivation rec {
src = fetchurl {
url = "https://github.com/Tox/toxic/tarball/${version}";
name = "${name}.tar.gz";
- sha256 = "14wyvms8l07sl88g8y6g2jv95sq7cnhbaqf4n32xxilch8rymq47";
+ sha256 = "02jfdp10qcw4w62qpra59m9yzzk7a3k2nypkbq5q7ydksbqlx8sj";
};
preConfigure = ''
diff --git a/pkgs/applications/networking/p2p/qbittorrent/default.nix b/pkgs/applications/networking/p2p/qbittorrent/default.nix
new file mode 100644
index 00000000000..5aff37580d3
--- /dev/null
+++ b/pkgs/applications/networking/p2p/qbittorrent/default.nix
@@ -0,0 +1,25 @@
+{ stdenv, fetchurl, qt4, which, dbus_libs, boost, libtorrentRasterbar
+, pkgconfig }:
+
+stdenv.mkDerivation rec {
+ name = "qbittorrent-3.1.2";
+
+ src = fetchurl {
+ url = "mirror://sourceforge/qbittorrent/${name}.tar.xz";
+ sha256 = "1viia11qixp1qqxcyiw1x4if63cfyqk4rscpzp1vnhnzm06irv7y";
+ };
+
+ buildInputs = [ qt4 which dbus_libs boost libtorrentRasterbar
+ pkgconfig ];
+
+ configureFlags = "--with-libboost-inc=${boost}/include "
+ + "--with-libboost-lib=${boost}/lib";
+
+ enableParallelBuilding = true;
+
+ meta = {
+ description = "Free Software alternative to µtorrent";
+ homepage = http://www.qbittorrent.org/;
+ maintainers = with stdenv.lib.maintainers; [ viric ];
+ };
+}
diff --git a/pkgs/applications/networking/remote/freerdp/unstable.nix b/pkgs/applications/networking/remote/freerdp/unstable.nix
index ef8ddf8b0e3..cce3d23d194 100644
--- a/pkgs/applications/networking/remote/freerdp/unstable.nix
+++ b/pkgs/applications/networking/remote/freerdp/unstable.nix
@@ -25,7 +25,7 @@ assert printerSupport -> cups != null;
let rev = "ec6effcb1e7759551cf31f5b18d768afc67db97d"; in
stdenv.mkDerivation rec {
- name = "freerdp-1.1pre${rev}";
+ name = "freerdp-1.1pre-${stdenv.lib.strings.substring 0 7 rev}";
src = fetchgit {
url = git://github.com/FreeRDP/FreeRDP.git;
diff --git a/pkgs/applications/networking/remote/remmina/default.nix b/pkgs/applications/networking/remote/remmina/default.nix
index b2b24a2565c..24bc20af652 100644
--- a/pkgs/applications/networking/remote/remmina/default.nix
+++ b/pkgs/applications/networking/remote/remmina/default.nix
@@ -1,8 +1,21 @@
{ stdenv, fetchurl, cmake, pkgconfig, makeWrapper
, glib, gtk, gettext, libxkbfile, libgnome_keyring, libX11
-, freerdp, libssh, libgcrypt, gnutls }:
+, freerdp, libssh, libgcrypt, gnutls, makeDesktopItem }:
-let version = "1.0.0"; in
+let
+ version = "1.0.0";
+
+ desktopItem = makeDesktopItem {
+ name = "remmina";
+ desktopName = "Remmina";
+ genericName = "Remmina Remote Desktop Client";
+ exec = "remmina";
+ icon = "remmina";
+ comment = "Connect to remote desktops";
+ categories = "GTK;GNOME;X-GNOME-NetworkSettings;Network;";
+ };
+
+in
stdenv.mkDerivation {
name = "remmina-${version}";
@@ -18,14 +31,21 @@ stdenv.mkDerivation {
cmakeFlags = "-DWITH_VTE=OFF -DWITH_TELEPATHY=OFF -DWITH_AVAHI=OFF";
+ patches = [ ./lgthread.patch ];
+
postInstall = ''
+ mkdir -pv $out/share/applications
+ mkdir -pv $out/share/icons
+ cp ${desktopItem}/share/applications/* $out/share/applications
+ cp -r $out/share/remmina/icons/* $out/share/icons
wrapProgram $out/bin/remmina --prefix LD_LIBRARY_PATH : "${libX11}/lib"
'';
- meta = {
+ meta = with stdenv.lib; {
license = "GPLv2";
homepage = "http://remmina.sourceforge.net/";
description = "Remmina is a remote desktop client written in GTK+";
maintainers = [];
+ platforms = platforms.linux;
};
}
diff --git a/pkgs/applications/networking/remote/remmina/lgthread.patch b/pkgs/applications/networking/remote/remmina/lgthread.patch
new file mode 100644
index 00000000000..2d8e60f7572
--- /dev/null
+++ b/pkgs/applications/networking/remote/remmina/lgthread.patch
@@ -0,0 +1,16 @@
+Fix [undefined reference to `g_thread_init'] as suggested by
+http://ragnermagalhaes.blogspot.ru/2007/09/undefined-reference-to-gthreadinit.html
+
+diff -ru FreeRDP-Remmina-356c033.orig/remmina/CMakeLists.txt FreeRDP-Remmina-356c033/remmina/CMakeLists.txt
+--- FreeRDP-Remmina-356c033.orig/remmina/CMakeLists.txt 2013-11-05 12:43:27.660276912 +0400
++++ FreeRDP-Remmina-356c033/remmina/CMakeLists.txt 2013-11-05 12:53:39.607018349 +0400
+@@ -132,6 +132,8 @@
+ endif()
+ endif()
+
++set( CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lgthread-2.0" )
++
+ add_subdirectory(po)
+ add_subdirectory(icons)
+ add_subdirectory(desktop)
+
diff --git a/pkgs/applications/networking/znc/modules.nix b/pkgs/applications/networking/znc/modules.nix
index ba6d36a3c76..478900bae4c 100644
--- a/pkgs/applications/networking/znc/modules.nix
+++ b/pkgs/applications/networking/znc/modules.nix
@@ -10,7 +10,7 @@ let
inherit buildPhase;
inherit installPhase;
- meta.platforms = stdenv.lib.platforms.unix;
+ meta = a.meta // { platforms = stdenv.lib.platforms.unix; };
passthru.module_name = module_name;
});
@@ -30,7 +30,7 @@ in rec {
description = "Push notification service module for ZNC";
homepage = https://github.com/jreese/znc-push;
repositories.git = https://github.com/jreese/znc-push.git;
- license = stdenv.lib.license.mit;
+ license = stdenv.lib.licenses.mit;
maintainers = [ stdenv.lib.maintainers.offline ];
};
};
diff --git a/pkgs/applications/office/gnucash/default.nix b/pkgs/applications/office/gnucash/default.nix
index eddaf8f33e7..b399c80ebff 100644
--- a/pkgs/applications/office/gnucash/default.nix
+++ b/pkgs/applications/office/gnucash/default.nix
@@ -1,7 +1,7 @@
{ fetchurl, stdenv, pkgconfig, libxml2, gconf, glib, gtk, libgnomeui, libofx
, libgtkhtml, gtkhtml, libgnomeprint, goffice, enchant, gettext, libbonoboui
, intltool, perl, guile, slibGuile, swig, isocodes, bzip2, makeWrapper, libglade
-, libgsf, libart_lgpl
+, libgsf, libart_lgpl, perlPackages
}:
/* If you experience GConf errors when running GnuCash on NixOS, see
@@ -21,23 +21,31 @@ stdenv.mkDerivation rec {
pkgconfig libxml2 gconf glib gtk libgnomeui libgtkhtml gtkhtml
libgnomeprint goffice enchant gettext intltool perl guile slibGuile
swig isocodes bzip2 makeWrapper libofx libglade libgsf libart_lgpl
+ perlPackages.DateManip perlPackages.FinanceQuote
];
configureFlags = "CFLAGS=-O3 CXXFLAGS=-O3 --disable-dbi --enable-ofx";
postInstall = ''
- sed -i $out/bin/update-gnucash-gconf \
+ # Auto-updaters don't make sense in Nix.
+ rm $out/bin/gnc-fq-update
+
+ sed -i $out/bin/update-gnucash-gconf \
-e 's|--config-source=[^ ]* --install-schema-file|--makefile-install-rule|'
- for prog in "$out/bin/"*
+
+ for prog in $(echo "$out/bin/"*)
do
+ # Don't wrap the gnc-fq-* scripts, since gnucash calls them as
+ # "perl