Merge remote-tracking branch 'upstream/master' into hardened-stdenv
This commit is contained in:
commit
3f45f0948d
139
lib/attrsets.nix
139
lib/attrsets.nix
@ -12,9 +12,15 @@ rec {
|
||||
inherit (builtins) attrNames listToAttrs hasAttr isAttrs getAttr;
|
||||
|
||||
|
||||
/* Return an attribute from nested attribute sets. For instance
|
||||
["x" "y"] applied to some set e returns e.x.y, if it exists. The
|
||||
default value is returned otherwise. */
|
||||
/* Return an attribute from nested attribute sets.
|
||||
|
||||
Example:
|
||||
x = { a = { b = 3; }; }
|
||||
attrByPath ["a" "b"] 6 x
|
||||
=> 3
|
||||
attrByPath ["z" "z"] 6 x
|
||||
=> 6
|
||||
*/
|
||||
attrByPath = attrPath: default: e:
|
||||
let attr = head attrPath;
|
||||
in
|
||||
@ -24,8 +30,15 @@ rec {
|
||||
else default;
|
||||
|
||||
/* Return if an attribute from nested attribute set exists.
|
||||
For instance ["x" "y"] applied to some set e returns true, if e.x.y exists. False
|
||||
is returned otherwise. */
|
||||
|
||||
Example:
|
||||
x = { a = { b = 3; }; }
|
||||
hasAttrByPath ["a" "b"] x
|
||||
=> true
|
||||
hasAttrByPath ["z" "z"] x
|
||||
=> false
|
||||
|
||||
*/
|
||||
hasAttrByPath = attrPath: e:
|
||||
let attr = head attrPath;
|
||||
in
|
||||
@ -35,14 +48,28 @@ rec {
|
||||
else false;
|
||||
|
||||
|
||||
/* Return nested attribute set in which an attribute is set. For instance
|
||||
["x" "y"] applied with some value v returns `x.y = v;' */
|
||||
/* Return nested attribute set in which an attribute is set.
|
||||
|
||||
Example:
|
||||
setAttrByPath ["a" "b"] 3
|
||||
=> { a = { b = 3; }; }
|
||||
*/
|
||||
setAttrByPath = attrPath: value:
|
||||
if attrPath == [] then value
|
||||
else listToAttrs
|
||||
[ { name = head attrPath; value = setAttrByPath (tail attrPath) value; } ];
|
||||
|
||||
|
||||
/* Like `getAttrPath' without a default value. If it doesn't find the
|
||||
path it will throw.
|
||||
|
||||
Example:
|
||||
x = { a = { b = 3; }; }
|
||||
getAttrFromPath ["a" "b"] x
|
||||
=> 3
|
||||
getAttrFromPath ["z" "z"] x
|
||||
=> error: cannot find attribute `z.z'
|
||||
*/
|
||||
getAttrFromPath = attrPath: set:
|
||||
let errorMsg = "cannot find attribute `" + concatStringsSep "." attrPath + "'";
|
||||
in attrByPath attrPath (abort errorMsg) set;
|
||||
@ -109,9 +136,11 @@ rec {
|
||||
) (attrNames set)
|
||||
);
|
||||
|
||||
/* foldAttrs: apply fold functions to values grouped by key. Eg accumulate values as list:
|
||||
foldAttrs (n: a: [n] ++ a) [] [{ a = 2; } { a = 3; }]
|
||||
=> { a = [ 2 3 ]; }
|
||||
/* Apply fold functions to values grouped by key.
|
||||
|
||||
Example:
|
||||
foldAttrs (n: a: [n] ++ a) [] [{ a = 2; } { a = 3; }]
|
||||
=> { a = [ 2 3 ]; }
|
||||
*/
|
||||
foldAttrs = op: nul: list_of_attrs:
|
||||
fold (n: a:
|
||||
@ -147,7 +176,12 @@ rec {
|
||||
|
||||
|
||||
/* Utility function that creates a {name, value} pair as expected by
|
||||
builtins.listToAttrs. */
|
||||
builtins.listToAttrs.
|
||||
|
||||
Example:
|
||||
nameValuePair "some" 6
|
||||
=> { name = "some"; value = 6; }
|
||||
*/
|
||||
nameValuePair = name: value: { inherit name value; };
|
||||
|
||||
|
||||
@ -248,11 +282,19 @@ rec {
|
||||
listToAttrs (map (n: nameValuePair n (f n)) names);
|
||||
|
||||
|
||||
/* Check whether the argument is a derivation. */
|
||||
/* Check whether the argument is a derivation. Any set with
|
||||
{ type = "derivation"; } counts as a derivation.
|
||||
|
||||
Example:
|
||||
nixpkgs = import <nixpkgs> {}
|
||||
isDerivation nixpkgs.ruby
|
||||
=> true
|
||||
isDerivation "foobar"
|
||||
=> false
|
||||
*/
|
||||
isDerivation = x: isAttrs x && x ? type && x.type == "derivation";
|
||||
|
||||
|
||||
/* Convert a store path to a fake derivation. */
|
||||
/* Converts a store path to a fake derivation. */
|
||||
toDerivation = path:
|
||||
let path' = builtins.storePath path; in
|
||||
{ type = "derivation";
|
||||
@ -262,32 +304,49 @@ rec {
|
||||
};
|
||||
|
||||
|
||||
/* If the Boolean `cond' is true, return the attribute set `as',
|
||||
otherwise an empty attribute set. */
|
||||
/* If `cond' is true, return the attribute set `as',
|
||||
otherwise an empty attribute set.
|
||||
|
||||
Example:
|
||||
optionalAttrs (true) { my = "set"; }
|
||||
=> { my = "set"; }
|
||||
optionalAttrs (false) { my = "set"; }
|
||||
=> { }
|
||||
*/
|
||||
optionalAttrs = cond: as: if cond then as else {};
|
||||
|
||||
|
||||
/* Merge sets of attributes and use the function f to merge attributes
|
||||
values. */
|
||||
values.
|
||||
|
||||
Example:
|
||||
zipAttrsWithNames ["a"] (name: vs: vs) [{a = "x";} {a = "y"; b = "z";}]
|
||||
=> { a = ["x" "y"]; }
|
||||
*/
|
||||
zipAttrsWithNames = names: f: sets:
|
||||
listToAttrs (map (name: {
|
||||
inherit name;
|
||||
value = f name (catAttrs name sets);
|
||||
}) names);
|
||||
|
||||
# implentation note: Common names appear multiple times in the list of
|
||||
# names, hopefully this does not affect the system because the maximal
|
||||
# laziness avoid computing twice the same expression and listToAttrs does
|
||||
# not care about duplicated attribute names.
|
||||
/* Implentation note: Common names appear multiple times in the list of
|
||||
names, hopefully this does not affect the system because the maximal
|
||||
laziness avoid computing twice the same expression and listToAttrs does
|
||||
not care about duplicated attribute names.
|
||||
|
||||
Example:
|
||||
zipAttrsWith (name: values: values) [{a = "x";} {a = "y"; b = "z";}]
|
||||
=> { a = ["x" "y"]; b = ["z"] }
|
||||
*/
|
||||
zipAttrsWith = f: sets: zipAttrsWithNames (concatMap attrNames sets) f sets;
|
||||
/* Like `zipAttrsWith' with `(name: values: value)' as the function.
|
||||
|
||||
Example:
|
||||
zipAttrs [{a = "x";} {a = "y"; b = "z";}]
|
||||
=> { a = ["x" "y"]; b = ["z"] }
|
||||
*/
|
||||
zipAttrs = zipAttrsWith (name: values: values);
|
||||
|
||||
/* backward compatibility */
|
||||
zipWithNames = zipAttrsWithNames;
|
||||
zip = builtins.trace "lib.zip is deprecated, use lib.zipAttrsWith instead" zipAttrsWith;
|
||||
|
||||
|
||||
/* Does the same as the update operator '//' except that attributes are
|
||||
merged until the given pedicate is verified. The predicate should
|
||||
accept 3 arguments which are the path to reach the attribute, a part of
|
||||
@ -351,6 +410,15 @@ rec {
|
||||
!(isAttrs lhs && isAttrs rhs)
|
||||
) lhs rhs;
|
||||
|
||||
/* Returns true if the pattern is contained in the set. False otherwise.
|
||||
|
||||
FIXME(zimbatm): this example doesn't work !!!
|
||||
|
||||
Example:
|
||||
sys = mkSystem { }
|
||||
matchAttrs { cpu = { bits = 64; }; } sys
|
||||
=> true
|
||||
*/
|
||||
matchAttrs = pattern: attrs:
|
||||
fold or false (attrValues (zipAttrsWithNames (attrNames pattern) (n: values:
|
||||
let pat = head values; val = head (tail values); in
|
||||
@ -359,10 +427,23 @@ rec {
|
||||
else pat == val
|
||||
) [pattern attrs]));
|
||||
|
||||
# override only the attributes that are already present in the old set
|
||||
# useful for deep-overriding
|
||||
/* Override only the attributes that are already present in the old set
|
||||
useful for deep-overriding.
|
||||
|
||||
Example:
|
||||
x = { a = { b = 4; c = 3; }; }
|
||||
overrideExisting x { a = { b = 6; d = 2; }; }
|
||||
=> { a = { b = 6; d = 2; }; }
|
||||
*/
|
||||
overrideExisting = old: new:
|
||||
old // listToAttrs (map (attr: nameValuePair attr (attrByPath [attr] old.${attr} new)) (attrNames old));
|
||||
|
||||
deepSeqAttrs = x: y: deepSeqList (attrValues x) y;
|
||||
|
||||
/*** deprecated stuff ***/
|
||||
|
||||
deepSeqAttrs = throw "removed 2016-02-29 because unused and broken";
|
||||
zipWithNames = zipAttrsWithNames;
|
||||
zip = builtins.trace
|
||||
"lib.zip is deprecated, use lib.zipAttrsWith instead" zipAttrsWith;
|
||||
|
||||
}
|
||||
|
@ -175,6 +175,12 @@ lib.mapAttrs (n: v: v // { shortName = n; }) rec {
|
||||
fullName = "Eclipse Public License 1.0";
|
||||
};
|
||||
|
||||
epson = {
|
||||
fullName = "Seiko Epson Corporation Software License Agreement for Linux";
|
||||
url = https://download.ebz.epson.net/dsc/du/02/eula/global/LINUX_EN.html;
|
||||
free = false;
|
||||
};
|
||||
|
||||
fdl12 = spdx {
|
||||
spdxId = "GFDL-1.2";
|
||||
fullName = "GNU Free Documentation License v1.2";
|
||||
|
272
lib/lists.nix
272
lib/lists.nix
@ -6,17 +6,26 @@ rec {
|
||||
|
||||
inherit (builtins) head tail length isList elemAt concatLists filter elem genList;
|
||||
|
||||
/* Create a list consisting of a single element. `singleton x' is
|
||||
sometimes more convenient with respect to indentation than `[x]'
|
||||
when x spans multiple lines.
|
||||
|
||||
# Create a list consisting of a single element. `singleton x' is
|
||||
# sometimes more convenient with respect to indentation than `[x]'
|
||||
# when x spans multiple lines.
|
||||
Example:
|
||||
singleton "foo"
|
||||
=> [ "foo" ]
|
||||
*/
|
||||
singleton = x: [x];
|
||||
|
||||
/* "Fold" a binary function `op' between successive elements of
|
||||
`list' with `nul' as the starting value, i.e., `fold op nul [x_1
|
||||
x_2 ... x_n] == op x_1 (op x_2 ... (op x_n nul))'. (This is
|
||||
Haskell's foldr).
|
||||
|
||||
# "Fold" a binary function `op' between successive elements of
|
||||
# `list' with `nul' as the starting value, i.e., `fold op nul [x_1
|
||||
# x_2 ... x_n] == op x_1 (op x_2 ... (op x_n nul))'. (This is
|
||||
# Haskell's foldr).
|
||||
Example:
|
||||
concat = fold (a: b: a + b) "z"
|
||||
concat [ "a" "b" "c" ]
|
||||
=> "abcnul"
|
||||
*/
|
||||
fold = op: nul: list:
|
||||
let
|
||||
len = length list;
|
||||
@ -26,8 +35,14 @@ rec {
|
||||
else op (elemAt list n) (fold' (n + 1));
|
||||
in fold' 0;
|
||||
|
||||
# Left fold: `fold op nul [x_1 x_2 ... x_n] == op (... (op (op nul
|
||||
# x_1) x_2) ... x_n)'.
|
||||
/* Left fold: `fold op nul [x_1 x_2 ... x_n] == op (... (op (op nul
|
||||
x_1) x_2) ... x_n)'.
|
||||
|
||||
Example:
|
||||
lconcat = foldl (a: b: a + b) "z"
|
||||
lconcat [ "a" "b" "c" ]
|
||||
=> "zabc"
|
||||
*/
|
||||
foldl = op: nul: list:
|
||||
let
|
||||
len = length list;
|
||||
@ -37,13 +52,22 @@ rec {
|
||||
else op (foldl' (n - 1)) (elemAt list n);
|
||||
in foldl' (length list - 1);
|
||||
|
||||
/* Strict version of foldl.
|
||||
|
||||
# Strict version of foldl.
|
||||
The difference is that evaluation is forced upon access. Usually used
|
||||
with small whole results (in contract with lazily-generated list or large
|
||||
lists where only a part is consumed.)
|
||||
*/
|
||||
foldl' = builtins.foldl' or foldl;
|
||||
|
||||
/* Map with index
|
||||
|
||||
# Map with index: `imap (i: v: "${v}-${toString i}") ["a" "b"] ==
|
||||
# ["a-1" "b-2"]'. FIXME: why does this start to count at 1?
|
||||
FIXME(zimbatm): why does this start to count at 1?
|
||||
|
||||
Example:
|
||||
imap (i: v: "${v}-${toString i}") ["a" "b"]
|
||||
=> [ "a-1" "b-2" ]
|
||||
*/
|
||||
imap =
|
||||
if builtins ? genList then
|
||||
f: list: genList (n: f (n + 1) (elemAt list n)) (length list)
|
||||
@ -57,73 +81,141 @@ rec {
|
||||
else [ (f (n + 1) (elemAt list n)) ] ++ imap' (n + 1);
|
||||
in imap' 0;
|
||||
|
||||
/* Map and concatenate the result.
|
||||
|
||||
# Map and concatenate the result.
|
||||
Example:
|
||||
concatMap (x: [x] ++ ["z"]) ["a" "b"]
|
||||
=> [ "a" "z" "b" "z" ]
|
||||
*/
|
||||
concatMap = f: list: concatLists (map f list);
|
||||
|
||||
/* Flatten the argument into a single list; that is, nested lists are
|
||||
spliced into the top-level lists.
|
||||
|
||||
# Flatten the argument into a single list; that is, nested lists are
|
||||
# spliced into the top-level lists. E.g., `flatten [1 [2 [3] 4] 5]
|
||||
# == [1 2 3 4 5]' and `flatten 1 == [1]'.
|
||||
Example:
|
||||
flatten [1 [2 [3] 4] 5]
|
||||
=> [1 2 3 4 5]
|
||||
flatten 1
|
||||
=> [1]
|
||||
*/
|
||||
flatten = x:
|
||||
if isList x
|
||||
then foldl' (x: y: x ++ (flatten y)) [] x
|
||||
else [x];
|
||||
|
||||
/* Remove elements equal to 'e' from a list. Useful for buildInputs.
|
||||
|
||||
# Remove elements equal to 'e' from a list. Useful for buildInputs.
|
||||
Example:
|
||||
remove 3 [ 1 3 4 3 ]
|
||||
=> [ 1 4 ]
|
||||
*/
|
||||
remove = e: filter (x: x != e);
|
||||
|
||||
/* Find the sole element in the list matching the specified
|
||||
predicate, returns `default' if no such element exists, or
|
||||
`multiple' if there are multiple matching elements.
|
||||
|
||||
# Find the sole element in the list matching the specified
|
||||
# predicate, returns `default' if no such element exists, or
|
||||
# `multiple' if there are multiple matching elements.
|
||||
Example:
|
||||
findSingle (x: x == 3) "none" "multiple" [ 1 3 3 ]
|
||||
=> "multiple"
|
||||
findSingle (x: x == 3) "none" "multiple" [ 1 3 ]
|
||||
=> 3
|
||||
findSingle (x: x == 3) "none" "multiple" [ 1 9 ]
|
||||
=> "none"
|
||||
*/
|
||||
findSingle = pred: default: multiple: list:
|
||||
let found = filter pred list; len = length found;
|
||||
in if len == 0 then default
|
||||
else if len != 1 then multiple
|
||||
else head found;
|
||||
|
||||
/* Find the first element in the list matching the specified
|
||||
predicate or returns `default' if no such element exists.
|
||||
|
||||
# Find the first element in the list matching the specified
|
||||
# predicate or returns `default' if no such element exists.
|
||||
Example:
|
||||
findFirst (x: x > 3) 7 [ 1 6 4 ]
|
||||
=> 6
|
||||
findFirst (x: x > 9) 7 [ 1 6 4 ]
|
||||
=> 7
|
||||
*/
|
||||
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'.
|
||||
|
||||
# Return true iff function `pred' returns true for at least element
|
||||
# of `list'.
|
||||
Example:
|
||||
any isString [ 1 "a" { } ]
|
||||
=> true
|
||||
any isString [ 1 { } ]
|
||||
=> false
|
||||
*/
|
||||
any = builtins.any or (pred: fold (x: y: if pred x then true else y) false);
|
||||
|
||||
/* Return true iff function `pred' returns true for all elements of
|
||||
`list'.
|
||||
|
||||
# Return true iff function `pred' returns true for all elements of
|
||||
# `list'.
|
||||
Example:
|
||||
all (x: x < 3) [ 1 2 ]
|
||||
=> true
|
||||
all (x: x < 3) [ 1 2 3 ]
|
||||
=> false
|
||||
*/
|
||||
all = builtins.all or (pred: fold (x: y: if pred x then y else false) true);
|
||||
|
||||
/* Count how many times function `pred' returns true for the elements
|
||||
of `list'.
|
||||
|
||||
# Count how many times function `pred' returns true for the elements
|
||||
# of `list'.
|
||||
Example:
|
||||
count (x: x == 3) [ 3 2 3 4 6 ]
|
||||
=> 2
|
||||
*/
|
||||
count = pred: foldl' (c: x: if pred x then c + 1 else c) 0;
|
||||
|
||||
/* Return a singleton list or an empty list, depending on a boolean
|
||||
value. Useful when building lists with optional elements
|
||||
(e.g. `++ optional (system == "i686-linux") flashplayer').
|
||||
|
||||
# Return a singleton list or an empty list, depending on a boolean
|
||||
# value. Useful when building lists with optional elements
|
||||
# (e.g. `++ optional (system == "i686-linux") flashplayer').
|
||||
Example:
|
||||
optional true "foo"
|
||||
=> [ "foo" ]
|
||||
optional false "foo"
|
||||
=> [ ]
|
||||
*/
|
||||
optional = cond: elem: if cond then [elem] else [];
|
||||
|
||||
/* Return a list or an empty list, dependening on a boolean value.
|
||||
|
||||
# Return a list or an empty list, dependening on a boolean value.
|
||||
Example:
|
||||
optionals true [ 2 3 ]
|
||||
=> [ 2 3 ]
|
||||
optionals false [ 2 3 ]
|
||||
=> [ ]
|
||||
*/
|
||||
optionals = cond: elems: if cond then elems else [];
|
||||
|
||||
|
||||
# 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.
|
||||
/* 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.
|
||||
|
||||
Example:
|
||||
toList [ 1 2 ]
|
||||
=> [ 1 2 ]
|
||||
toList "hi"
|
||||
=> [ "hi "]
|
||||
*/
|
||||
toList = x: if isList x then x else [x];
|
||||
|
||||
/* Return a list of integers from `first' up to and including `last'.
|
||||
|
||||
# Return a list of integers from `first' up to and including `last'.
|
||||
Example:
|
||||
range 2 4
|
||||
=> [ 2 3 4 ]
|
||||
range 3 2
|
||||
=> [ ]
|
||||
*/
|
||||
range =
|
||||
if builtins ? genList then
|
||||
first: last:
|
||||
@ -136,9 +228,13 @@ rec {
|
||||
then []
|
||||
else [first] ++ range (first + 1) last;
|
||||
|
||||
/* Splits the elements of a list in two lists, `right' and
|
||||
`wrong', depending on the evaluation of a predicate.
|
||||
|
||||
# Partition the elements of a list in two lists, `right' and
|
||||
# `wrong', depending on the evaluation of a predicate.
|
||||
Example:
|
||||
partition (x: x > 2) [ 5 1 2 3 4 ]
|
||||
=> { right = [ 5 3 4 ]; wrong = [ 1 2 ]; }
|
||||
*/
|
||||
partition = pred:
|
||||
fold (h: t:
|
||||
if pred h
|
||||
@ -146,7 +242,14 @@ rec {
|
||||
else { right = t.right; wrong = [h] ++ t.wrong; }
|
||||
) { right = []; wrong = []; };
|
||||
|
||||
/* Merges two lists of the same size together. If the sizes aren't the same
|
||||
the merging stops at the shortest. How both lists are merged is defined
|
||||
by the first argument.
|
||||
|
||||
Example:
|
||||
zipListsWith (a: b: a + b) ["h" "l"] ["e" "o"]
|
||||
=> ["he" "lo"]
|
||||
*/
|
||||
zipListsWith =
|
||||
if builtins ? genList then
|
||||
f: fst: snd: genList (n: f (elemAt fst n) (elemAt snd n)) (min (length fst) (length snd))
|
||||
@ -161,21 +264,37 @@ rec {
|
||||
else [];
|
||||
in zipListsWith' 0;
|
||||
|
||||
/* Merges two lists of the same size together. If the sizes aren't the same
|
||||
the merging stops at the shortest.
|
||||
|
||||
Example:
|
||||
zipLists [ 1 2 ] [ "a" "b" ]
|
||||
=> [ { fst = 1; snd = "a"; } { fst = 2; snd = "b"; } ]
|
||||
*/
|
||||
zipLists = zipListsWith (fst: snd: { inherit fst snd; });
|
||||
|
||||
/* Reverse the order of the elements of a list.
|
||||
|
||||
# Reverse the order of the elements of a list.
|
||||
Example:
|
||||
|
||||
reverseList [ "b" "o" "j" ]
|
||||
=> [ "j" "o" "b" ]
|
||||
*/
|
||||
reverseList =
|
||||
if builtins ? genList then
|
||||
xs: let l = length xs; in genList (n: elemAt xs (l - n - 1)) l
|
||||
else
|
||||
fold (e: acc: acc ++ [ e ]) [];
|
||||
|
||||
/* Sort a list based on a comparator function which compares two
|
||||
elements and returns true if the first argument is strictly below
|
||||
the second argument. The returned list is sorted in an increasing
|
||||
order. The implementation does a quick-sort.
|
||||
|
||||
# Sort a list based on a comparator function which compares two
|
||||
# elements and returns true if the first argument is strictly below
|
||||
# the second argument. The returned list is sorted in an increasing
|
||||
# order. The implementation does a quick-sort.
|
||||
Example:
|
||||
sort (a: b: a < b) [ 5 3 7 ]
|
||||
=> [ 3 5 7 ]
|
||||
*/
|
||||
sort = builtins.sort or (
|
||||
strictLess: list:
|
||||
let
|
||||
@ -193,8 +312,14 @@ rec {
|
||||
if len < 2 then list
|
||||
else (sort strictLess pivot.left) ++ [ first ] ++ (sort strictLess pivot.right));
|
||||
|
||||
/* Return the first (at most) N elements of a list.
|
||||
|
||||
# Return the first (at most) N elements of a list.
|
||||
Example:
|
||||
take 2 [ "a" "b" "c" "d" ]
|
||||
=> [ "a" "b" ]
|
||||
take 2 [ ]
|
||||
=> [ ]
|
||||
*/
|
||||
take =
|
||||
if builtins ? genList then
|
||||
count: sublist 0 count
|
||||
@ -209,8 +334,14 @@ rec {
|
||||
[ (elemAt list n) ] ++ take' (n + 1);
|
||||
in take' 0;
|
||||
|
||||
/* Remove the first (at most) N elements of a list.
|
||||
|
||||
# Remove the first (at most) N elements of a list.
|
||||
Example:
|
||||
drop 2 [ "a" "b" "c" "d" ]
|
||||
=> [ "c" "d" ]
|
||||
drop 2 [ ]
|
||||
=> [ ]
|
||||
*/
|
||||
drop =
|
||||
if builtins ? genList then
|
||||
count: list: sublist count (length list) list
|
||||
@ -225,9 +356,15 @@ rec {
|
||||
drop' (n - 1) ++ [ (elemAt list n) ];
|
||||
in drop' (len - 1);
|
||||
|
||||
/* Return a list consisting of at most ‘count’ elements of ‘list’,
|
||||
starting at index ‘start’.
|
||||
|
||||
# Return a list consisting of at most ‘count’ elements of ‘list’,
|
||||
# starting at index ‘start’.
|
||||
Example:
|
||||
sublist 1 3 [ "a" "b" "c" "d" "e" ]
|
||||
=> [ "b" "c" "d" ]
|
||||
sublist 1 3 [ ]
|
||||
=> [ ]
|
||||
*/
|
||||
sublist = start: count: list:
|
||||
let len = length list; in
|
||||
genList
|
||||
@ -236,23 +373,36 @@ rec {
|
||||
else if start + count > len then len - start
|
||||
else count);
|
||||
|
||||
/* Return the last element of a list.
|
||||
|
||||
# Return the last element of a list.
|
||||
Example:
|
||||
last [ 1 2 3 ]
|
||||
=> 3
|
||||
*/
|
||||
last = list:
|
||||
assert list != []; elemAt list (length list - 1);
|
||||
|
||||
/* Return all elements but the last
|
||||
|
||||
# Return all elements but the last
|
||||
Example:
|
||||
init [ 1 2 3 ]
|
||||
=> [ 1 2 ]
|
||||
*/
|
||||
init = list: assert list != []; take (length list - 1) list;
|
||||
|
||||
|
||||
deepSeqList = xs: y: if any (x: deepSeq x false) xs then y else y;
|
||||
|
||||
|
||||
/* FIXME(zimbatm) Not used anywhere
|
||||
*/
|
||||
crossLists = f: foldl (fs: args: concatMap (f: map f args) fs) [f];
|
||||
|
||||
|
||||
# Remove duplicate elements from the list. O(n^2) complexity.
|
||||
/* Remove duplicate elements from the list. O(n^2) complexity.
|
||||
|
||||
Example:
|
||||
|
||||
unique [ 3 2 3 4 ]
|
||||
=> [ 3 2 4 ]
|
||||
*/
|
||||
unique = list:
|
||||
if list == [] then
|
||||
[]
|
||||
@ -262,12 +412,24 @@ rec {
|
||||
xs = unique (drop 1 list);
|
||||
in [x] ++ remove x xs;
|
||||
|
||||
/* Intersects list 'e' and another list. O(nm) complexity.
|
||||
|
||||
# Intersects list 'e' and another list. O(nm) complexity.
|
||||
Example:
|
||||
intersectLists [ 1 2 3 ] [ 6 3 2 ]
|
||||
=> [ 3 2 ]
|
||||
*/
|
||||
intersectLists = e: filter (x: elem x e);
|
||||
|
||||
/* Subtracts list 'e' from another list. O(nm) complexity.
|
||||
|
||||
# Subtracts list 'e' from another list. O(nm) complexity.
|
||||
Example:
|
||||
subtractLists [ 3 2 ] [ 1 2 3 4 5 3 ]
|
||||
=> [ 1 4 5 ]
|
||||
*/
|
||||
subtractLists = e: filter (x: !(elem x e));
|
||||
|
||||
/*** deprecated stuff ***/
|
||||
|
||||
deepSeqList = throw "removed 2016-02-29 because unused and broken";
|
||||
|
||||
}
|
||||
|
@ -123,6 +123,7 @@
|
||||
fpletz = "Franz Pletz <fpletz@fnordicwalking.de>";
|
||||
fps = "Florian Paul Schmidt <mista.tapas@gmx.net>";
|
||||
fridh = "Frederik Rietdijk <fridh@fridh.nl>";
|
||||
frlan = "Frank Lanitz <frank@frank.uvena.de>";
|
||||
fro_ozen = "fro_ozen <fro_ozen@gmx.de>";
|
||||
ftrvxmtrx = "Siarhei Zirukin <ftrvxmtrx@gmail.com>";
|
||||
funfunctor = "Edward O'Callaghan <eocallaghan@alterapraxis.com>";
|
||||
@ -152,7 +153,6 @@
|
||||
iElectric = "Domen Kozar <domen@dev.si>";
|
||||
igsha = "Igor Sharonov <igor.sharonov@gmail.com>";
|
||||
ikervagyok = "Balázs Lengyel <ikervagyok@gmail.com>";
|
||||
iyzsong = "Song Wenwu <iyzsong@gmail.com>";
|
||||
j-keck = "Jürgen Keck <jhyphenkeck@gmail.com>";
|
||||
jagajaga = "Arseniy Seroka <ars.seroka@gmail.com>";
|
||||
javaguirre = "Javier Aguirre <contacto@javaguirre.net>";
|
||||
@ -208,10 +208,12 @@
|
||||
malyn = "Michael Alyn Miller <malyn@strangeGizmo.com>";
|
||||
manveru = "Michael Fellinger <m.fellinger@gmail.com>";
|
||||
marcweber = "Marc Weber <marco-oweber@gmx.de>";
|
||||
markus1189 = "Markus Hauck <markus1189@gmail.com>";
|
||||
markWot = "Markus Wotringer <markus@wotringer.de>";
|
||||
matejc = "Matej Cotman <cotman.matej@gmail.com>";
|
||||
mathnerd314 = "Mathnerd314 <mathnerd314.gph+hs@gmail.com>";
|
||||
matthiasbeyer = "Matthias Beyer <mail@beyermatthias.de>";
|
||||
mbauer = "Matthew Bauer <mjbauer95@gmail.com>";
|
||||
maurer = "Matthew Maurer <matthew.r.maurer+nix@gmail.com>";
|
||||
mbakke = "Marius Bakke <ymse@tuta.io>";
|
||||
mbe = "Brandon Edens <brandonedens@gmail.com>";
|
||||
@ -299,7 +301,9 @@
|
||||
sander = "Sander van der Burg <s.vanderburg@tudelft.nl>";
|
||||
schmitthenner = "Fabian Schmitthenner <development@schmitthenner.eu>";
|
||||
schristo = "Scott Christopher <schristopher@konputa.com>";
|
||||
scolobb = "Sergiu Ivanov <sivanov@colimite.fr>";
|
||||
sepi = "Raffael Mancini <raffael@mancini.lu>";
|
||||
sheenobu = "Sheena Artrip <sheena.artrip@gmail.com>";
|
||||
sheganinans = "Aistis Raulinaitis <sheganinans@gmail.com>";
|
||||
shell = "Shell Turner <cam.turn@gmail.com>";
|
||||
shlevy = "Shea Levy <shea@shealevy.com>";
|
||||
|
@ -15,7 +15,7 @@ Usage:
|
||||
Attention:
|
||||
|
||||
let
|
||||
pkgs = (import /etc/nixos/nixpkgs/pkgs/top-level/all-packages.nix) {};
|
||||
pkgs = (import <nixpkgs>) {};
|
||||
in let
|
||||
inherit (pkgs.stringsWithDeps) fullDepEntry packEntry noDepEntry textClosureMap;
|
||||
inherit (pkgs.lib) id;
|
||||
|
334
lib/strings.nix
334
lib/strings.nix
@ -10,65 +10,147 @@ rec {
|
||||
|
||||
inherit (builtins) stringLength substring head tail isString replaceStrings;
|
||||
|
||||
/* Concatenate a list of strings.
|
||||
|
||||
# Concatenate a list of strings.
|
||||
Example:
|
||||
concatStrings ["foo" "bar"]
|
||||
=> "foobar"
|
||||
*/
|
||||
concatStrings =
|
||||
if builtins ? concatStringsSep then
|
||||
builtins.concatStringsSep ""
|
||||
else
|
||||
lib.foldl' (x: y: x + y) "";
|
||||
|
||||
/* Map a function over a list and concatenate the resulting strings.
|
||||
|
||||
# Map a function over a list and concatenate the resulting strings.
|
||||
Example:
|
||||
concatMapStrings (x: "a" + x) ["foo" "bar"]
|
||||
=> "afooabar"
|
||||
*/
|
||||
concatMapStrings = f: list: concatStrings (map f list);
|
||||
|
||||
/* Like `concatMapStrings' except that the f functions also gets the
|
||||
position as a parameter.
|
||||
|
||||
Example:
|
||||
concatImapStrings (pos: x: "${toString pos}-${x}") ["foo" "bar"]
|
||||
=> "1-foo2-bar"
|
||||
*/
|
||||
concatImapStrings = f: list: concatStrings (lib.imap f list);
|
||||
|
||||
/* Place an element between each element of a list
|
||||
|
||||
# Place an element between each element of a list, e.g.,
|
||||
# `intersperse "," ["a" "b" "c"]' returns ["a" "," "b" "," "c"].
|
||||
Example:
|
||||
intersperse "/" ["usr" "local" "bin"]
|
||||
=> ["usr" "/" "local" "/" "bin"].
|
||||
*/
|
||||
intersperse = separator: list:
|
||||
if list == [] || length list == 1
|
||||
then list
|
||||
else tail (lib.concatMap (x: [separator x]) list);
|
||||
|
||||
/* Concatenate a list of strings with a separator between each element
|
||||
|
||||
# Concatenate a list of strings with a separator between each element, e.g.
|
||||
# concatStringsSep " " ["foo" "bar" "xyzzy"] == "foo bar xyzzy"
|
||||
Example:
|
||||
concatStringsSep "/" ["usr" "local" "bin"]
|
||||
=> "usr/local/bin"
|
||||
*/
|
||||
concatStringsSep = builtins.concatStringsSep or (separator: list:
|
||||
concatStrings (intersperse separator list));
|
||||
|
||||
/* First maps over the list and then concatenates it.
|
||||
|
||||
Example:
|
||||
concatMapStringsSep "-" (x: toUpper x) ["foo" "bar" "baz"]
|
||||
=> "FOO-BAR-BAZ"
|
||||
*/
|
||||
concatMapStringsSep = sep: f: list: concatStringsSep sep (map f list);
|
||||
|
||||
/* First imaps over the list and then concatenates it.
|
||||
|
||||
Example:
|
||||
|
||||
concatImapStringsSep "-" (pos: x: toString (x / pos)) [ 6 6 6 ]
|
||||
=> "6-3-2"
|
||||
*/
|
||||
concatImapStringsSep = sep: f: list: concatStringsSep sep (lib.imap f list);
|
||||
|
||||
/* Construct a Unix-style search path consisting of each `subDir"
|
||||
directory of the given list of packages.
|
||||
|
||||
# Construct a Unix-style search path consisting of each `subDir"
|
||||
# directory of the given list of packages. For example,
|
||||
# `makeSearchPath "bin" ["x" "y" "z"]' returns "x/bin:y/bin:z/bin".
|
||||
Example:
|
||||
makeSearchPath "bin" ["/root" "/usr" "/usr/local"]
|
||||
=> "/root/bin:/usr/bin:/usr/local/bin"
|
||||
makeSearchPath "bin" ["/"]
|
||||
=> "//bin"
|
||||
*/
|
||||
makeSearchPath = subDir: packages:
|
||||
concatStringsSep ":" (map (path: path + "/" + subDir) packages);
|
||||
|
||||
/* Construct a library search path (such as RPATH) containing the
|
||||
libraries for a set of packages
|
||||
|
||||
# Construct a library search path (such as RPATH) containing the
|
||||
# libraries for a set of packages, e.g. "${pkg1}/lib:${pkg2}/lib:...".
|
||||
Example:
|
||||
makeLibraryPath [ "/usr" "/usr/local" ]
|
||||
=> "/usr/lib:/usr/local/lib"
|
||||
pkgs = import <nixpkgs> { }
|
||||
makeLibraryPath [ pkgs.openssl pkgs.zlib ]
|
||||
=> "/nix/store/9rz8gxhzf8sw4kf2j2f1grr49w8zx5vj-openssl-1.0.1r/lib:/nix/store/wwh7mhwh269sfjkm6k5665b5kgp7jrk2-zlib-1.2.8/lib"
|
||||
*/
|
||||
makeLibraryPath = makeSearchPath "lib";
|
||||
|
||||
# Construct a binary search path (such as $PATH) containing the
|
||||
# binaries for a set of packages, e.g. "${pkg1}/bin:${pkg2}/bin:...".
|
||||
/* Construct a binary search path (such as $PATH) containing the
|
||||
binaries for a set of packages.
|
||||
|
||||
Example:
|
||||
makeBinPath ["/root" "/usr" "/usr/local"]
|
||||
=> "/root/bin:/usr/bin:/usr/local/bin"
|
||||
*/
|
||||
makeBinPath = makeSearchPath "bin";
|
||||
|
||||
|
||||
# Idem for Perl search paths.
|
||||
/* Construct a perl search path (such as $PERL5LIB)
|
||||
|
||||
FIXME(zimbatm): this should be moved in perl-specific code
|
||||
|
||||
Example:
|
||||
pkgs = import <nixpkgs> { }
|
||||
makePerlPath [ pkgs.perlPackages.NetSMTP ]
|
||||
=> "/nix/store/n0m1fk9c960d8wlrs62sncnadygqqc6y-perl-Net-SMTP-1.25/lib/perl5/site_perl"
|
||||
*/
|
||||
makePerlPath = makeSearchPath "lib/perl5/site_perl";
|
||||
|
||||
/* Dependening on the boolean `cond', return either the given string
|
||||
or the empty string. Useful to contatenate against a bigger string.
|
||||
|
||||
# Dependening on the boolean `cond', return either the given string
|
||||
# or the empty string.
|
||||
Example:
|
||||
optionalString true "some-string"
|
||||
=> "some-string"
|
||||
optionalString false "some-string"
|
||||
=> ""
|
||||
*/
|
||||
optionalString = cond: string: if cond then string else "";
|
||||
|
||||
/* Determine whether a string has given prefix.
|
||||
|
||||
# Determine whether a string has given prefix/suffix.
|
||||
Example:
|
||||
hasPrefix "foo" "foobar"
|
||||
=> true
|
||||
hasPrefix "foo" "barfoo"
|
||||
=> false
|
||||
*/
|
||||
hasPrefix = pref: str:
|
||||
substring 0 (stringLength pref) str == pref;
|
||||
|
||||
/* Determine whether a string has given suffix.
|
||||
|
||||
Example:
|
||||
hasSuffix "foo" "foobar"
|
||||
=> false
|
||||
hasSuffix "foo" "barfoo"
|
||||
=> true
|
||||
*/
|
||||
hasSuffix = suff: str:
|
||||
let
|
||||
lenStr = stringLength str;
|
||||
@ -76,36 +158,55 @@ rec {
|
||||
in lenStr >= lenSuff &&
|
||||
substring (lenStr - lenSuff) lenStr str == suff;
|
||||
|
||||
/* Convert a string to a list of characters (i.e. singleton strings).
|
||||
This allows you to, e.g., map a function over each character. However,
|
||||
note that this will likely be horribly inefficient; Nix is not a
|
||||
general purpose programming language. Complex string manipulations
|
||||
should, if appropriate, be done in a derivation.
|
||||
Also note that Nix treats strings as a list of bytes and thus doesn't
|
||||
handle unicode.
|
||||
|
||||
# Convert a string to a list of characters (i.e. singleton strings).
|
||||
# For instance, "abc" becomes ["a" "b" "c"]. This allows you to,
|
||||
# e.g., map a function over each character. However, note that this
|
||||
# will likely be horribly inefficient; Nix is not a general purpose
|
||||
# programming language. Complex string manipulations should, if
|
||||
# appropriate, be done in a derivation.
|
||||
Example:
|
||||
stringToCharacters ""
|
||||
=> [ ]
|
||||
stringToCharacters "abc"
|
||||
=> [ "a" "b" "c" ]
|
||||
stringToCharacters "💩"
|
||||
=> [ "<EFBFBD>" "<EFBFBD>" "<EFBFBD>" "<EFBFBD>" ]
|
||||
*/
|
||||
stringToCharacters = s:
|
||||
map (p: substring p 1 s) (lib.range 0 (stringLength s - 1));
|
||||
|
||||
/* Manipulate a string character by character and replace them by
|
||||
strings before concatenating the results.
|
||||
|
||||
# Manipulate a string charactter by character and replace them by
|
||||
# strings before concatenating the results.
|
||||
Example:
|
||||
stringAsChars (x: if x == "a" then "i" else x) "nax"
|
||||
=> "nix"
|
||||
*/
|
||||
stringAsChars = f: s:
|
||||
concatStrings (
|
||||
map f (stringToCharacters s)
|
||||
);
|
||||
|
||||
/* Escape occurrence of the elements of ‘list’ in ‘string’ by
|
||||
prefixing it with a backslash.
|
||||
|
||||
# Escape occurrence of the elements of ‘list’ in ‘string’ by
|
||||
# prefixing it with a backslash. For example, ‘escape ["(" ")"]
|
||||
# "(foo)"’ returns the string ‘\(foo\)’.
|
||||
Example:
|
||||
escape ["(" ")"] "(foo)"
|
||||
=> "\\(foo\\)"
|
||||
*/
|
||||
escape = list: replaceChars list (map (c: "\\${c}") list);
|
||||
|
||||
/* Escape all characters that have special meaning in the Bourne shell.
|
||||
|
||||
# Escape all characters that have special meaning in the Bourne shell.
|
||||
Example:
|
||||
escapeShellArg "so([<>])me"
|
||||
=> "so\\(\\[\\<\\>\\]\\)me"
|
||||
*/
|
||||
escapeShellArg = lib.escape (stringToCharacters "\\ ';$`()|<>\t*[]");
|
||||
|
||||
|
||||
# Obsolete - use replaceStrings instead.
|
||||
/* Obsolete - use replaceStrings instead. */
|
||||
replaceChars = builtins.replaceStrings or (
|
||||
del: new: s:
|
||||
let
|
||||
@ -119,21 +220,52 @@ rec {
|
||||
in
|
||||
stringAsChars subst s);
|
||||
|
||||
|
||||
# Case conversion utilities.
|
||||
lowerChars = stringToCharacters "abcdefghijklmnopqrstuvwxyz";
|
||||
upperChars = stringToCharacters "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
||||
|
||||
/* Converts an ASCII string to lower-case.
|
||||
|
||||
Example:
|
||||
toLower "HOME"
|
||||
=> "home"
|
||||
*/
|
||||
toLower = replaceChars upperChars lowerChars;
|
||||
|
||||
/* Converts an ASCII string to upper-case.
|
||||
|
||||
Example:
|
||||
toLower "home"
|
||||
=> "HOME"
|
||||
*/
|
||||
toUpper = replaceChars lowerChars upperChars;
|
||||
|
||||
/* Appends string context from another string. This is an implementation
|
||||
detail of Nix.
|
||||
|
||||
# Appends string context from another string.
|
||||
Strings in Nix carry an invisible `context' which is a list of strings
|
||||
representing store paths. If the string is later used in a derivation
|
||||
attribute, the derivation will properly populate the inputDrvs and
|
||||
inputSrcs.
|
||||
|
||||
Example:
|
||||
pkgs = import <nixpkgs> { };
|
||||
addContextFrom pkgs.coreutils "bar"
|
||||
=> "bar"
|
||||
*/
|
||||
addContextFrom = a: b: substring 0 0 a + b;
|
||||
|
||||
/* Cut a string with a separator and produces a list of strings which
|
||||
were separated by this separator.
|
||||
|
||||
# Cut a string with a separator and produces a list of strings which
|
||||
# were separated by this separator; e.g., `splitString "."
|
||||
# "foo.bar.baz"' returns ["foo" "bar" "baz"].
|
||||
NOTE: this function is not performant and should be avoided
|
||||
|
||||
Example:
|
||||
splitString "." "foo.bar.baz"
|
||||
=> [ "foo" "bar" "baz" ]
|
||||
splitString "/" "/usr/local/bin"
|
||||
=> [ "" "usr" "local" "bin" ]
|
||||
*/
|
||||
splitString = _sep: _s:
|
||||
let
|
||||
sep = addContextFrom _s _sep;
|
||||
@ -157,10 +289,15 @@ rec {
|
||||
in
|
||||
recurse 0 0;
|
||||
|
||||
/* Return the suffix of the second argument if the first argument matches
|
||||
its prefix.
|
||||
|
||||
# return the suffix of the second argument if the first argument match its
|
||||
# prefix. e.g.,
|
||||
# `removePrefix "foo." "foo.bar.baz"' returns "bar.baz".
|
||||
Example:
|
||||
removePrefix "foo." "foo.bar.baz"
|
||||
=> "bar.baz"
|
||||
removePrefix "xxx" "foo.bar.baz"
|
||||
=> "foo.bar.baz"
|
||||
*/
|
||||
removePrefix = pre: s:
|
||||
let
|
||||
preLen = stringLength pre;
|
||||
@ -171,6 +308,15 @@ rec {
|
||||
else
|
||||
s;
|
||||
|
||||
/* Return the prefix of the second argument if the first argument matches
|
||||
its suffix.
|
||||
|
||||
Example:
|
||||
removeSuffix "front" "homefront"
|
||||
=> "home"
|
||||
removeSuffix "xxx" "homefront"
|
||||
=> "homefront"
|
||||
*/
|
||||
removeSuffix = suf: s:
|
||||
let
|
||||
sufLen = stringLength suf;
|
||||
@ -181,25 +327,49 @@ rec {
|
||||
else
|
||||
s;
|
||||
|
||||
# Return true iff string v1 denotes a version older than v2.
|
||||
/* Return true iff string v1 denotes a version older than v2.
|
||||
|
||||
Example:
|
||||
versionOlder "1.1" "1.2"
|
||||
=> true
|
||||
versionOlder "1.1" "1.1"
|
||||
=> false
|
||||
*/
|
||||
versionOlder = v1: v2: builtins.compareVersions v2 v1 == 1;
|
||||
|
||||
/* Return true iff string v1 denotes a version equal to or newer than v2.
|
||||
|
||||
# Return true iff string v1 denotes a version equal to or newer than v2.
|
||||
Example:
|
||||
versionAtLeast "1.1" "1.0"
|
||||
=> true
|
||||
versionAtLeast "1.1" "1.1"
|
||||
=> true
|
||||
versionAtLeast "1.1" "1.2"
|
||||
=> false
|
||||
*/
|
||||
versionAtLeast = v1: v2: !versionOlder v1 v2;
|
||||
|
||||
/* This function takes an argument that's either a derivation or a
|
||||
derivation's "name" attribute and extracts the version part from that
|
||||
argument.
|
||||
|
||||
# This function takes an argument that's either a derivation or a
|
||||
# derivation's "name" attribute and extracts the version part from that
|
||||
# argument. For example:
|
||||
#
|
||||
# lib.getVersion "youtube-dl-2016.01.01" ==> "2016.01.01"
|
||||
# lib.getVersion pkgs.youtube-dl ==> "2016.01.01"
|
||||
Example:
|
||||
getVersion "youtube-dl-2016.01.01"
|
||||
=> "2016.01.01"
|
||||
getVersion pkgs.youtube-dl
|
||||
=> "2016.01.01"
|
||||
*/
|
||||
getVersion = x: (builtins.parseDrvName (x.name or x)).version;
|
||||
|
||||
/* Extract name with version from URL. Ask for separator which is
|
||||
supposed to start extension.
|
||||
|
||||
# Extract name with version from URL. Ask for separator which is
|
||||
# supposed to start extension.
|
||||
Example:
|
||||
nameFromURL "https://nixos.org/releases/nix/nix-1.7/nix-1.7-x86_64-linux.tar.bz2" "-"
|
||||
=> "nix"
|
||||
nameFromURL "https://nixos.org/releases/nix/nix-1.7/nix-1.7-x86_64-linux.tar.bz2" "_"
|
||||
=> "nix-1.7-x86"
|
||||
*/
|
||||
nameFromURL = url: sep:
|
||||
let
|
||||
components = splitString "/" url;
|
||||
@ -207,14 +377,24 @@ rec {
|
||||
name = builtins.head (splitString sep filename);
|
||||
in assert name != filename; name;
|
||||
|
||||
/* Create an --{enable,disable}-<feat> string that can be passed to
|
||||
standard GNU Autoconf scripts.
|
||||
|
||||
# Create an --{enable,disable}-<feat> string that can be passed to
|
||||
# standard GNU Autoconf scripts.
|
||||
Example:
|
||||
enableFeature true "shared"
|
||||
=> "--enable-shared"
|
||||
enableFeature false "shared"
|
||||
=> "--disable-shared"
|
||||
*/
|
||||
enableFeature = enable: feat: "--${if enable then "enable" else "disable"}-${feat}";
|
||||
|
||||
/* Create a fixed width string with additional prefix to match
|
||||
required width.
|
||||
|
||||
# Create a fixed width string with additional prefix to match
|
||||
# required width.
|
||||
Example:
|
||||
fixedWidthString 5 "0" (toString 15)
|
||||
=> "00015"
|
||||
*/
|
||||
fixedWidthString = width: filler: str:
|
||||
let
|
||||
strw = lib.stringLength str;
|
||||
@ -223,25 +403,58 @@ rec {
|
||||
assert strw <= width;
|
||||
if strw == width then str else filler + fixedWidthString reqWidth filler str;
|
||||
|
||||
/* Format a number adding leading zeroes up to fixed width.
|
||||
|
||||
# Format a number adding leading zeroes up to fixed width.
|
||||
Example:
|
||||
fixedWidthNumber 5 15
|
||||
=> "00015"
|
||||
*/
|
||||
fixedWidthNumber = width: n: fixedWidthString width "0" (toString n);
|
||||
|
||||
/* Check whether a value is a store path.
|
||||
|
||||
# Check whether a value is a store path.
|
||||
Example:
|
||||
isStorePath "/nix/store/d945ibfx9x185xf04b890y4f9g3cbb63-python-2.7.11/bin/python"
|
||||
=> false
|
||||
isStorePath "/nix/store/d945ibfx9x185xf04b890y4f9g3cbb63-python-2.7.11/"
|
||||
=> true
|
||||
isStorePath pkgs.python
|
||||
=> true
|
||||
*/
|
||||
isStorePath = x: builtins.substring 0 1 (toString x) == "/" && dirOf (builtins.toPath x) == builtins.storeDir;
|
||||
|
||||
# Convert string to int
|
||||
# Obviously, it is a bit hacky to use fromJSON that way.
|
||||
/* Convert string to int
|
||||
Obviously, it is a bit hacky to use fromJSON that way.
|
||||
|
||||
Example:
|
||||
toInt "1337"
|
||||
=> 1337
|
||||
toInt "-4"
|
||||
=> -4
|
||||
toInt "3.14"
|
||||
=> error: floating point JSON numbers are not supported
|
||||
*/
|
||||
toInt = str:
|
||||
let may_be_int = builtins.fromJSON str; in
|
||||
if builtins.isInt may_be_int
|
||||
then may_be_int
|
||||
else throw "Could not convert ${str} to int.";
|
||||
|
||||
# Read a list of paths from `file', relative to the `rootPath'. Lines
|
||||
# beginning with `#' are treated as comments and ignored. Whitespace
|
||||
# is significant.
|
||||
/* Read a list of paths from `file', relative to the `rootPath'. Lines
|
||||
beginning with `#' are treated as comments and ignored. Whitespace
|
||||
is significant.
|
||||
|
||||
NOTE: this function is not performant and should be avoided
|
||||
|
||||
Example:
|
||||
readPathsFromFile /prefix
|
||||
./pkgs/development/libraries/qt-5/5.4/qtbase/series
|
||||
=> [ "/prefix/dlopen-resolv.patch" "/prefix/tzdir.patch"
|
||||
"/prefix/dlopen-libXcursor.patch" "/prefix/dlopen-openssl.patch"
|
||||
"/prefix/dlopen-dbus.patch" "/prefix/xdg-config-dirs.patch"
|
||||
"/prefix/nix-profiles-library-paths.patch"
|
||||
"/prefix/compose-search-path.patch" ]
|
||||
*/
|
||||
readPathsFromFile = rootPath: file:
|
||||
let
|
||||
root = toString rootPath;
|
||||
@ -253,5 +466,4 @@ rec {
|
||||
absolutePaths = builtins.map (path: builtins.toPath (root + "/" + path)) relativePaths;
|
||||
in
|
||||
absolutePaths;
|
||||
|
||||
}
|
||||
|
@ -247,6 +247,21 @@ $TTL 1800
|
||||
</programlisting>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
<literal>service.syncthing.dataDir</literal> options now has to point
|
||||
to exact folder where syncthing is writing to. Example configuration should
|
||||
loook something like:
|
||||
</para>
|
||||
<programlisting>
|
||||
services.syncthing = {
|
||||
enable = true;
|
||||
dataDir = "/home/somebody/.syncthing";
|
||||
user = "somebody";
|
||||
};
|
||||
</programlisting>
|
||||
</listitem>
|
||||
|
||||
</itemizedlist>
|
||||
|
||||
|
||||
|
@ -1,11 +1,8 @@
|
||||
#! /bin/sh -e
|
||||
|
||||
BUCKET_NAME=${BUCKET_NAME:-nixos}
|
||||
export NIX_PATH=nixpkgs=../../../..
|
||||
export NIXOS_CONFIG=$(dirname $(readlink -f $0))/../../../modules/virtualisation/azure-image.nix
|
||||
export TIMESTAMP=$(date +%Y%m%d%H%M)
|
||||
|
||||
nix-build '<nixpkgs/nixos>' \
|
||||
-A config.system.build.azureImage --argstr system x86_64-linux -o azure --option extra-binary-caches http://hydra.nixos.org -j 10
|
||||
|
||||
azure vm image create nixos-test --location "West Europe" --md5-skip -v --os Linux azure/disk.vhd
|
||||
-A config.system.build.azureImage --argstr system x86_64-linux -o azure --option extra-binary-caches https://hydra.nixos.org -j 10
|
||||
|
22
nixos/maintainers/scripts/azure/upload-azure.sh
Executable file
22
nixos/maintainers/scripts/azure/upload-azure.sh
Executable file
@ -0,0 +1,22 @@
|
||||
#! /bin/sh -e
|
||||
|
||||
export STORAGE=${STORAGE:-nixos}
|
||||
export THREADS=${THREADS:-8}
|
||||
|
||||
azure-vhd-utils-for-go upload --localvhdpath azure/disk.vhd --stgaccountname "$STORAGE" --stgaccountkey "$KEY" \
|
||||
--containername images --blobname nixos-unstable-nixops-updated.vhd --parallelism "$THREADS" --overwrite
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -14,6 +14,8 @@ let
|
||||
nvidiaForKernel = kernelPackages:
|
||||
if elem "nvidia" drivers then
|
||||
kernelPackages.nvidia_x11
|
||||
else if elem "nvidiaBeta" drivers then
|
||||
kernelPackages.nvidia_x11_beta
|
||||
else if elem "nvidiaLegacy173" drivers then
|
||||
kernelPackages.nvidia_x11_legacy173
|
||||
else if elem "nvidiaLegacy304" drivers then
|
||||
|
@ -254,6 +254,7 @@
|
||||
octoprint = 230;
|
||||
avahi-autoipd = 231;
|
||||
nntp-proxy = 232;
|
||||
mjpg-streamer = 233;
|
||||
|
||||
# When adding a uid, make sure it doesn't match an existing gid. And don't use uids above 399!
|
||||
|
||||
|
@ -104,7 +104,7 @@ in
|
||||
nixosVersion = mkDefault (maybeEnv "NIXOS_VERSION" (cfg.nixosRelease + cfg.nixosVersionSuffix));
|
||||
|
||||
# Note: code names must only increase in alphabetical order.
|
||||
nixosCodeName = "Emu";
|
||||
nixosCodeName = "Flounder";
|
||||
};
|
||||
|
||||
# Generate /etc/os-release. See
|
||||
|
@ -176,6 +176,7 @@
|
||||
./services/hardware/udisks2.nix
|
||||
./services/hardware/upower.nix
|
||||
./services/hardware/thermald.nix
|
||||
./services/logging/awstats.nix
|
||||
./services/logging/fluentd.nix
|
||||
./services/logging/klogd.nix
|
||||
./services/logging/logcheck.nix
|
||||
@ -219,6 +220,7 @@
|
||||
./services/misc/gitolite.nix
|
||||
./services/misc/gpsd.nix
|
||||
./services/misc/ihaskell.nix
|
||||
./services/misc/mantisbt.nix
|
||||
./services/misc/mathics.nix
|
||||
./services/misc/matrix-synapse.nix
|
||||
./services/misc/mbpfan.nix
|
||||
@ -329,6 +331,7 @@
|
||||
./services/networking/lambdabot.nix
|
||||
./services/networking/libreswan.nix
|
||||
./services/networking/mailpile.nix
|
||||
./services/networking/mjpg-streamer.nix
|
||||
./services/networking/minidlna.nix
|
||||
./services/networking/miniupnpd.nix
|
||||
./services/networking/mstpd.nix
|
||||
@ -438,6 +441,7 @@
|
||||
./services/web-servers/varnish/default.nix
|
||||
./services/web-servers/winstone.nix
|
||||
./services/web-servers/zope2.nix
|
||||
./services/x11/colord.nix
|
||||
./services/x11/unclutter.nix
|
||||
./services/x11/desktop-managers/default.nix
|
||||
./services/x11/display-managers/auto.nix
|
||||
|
@ -98,6 +98,9 @@ with lib;
|
||||
|
||||
(mkRenamedOptionModule [ "services" "hostapd" "extraCfg" ] [ "services" "hostapd" "extraConfig" ])
|
||||
|
||||
# Enlightenment
|
||||
(mkRenamedOptionModule [ "services" "xserver" "desktopManager" "e19" "enable" ] [ "services" "xserver" "desktopManager" "enlightenment" "enable" ])
|
||||
|
||||
# Options that are obsolete and have no replacement.
|
||||
(mkRemovedOptionModule [ "boot" "initrd" "luks" "enable" ])
|
||||
(mkRemovedOptionModule [ "programs" "bash" "enable" ])
|
||||
|
@ -26,19 +26,11 @@ in
|
||||
'';
|
||||
};
|
||||
|
||||
stable = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
kernelPatch = mkOption {
|
||||
type = types.attrs;
|
||||
example = lib.literalExample "pkgs.kernelPatches.grsecurity_4_1";
|
||||
description = ''
|
||||
Enable the stable grsecurity patch, based on Linux 3.14.
|
||||
'';
|
||||
};
|
||||
|
||||
testing = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Enable the testing grsecurity patch, based on Linux 4.0.
|
||||
Grsecurity patch to use.
|
||||
'';
|
||||
};
|
||||
|
||||
@ -219,16 +211,7 @@ in
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
assertions =
|
||||
[ { assertion = cfg.stable || cfg.testing;
|
||||
message = ''
|
||||
If grsecurity is enabled, you must select either the
|
||||
stable patch (with kernel 3.14), or the testing patch (with
|
||||
kernel 4.0) to continue.
|
||||
'';
|
||||
}
|
||||
{ assertion = !(cfg.stable && cfg.testing);
|
||||
message = "Select either one of the stable or testing patch";
|
||||
}
|
||||
[
|
||||
{ assertion = (cfg.config.restrictProc -> !cfg.config.restrictProcWithGroup) ||
|
||||
(cfg.config.restrictProcWithGroup -> !cfg.config.restrictProc);
|
||||
message = "You cannot enable both restrictProc and restrictProcWithGroup";
|
||||
@ -247,6 +230,8 @@ in
|
||||
}
|
||||
];
|
||||
|
||||
security.grsecurity.kernelPatch = lib.mkDefault pkgs.kernelPatches.grsecurity_latest;
|
||||
|
||||
systemd.services.grsec-lock = mkIf cfg.config.sysctl {
|
||||
description = "grsecurity sysctl-lock Service";
|
||||
requires = [ "systemd-sysctl.service" ];
|
||||
|
@ -293,7 +293,7 @@ in
|
||||
# make sure that the tarsnap server is reachable after systemd starts up
|
||||
# the service - therefore we sleep in a loop until we can ping the
|
||||
# endpoint.
|
||||
preStart = "while ! ping -q -c 1 betatest-server.tarsnap.com &> /dev/null; do sleep 3; done";
|
||||
preStart = "while ! ping -q -c 1 v1-0-0-server.tarsnap.com &> /dev/null; do sleep 3; done";
|
||||
scriptArgs = "%i";
|
||||
script = ''
|
||||
mkdir -p -m 0755 ${dirOf cfg.cachedir}
|
||||
|
123
nixos/modules/services/logging/awstats.nix
Normal file
123
nixos/modules/services/logging/awstats.nix
Normal file
@ -0,0 +1,123 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.awstats;
|
||||
package = pkgs.awstats;
|
||||
in
|
||||
|
||||
{
|
||||
options.services.awstats = {
|
||||
enable = mkOption {
|
||||
type = types.bool;
|
||||
default = cfg.service.enable;
|
||||
description = ''
|
||||
Enable the awstats program (but not service).
|
||||
Currently only simple httpd (Apache) configs are supported,
|
||||
and awstats plugins may not work correctly.
|
||||
'';
|
||||
};
|
||||
vardir = mkOption {
|
||||
type = types.path;
|
||||
default = "/var/lib/awstats";
|
||||
description = "The directory where variable awstats data will be stored.";
|
||||
};
|
||||
|
||||
extraConfig = mkOption {
|
||||
type = types.lines;
|
||||
default = "";
|
||||
description = "Extra configuration to be appendend to awstats.conf.";
|
||||
};
|
||||
|
||||
updateAt = mkOption {
|
||||
type = types.nullOr types.string;
|
||||
default = null;
|
||||
example = "hourly";
|
||||
description = ''
|
||||
Specification of the time at which awstats will get updated.
|
||||
(in the format described by <citerefentry>
|
||||
<refentrytitle>systemd.time</refentrytitle>
|
||||
<manvolnum>5</manvolnum></citerefentry>)
|
||||
'';
|
||||
};
|
||||
|
||||
service = {
|
||||
enable = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = ''Enable the awstats web service. This switches on httpd.'';
|
||||
};
|
||||
urlPrefix = mkOption {
|
||||
type = types.string;
|
||||
default = "/awstats";
|
||||
description = "The URL prefix under which the awstats service appears.";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
environment.systemPackages = [ package.bin ];
|
||||
/* TODO:
|
||||
- heed config.services.httpd.logPerVirtualHost, etc.
|
||||
- Can't AllowToUpdateStatsFromBrowser, as CGI scripts don't have permission
|
||||
to read the logs, and our httpd config apparently doesn't an option for that.
|
||||
*/
|
||||
environment.etc."awstats/awstats.conf".source = pkgs.runCommand "awstats.conf"
|
||||
{ preferLocalBuild = true; }
|
||||
( let
|
||||
cfg-httpd = config.services.httpd;
|
||||
logFormat =
|
||||
if cfg-httpd.logFormat == "combined" then "1" else
|
||||
if cfg-httpd.logFormat == "common" then "4" else
|
||||
throw "awstats service doesn't support Apache log format `${cfg-httpd.logFormat}`";
|
||||
in
|
||||
''
|
||||
sed \
|
||||
-e 's|^\(DirData\)=.*$|\1="${cfg.vardir}"|' \
|
||||
-e 's|^\(DirIcons\)=.*$|\1="icons"|' \
|
||||
-e 's|^\(CreateDirDataIfNotExists\)=.*$|\1=1|' \
|
||||
-e 's|^\(SiteDomain\)=.*$|\1="${cfg-httpd.hostName}"|' \
|
||||
-e 's|^\(LogFile\)=.*$|\1="${cfg-httpd.logDir}/access_log"|' \
|
||||
-e 's|^\(LogFormat\)=.*$|\1=${logFormat}|' \
|
||||
< '${package.out}/wwwroot/cgi-bin/awstats.model.conf' > "$out"
|
||||
echo '${cfg.extraConfig}' >> "$out"
|
||||
'');
|
||||
|
||||
# The httpd sub-service showing awstats.
|
||||
services.httpd.enable = mkIf cfg.service.enable true;
|
||||
services.httpd.extraSubservices = mkIf cfg.service.enable [ { function = { serverInfo, ... }: {
|
||||
extraConfig =
|
||||
''
|
||||
Alias ${cfg.service.urlPrefix}/classes "${package.out}/wwwroot/classes/"
|
||||
Alias ${cfg.service.urlPrefix}/css "${package.out}/wwwroot/css/"
|
||||
Alias ${cfg.service.urlPrefix}/icons "${package.out}/wwwroot/icon/"
|
||||
ScriptAlias ${cfg.service.urlPrefix}/ "${package.out}/wwwroot/cgi-bin/"
|
||||
|
||||
<Directory "${package.out}/wwwroot">
|
||||
Options None
|
||||
AllowOverride None
|
||||
Order allow,deny
|
||||
Allow from all
|
||||
</Directory>
|
||||
'';
|
||||
startupScript =
|
||||
let
|
||||
inherit (serverInfo.serverConfig) user group;
|
||||
in pkgs.writeScript "awstats_startup.sh"
|
||||
''
|
||||
mkdir -p '${cfg.vardir}'
|
||||
chown '${user}:${group}' '${cfg.vardir}'
|
||||
'';
|
||||
};}];
|
||||
|
||||
systemd.services.awstats-update = mkIf (cfg.updateAt != null) {
|
||||
description = "awstats log collector";
|
||||
script = "exec '${package.bin}/bin/awstats' -update -config=awstats.conf";
|
||||
startAt = cfg.updateAt;
|
||||
};
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -27,7 +27,7 @@ let
|
||||
|
||||
mainCf =
|
||||
''
|
||||
compatibility_level = 2
|
||||
compatibility_level = 9999
|
||||
|
||||
mail_owner = ${user}
|
||||
default_privs = nobody
|
||||
|
@ -79,6 +79,11 @@ in
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
after = [ "network.target" ];
|
||||
|
||||
preStart = ''
|
||||
# There should be only one autofs service managed by systemd, so this should be safe.
|
||||
rm -f /tmp/autofs-running
|
||||
'';
|
||||
|
||||
serviceConfig = {
|
||||
ExecStart = "${pkgs.autofs5}/sbin/automount ${if cfg.debug then "-d" else ""} -f -t ${builtins.toString cfg.timeout} ${autoMaster} ${if cfg.debug then "-l7" else ""}";
|
||||
ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID";
|
||||
|
@ -328,7 +328,7 @@ in {
|
||||
Group = cfg.group;
|
||||
TimeoutSec = "300";
|
||||
WorkingDirectory = "${cfg.packages.gitlab}/share/gitlab";
|
||||
ExecStart="${bundler}/bin/bundle exec \"sidekiq -q post_receive -q mailer -q system_hook -q project_web_hook -q gitlab_shell -q common -q default -e production -P ${cfg.statePath}/tmp/sidekiq.pid\"";
|
||||
ExecStart="${bundler}/bin/bundle exec \"sidekiq -q post_receive -q mailers -q system_hook -q project_web_hook -q gitlab_shell -q common -q default -e production -P ${cfg.statePath}/tmp/sidekiq.pid\"";
|
||||
};
|
||||
};
|
||||
|
||||
|
68
nixos/modules/services/misc/mantisbt.nix
Normal file
68
nixos/modules/services/misc/mantisbt.nix
Normal file
@ -0,0 +1,68 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
let
|
||||
cfg = config.services.mantisbt;
|
||||
|
||||
freshInstall = cfg.extraConfig == "";
|
||||
|
||||
# combined code+config directory
|
||||
mantisbt = let
|
||||
config_inc = pkgs.writeText "config_inc.php" ("<?php\n" + cfg.extraConfig);
|
||||
src = pkgs.fetchurl {
|
||||
url = "mirror://sourceforge/mantisbt/${name}.tar.gz";
|
||||
sha256 = "1pl6xn793p3mxc6ibpr2bhg85vkdlcf57yk7pfc399g47l8x4508";
|
||||
};
|
||||
name = "mantisbt-1.2.19";
|
||||
in
|
||||
# We have to copy every time; otherwise config won't be found.
|
||||
pkgs.runCommand name
|
||||
{ preferLocalBuild = true; allowSubstitutes = false; }
|
||||
(''
|
||||
mkdir -p "$out"
|
||||
cd "$out"
|
||||
tar -xf '${src}' --strip-components=1
|
||||
ln -s '${config_inc}' config_inc.php
|
||||
''
|
||||
+ lib.optionalString (!freshInstall) "rm -r admin/"
|
||||
);
|
||||
in
|
||||
{
|
||||
options.services.mantisbt = {
|
||||
enable = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Enable the mantisbt web service.
|
||||
This switches on httpd with PHP and database.
|
||||
'';
|
||||
};
|
||||
urlPrefix = mkOption {
|
||||
type = types.string;
|
||||
default = "/mantisbt";
|
||||
description = "The URL prefix under which the mantisbt service appears.";
|
||||
};
|
||||
extraConfig = mkOption {
|
||||
type = types.lines;
|
||||
default = "";
|
||||
description = ''
|
||||
The contents of config_inc.php, without leading <?php.
|
||||
If left empty, the admin directory will be accessible.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
services.mysql.enable = true;
|
||||
services.httpd.enable = true;
|
||||
services.httpd.enablePHP = true;
|
||||
# The httpd sub-service showing mantisbt.
|
||||
services.httpd.extraSubservices = [ { function = { ... }: {
|
||||
extraConfig =
|
||||
''
|
||||
Alias ${cfg.urlPrefix} "${mantisbt}"
|
||||
'';
|
||||
};}];
|
||||
};
|
||||
}
|
@ -6,12 +6,16 @@ let
|
||||
|
||||
cfg = config.services.octoprint;
|
||||
|
||||
cfgUpdate = pkgs.writeText "octoprint-config.yaml" (builtins.toJSON {
|
||||
baseConfig = {
|
||||
plugins.cura.cura_engine = "${pkgs.curaengine}/bin/CuraEngine";
|
||||
server.host = cfg.host;
|
||||
server.port = cfg.port;
|
||||
webcam.ffmpeg = "${pkgs.ffmpeg}/bin/ffmpeg";
|
||||
});
|
||||
};
|
||||
|
||||
fullConfig = recursiveUpdate cfg.extraConfig baseConfig;
|
||||
|
||||
cfgUpdate = pkgs.writeText "octoprint-config.yaml" (builtins.toJSON fullConfig);
|
||||
|
||||
pluginsEnv = pkgs.python.buildEnv.override {
|
||||
extraLibs = cfg.plugins pkgs.octoprint-plugins;
|
||||
@ -62,13 +66,18 @@ in
|
||||
};
|
||||
|
||||
plugins = mkOption {
|
||||
#type = types.functionTo (types.listOf types.package);
|
||||
default = plugins: [];
|
||||
defaultText = "plugins: []";
|
||||
example = literalExample "plugins: [ m3d-fio ]";
|
||||
description = "Additional plugins.";
|
||||
};
|
||||
|
||||
extraConfig = mkOption {
|
||||
type = types.attrs;
|
||||
default = {};
|
||||
description = "Extra options which are added to OctoPrint's YAML configuration file.";
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
};
|
||||
|
@ -51,7 +51,13 @@ let
|
||||
'';
|
||||
|
||||
carbonEnv = {
|
||||
PYTHONPATH = "${pkgs.python27Packages.carbon}/lib/python2.7/site-packages";
|
||||
PYTHONPATH = let
|
||||
cenv = pkgs.python.buildEnv.override {
|
||||
extraLibs = [ pkgs.python27Packages.carbon ];
|
||||
};
|
||||
cenvPack = "${cenv}/${pkgs.python.sitePackages}";
|
||||
# opt/graphite/lib contains twisted.plugins.carbon-cache
|
||||
in "${cenvPack}/opt/graphite/lib:${cenvPack}";
|
||||
GRAPHITE_ROOT = dataDir;
|
||||
GRAPHITE_CONF_DIR = configDir;
|
||||
GRAPHITE_STORAGE_DIR = dataDir;
|
||||
@ -445,10 +451,21 @@ in {
|
||||
after = [ "network-interfaces.target" ];
|
||||
path = [ pkgs.perl ];
|
||||
environment = {
|
||||
PYTHONPATH = "${pkgs.python27Packages.graphite_web}/lib/python2.7/site-packages";
|
||||
PYTHONPATH = let
|
||||
penv = pkgs.python.buildEnv.override {
|
||||
extraLibs = [
|
||||
pkgs.python27Packages.graphite_web
|
||||
pkgs.python27Packages.pysqlite
|
||||
];
|
||||
};
|
||||
penvPack = "${penv}/${pkgs.python.sitePackages}";
|
||||
# opt/graphite/webapp contains graphite/settings.py
|
||||
# explicitly adding pycairo in path because it cannot be imported via buildEnv
|
||||
in "${penvPack}/opt/graphite/webapp:${penvPack}:${pkgs.pycairo}/${pkgs.python.sitePackages}";
|
||||
DJANGO_SETTINGS_MODULE = "graphite.settings";
|
||||
GRAPHITE_CONF_DIR = configDir;
|
||||
GRAPHITE_STORAGE_DIR = dataDir;
|
||||
LD_LIBRARY_PATH = "${pkgs.cairo}/lib";
|
||||
};
|
||||
serviceConfig = {
|
||||
ExecStart = ''
|
||||
@ -486,9 +503,11 @@ in {
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
after = [ "network-interfaces.target" ];
|
||||
environment = {
|
||||
PYTHONPATH =
|
||||
"${cfg.api.package}/lib/python2.7/site-packages:" +
|
||||
concatMapStringsSep ":" (f: f + "/lib/python2.7/site-packages") cfg.api.finders;
|
||||
PYTHONPATH = let
|
||||
aenv = pkgs.python.buildEnv.override {
|
||||
extraLibs = [ cfg.api.package pkgs.cairo ] ++ cfg.api.finders;
|
||||
};
|
||||
in "${aenv}/${pkgs.python.sitePackages}";
|
||||
GRAPHITE_API_CONFIG = graphiteApiConfig;
|
||||
LD_LIBRARY_PATH = "${pkgs.cairo}/lib";
|
||||
};
|
||||
|
@ -49,7 +49,7 @@ in
|
||||
'';
|
||||
};
|
||||
resolverName = mkOption {
|
||||
default = "opendns";
|
||||
default = "cisco";
|
||||
type = types.nullOr types.string;
|
||||
description = ''
|
||||
The name of the upstream DNSCrypt resolver to use. See
|
||||
@ -130,6 +130,9 @@ in
|
||||
${pkgs.xz}/lib/liblzma.so.* mr,
|
||||
${pkgs.libgcrypt}/lib/libgcrypt.so.* mr,
|
||||
${pkgs.libgpgerror}/lib/libgpg-error.so.* mr,
|
||||
${pkgs.libcap}/lib/libcap.so.* mr,
|
||||
${pkgs.lz4}/lib/liblz4.so.* mr,
|
||||
${pkgs.attr}/lib/libattr.so.* mr,
|
||||
|
||||
${resolverListFile} r,
|
||||
}
|
||||
|
@ -10,9 +10,10 @@ let
|
||||
|
||||
extip = "EXTIP=\$(${pkgs.curl}/bin/curl -sf \"http://jsonip.com\" | ${pkgs.gawk}/bin/awk -F'\"' '{print $4}')";
|
||||
|
||||
toOneZero = b: if b then "1" else "0";
|
||||
toYesNo = b: if b then "yes" else "no";
|
||||
|
||||
mkEndpointOpt = name: addr: port: {
|
||||
enable = mkEnableOption name;
|
||||
name = mkOption {
|
||||
type = types.str;
|
||||
default = name;
|
||||
@ -63,9 +64,9 @@ let
|
||||
} // mkEndpointOpt name "127.0.0.1" 0;
|
||||
|
||||
i2pdConf = pkgs.writeText "i2pd.conf" ''
|
||||
ipv6 = ${toOneZero cfg.enableIPv6}
|
||||
notransit = ${toOneZero cfg.notransit}
|
||||
floodfill = ${toOneZero cfg.floodfill}
|
||||
ipv6 = ${toYesNo cfg.enableIPv6}
|
||||
notransit = ${toYesNo cfg.notransit}
|
||||
floodfill = ${toYesNo cfg.floodfill}
|
||||
${if isNull cfg.port then "" else "port = ${toString cfg.port}"}
|
||||
${flip concatMapStrings
|
||||
(collect (proto: proto ? port && proto ? address && proto ? name) cfg.proto)
|
||||
@ -73,6 +74,7 @@ let
|
||||
[${proto.name}]
|
||||
address = ${proto.address}
|
||||
port = ${toString proto.port}
|
||||
enabled = ${toYesNo proto.enable}
|
||||
'')
|
||||
}
|
||||
'';
|
||||
|
75
nixos/modules/services/networking/mjpg-streamer.nix
Normal file
75
nixos/modules/services/networking/mjpg-streamer.nix
Normal file
@ -0,0 +1,75 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
|
||||
cfg = config.services.mjpg-streamer;
|
||||
|
||||
in {
|
||||
|
||||
options = {
|
||||
|
||||
services.mjpg-streamer = {
|
||||
|
||||
enable = mkEnableOption "mjpg-streamer webcam streamer";
|
||||
|
||||
inputPlugin = mkOption {
|
||||
type = types.str;
|
||||
default = "input_uvc.so";
|
||||
description = ''
|
||||
Input plugin. See plugins documentation for more information.
|
||||
'';
|
||||
};
|
||||
|
||||
outputPlugin = mkOption {
|
||||
type = types.str;
|
||||
default = "output_http.so -w @www@ -n -p 5050";
|
||||
description = ''
|
||||
Output plugin. <literal>@www@</literal> is substituted for default mjpg-streamer www directory.
|
||||
See plugins documentation for more information.
|
||||
'';
|
||||
};
|
||||
|
||||
user = mkOption {
|
||||
type = types.str;
|
||||
default = "mjpg-streamer";
|
||||
description = "mjpg-streamer user name.";
|
||||
};
|
||||
|
||||
group = mkOption {
|
||||
type = types.str;
|
||||
default = "video";
|
||||
description = "mjpg-streamer group name.";
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
|
||||
users.extraUsers = optional (cfg.user == "mjpg-streamer") {
|
||||
name = "mjpg-streamer";
|
||||
uid = config.ids.uids.mjpg-streamer;
|
||||
group = cfg.group;
|
||||
};
|
||||
|
||||
systemd.services.mjpg-streamer = {
|
||||
description = "mjpg-streamer webcam streamer";
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
|
||||
serviceConfig.User = cfg.user;
|
||||
serviceConfig.Group = cfg.group;
|
||||
|
||||
script = ''
|
||||
IPLUGIN="${cfg.inputPlugin}"
|
||||
OPLUGIN="${cfg.outputPlugin}"
|
||||
OPLUGIN="''${OPLUGIN//@www@/${pkgs.mjpg-streamer}/share/mjpg-streamer/www}"
|
||||
exec ${pkgs.mjpg-streamer}/bin/mjpg_streamer -i "$IPLUGIN" -o "$OPLUGIN"
|
||||
'';
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
}
|
@ -85,6 +85,9 @@ let
|
||||
ssl_enable=YES
|
||||
rsa_cert_file=${cfg.rsaCertFile}
|
||||
''}
|
||||
${optionalString (cfg.rsaKeyFile != null) ''
|
||||
rsa_private_key_file=${cfg.rsaKeyFile}
|
||||
''}
|
||||
${optionalString (cfg.userlistFile != null) ''
|
||||
userlist_file=${cfg.userlistFile}
|
||||
''}
|
||||
@ -147,6 +150,12 @@ in
|
||||
description = "RSA certificate file.";
|
||||
};
|
||||
|
||||
rsaKeyFile = mkOption {
|
||||
type = types.nullOr types.path;
|
||||
default = null;
|
||||
description = "RSA private key file.";
|
||||
};
|
||||
|
||||
anonymousUmask = mkOption {
|
||||
type = types.string;
|
||||
default = "077";
|
||||
|
@ -238,7 +238,8 @@ in
|
||||
example = literalExample "[ pkgs.splix ]";
|
||||
description = ''
|
||||
CUPS drivers to use. Drivers provided by CUPS, cups-filters, Ghostscript
|
||||
and Samba are added unconditionally.
|
||||
and Samba are added unconditionally. For adding Gutenprint, see
|
||||
<literal>gutenprint</literal>.
|
||||
'';
|
||||
};
|
||||
|
||||
|
78
nixos/modules/services/web-servers/apache-httpd/foswiki.nix
Normal file
78
nixos/modules/services/web-servers/apache-httpd/foswiki.nix
Normal file
@ -0,0 +1,78 @@
|
||||
{ config, pkgs, lib, serverInfo, ... }:
|
||||
let
|
||||
inherit (pkgs) foswiki;
|
||||
inherit (serverInfo.serverConfig) user group;
|
||||
inherit (config) vardir;
|
||||
in
|
||||
{
|
||||
options.vardir = lib.mkOption {
|
||||
type = lib.types.path;
|
||||
default = "/var/www/foswiki";
|
||||
description = "The directory where variable foswiki data will be stored and served from.";
|
||||
};
|
||||
|
||||
# TODO: this will probably need to be better customizable
|
||||
extraConfig =
|
||||
let httpd-conf = pkgs.runCommand "foswiki-httpd.conf"
|
||||
{ preferLocalBuild = true; }
|
||||
''
|
||||
substitute '${foswiki}/foswiki_httpd_conf.txt' "$out" \
|
||||
--replace /var/www/foswiki/ "${vardir}/"
|
||||
'';
|
||||
in
|
||||
''
|
||||
RewriteEngine on
|
||||
RewriteRule /foswiki/(.*) ${vardir}/$1
|
||||
|
||||
<Directory "${vardir}">
|
||||
Require all granted
|
||||
</Directory>
|
||||
|
||||
Include ${httpd-conf}
|
||||
<Directory "${vardir}/pub">
|
||||
Options FollowSymlinks
|
||||
</Directory>
|
||||
'';
|
||||
|
||||
/** This handles initial setup and updates.
|
||||
It will probably need some tweaking, maybe per-site. */
|
||||
startupScript = pkgs.writeScript "foswiki_startup.sh" (
|
||||
let storeLink = "${vardir}/package"; in
|
||||
''
|
||||
[ -e '${storeLink}' ] || needs_setup=1
|
||||
mkdir -p '${vardir}'
|
||||
cd '${vardir}'
|
||||
ln -sf -T '${foswiki}' '${storeLink}'
|
||||
|
||||
if [ -n "$needs_setup" ]; then # do initial setup
|
||||
mkdir -p bin lib
|
||||
# setup most of data/ as copies only
|
||||
cp -r '${foswiki}'/data '${vardir}/'
|
||||
rm -r '${vardir}'/data/{System,mime.types}
|
||||
ln -sr -t '${vardir}/data/' '${storeLink}'/data/{System,mime.types}
|
||||
|
||||
ln -sr '${storeLink}/locale' .
|
||||
|
||||
mkdir pub
|
||||
ln -sr '${storeLink}/pub/System' pub/
|
||||
|
||||
mkdir templates
|
||||
ln -sr '${storeLink}'/templates/* templates/
|
||||
|
||||
ln -sr '${storeLink}/tools' .
|
||||
|
||||
mkdir -p '${vardir}'/working/{logs,tmp}
|
||||
ln -sr '${storeLink}/working/README' working/ # used to check dir validity
|
||||
|
||||
chown -R '${user}:${group}' .
|
||||
chmod +w -R .
|
||||
fi
|
||||
|
||||
# bin/* and lib/* shall always be overwritten, in case files are added
|
||||
ln -srf '${storeLink}'/bin/* '${vardir}/bin/'
|
||||
ln -srf '${storeLink}'/lib/* '${vardir}/lib/'
|
||||
''
|
||||
/* Symlinking bin/ one-by-one ensures that ${vardir}/lib/LocalSite.cfg
|
||||
is used instead of ${foswiki}/... */
|
||||
);
|
||||
}
|
39
nixos/modules/services/x11/colord.nix
Normal file
39
nixos/modules/services/x11/colord.nix
Normal file
@ -0,0 +1,39 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
|
||||
cfg = config.services.colord;
|
||||
|
||||
in {
|
||||
|
||||
options = {
|
||||
|
||||
services.colord = {
|
||||
enable = mkEnableOption "colord, the color management daemon";
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
|
||||
services.dbus.packages = [ pkgs.colord ];
|
||||
|
||||
services.udev.packages = [ pkgs.colord ];
|
||||
|
||||
environment.systemPackages = [ pkgs.colord ];
|
||||
|
||||
systemd.services.colord = {
|
||||
description = "Manage, Install and Generate Color Profiles";
|
||||
serviceConfig = {
|
||||
Type = "dbus";
|
||||
BusName = "org.freedesktop.ColorManager";
|
||||
ExecStart = "${pkgs.colord}/libexec/colord";
|
||||
PrivateTmp = true;
|
||||
};
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
}
|
@ -19,7 +19,7 @@ in
|
||||
# E.g., if KDE is enabled, it supersedes xterm.
|
||||
imports = [
|
||||
./none.nix ./xterm.nix ./xfce.nix ./kde4.nix ./kde5.nix
|
||||
./e19.nix ./gnome3.nix ./kodi.nix
|
||||
./enlightenment.nix ./gnome3.nix ./kodi.nix
|
||||
];
|
||||
|
||||
options = {
|
||||
|
@ -4,9 +4,9 @@ with lib;
|
||||
|
||||
let
|
||||
|
||||
e = pkgs.enlightenment;
|
||||
xcfg = config.services.xserver;
|
||||
cfg = xcfg.desktopManager.e19;
|
||||
e19_enlightenment = pkgs.e19.enlightenment.override { set_freqset_setuid = true; };
|
||||
cfg = xcfg.desktopManager.enlightenment;
|
||||
GST_PLUGIN_PATH = lib.makeSearchPath "lib/gstreamer-1.0" [
|
||||
pkgs.gst_all_1.gst-plugins-base
|
||||
pkgs.gst_all_1.gst-plugins-good
|
||||
@ -18,10 +18,10 @@ in
|
||||
{
|
||||
options = {
|
||||
|
||||
services.xserver.desktopManager.e19.enable = mkOption {
|
||||
services.xserver.desktopManager.enlightenment.enable = mkOption {
|
||||
default = false;
|
||||
example = true;
|
||||
description = "Enable the E19 desktop environment.";
|
||||
description = "Enable the Enlightenment desktop environment.";
|
||||
};
|
||||
|
||||
};
|
||||
@ -29,8 +29,8 @@ in
|
||||
config = mkIf (xcfg.enable && cfg.enable) {
|
||||
|
||||
environment.systemPackages = [
|
||||
pkgs.e19.efl pkgs.e19.evas pkgs.e19.emotion pkgs.e19.elementary e19_enlightenment
|
||||
pkgs.e19.terminology pkgs.e19.econnman
|
||||
e.efl e.evas e.emotion e.elementary e.enlightenment
|
||||
e.terminology e.econnman
|
||||
pkgs.xorg.xauth # used by kdesu
|
||||
pkgs.gtk # To get GTK+'s themes.
|
||||
pkgs.tango-icon-theme
|
||||
@ -42,7 +42,7 @@ in
|
||||
environment.pathsToLink = [ "/etc/enlightenment" "/etc/xdg" "/share/enlightenment" "/share/elementary" "/share/applications" "/share/locale" "/share/icons" "/share/themes" "/share/mime" "/share/desktop-directories" ];
|
||||
|
||||
services.xserver.desktopManager.session = [
|
||||
{ name = "E19";
|
||||
{ name = "Enlightenment";
|
||||
start = ''
|
||||
# Set GTK_DATA_PREFIX so that GTK+ can find the themes
|
||||
export GTK_DATA_PREFIX=${config.system.path}
|
||||
@ -53,17 +53,16 @@ in
|
||||
export GST_PLUGIN_PATH="${GST_PLUGIN_PATH}"
|
||||
|
||||
# make available for D-BUS user services
|
||||
#export XDG_DATA_DIRS=$XDG_DATA_DIRS''${XDG_DATA_DIRS:+:}:${config.system.path}/share:${pkgs.e19.efl}/share
|
||||
#export XDG_DATA_DIRS=$XDG_DATA_DIRS''${XDG_DATA_DIRS:+:}:${config.system.path}/share:${e.efl}/share
|
||||
|
||||
# Update user dirs as described in http://freedesktop.org/wiki/Software/xdg-user-dirs/
|
||||
${pkgs.xdg-user-dirs}/bin/xdg-user-dirs-update
|
||||
|
||||
${e19_enlightenment}/bin/enlightenment_start
|
||||
waitPID=$!
|
||||
exec ${e.enlightenment}/bin/enlightenment_start
|
||||
'';
|
||||
}];
|
||||
|
||||
security.setuidPrograms = [ "e19_freqset" ];
|
||||
security.setuidPrograms = [ "e_freqset" ];
|
||||
|
||||
environment.etc = singleton
|
||||
{ source = "${pkgs.xkeyboard_config}/etc/X11/xkb";
|
||||
@ -75,13 +74,13 @@ in
|
||||
services.udisks2.enable = true;
|
||||
services.upower.enable = config.powerManagement.enable;
|
||||
|
||||
#services.dbus.packages = [ pkgs.efl ]; # dbus-1 folder is not in /etc but in /share, so needs fixing first
|
||||
services.dbus.packages = [ e.efl ];
|
||||
|
||||
systemd.user.services.efreet =
|
||||
{ enable = true;
|
||||
description = "org.enlightenment.Efreet";
|
||||
serviceConfig =
|
||||
{ ExecStart = "${pkgs.e19.efl}/bin/efreetd";
|
||||
{ ExecStart = "${e.efl}/bin/efreetd";
|
||||
StandardOutput = "null";
|
||||
};
|
||||
};
|
||||
@ -90,7 +89,7 @@ in
|
||||
{ enable = true;
|
||||
description = "org.enlightenment.Ethumb";
|
||||
serviceConfig =
|
||||
{ ExecStart = "${pkgs.e19.efl}/bin/ethumbd";
|
||||
{ ExecStart = "${e.efl}/bin/ethumbd";
|
||||
StandardOutput = "null";
|
||||
};
|
||||
};
|
@ -128,6 +128,7 @@ in
|
||||
++ lib.optional config.networking.networkmanager.enable kde5.plasma-nm
|
||||
++ lib.optional config.hardware.pulseaudio.enable kde5.plasma-pa
|
||||
++ lib.optional config.powerManagement.enable kde5.powerdevil
|
||||
++ lib.optional config.services.colord.enable kde5.colord-kde
|
||||
++ lib.optionals config.services.samba.enable [ kde5.kdenetwork-filesharing pkgs.samba ]
|
||||
|
||||
++ lib.optionals cfg.phonon.gstreamer.enable
|
||||
|
@ -17,6 +17,7 @@ in
|
||||
./fluxbox.nix
|
||||
./herbstluftwm.nix
|
||||
./i3.nix
|
||||
./jwm.nix
|
||||
./metacity.nix
|
||||
./openbox.nix
|
||||
./notion.nix
|
||||
|
25
nixos/modules/services/x11/window-managers/jwm.nix
Normal file
25
nixos/modules/services/x11/window-managers/jwm.nix
Normal file
@ -0,0 +1,25 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.xserver.windowManager.jwm;
|
||||
in
|
||||
{
|
||||
###### interface
|
||||
options = {
|
||||
services.xserver.windowManager.jwm.enable = mkEnableOption "jwm";
|
||||
};
|
||||
|
||||
###### implementation
|
||||
config = mkIf cfg.enable {
|
||||
services.xserver.windowManager.session = singleton {
|
||||
name = "jwm";
|
||||
start = ''
|
||||
${pkgs.jwm}/bin/jwm &
|
||||
waitPID=$!
|
||||
'';
|
||||
};
|
||||
environment.systemPackages = [ pkgs.jwm ];
|
||||
};
|
||||
}
|
@ -58,6 +58,7 @@ let
|
||||
|
||||
# Add RAID mdadm tool.
|
||||
copy_bin_and_libs ${pkgs.mdadm}/sbin/mdadm
|
||||
copy_bin_and_libs ${pkgs.mdadm}/sbin/mdmon
|
||||
|
||||
# Copy udev.
|
||||
copy_bin_and_libs ${udev}/lib/systemd/systemd-udevd
|
||||
|
@ -93,7 +93,7 @@ let
|
||||
config = {
|
||||
mountPoint = mkDefault name;
|
||||
device = mkIf (config.fsType == "tmpfs") (mkDefault config.fsType);
|
||||
options = mkIf config.autoResize "x-nixos.autoresize";
|
||||
options = mkIf config.autoResize [ "x-nixos.autoresize" ];
|
||||
|
||||
# -F needed to allow bare block device without partitions
|
||||
formatOptions = mkIf ((builtins.substring 0 3 config.fsType) == "ext") (mkDefault "-F");
|
||||
|
@ -12,4 +12,45 @@
|
||||
cp -v ${pkgs.mdadm}/lib/udev/rules.d/*.rules $out/
|
||||
'';
|
||||
|
||||
systemd.services.mdadm-shutdown = {
|
||||
wantedBy = [ "final.target"];
|
||||
after = [ "umount.target" ];
|
||||
|
||||
unitConfig = {
|
||||
DefaultDependencies = false;
|
||||
};
|
||||
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
ExecStart = ''${pkgs.mdadm}/bin/mdadm --wait-clean --scan'';
|
||||
};
|
||||
};
|
||||
|
||||
systemd.services."mdmon@" = {
|
||||
description = "MD Metadata Monitor on /dev/%I";
|
||||
|
||||
unitConfig.DefaultDependencies = false;
|
||||
|
||||
serviceConfig = {
|
||||
Type = "forking";
|
||||
Environment = "IMSM_NO_PLATFORM=1";
|
||||
ExecStart = ''${pkgs.mdadm}/bin/mdmon --offroot --takeover %I'';
|
||||
KillMode = "none";
|
||||
};
|
||||
};
|
||||
|
||||
systemd.services."mdadm-grow-continue@" = {
|
||||
description = "Manage MD Reshape on /dev/%I";
|
||||
|
||||
unitConfig.DefaultDependencies = false;
|
||||
|
||||
serviceConfig = {
|
||||
ExecStart = ''${pkgs.mdadm}/bin/mdadm --grow --continue /dev/%I'';
|
||||
StandardInput = "null";
|
||||
StandardOutput = "null";
|
||||
StandardError = "null";
|
||||
KillMode = "none";
|
||||
};
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -40,7 +40,6 @@ let cfg = config.ec2; in
|
||||
# Force udev to exit to prevent random "Device or resource busy
|
||||
# while trying to open /dev/xvda" errors from fsck.
|
||||
udevadm control --exit || true
|
||||
kill -9 -1
|
||||
'';
|
||||
|
||||
boot.initrd.network.enable = true;
|
||||
|
17
nixos/modules/virtualisation/azure-agent-entropy.patch
Normal file
17
nixos/modules/virtualisation/azure-agent-entropy.patch
Normal file
@ -0,0 +1,17 @@
|
||||
--- a/waagent 2016-03-12 09:58:15.728088851 +0200
|
||||
+++ a/waagent 2016-03-12 09:58:43.572680025 +0200
|
||||
@@ -6173,10 +6173,10 @@
|
||||
Log("MAC address: " + ":".join(["%02X" % Ord(a) for a in mac]))
|
||||
|
||||
# Consume Entropy in ACPI table provided by Hyper-V
|
||||
- try:
|
||||
- SetFileContents("/dev/random", GetFileContents("/sys/firmware/acpi/tables/OEM0"))
|
||||
- except:
|
||||
- pass
|
||||
+ #try:
|
||||
+ # SetFileContents("/dev/random", GetFileContents("/sys/firmware/acpi/tables/OEM0"))
|
||||
+ #except:
|
||||
+ # pass
|
||||
|
||||
Log("Probing for Azure environment.")
|
||||
self.Endpoint = self.DoDhcpWork()
|
@ -14,6 +14,9 @@ let
|
||||
rev = "1b3a8407a95344d9d12a2a377f64140975f1e8e4";
|
||||
sha256 = "10byzvmpgrmr4d5mdn2kq04aapqb3sgr1admk13wjmy5cd6bwd2x";
|
||||
};
|
||||
|
||||
patches = [ ./azure-agent-entropy.patch ];
|
||||
|
||||
buildInputs = [ makeWrapper python pythonPackages.wrapPython ];
|
||||
runtimeDeps = [ findutils gnugrep gawk coreutils openssl openssh
|
||||
nettools # for hostname
|
||||
@ -54,9 +57,15 @@ in
|
||||
|
||||
###### interface
|
||||
|
||||
options.virtualisation.azure.agent.enable = mkOption {
|
||||
default = false;
|
||||
description = "Whether to enable the Windows Azure Linux Agent.";
|
||||
options.virtualisation.azure.agent = {
|
||||
enable = mkOption {
|
||||
default = false;
|
||||
description = "Whether to enable the Windows Azure Linux Agent.";
|
||||
};
|
||||
verboseLogging = mkOption {
|
||||
default = false;
|
||||
description = "Whether to enable verbose logging.";
|
||||
};
|
||||
};
|
||||
|
||||
###### implementation
|
||||
@ -88,7 +97,7 @@ in
|
||||
Provisioning.DeleteRootPassword=n
|
||||
|
||||
# Generate fresh host key pair.
|
||||
Provisioning.RegenerateSshHostKeyPair=y
|
||||
Provisioning.RegenerateSshHostKeyPair=n
|
||||
|
||||
# Supported values are "rsa", "dsa" and "ecdsa".
|
||||
Provisioning.SshHostKeyPairType=ed25519
|
||||
@ -121,7 +130,7 @@ in
|
||||
Logs.Console=y
|
||||
|
||||
# Enable verbose logging (y|n)
|
||||
Logs.Verbose=n
|
||||
Logs.Verbose=${if cfg.verboseLogging then "y" else "n"}
|
||||
|
||||
# Root device timeout in seconds.
|
||||
OS.RootDeviceScsiTimeout=300
|
||||
@ -146,16 +155,30 @@ in
|
||||
|
||||
systemd.targets.provisioned = {
|
||||
description = "Services Requiring Azure VM provisioning to have finished";
|
||||
wantedBy = [ "sshd.service" ];
|
||||
before = [ "sshd.service" ];
|
||||
};
|
||||
|
||||
systemd.services.consume-hypervisor-entropy =
|
||||
{ description = "Consume entropy in ACPI table provided by Hyper-V";
|
||||
|
||||
wantedBy = [ "sshd.service" "waagent.service" ];
|
||||
before = [ "sshd.service" "waagent.service" ];
|
||||
after = [ "local-fs.target" ];
|
||||
|
||||
path = [ pkgs.coreutils ];
|
||||
script =
|
||||
''
|
||||
echo "Fetching entropy..."
|
||||
cat /sys/firmware/acpi/tables/OEM0 > /dev/random
|
||||
'';
|
||||
serviceConfig.Type = "oneshot";
|
||||
serviceConfig.RemainAfterExit = true;
|
||||
serviceConfig.StandardError = "journal+console";
|
||||
serviceConfig.StandardOutput = "journal+console";
|
||||
};
|
||||
|
||||
systemd.services.waagent = {
|
||||
wantedBy = [ "sshd.service" ];
|
||||
before = [ "sshd.service" ];
|
||||
after = [ "ip-up.target" ];
|
||||
wants = [ "ip-up.target" ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
after = [ "ip-up.target" "sshd.service" ];
|
||||
|
||||
path = [ pkgs.e2fsprogs ];
|
||||
description = "Windows Azure Agent Service";
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
with lib;
|
||||
let
|
||||
diskSize = "4096";
|
||||
diskSize = "30720";
|
||||
in
|
||||
{
|
||||
system.build.azureImage =
|
||||
@ -23,7 +23,7 @@ in
|
||||
postVM =
|
||||
''
|
||||
mkdir -p $out
|
||||
${pkgs.vmTools.qemu-220}/bin/qemu-img convert -f raw -O vpc -o subformat=fixed $diskImage $out/disk.vhd
|
||||
${pkgs.vmTools.qemu-220}/bin/qemu-img convert -f raw -O vpc $diskImage $out/disk.vhd
|
||||
rm $diskImage
|
||||
'';
|
||||
diskImageBase = "nixos-image-${config.system.nixosLabel}-${pkgs.stdenv.system}.raw";
|
||||
|
@ -240,6 +240,7 @@ in rec {
|
||||
tests.containers = callTest tests/containers.nix {};
|
||||
tests.docker = hydraJob (import tests/docker.nix { system = "x86_64-linux"; });
|
||||
tests.dockerRegistry = hydraJob (import tests/docker-registry.nix { system = "x86_64-linux"; });
|
||||
tests.dnscrypt-proxy = callTest tests/dnscrypt-proxy.nix { system = "x86_64-linux"; };
|
||||
tests.etcd = hydraJob (import tests/etcd.nix { system = "x86_64-linux"; });
|
||||
tests.ec2-nixops = hydraJob (import tests/ec2.nix { system = "x86_64-linux"; }).boot-ec2-nixops;
|
||||
tests.ec2-config = hydraJob (import tests/ec2.nix { system = "x86_64-linux"; }).boot-ec2-config;
|
||||
|
32
nixos/tests/dnscrypt-proxy.nix
Normal file
32
nixos/tests/dnscrypt-proxy.nix
Normal file
@ -0,0 +1,32 @@
|
||||
import ./make-test.nix ({ pkgs, ... }: {
|
||||
name = "dnscrypt-proxy";
|
||||
meta = with pkgs.stdenv.lib.maintainers; {
|
||||
maintainers = [ joachifm ];
|
||||
};
|
||||
|
||||
nodes = {
|
||||
# A client running the recommended setup: DNSCrypt proxy as a forwarder
|
||||
# for a caching DNS client.
|
||||
client =
|
||||
{ config, pkgs, ... }:
|
||||
let localProxyPort = 43; in
|
||||
{
|
||||
security.apparmor.enable = true;
|
||||
|
||||
services.dnscrypt-proxy.enable = true;
|
||||
services.dnscrypt-proxy.localPort = localProxyPort;
|
||||
|
||||
services.dnsmasq.enable = true;
|
||||
services.dnsmasq.servers = [ "127.0.0.1#${toString localProxyPort}" ];
|
||||
};
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
$client->start;
|
||||
$client->waitForUnit("multi-user.target");
|
||||
|
||||
# The daemon is socket activated; sending a single ping should activate it.
|
||||
$client->execute("${pkgs.iputils}/bin/ping -c1 example.com");
|
||||
$client->succeed("systemctl is-active dnscrypt-proxy.service");
|
||||
'';
|
||||
})
|
55
pkgs/applications/audio/banshee/default.nix
Normal file
55
pkgs/applications/audio/banshee/default.nix
Normal file
@ -0,0 +1,55 @@
|
||||
{ pkgs, stdenv, lib, fetchurl, intltool, pkgconfig, gstreamer, gst_plugins_base
|
||||
, gst_plugins_good, gst_plugins_bad, gst_plugins_ugly, gst_ffmpeg, glib
|
||||
, mono, mono-addins, dbus-sharp-1_0, dbus-sharp-glib-1_0, notify-sharp, gtk-sharp-2_0
|
||||
, boo, gdata-sharp, taglib-sharp, sqlite, gnome-sharp, gconf, gtk-sharp-beans, gio-sharp
|
||||
, libmtp, libgpod, mono-zeroconf }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "banshee-${version}";
|
||||
version = "2.6.2";
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://ftp.gnome.org/pub/GNOME/sources/banshee/2.6/banshee-${version}.tar.xz";
|
||||
sha256 = "1y30p8wxx5li39i5gpq2wib0ympy8llz0gyi6ri9bp730ndhhz7p";
|
||||
};
|
||||
|
||||
dontStrip = true;
|
||||
|
||||
nativeBuildInputs = [ pkgconfig intltool ];
|
||||
buildInputs = [
|
||||
gtk-sharp-2_0.gtk gstreamer gst_plugins_base gst_plugins_good
|
||||
gst_plugins_bad gst_plugins_ugly gst_ffmpeg
|
||||
mono dbus-sharp-1_0 dbus-sharp-glib-1_0 mono-addins notify-sharp
|
||||
gtk-sharp-2_0 boo gdata-sharp taglib-sharp sqlite gnome-sharp gconf gtk-sharp-beans
|
||||
gio-sharp libmtp libgpod mono-zeroconf
|
||||
];
|
||||
|
||||
makeFlags = [ "PREFIX=$(out)" ];
|
||||
|
||||
postPatch = ''
|
||||
patchShebangs data/desktop-files/update-desktop-file.sh
|
||||
patchShebangs build/private-icon-theme-installer
|
||||
sed -i "s,DOCDIR=.*,DOCDIR=$out/lib/monodoc," configure
|
||||
'';
|
||||
|
||||
postInstall = let
|
||||
ldLibraryPath = lib.makeLibraryPath [ gtk-sharp-2_0.gtk gtk-sharp-2_0 sqlite gconf glib gstreamer ];
|
||||
|
||||
monoGACPrefix = lib.concatStringsSep ":" [
|
||||
mono dbus-sharp-1_0 dbus-sharp-glib-1_0 mono-addins notify-sharp gtk-sharp-2_0
|
||||
boo gdata-sharp taglib-sharp sqlite gnome-sharp gconf gtk-sharp-beans
|
||||
gio-sharp libmtp libgpod mono-zeroconf
|
||||
];
|
||||
in ''
|
||||
sed -e '2a export MONO_GAC_PREFIX=${monoGACPrefix}' \
|
||||
-e 's|LD_LIBRARY_PATH=|LD_LIBRARY_PATH=${ldLibraryPath}:|' \
|
||||
-e "s|GST_PLUGIN_PATH=|GST_PLUGIN_PATH=$GST_PLUGIN_SYSTEM_PATH:|" \
|
||||
-e 's| mono | ${mono}/bin/mono |' \
|
||||
-i $out/bin/banshee
|
||||
'';
|
||||
meta = with lib; {
|
||||
description = "A music player written in C# using GNOME technologies";
|
||||
platforms = platforms.linux;
|
||||
maintainers = [ maintainers.zohl ];
|
||||
};
|
||||
}
|
@ -20,7 +20,6 @@ in stdenv.mkDerivation rec {
|
||||
license = licenses.gpl2Plus;
|
||||
platforms = platforms.linux;
|
||||
hydraPlatforms = [];
|
||||
maintainers = with maintainers; [ iyzsong ];
|
||||
};
|
||||
|
||||
src = fetchurl {
|
||||
|
@ -37,7 +37,8 @@ let
|
||||
|
||||
inherit src;
|
||||
|
||||
buildInputs = [ makeWrapper llvm emscripten openssl libsndfile pkgconfig libmicrohttpd vim ];
|
||||
nativeBuildInputs = [ makeWrapper pkgconfig vim ];
|
||||
buildInputs = [ llvm emscripten openssl libsndfile libmicrohttpd ];
|
||||
|
||||
|
||||
passthru = {
|
||||
@ -53,6 +54,20 @@ let
|
||||
# correct system.
|
||||
unset system
|
||||
sed -e "232s/LLVM_STATIC_LIBS/LLVMLIBS/" -i compiler/Makefile.unix
|
||||
|
||||
# The makefile sets LLVM_<version> depending on the current llvm
|
||||
# version, but the detection code is quite brittle.
|
||||
#
|
||||
# Failing to properly detect the llvm version means that the macro
|
||||
# LLVM_VERSION ends up being the raw output of `llvm-config --version`, while
|
||||
# the code assumes that it's set to a symbol like `LLVM_35`. Two problems result:
|
||||
# * <command-line>:0:1: error: macro names must be identifiers.; and
|
||||
# * a bunch of undefined reference errors due to conditional definitions relying on
|
||||
# LLVM_XY being defined.
|
||||
#
|
||||
# For now, fix this by 1) pinning the llvm version; 2) manually setting LLVM_VERSION
|
||||
# to something the makefile will recognize.
|
||||
sed '52iLLVM_VERSION=3.7.0' -i compiler/Makefile.unix
|
||||
'';
|
||||
|
||||
# Remove most faust2appl scripts since they won't run properly
|
||||
|
@ -5,7 +5,7 @@
|
||||
assert stdenv.system == "x86_64-linux";
|
||||
|
||||
let
|
||||
version = "1.0.23.93.gd6cfae15-30";
|
||||
version = "1.0.25.127.g58007b4c-22";
|
||||
|
||||
deps = [
|
||||
alsaLib
|
||||
@ -50,7 +50,7 @@ stdenv.mkDerivation {
|
||||
src =
|
||||
fetchurl {
|
||||
url = "http://repository-origin.spotify.com/pool/non-free/s/spotify-client/spotify-client_${version}_amd64.deb";
|
||||
sha256 = "0n6vz51jv6s20dp4zlqkk52bpmpyfm1qn5bfm4lfq09x1g6ir5lr";
|
||||
sha256 = "1fxps0ls0g4idw10la3qrpmp2jn85lkm3xj4nam4ycx0jj8g1v2p";
|
||||
};
|
||||
|
||||
buildInputs = [ dpkg makeWrapper ];
|
||||
|
@ -12,7 +12,6 @@ in stdenv.mkDerivation rec {
|
||||
homepage = "http://vmpk.sourceforge.net/";
|
||||
license = licenses.gpl3Plus;
|
||||
platforms = platforms.linux;
|
||||
maintainers = with maintainers; [ iyzsong ];
|
||||
};
|
||||
|
||||
src = fetchurl {
|
||||
|
@ -8,7 +8,6 @@ stdenv.mkDerivation rec {
|
||||
homepage = "http://xmp.sourceforge.net/";
|
||||
license = licenses.gpl2Plus;
|
||||
platforms = platforms.linux;
|
||||
maintainers = with maintainers; [ iyzsong ];
|
||||
};
|
||||
|
||||
src = fetchurl {
|
||||
|
@ -43,6 +43,5 @@ stdenv.mkDerivation rec {
|
||||
homepage = "http://www.aseprite.org/";
|
||||
license = stdenv.lib.licenses.gpl2Plus;
|
||||
platforms = stdenv.lib.platforms.linux;
|
||||
maintainers = with stdenv.lib.maintainers; [iyzsong];
|
||||
};
|
||||
}
|
||||
|
@ -27,8 +27,8 @@ stdenv.mkDerivation rec {
|
||||
'';
|
||||
|
||||
configureFlags = [
|
||||
"--with-lispdir=$out/share/emacs/site-lisp"
|
||||
"--with-icondir=$out/share/emacs/site-lisp/images/w3m"
|
||||
"--with-lispdir=$(out)/share/emacs/site-lisp"
|
||||
"--with-icondir=$(out)/share/emacs/site-lisp/images/w3m"
|
||||
];
|
||||
|
||||
postInstall = ''
|
||||
|
@ -1,7 +1,7 @@
|
||||
{ stdenv, fetchurl, gtk2, which, pkgconfig, intltool, file }:
|
||||
|
||||
let
|
||||
version = "1.26";
|
||||
version = "1.27";
|
||||
in
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
@ -9,7 +9,7 @@ stdenv.mkDerivation rec {
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://download.geany.org/${name}.tar.bz2";
|
||||
sha256 = "e38530e87c577e1e9806be3b40e08fb9ee321eb1abc6361ddacdad89c825f90d";
|
||||
sha256 = "846ff699a5944c5c3c068ae0199d4c13946a668bfc6d03f8c79765667c20cadf";
|
||||
};
|
||||
|
||||
buildInputs = [ gtk2 which pkgconfig intltool file ];
|
||||
|
@ -3,12 +3,12 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "${pname}-${version}";
|
||||
version = "4.7.1";
|
||||
version = "4.7.3";
|
||||
pname = "kdevelop";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://kde/stable/${pname}/${version}/src/${name}.tar.xz";
|
||||
sha256 = "e3ad5377f53739a67216d37cda3f88c03f8fbb0c96e2a9ef4056df3c124e95c1";
|
||||
url = "mirror://kde/stable/${pname}/${version}/src/${name}.tar.bz2";
|
||||
sha256 = "9db388d1c8274da7d168c13db612c7e94ece7815757b945b0aa0371620a06b35";
|
||||
};
|
||||
|
||||
buildInputs = [ kdevplatform kdebase_workspace okteta qjson ];
|
||||
@ -17,6 +17,8 @@ stdenv.mkDerivation rec {
|
||||
|
||||
propagatedUserEnvPkgs = [ kdevplatform kate konsole kde_runtime oxygen_icons ];
|
||||
|
||||
patches = [ ./gettext.patch ];
|
||||
|
||||
NIX_CFLAGS_COMPILE = "-I${okteta}/include/KDE";
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
@ -31,6 +33,6 @@ stdenv.mkDerivation rec {
|
||||
programing languages. It is based on KDevPlatform, KDE and Qt
|
||||
libraries and is under development since 1998.
|
||||
'';
|
||||
homepage = http://www.kdevelop.org;
|
||||
homepage = https://www.kdevelop.org;
|
||||
};
|
||||
}
|
||||
|
8
pkgs/applications/editors/kdevelop/gettext.patch
Normal file
8
pkgs/applications/editors/kdevelop/gettext.patch
Normal file
@ -0,0 +1,8 @@
|
||||
diff -urN kdevelop-4.7.3.orig/po/CMakeLists.txt kdevelop-4.7.3/po/CMakeLists.txt
|
||||
--- kdevelop-4.7.3.orig/po/CMakeLists.txt 2016-03-04 23:29:09.411886565 +0100
|
||||
+++ kdevelop-4.7.3/po/CMakeLists.txt 2016-03-04 23:28:35.108451713 +0100
|
||||
@@ -1,3 +1,4 @@
|
||||
+cmake_policy(SET CMP0002 OLD)
|
||||
find_package(Gettext REQUIRED)
|
||||
if (NOT GETTEXT_MSGMERGE_EXECUTABLE)
|
||||
MESSAGE(FATAL_ERROR "Please install msgmerge binary")
|
@ -12,12 +12,13 @@ with stdenv.lib;
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "nano-${version}";
|
||||
version = "2.5.0";
|
||||
version = "2.5.3";
|
||||
src = fetchurl {
|
||||
url = "mirror://gnu/nano/${name}.tar.gz";
|
||||
sha256 = "1vl9bim56k1b4zwc3icxp46w6pn6gb042j1h4jlz1jklxxpkwcpz";
|
||||
sha256 = "1vhjrcydcfxqq1719vcsvqqnbjbq2523m00dhzag5vwzkc961c5j";
|
||||
};
|
||||
buildInputs = [ ncurses texinfo ] ++ optional enableNls gettext;
|
||||
nativeBuildInputs = [ texinfo ] ++ optional enableNls gettext;
|
||||
buildInputs = [ ncurses ];
|
||||
outputs = [ "out" "info" ];
|
||||
configureFlags = ''
|
||||
--sysconfdir=/etc
|
||||
|
@ -24,6 +24,5 @@ stdenv.mkDerivation rec {
|
||||
# The rest is GPL2 or later.
|
||||
license = stdenv.lib.licenses.gpl2Plus;
|
||||
platforms = stdenv.lib.platforms.linux;
|
||||
maintainers = with stdenv.lib.maintainers; [ iyzsong ];
|
||||
};
|
||||
}
|
||||
|
@ -75,6 +75,7 @@ stdenv.mkDerivation rec {
|
||||
postInstall = ''
|
||||
mkdir -p $out/Applications
|
||||
cp -r src/MacVim/build/Release/MacVim.app $out/Applications
|
||||
rm -rf $out/MacVim.app
|
||||
|
||||
rm $out/bin/{Vimdiff,Vimtutor,Vim,ex,rVim,rview,view}
|
||||
|
||||
|
@ -16,6 +16,15 @@ in
|
||||
};
|
||||
|
||||
patches = [ ./paths-fix.patch ];
|
||||
# fix build with glibc-2.23
|
||||
postPatch = ''
|
||||
sed 's/\<isinf(/std::isinf(/g' -i \
|
||||
src/export/export_heightmap.cpp \
|
||||
src/fab/types/bounds.cpp \
|
||||
src/graph/hooks/meta.cpp \
|
||||
src/ui/dialogs/resolution_dialog.cpp \
|
||||
src/render/render_task.cpp
|
||||
'';
|
||||
|
||||
buildInputs = [
|
||||
libpng python3 (boost.override { python = python3; })
|
||||
@ -32,6 +41,8 @@ in
|
||||
qmake antimony.pro PREFIX=$out
|
||||
'';
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "A computer-aided design (CAD) tool from a parallel universe";
|
||||
homepage = "https://github.com/mkeeter/antimony";
|
||||
|
@ -11,12 +11,12 @@
|
||||
assert stdenv ? glibc;
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
version = "2.0.0";
|
||||
version = "2.0.2";
|
||||
name = "darktable-${version}";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/darktable-org/darktable/releases/download/release-${version}/darktable-${version}.tar.xz";
|
||||
sha256 = "1cbwvzqn3158cy7r499rdwipx7fpb30lrrvh6jy5a4xvpcjzbwnl";
|
||||
sha256 = "0014j73sy956xqdhd4jrxvbamildqqadx8hmagrbiah8xda67skm";
|
||||
};
|
||||
|
||||
buildInputs =
|
||||
@ -35,7 +35,7 @@ stdenv.mkDerivation rec {
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "Virtual lighttable and darkroom for photographers";
|
||||
homepage = http://www.darktable.org;
|
||||
homepage = https://www.darktable.org;
|
||||
license = licenses.gpl3Plus;
|
||||
platforms = platforms.linux;
|
||||
maintainers = [ maintainers.goibhniu maintainers.rickynils maintainers.flosse ];
|
||||
|
@ -3,42 +3,222 @@
|
||||
, libgphoto2, libjpeg, libkdcraw, libkexiv2, libkipi, libpgf, libtiff
|
||||
, libusb1, liblqr1, marble, mysql, opencv, perl, phonon, pkgconfig
|
||||
, qca2, qimageblitz, qjson, qt4, soprano
|
||||
|
||||
# Optional build time dependencies
|
||||
, baloo, doxygen, kfilemetadata
|
||||
, lcms2
|
||||
, kfaceSupport ? true, libkface ? null
|
||||
, kgeomapSupport ? true, libkgeomap ? null
|
||||
, libxslt
|
||||
|
||||
# Plugins optional build time dependencies
|
||||
, gdk_pixbuf, imagemagick
|
||||
, libgpod, libksane, libkvkontakte
|
||||
, qt_gstreamer1 /*qt_soap, <https://github.com/commontk/QtSOAP> herqq <http://www.herqq.org> -> is missing its av part.*/
|
||||
/*qt_koauth <http://gitorious.org/kqoauth>*/
|
||||
|
||||
# Supplementary packages required only by the wrapper.
|
||||
, bash, kde_runtime, kde_baseapps, makeWrapper, oxygen_icons
|
||||
, phonon_backend_vlc /*phonon_backend_gstreamer,*/
|
||||
, ffmpegthumbs /*mplayerthumbs*/
|
||||
, runCommand, shared_mime_info, writeScriptBin
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "digikam-4.12.0";
|
||||
let
|
||||
version = "4.12.0";
|
||||
pName = "digikam-${version}";
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://download.kde.org/stable/digikam/${name}.tar.bz2";
|
||||
sha256 = "081ldsaf3frf5khznjd3sxkjmi4dyp6w6nqnc2a0agkk0kxkl10m";
|
||||
build = stdenv.mkDerivation rec {
|
||||
name = "digikam-build-${version}";
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://download.kde.org/stable/digikam/${pName}.tar.bz2";
|
||||
sha256 = "081ldsaf3frf5khznjd3sxkjmi4dyp6w6nqnc2a0agkk0kxkl10m";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
automoc4 cmake gettext perl pkgconfig
|
||||
] ++ [
|
||||
# Optional
|
||||
doxygen
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
boost eigen jasper kdelibs kdepimlibs lcms lensfun
|
||||
libgphoto2 libjpeg libkdcraw libkexiv2 libkipi liblqr1 libpgf
|
||||
libtiff marble mysql.lib opencv phonon qca2 qimageblitz qjson qt4
|
||||
shared_desktop_ontologies soprano ]
|
||||
# Optional build time dependencies
|
||||
++ [
|
||||
baloo
|
||||
kfilemetadata
|
||||
lcms2 ]
|
||||
++ stdenv.lib.optional (kfaceSupport && null != libkface) [ libkface ]
|
||||
++ stdenv.lib.optional (kgeomapSupport && null != libkgeomap) [ libkgeomap ] ++
|
||||
[ libxslt ]
|
||||
# Plugins optional build time dependencies
|
||||
++ [
|
||||
gdk_pixbuf imagemagick libgpod libksane
|
||||
libkvkontakte
|
||||
qt_gstreamer1 ];
|
||||
|
||||
# Make digikam find some FindXXXX.cmake
|
||||
KDEDIRS="${marble}:${qjson}";
|
||||
|
||||
# Find kdepimlibs's upper case headers under `include/KDE`.
|
||||
NIX_CFLAGS_COMPILE = "-I${kdepimlibs}/include/KDE";
|
||||
|
||||
# Help digiKam find libusb, otherwise gphoto2 support is disabled
|
||||
cmakeFlags = [
|
||||
"-DLIBUSB_LIBRARIES=${libusb1}/lib"
|
||||
"-DLIBUSB_INCLUDE_DIR=${libusb1}/include/libusb-1.0"
|
||||
"-DENABLE_BALOOSUPPORT=ON"
|
||||
"-DENABLE_KDEPIMLIBSSUPPORT=ON"
|
||||
"-DENABLE_LCMS2=ON" ]
|
||||
++ stdenv.lib.optional (kfaceSupport && null == libkface) [ "-DDIGIKAMSC_COMPILE_LIBKFACE=ON" ]
|
||||
++ stdenv.lib.optional (kgeomapSupport && null == libkgeomap) [ "-DDIGIKAMSC_COMPILE_LIBKGEOMAP=ON" ];
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
meta = {
|
||||
description = "Photo Management Program";
|
||||
license = stdenv.lib.licenses.gpl2;
|
||||
homepage = http://www.digikam.org;
|
||||
maintainers = with stdenv.lib.maintainers; [ goibhniu viric urkud ];
|
||||
inherit (kdelibs.meta) platforms;
|
||||
};
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ automoc4 cmake gettext perl pkgconfig ];
|
||||
|
||||
buildInputs = [
|
||||
boost eigen jasper kdelibs kdepimlibs lcms lensfun libgphoto2
|
||||
libjpeg libkdcraw libkexiv2 libkipi liblqr1 libpgf libtiff marble
|
||||
mysql.lib opencv phonon qca2 qimageblitz qjson qt4
|
||||
shared_desktop_ontologies soprano
|
||||
kdePkgs = [
|
||||
build # digikam's own build
|
||||
kdelibs kdepimlibs kde_runtime kde_baseapps libkdcraw oxygen_icons
|
||||
/*phonon_backend_gstreamer*/ phonon_backend_vlc
|
||||
ffmpegthumbs /*mplayerthumbs*/ shared_mime_info ]
|
||||
# Optional build time dependencies
|
||||
++ [
|
||||
|
||||
baloo kfilemetadata ]
|
||||
++ stdenv.lib.optional (kfaceSupport && null != libkface) [ libkface ]
|
||||
++ stdenv.lib.optional (kgeomapSupport && null != libkgeomap) [ libkgeomap ]
|
||||
++ [
|
||||
libkipi ]
|
||||
# Plugins optional build time dependencies
|
||||
++ [
|
||||
libksane libkvkontakte
|
||||
];
|
||||
|
||||
# Make digikam find some FindXXXX.cmake
|
||||
KDEDIRS="${marble}:${qjson}";
|
||||
|
||||
# Help digiKam find libusb, otherwise gphoto2 support is disabled
|
||||
cmakeFlags = [
|
||||
"-DLIBUSB_LIBRARIES=${libusb1}/lib"
|
||||
"-DLIBUSB_INCLUDE_DIR=${libusb1}/include/libusb-1.0"
|
||||
"-DDIGIKAMSC_COMPILE_LIBKFACE=ON"
|
||||
];
|
||||
# TODO: It should be the responsability of these packages to add themselves to `KDEDIRS`. See
|
||||
# <https://github.com/ttuegel/nixpkgs/commit/a0efeacc0ef2cf63bbb768bfb172a483307d080b> for
|
||||
# a practical example.
|
||||
# IMPORTANT: Note that using `XDG_DATA_DIRS` here instead of `KDEDIRS` won't work properly.
|
||||
KDEDIRS = with stdenv.lib; concatStrings (intersperse ":" (map (x: "${x}") kdePkgs));
|
||||
|
||||
enableParallelBuilding = true;
|
||||
sycocaDirRelPath = "var/lib/kdesycoca";
|
||||
sycocaFileRelPath = "${sycocaDirRelPath}/${pName}.sycoca";
|
||||
|
||||
sycoca = runCommand "${pName}" {
|
||||
|
||||
name = "digikam-sycoca-${version}";
|
||||
|
||||
nativeBuildInputs = [ kdelibs ];
|
||||
|
||||
dontPatchELF = true;
|
||||
dontStrip = true;
|
||||
|
||||
} ''
|
||||
# Make sure kbuildsycoca4 does not attempt to write to user home directory.
|
||||
export HOME=$PWD
|
||||
|
||||
export KDESYCOCA="$out/${sycocaFileRelPath}"
|
||||
|
||||
mkdir -p $out/${sycocaDirRelPath}
|
||||
export XDG_DATA_DIRS=""
|
||||
export KDEDIRS="${KDEDIRS}"
|
||||
kbuildsycoca4 --noincremental --nosignal
|
||||
'';
|
||||
|
||||
|
||||
replaceExeListWithWrapped =
|
||||
let f = exeName: ''
|
||||
rm -f "$out/bin/${exeName}"
|
||||
makeWrapper "${build}/bin/${exeName}" "$out/bin/${exeName}" \
|
||||
--set XDG_DATA_DIRS "" \
|
||||
--set KDEDIRS "${KDEDIRS}" \
|
||||
--set KDESYCOCA "${sycoca}/${sycocaFileRelPath}"
|
||||
'';
|
||||
in
|
||||
with stdenv.lib; exeNameList: concatStrings (intersperse "\n" (map f exeNameList));
|
||||
|
||||
in
|
||||
|
||||
|
||||
with stdenv.lib;
|
||||
|
||||
/*
|
||||
Final derivation
|
||||
----------------
|
||||
|
||||
- Create symlinks to our original build derivation items.
|
||||
- Wrap specific executables so that they know of the appropriate
|
||||
sycoca database, `KDEDIRS` to use and block any interference
|
||||
from `XDG_DATA_DIRS` (only `dnginfo` is not wrapped).
|
||||
*/
|
||||
runCommand "${pName}" {
|
||||
inherit build;
|
||||
inherit sycoca;
|
||||
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
|
||||
buildInputs = kdePkgs;
|
||||
|
||||
dontPatchELF = true;
|
||||
dontStrip = true;
|
||||
|
||||
meta = {
|
||||
description = "Photo Management Program";
|
||||
license = stdenv.lib.licenses.gpl2;
|
||||
homepage = http://www.digikam.org;
|
||||
maintainers = with stdenv.lib.maintainers; [ goibhniu viric urkud ];
|
||||
maintainers = with stdenv.lib.maintainers; [ /*jraygauthier*/ ];
|
||||
inherit (kdelibs.meta) platforms;
|
||||
};
|
||||
}
|
||||
|
||||
} ''
|
||||
pushd $build > /dev/null
|
||||
for d in `find . -maxdepth 1 -name "*" -printf "%f\n" | tail -n+2`; do
|
||||
mkdir -p $out/$d
|
||||
for f in `find $d -maxdepth 1 -name "*" -printf "%f\n" | tail -n+2`; do
|
||||
ln -s "$build/$d/$f" "$out/$d/$f"
|
||||
done
|
||||
done
|
||||
popd > /dev/null
|
||||
|
||||
${replaceExeListWithWrapped [ "cleanup_digikamdb" "digitaglinktree" "digikam" "dngconverter"
|
||||
"expoblending" "photolayoutseditor" "scangui" "showfoto" ]}
|
||||
''
|
||||
|
||||
/*
|
||||
|
||||
TODO
|
||||
----
|
||||
|
||||
### Useful ###
|
||||
|
||||
- Per lib `KDELIBS` environment variable export. See above in-code TODO comment.
|
||||
- Missing optional `qt_soap` or `herqq` (av + normal package) dependencies. Those are not
|
||||
yet (or not fully) packaged in nix. Mainly required for upnp export.
|
||||
- Possibility to use the `phonon_backend_gstreamer` with its own user specified set of backend.
|
||||
- Allow user to disable optional features or dependencies reacting properly.
|
||||
- Compile `kipiplugins` as a separate package (so that it can be used by other kde packages
|
||||
and so that this package's build time is reduced).
|
||||
|
||||
### Not so useful ###
|
||||
|
||||
- Missing optional `qt_koauth` (not packaged in nix).
|
||||
- Missing optional `libmediawiki` (not packaged in nix)..
|
||||
- For some reason the cmake build does not detect `libkvkontakte`. Fix this.
|
||||
- Possibility to use `mplayerthumbs` thumbnail creator backend. In digikam dev docs,
|
||||
it is however suggested to use `ffmpegthumbs`. Maybe we should stick to it.
|
||||
|
||||
*/
|
||||
|
@ -3,10 +3,10 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "simple-scan-${version}";
|
||||
version = "3.19.91";
|
||||
version = "3.19.92";
|
||||
|
||||
src = fetchurl {
|
||||
sha256 = "1c5glf5vxgld41w4jxfqcv17q76qnh43fawpv33hncgh8d283xkf";
|
||||
sha256 = "1zz6y4cih1v0npxjfxvnqz3bz7i5aripdsfy0hg9mhr1f4r0ig19";
|
||||
url = "https://launchpad.net/simple-scan/3.19/${version}/+download/${name}.tar.xz";
|
||||
};
|
||||
|
||||
|
@ -6,7 +6,7 @@ stdenv.mkDerivation {
|
||||
inherit boost;
|
||||
|
||||
src = fetchurl {
|
||||
url = http://d4x.krasu.ru/files/d4x-2.5.7.1.tar.bz2;
|
||||
url = http://pkgs.fedoraproject.org/repo/pkgs/d4x/d4x-2.5.7.1.tar.bz2/68d6336c3749a7caabb0f5a5f84f4102/d4x-2.5.7.1.tar.bz2;
|
||||
sha256 = "1i1jj02bxynisqapv31481sz9jpfp3f023ky47spz1v1wlwbs13m";
|
||||
};
|
||||
|
||||
|
@ -18,11 +18,11 @@ in
|
||||
|
||||
pythonPackages.buildPythonApplication rec {
|
||||
name = "electrum-${version}";
|
||||
version = "2.6.1";
|
||||
version = "2.6.2";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://download.electrum.org/${version}/Electrum-${version}.tar.gz";
|
||||
sha256 = "14q6y1hwzki56nfhd3nfbxid07d5fv0pgmklvcf7yxjmpdxrg0iq";
|
||||
sha256 = "1wvzlx9aj88z01vljhyg3v67zsk2iz18r58727pdq7h94vwwjc86";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = with pythonPackages; [
|
||||
@ -55,6 +55,11 @@ pythonPackages.buildPythonApplication rec {
|
||||
pyrcc4 icons.qrc -o gui/qt/icons_rc.py
|
||||
'';
|
||||
|
||||
doCheck = true;
|
||||
checkPhase = ''
|
||||
$out/bin/electrum help >/dev/null
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "Bitcoin thin-client";
|
||||
longDescription = ''
|
||||
|
@ -24,6 +24,7 @@ python3Packages.buildPythonApplication rec {
|
||||
urwid
|
||||
pkginfo
|
||||
];
|
||||
buildInputs = with python3Packages; [ setuptools_scm ];
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
homepage = http://lostpackets.de/khal/;
|
||||
|
@ -1,28 +1,29 @@
|
||||
{ stdenv, fetchurl, automake, autoconf, libtool, pkgconfig, libzen, libmediainfo, wxGTK, desktop_file_utils, libSM, imagemagick }:
|
||||
{ stdenv, fetchurl, autoreconfHook, pkgconfig, libzen, libmediainfo, wxGTK
|
||||
, desktop_file_utils, libSM, imagemagick }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
version = "0.7.82";
|
||||
version = "0.7.83";
|
||||
name = "mediainfo-gui-${version}";
|
||||
src = fetchurl {
|
||||
url = "http://mediaarea.net/download/source/mediainfo/${version}/mediainfo_${version}.tar.xz";
|
||||
sha256 = "0ivvmxx93aldfbms6wg46x9npghg304j2zxl5i70m710gybjr232";
|
||||
sha256 = "0d8mph9lbg2lw0ccg1la0kqhbisra8q9rzn195lncch5cia5zyg7";
|
||||
};
|
||||
|
||||
buildInputs = [ automake autoconf libtool pkgconfig libzen libmediainfo wxGTK desktop_file_utils libSM imagemagick ];
|
||||
nativeBuildInputs = [ autoreconfHook pkgconfig ];
|
||||
buildInputs = [ libzen libmediainfo wxGTK desktop_file_utils libSM
|
||||
imagemagick ];
|
||||
|
||||
sourceRoot = "./MediaInfo/Project/GNU/GUI/";
|
||||
|
||||
preConfigure = "sh autogen.sh";
|
||||
|
||||
meta = {
|
||||
meta = with stdenv.lib; {
|
||||
description = "Supplies technical and tag information about a video or audio file (GUI version)";
|
||||
longDescription = ''
|
||||
MediaInfo is a convenient unified display of the most relevant technical
|
||||
and tag data for video and audio files.
|
||||
'';
|
||||
homepage = http://mediaarea.net/;
|
||||
license = stdenv.lib.licenses.bsd2;
|
||||
platforms = stdenv.lib.platforms.linux;
|
||||
maintainers = [ stdenv.lib.maintainers.devhell ];
|
||||
license = licenses.bsd2;
|
||||
platforms = platforms.linux;
|
||||
maintainers = [ maintainers.devhell ];
|
||||
};
|
||||
}
|
||||
|
@ -1,19 +1,19 @@
|
||||
{ stdenv, fetchurl, automake, autoconf, libtool, pkgconfig, libzen, libmediainfo, zlib }:
|
||||
{ stdenv, fetchurl, autoreconfHook, pkgconfig, libzen, libmediainfo, zlib }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
version = "0.7.82";
|
||||
version = "0.7.83";
|
||||
name = "mediainfo-${version}";
|
||||
src = fetchurl {
|
||||
url = "http://mediaarea.net/download/source/mediainfo/${version}/mediainfo_${version}.tar.xz";
|
||||
sha256 = "0ivvmxx93aldfbms6wg46x9npghg304j2zxl5i70m710gybjr232";
|
||||
sha256 = "0d8mph9lbg2lw0ccg1la0kqhbisra8q9rzn195lncch5cia5zyg7";
|
||||
};
|
||||
|
||||
buildInputs = [ automake autoconf libtool pkgconfig libzen libmediainfo zlib ];
|
||||
nativeBuildInputs = [ autoreconfHook pkgconfig ];
|
||||
buildInputs = [ libzen libmediainfo zlib ];
|
||||
|
||||
sourceRoot = "./MediaInfo/Project/GNU/CLI/";
|
||||
|
||||
configureFlags = [ "--with-libmediainfo=${libmediainfo}" ];
|
||||
preConfigure = "sh autogen.sh";
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "Supplies technical and tag information about a video or audio file";
|
||||
|
@ -1,7 +1,7 @@
|
||||
From 73ff28c3ee5b737303871268a5487db0fcffc0f6 Mon Sep 17 00:00:00 2001
|
||||
From 0be3198cccf753226758684955f49a32d8d920c0 Mon Sep 17 00:00:00 2001
|
||||
From: Nikolay Amiantov <ab@fmap.me>
|
||||
Date: Wed, 17 Feb 2016 14:37:31 +0300
|
||||
Subject: [PATCH 1/2] Don't use static library
|
||||
Subject: [PATCH] Don't use static library
|
||||
|
||||
---
|
||||
octoprint_m3dfio/__init__.py | 67 +-----------------------------------------
|
||||
@ -9,23 +9,23 @@ Subject: [PATCH 1/2] Don't use static library
|
||||
2 files changed, 5 insertions(+), 68 deletions(-)
|
||||
|
||||
diff --git a/octoprint_m3dfio/__init__.py b/octoprint_m3dfio/__init__.py
|
||||
index 5e5369b..9f59768 100644
|
||||
index a2ca533..43f178a 100644
|
||||
--- a/octoprint_m3dfio/__init__.py
|
||||
+++ b/octoprint_m3dfio/__init__.py
|
||||
@@ -764,72 +764,7 @@ class M3DFioPlugin(
|
||||
@@ -793,72 +793,7 @@ class M3DFioPlugin(
|
||||
# Set file locations
|
||||
self.setFileLocations()
|
||||
|
||||
- # Check if running on Linux
|
||||
- if platform.uname()[0].startswith("Linux") :
|
||||
-
|
||||
- # Check if running on a Raspberry Pi
|
||||
- # Check if running on a Raspberry Pi 1
|
||||
- if platform.uname()[4].startswith("armv6l") and self.getCpuHardware() == "BCM2708" :
|
||||
-
|
||||
- # Set shared library
|
||||
- self.sharedLibrary = ctypes.cdll.LoadLibrary(self._basefolder.replace('\\', '/') + "/static/libraries/preprocessor_arm1176jzf-s.so")
|
||||
-
|
||||
- # Otherwise check if running on a Raspberry Pi 2
|
||||
- # Otherwise check if running on a Raspberry Pi 2 or Raspberry Pi 3
|
||||
- elif platform.uname()[4].startswith("armv7l") and self.getCpuHardware() == "BCM2709" :
|
||||
-
|
||||
- # Set shared library
|
||||
@ -87,7 +87,7 @@ index 5e5369b..9f59768 100644
|
||||
if self.sharedLibrary :
|
||||
|
||||
diff --git a/shared library source/Makefile b/shared library source/Makefile
|
||||
index 4062a91..89dab71 100644
|
||||
index 9d015a1..a24f134 100644
|
||||
--- a/shared library source/Makefile
|
||||
+++ b/shared library source/Makefile
|
||||
@@ -58,13 +58,15 @@ ifeq ($(TARGET_PLATFORM), OSX64)
|
||||
@ -109,5 +109,5 @@ index 4062a91..89dab71 100644
|
||||
clean:
|
||||
rm -f ../octoprint_m3dfio/static/libraries/$(PROG)
|
||||
--
|
||||
2.7.0
|
||||
2.7.1
|
||||
|
||||
|
@ -8,13 +8,13 @@ in {
|
||||
|
||||
m3d-fio = buildPlugin rec {
|
||||
name = "M3D-Fio-${version}";
|
||||
version = "0.28.2";
|
||||
version = "0.29";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "donovan6000";
|
||||
repo = "M3D-Fio";
|
||||
rev = "V${version}";
|
||||
sha256 = "1fwy6xmbid89rn7w7v779wb34gmfzc1fkggv3im1r7a7jrzph6nx";
|
||||
sha256 = "17jyr7qf9psq3xcckk1zjhaw0h8a0mh3v8lcv9vgqzni27kq9pnb";
|
||||
};
|
||||
|
||||
patches = [
|
||||
|
@ -8,7 +8,6 @@ buildPythonApplication rec {
|
||||
homepage = "http://ranger.nongnu.org/";
|
||||
license = stdenv.lib.licenses.gpl3;
|
||||
platforms = stdenv.lib.platforms.unix;
|
||||
maintainers = with stdenv.lib.maintainers; [ iyzsong ];
|
||||
};
|
||||
|
||||
src = fetchurl {
|
||||
|
@ -40,5 +40,6 @@ stdenv.mkDerivation rec {
|
||||
description = "An international dictionary supporting fuzzy and glob style matching";
|
||||
license = stdenv.lib.licenses.lgpl3;
|
||||
maintainers = with stdenv.lib.maintainers; [qknight];
|
||||
broken = true;
|
||||
};
|
||||
}
|
||||
|
@ -183,7 +183,7 @@ let
|
||||
|
||||
configurePhase = ''
|
||||
# Precompile .pyc files to prevent race conditions during build
|
||||
python -m compileall -q -f . || : # ignore errors
|
||||
python -m compileall -q -f . > /dev/null 2>&1 || : # ignore errors
|
||||
|
||||
# This is to ensure expansion of $out.
|
||||
libExecPath="${libExecPath}"
|
||||
|
@ -1,18 +1,18 @@
|
||||
# This file is autogenerated from update.sh in the parent directory.
|
||||
{
|
||||
beta = {
|
||||
sha256 = "1xc2npbc829nxria1j37kxyy95jkalkkphxgv24if0ibn62lrzd4";
|
||||
sha256bin64 = "1arm15g3vmm3zlvcql3qylw1fhrn5ddzl2v8mkpb3a251m425dsi";
|
||||
version = "49.0.2623.75";
|
||||
sha256 = "1lgpjnjhy3idha5b6wp31kdk6knic96dmajyrgn1701q3mq81g1i";
|
||||
sha256bin64 = "1yb3rk38zfgjzka0aim1xc4r0qaz2qkwaq06mjifpkszmfffhyd0";
|
||||
version = "50.0.2661.26";
|
||||
};
|
||||
dev = {
|
||||
sha256 = "04j0nyz20gi7vf1javbw06wrqpkfw6vg024i3wkgx42hzd6hjgw4";
|
||||
sha256bin64 = "12ff4q615rwakgpr9v84p55maasqb4vg61s89vgxrlsgqrmkahg4";
|
||||
version = "50.0.2661.11";
|
||||
sha256 = "0z9m1mv6pv43y3ccd0nzqg5f9q8qxc8mlmy9y3dc9kqpvmqggnvp";
|
||||
sha256bin64 = "0khsxci970vclfg24b7m8w1jqfkv5rzswgwa62b4r7jzrglx1azj";
|
||||
version = "50.0.2661.18";
|
||||
};
|
||||
stable = {
|
||||
sha256 = "1xc2npbc829nxria1j37kxyy95jkalkkphxgv24if0ibn62lrzd4";
|
||||
sha256bin64 = "01qi5jmlmdpy6icc4y51bn5a063mxrnkncg3pbmbl4r02vqca5jh";
|
||||
version = "49.0.2623.75";
|
||||
sha256 = "0kbph3l964bh7cb9yf8nydjaxa20yf8ls5a2vzsj8phz7n20z3f9";
|
||||
sha256bin64 = "1k6nhccdqzzzicwi07nldqfsdlic65i2xfyb7dbasbbg9zl3s9yw";
|
||||
version = "49.0.2623.87";
|
||||
};
|
||||
}
|
||||
|
@ -1,3 +1,4 @@
|
||||
#!/bin/sh -e
|
||||
cd "$(dirname "$0")"
|
||||
sp="$(nix-build -Q --no-out-link source/update.nix -A update)"
|
||||
cat "$sp" > source/sources.nix
|
||||
|
@ -4,185 +4,187 @@
|
||||
# ruby generate_sources.rb > sources.nix
|
||||
|
||||
{
|
||||
version = "44.0.2";
|
||||
version = "45.0";
|
||||
sources = [
|
||||
{ locale = "ach"; arch = "linux-i686"; sha256 = "2d0ab9fba584576d67ccb600339efeb5ad7aac1629b2d7865e121825b1a5a6d5"; }
|
||||
{ locale = "ach"; arch = "linux-x86_64"; sha256 = "188b9aab64ab1beda84dbe7b36d899210472a3e445dd827b64ca7083ae3c0b32"; }
|
||||
{ locale = "af"; arch = "linux-i686"; sha256 = "e6b5fb28e5ad03240f0e156c81db1df16bfaf99a946ffab9672c06d8561de9c3"; }
|
||||
{ locale = "af"; arch = "linux-x86_64"; sha256 = "c2856308c9e87bf82f621c5d4c96e9c5a70e5ebb86a8e4ba8ecb4d08c1ae98ec"; }
|
||||
{ locale = "an"; arch = "linux-i686"; sha256 = "f138b17a230e9b42b334d3900bebf23156fe1dec1f4ec75f9a3b94348523e241"; }
|
||||
{ locale = "an"; arch = "linux-x86_64"; sha256 = "82d24b07dc8d887837e8fbd610c2feb1ff4975917d8a19836ec0d0db56522de8"; }
|
||||
{ locale = "ar"; arch = "linux-i686"; sha256 = "b530e58161331bff3222083298ddc5af0055c6b3337b58b1a4eb1d5d4e348d62"; }
|
||||
{ locale = "ar"; arch = "linux-x86_64"; sha256 = "67c0e4ce7dfe54d0e4fedb168342ea86a82458e2d3ce6aca78b4497f4e813bfd"; }
|
||||
{ locale = "as"; arch = "linux-i686"; sha256 = "f17e991e97e85b981c3191a0becad6df457a29b7042d31a667fd227dadc24e80"; }
|
||||
{ locale = "as"; arch = "linux-x86_64"; sha256 = "2d955443b785a65d2f9f914232d521aeb9082b4dead8fedc89cfa29329ab8e2a"; }
|
||||
{ locale = "ast"; arch = "linux-i686"; sha256 = "c9e2784047b58eddfd72c1e56964eea8ac098240436d029665bc940c7b8d8f8d"; }
|
||||
{ locale = "ast"; arch = "linux-x86_64"; sha256 = "4bd5cc7c34f0a1fc1e2e899942c4ebec6bdab2fbd9e3d331ecc0c67a6f8c16e4"; }
|
||||
{ locale = "az"; arch = "linux-i686"; sha256 = "1789f6c5524314df239e4b4beb677adf48ce926a097128e053b352067d13016f"; }
|
||||
{ locale = "az"; arch = "linux-x86_64"; sha256 = "4881ccb7521512b4275faa2598efda6bbcc3d7838b6200e79c8fcae358d32c23"; }
|
||||
{ locale = "be"; arch = "linux-i686"; sha256 = "e9e31e92e0732188f6c4494023de260e5b64e97c56ff07857b290355c50e25f4"; }
|
||||
{ locale = "be"; arch = "linux-x86_64"; sha256 = "00ef0cea013cdb8606d8786bb5a21e502a6054ab57b2fad4d24161c47768f418"; }
|
||||
{ locale = "bg"; arch = "linux-i686"; sha256 = "6428fa1d4f2bd0b703f207a1571e425f8076438954f955f60c0e8c1525743823"; }
|
||||
{ locale = "bg"; arch = "linux-x86_64"; sha256 = "fc156d3d76582c95eb6a0a7ee88dbdbd6c99d46ca42b011e1d789b0552bb5885"; }
|
||||
{ locale = "bn-BD"; arch = "linux-i686"; sha256 = "d0b69158e5ce85eec29dc70c4942bfc76eaf2d8e3359c45de5783d39fe1ccaf0"; }
|
||||
{ locale = "bn-BD"; arch = "linux-x86_64"; sha256 = "928575b759e4ae89d3e5ee475ffa18c69e945846981102d540de01c9bd87582e"; }
|
||||
{ locale = "bn-IN"; arch = "linux-i686"; sha256 = "a92a902e4380ddda37b8e70922e91ee029d47f866adea53220dd76182c52b596"; }
|
||||
{ locale = "bn-IN"; arch = "linux-x86_64"; sha256 = "022b9ff7141cd89df35477d357df74556bc4a24639141d21111eccfbf8e2f98c"; }
|
||||
{ locale = "br"; arch = "linux-i686"; sha256 = "c398c00b98edcaa2618363637075ccf749a4d3567dfdae070b4b0cbe23832f56"; }
|
||||
{ locale = "br"; arch = "linux-x86_64"; sha256 = "60f471fdf1b71072751396049f12a198c73d11892ec69fc142f925a12c6515f4"; }
|
||||
{ locale = "bs"; arch = "linux-i686"; sha256 = "d9e3c1b5c94ad207071cea86295ef3f98d4bd9201e896f6b9d67a2e475ea2898"; }
|
||||
{ locale = "bs"; arch = "linux-x86_64"; sha256 = "2ea3bb1c14a849b5039b633963687629839174ea886d3f8314f67eddafa2b16b"; }
|
||||
{ locale = "ca"; arch = "linux-i686"; sha256 = "bf1c1c3aaa900d66c4684cf48623bb0c9e0313cd919ad0e67e8a2e3ca5987aa6"; }
|
||||
{ locale = "ca"; arch = "linux-x86_64"; sha256 = "30c0217722c599ed8fc0e713e0b763a01dc0da37dc2f290a2a4d02cb2a86b6a3"; }
|
||||
{ locale = "cs"; arch = "linux-i686"; sha256 = "5ebd809827cdc85da0e6c973855c60426ab98e2cb898c030acd403577d3bb78a"; }
|
||||
{ locale = "cs"; arch = "linux-x86_64"; sha256 = "a1d55b7c54fd7eb89bcf5dbdadcaea0f5d2da7110a090c424c52a55ae23150f2"; }
|
||||
{ locale = "cy"; arch = "linux-i686"; sha256 = "55df045619bbe01af6f33c6cd563d6097b9c9023ab9133fa7def0800cc9aec83"; }
|
||||
{ locale = "cy"; arch = "linux-x86_64"; sha256 = "2ddb8bcd515aad4ddb029cf4e5c49e771aa1da14394924c4ec532c5125b7ca7b"; }
|
||||
{ locale = "da"; arch = "linux-i686"; sha256 = "b322bef3e95b24337f294b2786fc5a819d954adb43f98dee69674d41fd234b5c"; }
|
||||
{ locale = "da"; arch = "linux-x86_64"; sha256 = "3e5164351808ef2f8f4e9cea6bb1121c4d3394de56536d17869a56df3b783d3b"; }
|
||||
{ locale = "de"; arch = "linux-i686"; sha256 = "a404bf7c19dbc65adea8872b8bd080a17417bc0f1ffa3015513d86750b2903a9"; }
|
||||
{ locale = "de"; arch = "linux-x86_64"; sha256 = "3590e100bf84f2734d1b3c81508d8fa137fd100bdd1e764ae5da1f88602d5b9d"; }
|
||||
{ locale = "dsb"; arch = "linux-i686"; sha256 = "c4be1a5cc431f3aeb26694bfd0749da0dfc85c119f75b551e69083a384042833"; }
|
||||
{ locale = "dsb"; arch = "linux-x86_64"; sha256 = "36f451bb07af47aff7c930a2810ef628e3382f92560efbe396133735275f7075"; }
|
||||
{ locale = "el"; arch = "linux-i686"; sha256 = "736ee0dffe7c5dc0d5abc7755a83e29da718901252034ee503775fc3f11e31c1"; }
|
||||
{ locale = "el"; arch = "linux-x86_64"; sha256 = "1638e1fd69d1887bbfd2de95ffe7945f52934055f8e15eb919d9ccac930959e0"; }
|
||||
{ locale = "en-GB"; arch = "linux-i686"; sha256 = "1f9c8404fd01c1cac530c0e2b1fb488a2b4f7a02d8c2f0e568e0db050dc66f18"; }
|
||||
{ locale = "en-GB"; arch = "linux-x86_64"; sha256 = "4f7491b919ca7a0563cd3444bd4a1abf48a4448ccdd743c5b5eb58584e5b1e94"; }
|
||||
{ locale = "en-US"; arch = "linux-i686"; sha256 = "abe3e5d23cf557ee81e7064d6d1b2d3a8f6b6e1a5f80947fc7229f0b2b631380"; }
|
||||
{ locale = "en-US"; arch = "linux-x86_64"; sha256 = "a4b439e28274feb4bf5494ba180143e6b8617428a63d11fa2fd0e650dda41908"; }
|
||||
{ locale = "en-ZA"; arch = "linux-i686"; sha256 = "9de2931e926e0b0667f6916283a7ef019d1c067b29d6bd5b4b903fdf87ad9c17"; }
|
||||
{ locale = "en-ZA"; arch = "linux-x86_64"; sha256 = "6ada8b6a9a2b19f9515a1aaf63ad66cf35a1ab5491fc8ffc86a17fe1378ab553"; }
|
||||
{ locale = "eo"; arch = "linux-i686"; sha256 = "92db868c78ae49a8275d217327ca442ef6733b955ddc5b4940183c9a596da3de"; }
|
||||
{ locale = "eo"; arch = "linux-x86_64"; sha256 = "2e8267fb43ba6b7636c98fe386c35ddb9032265565844dcbc90f3dba18a2bc05"; }
|
||||
{ locale = "es-AR"; arch = "linux-i686"; sha256 = "6343bacb35c929c8f7c5cb554aa0e5f67100032c71bc24203b663409e45cbf40"; }
|
||||
{ locale = "es-AR"; arch = "linux-x86_64"; sha256 = "0b5a07e745aab7d1e0bb8bcf0afe12ab71a88679024ef6e9edd53bab7518df7f"; }
|
||||
{ locale = "es-CL"; arch = "linux-i686"; sha256 = "7288765c2222624e69b367ab83686c21a348330a8f26eff7c6ea8dca03a3aabf"; }
|
||||
{ locale = "es-CL"; arch = "linux-x86_64"; sha256 = "543778259a5d7c4198c8125b72f9e66e9ae98b398bc3b07ac0e103f07ab7ef2c"; }
|
||||
{ locale = "es-ES"; arch = "linux-i686"; sha256 = "c1aec91c45591eaa6df8b15ba13ea58d15ab2cce20361719ea2549896d26ea1f"; }
|
||||
{ locale = "es-ES"; arch = "linux-x86_64"; sha256 = "ee3b11c04ca280ff77e3cedd3dc2040b7b1722384639c02507bedc927c7b558b"; }
|
||||
{ locale = "es-MX"; arch = "linux-i686"; sha256 = "8adb9435f57da461150d8b283161760683e46b068eaade916119c2240f0a9c66"; }
|
||||
{ locale = "es-MX"; arch = "linux-x86_64"; sha256 = "b624c4345794a22a7c63b4f6b7a1ed6f52472fa5cba4173f69f3c12ee3b4cbe1"; }
|
||||
{ locale = "et"; arch = "linux-i686"; sha256 = "efb6c6753e8a9d8174e8bd1ae7cbf3f75b479e5da3ebe07dbbbb4ac140e60eb9"; }
|
||||
{ locale = "et"; arch = "linux-x86_64"; sha256 = "c84bb0597fa14e8a7a2d086f24d71ad2f3c04b3fca794b76977d1a4cb1aea479"; }
|
||||
{ locale = "eu"; arch = "linux-i686"; sha256 = "d116553c492ec41b811befb35393553b9174da3960034ce5106558befbf9728a"; }
|
||||
{ locale = "eu"; arch = "linux-x86_64"; sha256 = "16c922f152d5e14c46277e23d30cfe0792c8e9828b8862df603aeff242c7ec96"; }
|
||||
{ locale = "fa"; arch = "linux-i686"; sha256 = "744ad5a8cb4473d502d1db50b6bf343e23525927b3a982677dd8a68aea111b3f"; }
|
||||
{ locale = "fa"; arch = "linux-x86_64"; sha256 = "968fea07386b96215af400524062447245fa038766caf0b133c932db6f105077"; }
|
||||
{ locale = "ff"; arch = "linux-i686"; sha256 = "0fdf06aa42cbd4d031fdad74d8ac9d6056708fc783180d72c5806cc45c5b8eec"; }
|
||||
{ locale = "ff"; arch = "linux-x86_64"; sha256 = "bfb65ec25192288b2f04f94bdcc9ce36a40a27c8a1f35f728f932c071b6756ce"; }
|
||||
{ locale = "fi"; arch = "linux-i686"; sha256 = "334c121cbd9a1469996ebc5535d838e3fecfcc419861cc70d5cdeb0cd584d5f5"; }
|
||||
{ locale = "fi"; arch = "linux-x86_64"; sha256 = "44883a9b819a24bef03c3322681e1b9f3fe61779e382a740900dfc16a5f7db06"; }
|
||||
{ locale = "fr"; arch = "linux-i686"; sha256 = "cd196dff293aabc39156e82deb5163e139a4b0173de92a2ba72df49bb4b0afe5"; }
|
||||
{ locale = "fr"; arch = "linux-x86_64"; sha256 = "77da207f48d7af908cb5e95767e61a2e6c04f1851e55430820ff8207da172361"; }
|
||||
{ locale = "fy-NL"; arch = "linux-i686"; sha256 = "39e8da569f2a6f67abac7782a938a906c810f8474fbb2c799dd26fb846c82707"; }
|
||||
{ locale = "fy-NL"; arch = "linux-x86_64"; sha256 = "44dbf644b3f96dd607e5c88eece8aaafd61ec42af9f7ba4c6ed06a272a45fa4a"; }
|
||||
{ locale = "ga-IE"; arch = "linux-i686"; sha256 = "783532acf3967f94232f42c9cd559e288db499c0ff74776543b59d71d281a74c"; }
|
||||
{ locale = "ga-IE"; arch = "linux-x86_64"; sha256 = "39509082dbeb935f481e95d6038943a17c5053f7001fbf71bdb0edea536adb9d"; }
|
||||
{ locale = "gd"; arch = "linux-i686"; sha256 = "dd73e1bf159f3d437d69306c5daeb7a06c951d6c5841315363c354f9aa1570c5"; }
|
||||
{ locale = "gd"; arch = "linux-x86_64"; sha256 = "a2fb4aa1ba4a50bdb308e8c12090158c5e040ae85617171786e93852d4f48de5"; }
|
||||
{ locale = "gl"; arch = "linux-i686"; sha256 = "8ac3fd13e0f173aa1dfffd44c91511bd457c6a751daa978fbaae3f9901427cae"; }
|
||||
{ locale = "gl"; arch = "linux-x86_64"; sha256 = "cf52827a18b400f8c3e426b00e2984bd5835014f3e97e9c1279f0b285ca5a5dc"; }
|
||||
{ locale = "gu-IN"; arch = "linux-i686"; sha256 = "1ef44836085733b52c338fdcaea78e7df5f78a0f0f470b9de3ac7b13e3ec4844"; }
|
||||
{ locale = "gu-IN"; arch = "linux-x86_64"; sha256 = "374280216142897536979fff6f876253caaf0eeb12a3d12d17b013e7ab3ba722"; }
|
||||
{ locale = "he"; arch = "linux-i686"; sha256 = "1dcca6ae796da1a1317a4f094f06369242cdf7c0f8ce3df7c9fabd22910996ab"; }
|
||||
{ locale = "he"; arch = "linux-x86_64"; sha256 = "e032513a673ba091207996b8a6a6b9da6ef05d5c080a93ed326fc4ac4ca6976a"; }
|
||||
{ locale = "hi-IN"; arch = "linux-i686"; sha256 = "2057287b406513a332d162f03f75ef7ff4c83834809163c8b870d9e5ab3f8cdf"; }
|
||||
{ locale = "hi-IN"; arch = "linux-x86_64"; sha256 = "8d19043416484c382fc9caec5dff4914fbc28feefd41a089591ef2b21f822a43"; }
|
||||
{ locale = "hr"; arch = "linux-i686"; sha256 = "995a6dd027a5a6b2123c62b74f524db53940e2c8fa6c7254dc41dca236f7889b"; }
|
||||
{ locale = "hr"; arch = "linux-x86_64"; sha256 = "4410e7d1cbce028de083b82ee68f442d27c2219544ec1be72ef2c274cb7c445a"; }
|
||||
{ locale = "hsb"; arch = "linux-i686"; sha256 = "0dcb0de11e35475cab33e11b08b88ff766915d7d98ceeb466a0fee90883ebaed"; }
|
||||
{ locale = "hsb"; arch = "linux-x86_64"; sha256 = "1695167eea386aec4fca23bb0bf4e5b83876a22f8c584f4e81886be229e9a43b"; }
|
||||
{ locale = "hu"; arch = "linux-i686"; sha256 = "31026a26c9fa9b3777c2f9dd1d55da7e0204e4d98586f887b67588ccb86c3843"; }
|
||||
{ locale = "hu"; arch = "linux-x86_64"; sha256 = "82d8fbe932765f100a116b6d572035297be2f027b4f0e0ba84ef88cb4b651000"; }
|
||||
{ locale = "hy-AM"; arch = "linux-i686"; sha256 = "864c112f13628bd9bc715a6a405dc92c3f8027b0e505722d819b84775fb27066"; }
|
||||
{ locale = "hy-AM"; arch = "linux-x86_64"; sha256 = "dddd71e651056c373225baab9bb190810f8ed6849abfa76587fcd05cc5060d89"; }
|
||||
{ locale = "id"; arch = "linux-i686"; sha256 = "3425906d6513d3e06286b9b3c62c30d702a47a3d7a31638a58f926e2fa4a254f"; }
|
||||
{ locale = "id"; arch = "linux-x86_64"; sha256 = "095d970add8bf54fc2fb2581532013f4792f648b58fa12d49a6a859f26a0e579"; }
|
||||
{ locale = "is"; arch = "linux-i686"; sha256 = "f3687eb0e7ce24e14621345543abdf2b92435466ededc98a4ec4a117c4593c3c"; }
|
||||
{ locale = "is"; arch = "linux-x86_64"; sha256 = "dbac8774c64e6c978a3eb900cf61d85a210d0c39c28df4a21e4295ba5febd0ea"; }
|
||||
{ locale = "it"; arch = "linux-i686"; sha256 = "62091c6f5214f4717462d9e2f6bacd7f30417b7e714de3fdec6fc2f703970eb7"; }
|
||||
{ locale = "it"; arch = "linux-x86_64"; sha256 = "480b9ffd4326a9a2e2002510027a15d4fdaf8ba1ea023ee6e55b2aa78b119a6c"; }
|
||||
{ locale = "ja"; arch = "linux-i686"; sha256 = "ef143bf31fa67cab3ccafc0083d81ffa8997e3365312b12312623755eb24f48d"; }
|
||||
{ locale = "ja"; arch = "linux-x86_64"; sha256 = "f74808de8fb999dceb067b3fda64e891c37bde7190e9eff68f1693f5b5feae0d"; }
|
||||
{ locale = "kk"; arch = "linux-i686"; sha256 = "a532d49011b632aa83f6b881b39c74bcb66fab0237e3e4f8682445aa0a053d4c"; }
|
||||
{ locale = "kk"; arch = "linux-x86_64"; sha256 = "7f32ee329e8281e89472b092248a26e1d38089bdc9830d2d1d0b1af8230ca20b"; }
|
||||
{ locale = "km"; arch = "linux-i686"; sha256 = "34ecf596b0870aca2db30513ef5d6522d86caf70fce38b23a7bff08c55551b69"; }
|
||||
{ locale = "km"; arch = "linux-x86_64"; sha256 = "6e7efd621e941674038887d1e8d90c36d0ac06a095386caa01d228494228be14"; }
|
||||
{ locale = "kn"; arch = "linux-i686"; sha256 = "062ebd6b27ef9094e65e60ad64be30470ed58eb2d92f247a87a781b97e0654d9"; }
|
||||
{ locale = "kn"; arch = "linux-x86_64"; sha256 = "e88428b1cd2e1919336dda303d8795bd02e4967ba8c6d2830205f68fa4c528d0"; }
|
||||
{ locale = "ko"; arch = "linux-i686"; sha256 = "6c43a7f86f908cccc7ca3a7ed45f95ea84b69e4a21ff1e1d58136ea19bf7bd2c"; }
|
||||
{ locale = "ko"; arch = "linux-x86_64"; sha256 = "9db2bfd818d82ee0c9bc35b6fd651ad8fe80f8d73d51326fde25fc4c2aaa295c"; }
|
||||
{ locale = "lij"; arch = "linux-i686"; sha256 = "be87fc2a6863f33f9ff9ad2990e1e6425a65002f2ee411a254dde80cbd5a31c4"; }
|
||||
{ locale = "lij"; arch = "linux-x86_64"; sha256 = "9cfb239df8195cfa355bc8ddaf63accd865de21086c5bc3180b2ad9886445f3e"; }
|
||||
{ locale = "lt"; arch = "linux-i686"; sha256 = "11e18e6baac8f31c62a301e8ee51056c707ca47332fbeb6f3492e8eaffa25c57"; }
|
||||
{ locale = "lt"; arch = "linux-x86_64"; sha256 = "3bb4dca607abc4e08300dfa61667d2f2b06661f47cf0029d078e14fa4686d4b8"; }
|
||||
{ locale = "lv"; arch = "linux-i686"; sha256 = "bc484992f230229ab4ab6d47fab9664f43341ad1202010f5dea91d2d78200c85"; }
|
||||
{ locale = "lv"; arch = "linux-x86_64"; sha256 = "42bdc60ad7edf2ed3e82f765abfc3815f98095adc2988f8d809a8834eada63ef"; }
|
||||
{ locale = "mai"; arch = "linux-i686"; sha256 = "628f0685185f91e695af5ce9a536d9263305cfd747683ef33dccd0c90f3e1bfb"; }
|
||||
{ locale = "mai"; arch = "linux-x86_64"; sha256 = "688c33b159b4fcd23fb4c6d3a7f845d03929b4a8b02eaa2ebb93682b396c73a2"; }
|
||||
{ locale = "mk"; arch = "linux-i686"; sha256 = "a59b2a8ee82513ef78f3509afc4dba75ec3128f0f42c657bbbfbad117b981b36"; }
|
||||
{ locale = "mk"; arch = "linux-x86_64"; sha256 = "3058ff9ac581a65ee0713fe3707f8b98eace0f833b8e7b901fa397538e9503f0"; }
|
||||
{ locale = "ml"; arch = "linux-i686"; sha256 = "43c80f530ad3eaf7c138e16b23b9eb32afc1f774374fe213f580cf68e4d0e245"; }
|
||||
{ locale = "ml"; arch = "linux-x86_64"; sha256 = "43f061317f9eb5a174cd13539bb3972535b552113d38c05d9888e7a37346ef22"; }
|
||||
{ locale = "mr"; arch = "linux-i686"; sha256 = "30c0ee68eadffcc95271f1e7c1c1b0151ee21ca3744fad61a723a9a6bfb751b0"; }
|
||||
{ locale = "mr"; arch = "linux-x86_64"; sha256 = "d9dd27af41ca021f323499be556d208f69b706aff079c8d7392c7f19092705d8"; }
|
||||
{ locale = "ms"; arch = "linux-i686"; sha256 = "adb5e1968c66378ff9b59dc57c00a2c953ad1f54f67e1bc40abc499bcf79653f"; }
|
||||
{ locale = "ms"; arch = "linux-x86_64"; sha256 = "3e4b43a88b3aa2887673e1962fa4ccbd895640113e683c849a3c9733677e1fe1"; }
|
||||
{ locale = "nb-NO"; arch = "linux-i686"; sha256 = "f4be0cff21abdc80fba10db2bf781fecfb4e503c70cb95a8b083c5f7123f8dc8"; }
|
||||
{ locale = "nb-NO"; arch = "linux-x86_64"; sha256 = "e9b191268a6694805a5ba86559e798c9a4e29eae39a7f64dab92a925fb31611d"; }
|
||||
{ locale = "nl"; arch = "linux-i686"; sha256 = "581c73084993be0bf1ab23bb468674d062fb98e99573d823e977a263b4cfaa91"; }
|
||||
{ locale = "nl"; arch = "linux-x86_64"; sha256 = "3fd8929341ae048187379b7648ec8e008ace53e4a5f0af1421ecabcb5ad3bf61"; }
|
||||
{ locale = "nn-NO"; arch = "linux-i686"; sha256 = "b2104d5895a727903f6a273888989887542ad9e61c998cc651bb24d64efc6cfd"; }
|
||||
{ locale = "nn-NO"; arch = "linux-x86_64"; sha256 = "1bf582e66da985cbb01c22f865fc291196c55b14d2f84516f68f184ea842a664"; }
|
||||
{ locale = "or"; arch = "linux-i686"; sha256 = "1ffbc776fb3ae030e6dedea009b71873bff57f9294e63331404b53e1ba36499c"; }
|
||||
{ locale = "or"; arch = "linux-x86_64"; sha256 = "b988f433a238b2cb3766042d911a1f002a5f91a47dbed5b937f70cb59ed060d2"; }
|
||||
{ locale = "pa-IN"; arch = "linux-i686"; sha256 = "6ba4941b5bef7b860194114c2704662a42f9f3007a0b634662e42f38c0aa601a"; }
|
||||
{ locale = "pa-IN"; arch = "linux-x86_64"; sha256 = "0d9920d4b358cfdcf8cdf4b2d2e07ceb191709eee9dbae4c59f9dbfcfffbf0f5"; }
|
||||
{ locale = "pl"; arch = "linux-i686"; sha256 = "e080fb35bf49f9eb2fc39a435a188164eedf2ea7a24f8e950d62567620a91954"; }
|
||||
{ locale = "pl"; arch = "linux-x86_64"; sha256 = "cc37624f0c1e82d2de2048129f58e85fe8a518ee4b0ebdbee0a5205517602cf9"; }
|
||||
{ locale = "pt-BR"; arch = "linux-i686"; sha256 = "d19bf65889c686cbb284e697e8ba1315b6ec004b57096725fb576898ef105346"; }
|
||||
{ locale = "pt-BR"; arch = "linux-x86_64"; sha256 = "0d00d2d0bbc6045117c4df93045f70ebe0468e004504a06dfc508bfca6c6df1f"; }
|
||||
{ locale = "pt-PT"; arch = "linux-i686"; sha256 = "5225afadf2ea62792376dfda1d2b3533d986f1ee3a281781a5be294b8883ac8b"; }
|
||||
{ locale = "pt-PT"; arch = "linux-x86_64"; sha256 = "0c1d841ba80e32d51d41c99b551e68c6b591e97af4ccee4d7c7d6ef03f8707ea"; }
|
||||
{ locale = "rm"; arch = "linux-i686"; sha256 = "2cc9200a132c967a7158f5422dad8f4b2d90dfc7e46ada305daebabc44806de8"; }
|
||||
{ locale = "rm"; arch = "linux-x86_64"; sha256 = "0dff628773d4f2e24b767501b9c768586a27e82c0e8b259ef1cc676985ad0125"; }
|
||||
{ locale = "ro"; arch = "linux-i686"; sha256 = "500142fe612fe6144a14ebaad486da04050940a755e205297473c1be6b9dc428"; }
|
||||
{ locale = "ro"; arch = "linux-x86_64"; sha256 = "f3a57abec8553c8b9d8db9fb5600cd7b6e1189ebf0225df96608eaf2863e41b3"; }
|
||||
{ locale = "ru"; arch = "linux-i686"; sha256 = "1266ed09db881af90794bef049cdfee777d7179026de8c0de2931275f3f288e9"; }
|
||||
{ locale = "ru"; arch = "linux-x86_64"; sha256 = "0f1b44177633149aaa31574ba3cf343971bd4e11ac6b4bb92a5875b6a30a42af"; }
|
||||
{ locale = "si"; arch = "linux-i686"; sha256 = "e027afd86b00379c12e014b8d0d11a05811c598f53490edf7070e7acccbf0d79"; }
|
||||
{ locale = "si"; arch = "linux-x86_64"; sha256 = "518c19c5351a2c1bd05afe63e9d8c2a0be3a9cedccf7aa1d84d1af9de7ecf7fd"; }
|
||||
{ locale = "sk"; arch = "linux-i686"; sha256 = "e3dcda7406d00166a601b77fbdf0b84181ba5372f760eb08d5476fe9d219caef"; }
|
||||
{ locale = "sk"; arch = "linux-x86_64"; sha256 = "019c03ecd24f394b0ff76aff5cd9f0db017ffd3b8dd65388c4f5ee3188e77a6c"; }
|
||||
{ locale = "sl"; arch = "linux-i686"; sha256 = "a88391cc29643277f9d8c58a205ac959af825326b61c16361d4def6f7da31235"; }
|
||||
{ locale = "sl"; arch = "linux-x86_64"; sha256 = "fcf45e13a0bc543988495a83e5e96400707564d2ed4fcd0579219c999ee71e83"; }
|
||||
{ locale = "son"; arch = "linux-i686"; sha256 = "a75e273e01df51ffbe2c8666545f1e6f4d00af373d7aac08978947d7afc1e5f4"; }
|
||||
{ locale = "son"; arch = "linux-x86_64"; sha256 = "9f28df29d980e6c7467e99b2b81740cb078ce8e6896fe4e2a6b1473770e6bef5"; }
|
||||
{ locale = "sq"; arch = "linux-i686"; sha256 = "2243773d7d38608e17233e1d98e4fc1ca19f40f27a3e87557ad7fbd958c080ba"; }
|
||||
{ locale = "sq"; arch = "linux-x86_64"; sha256 = "c18faf9d8971c43db18fcc66329a85018a04e8cf4819c4843d826bc86414cadb"; }
|
||||
{ locale = "sr"; arch = "linux-i686"; sha256 = "0cd5e6a3910923aed9a88fafd95bc11263de7359c38685e209212339bb2f50dc"; }
|
||||
{ locale = "sr"; arch = "linux-x86_64"; sha256 = "1ec48c65323b15332932060ec5193908d89715736bd0abd88472dc05e639a62a"; }
|
||||
{ locale = "sv-SE"; arch = "linux-i686"; sha256 = "6718eb3e71a3d4f5487b80bbd784fd61422345f94d3271f6de6f6feab9e2f6da"; }
|
||||
{ locale = "sv-SE"; arch = "linux-x86_64"; sha256 = "5b356a6334d424b5e47ea4b1c32403a858ff5dc8727bbc0b2f72e6a29c9b625f"; }
|
||||
{ locale = "ta"; arch = "linux-i686"; sha256 = "fdb4e36497a61af9badb848a067eff4e4dada7dfffefbfe6bb7266ad89a8707a"; }
|
||||
{ locale = "ta"; arch = "linux-x86_64"; sha256 = "de5f0b871425412f9f261eff5b1abb3ddbd40f588647fd8e174e2d6c5ba17b90"; }
|
||||
{ locale = "te"; arch = "linux-i686"; sha256 = "0cc82774a46580c9e2f890848f705b1dc4effac197a902f9d244f0b6f6258650"; }
|
||||
{ locale = "te"; arch = "linux-x86_64"; sha256 = "65ceda67a572053dd4d9e15b9bd47c91364651736417414d4ca4a0a7ded9775a"; }
|
||||
{ locale = "th"; arch = "linux-i686"; sha256 = "1c0084ed26218713c4606ab073bf09de888051e9dcc49652a87fb58209a8c614"; }
|
||||
{ locale = "th"; arch = "linux-x86_64"; sha256 = "5a70e29d282961e27350d26cf164472fe51247db1d7d1228dca693423c32d0a6"; }
|
||||
{ locale = "tr"; arch = "linux-i686"; sha256 = "f7fa2029a36eda63544beebb6534fc2f8432c87d7a8d08d4c8927275e659b686"; }
|
||||
{ locale = "tr"; arch = "linux-x86_64"; sha256 = "1e3744f5908164e163818522fa902bd57edb62837b2b399983ea5a4ed487cda8"; }
|
||||
{ locale = "uk"; arch = "linux-i686"; sha256 = "0f465eda0f7e87eef88bc17b3e6868ad90a270e6993d327fecca532637442df4"; }
|
||||
{ locale = "uk"; arch = "linux-x86_64"; sha256 = "6530af36cfab509fff37519b435c7939110c000dbdd94000fe964283a14b1622"; }
|
||||
{ locale = "uz"; arch = "linux-i686"; sha256 = "7ee5997bcb4915c3907cee90e350e3bc2b67965975faecffa738a728cf2e12e3"; }
|
||||
{ locale = "uz"; arch = "linux-x86_64"; sha256 = "d7b34e36bcb423977a2a7667504c096730ca684c9f2e861b17e8f0174f5bb0d0"; }
|
||||
{ locale = "vi"; arch = "linux-i686"; sha256 = "e9497a8eed98ec34b31e3b1ec7086a4d219121f0edf21fd8f6a01599afa41f12"; }
|
||||
{ locale = "vi"; arch = "linux-x86_64"; sha256 = "b94fbaee83014b88490bf19cc37dbda87fb9260ed5879be3b688a2abbe709a87"; }
|
||||
{ locale = "xh"; arch = "linux-i686"; sha256 = "d5a86db6b9f3bb5162a86f976cbbc01f542a924c05729eb54a2c24dabc711065"; }
|
||||
{ locale = "xh"; arch = "linux-x86_64"; sha256 = "d765b2d324e89119fee522ad8972031c8727841c2fa2700d010be7d23633bbbc"; }
|
||||
{ locale = "zh-CN"; arch = "linux-i686"; sha256 = "fb3bbc44952207f42112c291dccb82f02fbd23bba7b54b06a1047809d2bb18d2"; }
|
||||
{ locale = "zh-CN"; arch = "linux-x86_64"; sha256 = "255d19959cb0e0efbcb2eeceb39b43bbb567ab2474af4da6675574a0110781e1"; }
|
||||
{ locale = "zh-TW"; arch = "linux-i686"; sha256 = "cfc90ac621dc57d7eb922c564aa3a7d5ad7f2aacc95196606d34cba7b7e30d1a"; }
|
||||
{ locale = "zh-TW"; arch = "linux-x86_64"; sha256 = "ff119be821acb8f99a485a60de506123c76a7a3a13ac678576248f97ff1ab882"; }
|
||||
{ locale = "ach"; arch = "linux-i686"; sha256 = "795f7db97ecbc58cf3b0f599375d5ce86eccdd1159aba8ea5523229efce84f0a"; }
|
||||
{ locale = "ach"; arch = "linux-x86_64"; sha256 = "b511f394a8f313fcb8993cc220698150cdf16e6ce962004cb1be768bd26042d8"; }
|
||||
{ locale = "af"; arch = "linux-i686"; sha256 = "dec09a59488c4e532b409be866560bd4b874fcd6400129a23ed7dc8b272949e3"; }
|
||||
{ locale = "af"; arch = "linux-x86_64"; sha256 = "b19f3bbcef86ea03dd99cd6f59cdb755c9d724a6c8d6c8d5480f333a73260ed2"; }
|
||||
{ locale = "an"; arch = "linux-i686"; sha256 = "c9ff3f690d42585f5dbaae7d62305efeebd093c4ffe751fe989cc9d237e0e761"; }
|
||||
{ locale = "an"; arch = "linux-x86_64"; sha256 = "0dc5385e1bf23e3fbd25c82d32742add279ea293311159d283c7e93eb6e73396"; }
|
||||
{ locale = "ar"; arch = "linux-i686"; sha256 = "fe690e7fb25d96b830fcd06a88c44118eb06644104c5ed74c69621c128f5dcd8"; }
|
||||
{ locale = "ar"; arch = "linux-x86_64"; sha256 = "06e7c7e4e37621d7d14e81e79da6a4d35025476f87ed95ed4bb11d6160ce8546"; }
|
||||
{ locale = "as"; arch = "linux-i686"; sha256 = "f1f1bde8406ecc4275425ef91579f82a49bb9bc33a4c1de95c770e89205dd001"; }
|
||||
{ locale = "as"; arch = "linux-x86_64"; sha256 = "e31171d2470713b8cc211e5a1193a89890588c7c537a4c0405aa8db4a41b8862"; }
|
||||
{ locale = "ast"; arch = "linux-i686"; sha256 = "9bdbbc47a1a31ac45cee3222b03b2fd9661e8e9685c672ca5b378abff1a60c76"; }
|
||||
{ locale = "ast"; arch = "linux-x86_64"; sha256 = "511d340af37b8909006a446de906503a7b0904379597df36f8072790de727fed"; }
|
||||
{ locale = "az"; arch = "linux-i686"; sha256 = "c9d43c61ef5677a70e19ea3ff7400a93b926aa72edddb793fcc4e502b7f77b91"; }
|
||||
{ locale = "az"; arch = "linux-x86_64"; sha256 = "6450e41e581f49a76fa4bb7e685b2010899608aaa5c58224eec679b56e9d9d32"; }
|
||||
{ locale = "be"; arch = "linux-i686"; sha256 = "eef6cb47db9c3909b813d01a78a7af439dccdd00c040e513c4e784ee537a2d38"; }
|
||||
{ locale = "be"; arch = "linux-x86_64"; sha256 = "f20a4da9edd845a43b7bf85b70e2a67f3a96a4db9c461d0b4b168f0a6f0a3a73"; }
|
||||
{ locale = "bg"; arch = "linux-i686"; sha256 = "3af1a3fb90685e819fad2c69daf11df29b01a97899045ba49a79588e9e5e2e01"; }
|
||||
{ locale = "bg"; arch = "linux-x86_64"; sha256 = "d3662db0b9417d68a423b31f9aac7d03c3eccba36bcc0ba9b84ccf194325e521"; }
|
||||
{ locale = "bn-BD"; arch = "linux-i686"; sha256 = "f867fbbf3dbfe06dc027592543700802270daf2956d45e921f968277e84e75bd"; }
|
||||
{ locale = "bn-BD"; arch = "linux-x86_64"; sha256 = "08fdde0f76553ca018efeb0e0fd439b42d6e13715aee680ee77435bda20f684f"; }
|
||||
{ locale = "bn-IN"; arch = "linux-i686"; sha256 = "dc3251e661966174be97c99aa2d332e9c605e99ce6526a0b69daa56e2266f6da"; }
|
||||
{ locale = "bn-IN"; arch = "linux-x86_64"; sha256 = "9558f4bfb37dfaf3915345702c22fc14c19721c9f283c9824fa30151a8c2065e"; }
|
||||
{ locale = "br"; arch = "linux-i686"; sha256 = "b3f51cf697aba530f13ed7207b3fdb4416272d7d4324147722c7c9cf3b336485"; }
|
||||
{ locale = "br"; arch = "linux-x86_64"; sha256 = "c5c6804ae9d730c32c7b97219cbfef63be0ee28b8a3eacc3f21291f228aa0624"; }
|
||||
{ locale = "bs"; arch = "linux-i686"; sha256 = "099d3845b98baef27225f77b56663f2e290ec75ab0569cea10722c84a779c829"; }
|
||||
{ locale = "bs"; arch = "linux-x86_64"; sha256 = "d7688be752320867c31de94363f7c8b6321b1d6d11f57b6295e4e58db281fc0f"; }
|
||||
{ locale = "ca"; arch = "linux-i686"; sha256 = "ec55163d35d4b3e9f5c0a000b389e91aa4c6d8ea0df800f69feaa26840ac5f6e"; }
|
||||
{ locale = "ca"; arch = "linux-x86_64"; sha256 = "79c99f2dee213d7316060134562db67bbb377e6f44642869e25bd6b7533df464"; }
|
||||
{ locale = "cs"; arch = "linux-i686"; sha256 = "a2833f106cf999416eed734352873e99d4ac0dce6ebf541d9219e9eaee250604"; }
|
||||
{ locale = "cs"; arch = "linux-x86_64"; sha256 = "ccc6858d55578a0caa8edc3cd6b44e876266063a08b22c6aa82f6b975ba9265b"; }
|
||||
{ locale = "cy"; arch = "linux-i686"; sha256 = "0d3b8e10346653b658f31fffc806d3067e1215ce02ba737c38f5a90acf9ddce9"; }
|
||||
{ locale = "cy"; arch = "linux-x86_64"; sha256 = "0fe6206618a90d50927954dfff9de0653d0780de472c9be9eef7b679e8acbbde"; }
|
||||
{ locale = "da"; arch = "linux-i686"; sha256 = "c4998f1ac1b80621fc8172d300c473739bd1563fa9eda1560919d359bae0ba81"; }
|
||||
{ locale = "da"; arch = "linux-x86_64"; sha256 = "adc7129bb0992adc693577eb4846adad01bcf120f740b4fdc5f06f3dd5997a77"; }
|
||||
{ locale = "de"; arch = "linux-i686"; sha256 = "a19ce1edec32fc3f54444a52de13fbf5d5a9838782b288f39069a6aaa8c0bdc2"; }
|
||||
{ locale = "de"; arch = "linux-x86_64"; sha256 = "524c4aab74a14f97b42c830f1bca53d8dfcf53102873f47fbdfef21e6fe05170"; }
|
||||
{ locale = "dsb"; arch = "linux-i686"; sha256 = "965326f3f6fbdd3fe3aeb0d82113b86537db0b70e6eb93aeab154793660a84f4"; }
|
||||
{ locale = "dsb"; arch = "linux-x86_64"; sha256 = "a750854356b464d898a02ee82eeecfebca13b4217d3c0e427da8635210b3437e"; }
|
||||
{ locale = "el"; arch = "linux-i686"; sha256 = "fb72a501b2358fb803b0902d7a7c56f20a662d073451d22d85a0e75f9e62a5b4"; }
|
||||
{ locale = "el"; arch = "linux-x86_64"; sha256 = "cf72cc228f61bdcb94a5f7c508312e1b7c03f9e0828547ac18c08d1020ca9065"; }
|
||||
{ locale = "en-GB"; arch = "linux-i686"; sha256 = "bd4ad892ce6cc1be8d460bb1306a1f727abfaf4868155d9bab8508181c9f9796"; }
|
||||
{ locale = "en-GB"; arch = "linux-x86_64"; sha256 = "9f28b5f905b9a7118d7f50ea93c4ce75bf447f052a1ef9daad8a70cf9cd48e95"; }
|
||||
{ locale = "en-US"; arch = "linux-i686"; sha256 = "310e16225f31ffcda25a70eda0defe2d361946c2705f39f4694059208d9f5223"; }
|
||||
{ locale = "en-US"; arch = "linux-x86_64"; sha256 = "d86c67b5d12fe7a0e219f823a47644b952cb3ced105fbe428bc89e2a728a9988"; }
|
||||
{ locale = "en-ZA"; arch = "linux-i686"; sha256 = "55ee09437fe8c2492a5f55682ae18d326c71c13ef88e9444dbdb0b5fe5f7ebde"; }
|
||||
{ locale = "en-ZA"; arch = "linux-x86_64"; sha256 = "b96c05a0e32604672d2ae420e1e534f4b19a539386360e93caf607e3ea8f5620"; }
|
||||
{ locale = "eo"; arch = "linux-i686"; sha256 = "75071e72dfd0b6212f6e160cb985964302e689432d226a6c08a5aa9ccf10a43e"; }
|
||||
{ locale = "eo"; arch = "linux-x86_64"; sha256 = "7d23e926420a7c29af93957b641636d2c23382b23940109b337f17e073445401"; }
|
||||
{ locale = "es-AR"; arch = "linux-i686"; sha256 = "769f306e31b319dec281fe2afa03f586e83942403b4f1ec40ceef1f522fdaf0a"; }
|
||||
{ locale = "es-AR"; arch = "linux-x86_64"; sha256 = "d9146b07f48840ca7a33f3c20f99392ea1c10de8cbebd053a60b2ed8e03053bd"; }
|
||||
{ locale = "es-CL"; arch = "linux-i686"; sha256 = "c95df915aee57fb0e86368378025de462815dd15cf4fbfc1f4cc606f5dcf1fa2"; }
|
||||
{ locale = "es-CL"; arch = "linux-x86_64"; sha256 = "1b7244f8132135e1f965f59eba6688f40dc377f7b9f7be4df4dd74fd07708778"; }
|
||||
{ locale = "es-ES"; arch = "linux-i686"; sha256 = "5de57ca5bb98bdd8b6a51e6223800309ccdbb448ee8a0519aa15da03efa3587b"; }
|
||||
{ locale = "es-ES"; arch = "linux-x86_64"; sha256 = "1bea15feaab6bdb596cdf55e312609b637c79a185c11737939db20c45a130471"; }
|
||||
{ locale = "es-MX"; arch = "linux-i686"; sha256 = "5edbe5767f96cc197a7e546eef168c5b9543459ef0c6a2bbed1b99d032b3cb12"; }
|
||||
{ locale = "es-MX"; arch = "linux-x86_64"; sha256 = "4bf18487452db842f5bd5a5ee7658e19a57f1ee16af4773d9647252c9e6c1385"; }
|
||||
{ locale = "et"; arch = "linux-i686"; sha256 = "41d37a5d2a839c5a9f63fd86939df187ec9f77094071097d80a19d85969b5400"; }
|
||||
{ locale = "et"; arch = "linux-x86_64"; sha256 = "8a2e8b97563f62c63f55711f0cc54fb57d6927cb7aad89cc4ab2300bccab16b4"; }
|
||||
{ locale = "eu"; arch = "linux-i686"; sha256 = "40c6722ee1e01281fb2bdccb2cd2239f222174803edd2c7face78e3a1e3eeb17"; }
|
||||
{ locale = "eu"; arch = "linux-x86_64"; sha256 = "0fe4cd9d4c7eead144596868402e2feacef5f0140765db3f97ee2bb26445dd19"; }
|
||||
{ locale = "fa"; arch = "linux-i686"; sha256 = "094893d8e4fb045ce68d3342d6f542f33604aa9eb9dd308b16591eba68b0fae6"; }
|
||||
{ locale = "fa"; arch = "linux-x86_64"; sha256 = "5d4c570aeca30053b5530d4a77ac92a622e6808c073f03273d5f95ec47b61aed"; }
|
||||
{ locale = "ff"; arch = "linux-i686"; sha256 = "aa13e64b3700f0727798ce0584c1ca458be2d37b854316eb8db95a766a603fc9"; }
|
||||
{ locale = "ff"; arch = "linux-x86_64"; sha256 = "19bc6d3991835acce993a3ece7d16338c718a4208060a730d197f74e830affdf"; }
|
||||
{ locale = "fi"; arch = "linux-i686"; sha256 = "d30a56a801c2305ca47b416923f93f9e0f5238d5e2054ca86b2facee25884870"; }
|
||||
{ locale = "fi"; arch = "linux-x86_64"; sha256 = "9db94e8ca2ca1409b3e0989af4ba9d2aa0101c9c2d5b6f1ee321532327a9a74c"; }
|
||||
{ locale = "fr"; arch = "linux-i686"; sha256 = "467c744b88987ea094367228175ee1d6f2d1b1deda2db056d143dbd4d214fd80"; }
|
||||
{ locale = "fr"; arch = "linux-x86_64"; sha256 = "50e4a71de78d4fa1b11a0fb57185456a2cfd01cf755e655324332ec28657680d"; }
|
||||
{ locale = "fy-NL"; arch = "linux-i686"; sha256 = "b7aa53b6c83ec514f650c1af83cdbda731775c8caadc508e34101161df6757a4"; }
|
||||
{ locale = "fy-NL"; arch = "linux-x86_64"; sha256 = "d71b1aae6c70176894abfcc3fed8c84b1d3c426ef2125241172259bf4205892e"; }
|
||||
{ locale = "ga-IE"; arch = "linux-i686"; sha256 = "70555105f42429e574e1df7f860fc1331c5d5c68e7b4fae6a6d1a00d14c2cf07"; }
|
||||
{ locale = "ga-IE"; arch = "linux-x86_64"; sha256 = "207a0a310b8fbaad1e030e7a3904170b44b6a796bfe8216ea4cf9bac93a08b1f"; }
|
||||
{ locale = "gd"; arch = "linux-i686"; sha256 = "19884e9d9511156bacb54414e8722fdf5f6579eaa911f5cacf736200ba989e85"; }
|
||||
{ locale = "gd"; arch = "linux-x86_64"; sha256 = "5e5f343c9367b6c8b67f326269152c0582e4f03b3d5abfc4747d96a3f43c2674"; }
|
||||
{ locale = "gl"; arch = "linux-i686"; sha256 = "b0495e2078e7f0748bf285a667d46a518297a54dd081d3fd612060528696d736"; }
|
||||
{ locale = "gl"; arch = "linux-x86_64"; sha256 = "991ca23b93fd2e9306e3b1c3128633e5e147265b95dfa72cff5b00bc4f5faab4"; }
|
||||
{ locale = "gn"; arch = "linux-i686"; sha256 = "4750afd6310a9be2c8e5697076d436c7321aa6b883971979453fc7148be6cf88"; }
|
||||
{ locale = "gn"; arch = "linux-x86_64"; sha256 = "2b14b5b286e541bca2465c2d3472a3113946b205da5a0acefdd9db9849d1b921"; }
|
||||
{ locale = "gu-IN"; arch = "linux-i686"; sha256 = "1c1f03dd683889b4ce80d6fc10d0939c1172b9becf4305989a5a3896a2230043"; }
|
||||
{ locale = "gu-IN"; arch = "linux-x86_64"; sha256 = "0ddd8706942b4ba46ac126f9eae33945b90ba2e8fce5d85ed61307189c37701d"; }
|
||||
{ locale = "he"; arch = "linux-i686"; sha256 = "e9c35252df6dc6ffe6d028404ea9d4157042c0743aad8deba42cf5da32ca354f"; }
|
||||
{ locale = "he"; arch = "linux-x86_64"; sha256 = "ae6b86a28daf441f22ac50adb6205bbbb0ffac978f638fd0558a63b9704dccce"; }
|
||||
{ locale = "hi-IN"; arch = "linux-i686"; sha256 = "84c638031ea3ac329d683ea282f26c530327ede87a42345f9eae417fd8fd4211"; }
|
||||
{ locale = "hi-IN"; arch = "linux-x86_64"; sha256 = "62e161cd10cbf6d1cd91067ddff474b0a73e3be93d44255311e3d44b41cb1cd1"; }
|
||||
{ locale = "hr"; arch = "linux-i686"; sha256 = "7349f78a35747de2a9d7a49526ea555a96e7aba5832f0eeaca4f367db3429555"; }
|
||||
{ locale = "hr"; arch = "linux-x86_64"; sha256 = "7f269905b76bdf9fbeeaccf1de194a9ff27a6aa3a871636320d46db9a585b3a7"; }
|
||||
{ locale = "hsb"; arch = "linux-i686"; sha256 = "72a14ca50ed839a9cd448254edb88e8f71d7d0f1de226bd2ba8f558721f249db"; }
|
||||
{ locale = "hsb"; arch = "linux-x86_64"; sha256 = "b546ee12183aefb64071f503ddf1e11820d2782cbd0984979fa6f6b77c66ab9b"; }
|
||||
{ locale = "hu"; arch = "linux-i686"; sha256 = "7882259d133231976be807bb170f887830cf2827deb6b9605708a42fcb10caaf"; }
|
||||
{ locale = "hu"; arch = "linux-x86_64"; sha256 = "55a23b51b3c90fd1936878ee48db16e8ad328ee68cf97170276e84fb5658119e"; }
|
||||
{ locale = "hy-AM"; arch = "linux-i686"; sha256 = "4cf64098fb6ae55553f5c5c60126e0a9ebcd224eb67240fef013988c21fef165"; }
|
||||
{ locale = "hy-AM"; arch = "linux-x86_64"; sha256 = "58ffcbfb60b63b06c520a5cf543e6ad8cdcda490fb2baf7c35ad0e7c17c8b255"; }
|
||||
{ locale = "id"; arch = "linux-i686"; sha256 = "3fad57b21f866534ce73d1a3702038a73aa64e9d28c96249cca890b886bc8817"; }
|
||||
{ locale = "id"; arch = "linux-x86_64"; sha256 = "eca4ec8568d02af755351db846ceed5bc58b401e2ac3eb6ac25eb235884912c1"; }
|
||||
{ locale = "is"; arch = "linux-i686"; sha256 = "c7a5b48d8055a46da40d650f18aab8f5aa7aefd59d165d5fdec0cf361b5360e3"; }
|
||||
{ locale = "is"; arch = "linux-x86_64"; sha256 = "7e0043f25378fafd3176a5b735ab35449c2febc83188d93bbcf12e47b729e0a8"; }
|
||||
{ locale = "it"; arch = "linux-i686"; sha256 = "e77950e24117e0e25e0a77f40819e9b10711725b2fe8e8772d8875120ae58751"; }
|
||||
{ locale = "it"; arch = "linux-x86_64"; sha256 = "347ec5d8bb5f61ef3003c2ed106ec7d70534816341c168acf46565571a76c0bf"; }
|
||||
{ locale = "ja"; arch = "linux-i686"; sha256 = "8ca089d2624572f38d9fe7911d9ab77dae2589b3022de9132215dafdc8f78ce8"; }
|
||||
{ locale = "ja"; arch = "linux-x86_64"; sha256 = "f5f5825ae34f819744c2a03c7af7ba38a2b2c3f65494f381a6561230c1bfc5a6"; }
|
||||
{ locale = "kk"; arch = "linux-i686"; sha256 = "58e863ff852874e797c6358bf5f7d52e29e504f03186b8b6c7a92cc44501ea13"; }
|
||||
{ locale = "kk"; arch = "linux-x86_64"; sha256 = "ece9759a53a5269be626d6f68c49da70f2c8e60b9d8ea2061328050d2c31b7eb"; }
|
||||
{ locale = "km"; arch = "linux-i686"; sha256 = "9ed22fef8e3d94b7a15fa557d86b05e883ad9d12755ba3420a263232dad7d5a0"; }
|
||||
{ locale = "km"; arch = "linux-x86_64"; sha256 = "fbba67f3ac60bc8d41e527e7bb7a82266efe47a9a09eb757433a52209c1b9754"; }
|
||||
{ locale = "kn"; arch = "linux-i686"; sha256 = "8cf7a3036d0221fa162683348ae047338b38e5755e6cf0cd6530a20e43eddc74"; }
|
||||
{ locale = "kn"; arch = "linux-x86_64"; sha256 = "cd99f17bfc77cb632c7c2d5627f43a98c1591c25a6175cbe88d0b8b5d6c7d4e8"; }
|
||||
{ locale = "ko"; arch = "linux-i686"; sha256 = "d1e27ad88e411d59448bc7d2aea0fac386d71a9579b246a151ecba7d10cb74eb"; }
|
||||
{ locale = "ko"; arch = "linux-x86_64"; sha256 = "82ece26a18be4db481a9bd9748bce59d14a2704e5e4c3873d2788e07efddfd67"; }
|
||||
{ locale = "lij"; arch = "linux-i686"; sha256 = "468085b58dfe815fb6a9b229d876ee6d14737edd7e34ffe7987bce1eec2e0079"; }
|
||||
{ locale = "lij"; arch = "linux-x86_64"; sha256 = "1e1a210f42e17de155b2f53a94d402be03f3a475e75db73e1aced157edafa9b0"; }
|
||||
{ locale = "lt"; arch = "linux-i686"; sha256 = "1350737560c2e5e69bc70152fc3ae246b3ab18e4dade066e6b9488ddadba29f5"; }
|
||||
{ locale = "lt"; arch = "linux-x86_64"; sha256 = "e96616deedc0c1967ca0d17dcd21d1b5f43838cb1c313fcf5394ee7a552ccf0c"; }
|
||||
{ locale = "lv"; arch = "linux-i686"; sha256 = "e7728d5d0e76df3750f1f5ed9e8585fc6210200f41d9b1a8f6b638582f623dd8"; }
|
||||
{ locale = "lv"; arch = "linux-x86_64"; sha256 = "5cab37509109146ae3ceb82df40152cf2de4b755c479248cfbc5ee9e7780399b"; }
|
||||
{ locale = "mai"; arch = "linux-i686"; sha256 = "3014cda0a3b95c7d5ce6e098e220bb107e2ff2974eb7d4b71ea9061cdc102955"; }
|
||||
{ locale = "mai"; arch = "linux-x86_64"; sha256 = "46b5b4f03bd32f5c84068326a78e5e744bfdc23b68ec067b6774574a6a952dc7"; }
|
||||
{ locale = "mk"; arch = "linux-i686"; sha256 = "55dcdaa2cf783171bf2e3f3244cb9f8165d7c873b62ee65d2392581585be7b99"; }
|
||||
{ locale = "mk"; arch = "linux-x86_64"; sha256 = "5002a14dbd07b29dc08f683d28c74429cfc1a924626e93f76f7568465cc550dc"; }
|
||||
{ locale = "ml"; arch = "linux-i686"; sha256 = "d1e4c7a26cfb2ea04abb1348e7bb57204fa355112537c26877d6e80bcbe3fd25"; }
|
||||
{ locale = "ml"; arch = "linux-x86_64"; sha256 = "d534c4a30eacff662fb387f1753be7e95fcfc1b0702ba3c98b88f121f1109859"; }
|
||||
{ locale = "mr"; arch = "linux-i686"; sha256 = "48d8cec7812fa7989a79f4560be33898c83525f383710d60f6dc8a2292851764"; }
|
||||
{ locale = "mr"; arch = "linux-x86_64"; sha256 = "5df095d48eedcfd1d102ced7b2928585ac1c7fc3e4fa84878b5a34914aec7c9a"; }
|
||||
{ locale = "ms"; arch = "linux-i686"; sha256 = "d377e167c3154143cceabc931dca1b031f45e9e8bb39dae923bca3842edb661e"; }
|
||||
{ locale = "ms"; arch = "linux-x86_64"; sha256 = "af023d2ccae69120958a0a5c4613e205972789603b43f11a32b24566fdee2d0c"; }
|
||||
{ locale = "nb-NO"; arch = "linux-i686"; sha256 = "8e50da27fc1ac9f2707afe7e964473e065de55ef726c03159029e89fa092b520"; }
|
||||
{ locale = "nb-NO"; arch = "linux-x86_64"; sha256 = "38c214d32b85bf1a55a66605614c72eeab693d39df9e95ec6971b6ba46a0d854"; }
|
||||
{ locale = "nl"; arch = "linux-i686"; sha256 = "9732ac83b4636b84e9084c0bcefe2ad8e0399e67aa5e9e22aaa40a2bb43c3274"; }
|
||||
{ locale = "nl"; arch = "linux-x86_64"; sha256 = "d4e424f62748bd9f35a98fe6a01300b13615ff6dba914eb69f4f343ef7630515"; }
|
||||
{ locale = "nn-NO"; arch = "linux-i686"; sha256 = "a0acef371c32189f78d13e9a7f24601559a5292642330a609267cda8929291ed"; }
|
||||
{ locale = "nn-NO"; arch = "linux-x86_64"; sha256 = "90fd2eeebebc9c2ca6413cd527697d1566312e099828035ce24204136b568466"; }
|
||||
{ locale = "or"; arch = "linux-i686"; sha256 = "bb628039e4d3e8e6cba0efb5754d4e61cae6b6a50f88aaf9b034570c5d25ba06"; }
|
||||
{ locale = "or"; arch = "linux-x86_64"; sha256 = "e1af53035829620db80c0e75ff28738a480ff0c946edd3f5c821dcb8683ef800"; }
|
||||
{ locale = "pa-IN"; arch = "linux-i686"; sha256 = "20665cc6f3d073530f459d8a14712e59cb5db82957042dc498e112db69957f5d"; }
|
||||
{ locale = "pa-IN"; arch = "linux-x86_64"; sha256 = "8a912aa7900012512a93e740f078a47340d724a936f4949467e028e2d44adac5"; }
|
||||
{ locale = "pl"; arch = "linux-i686"; sha256 = "a51c8e58ba89dbf53411b1d61229c1a515c1af53a28b7d39d654d1dd46c3f7bb"; }
|
||||
{ locale = "pl"; arch = "linux-x86_64"; sha256 = "e060bd9b72ce6feb151ebcb8630598f53c0ab5069a2cbc88c80b369ef5b4e924"; }
|
||||
{ locale = "pt-BR"; arch = "linux-i686"; sha256 = "d9391656b4e5959dba3eeb3537fe06ec67e56248259af723d09f0dc0d451d5c2"; }
|
||||
{ locale = "pt-BR"; arch = "linux-x86_64"; sha256 = "35cd35737abdf04ee714177a62b59bb2ecf819b508728ba5ce1ea4b85cbc9db6"; }
|
||||
{ locale = "pt-PT"; arch = "linux-i686"; sha256 = "22a90cc9e3da6abfc21d2ed039ab1877738b2f2d7aeb4fbfcbf1c3763b6516da"; }
|
||||
{ locale = "pt-PT"; arch = "linux-x86_64"; sha256 = "b4bca72d7b866de19b18d60a7278c124af9d00f44ff3b635eb80b042077634c5"; }
|
||||
{ locale = "rm"; arch = "linux-i686"; sha256 = "7d94fe2c2abbe8f27c10e27540cb415f61a338a121f87f4c4e93b923e544c923"; }
|
||||
{ locale = "rm"; arch = "linux-x86_64"; sha256 = "b55153028773d452c696eab97aff90393caf19d9ed8977c0b0d147284040d075"; }
|
||||
{ locale = "ro"; arch = "linux-i686"; sha256 = "80ccb9bb187f3b9597f6112ccd13b7274f4a7d9eed82567180a7ac99e0748323"; }
|
||||
{ locale = "ro"; arch = "linux-x86_64"; sha256 = "3a393002af7c9d6a90f15707e0a6c960f01a4335d647e8dd2ee237d02271a74a"; }
|
||||
{ locale = "ru"; arch = "linux-i686"; sha256 = "5c4456bc1711203b68467122c1bec0b7a323cd944cd2a2daa7cea3fe9d8bf79d"; }
|
||||
{ locale = "ru"; arch = "linux-x86_64"; sha256 = "82fe5ab5ffccfa4ae600e084b20ea9d60fe5d1d2f22fb836c6d05eec398239af"; }
|
||||
{ locale = "si"; arch = "linux-i686"; sha256 = "5cef376fb82f8d952d467f5c5db88282c6a812065a2c64beaae663e2a8c8ff86"; }
|
||||
{ locale = "si"; arch = "linux-x86_64"; sha256 = "b905f7ece85de9b13e055b93811d3b21bc07b95279b2f89a6837863821db546f"; }
|
||||
{ locale = "sk"; arch = "linux-i686"; sha256 = "5b671c85ae04e379ee7426f1a7e92c2295edb04362addd612812f39d4d90cac8"; }
|
||||
{ locale = "sk"; arch = "linux-x86_64"; sha256 = "3bb734435111310df7b8e7e3e52c36378fcbfe388420b3e144c008ee3e142044"; }
|
||||
{ locale = "sl"; arch = "linux-i686"; sha256 = "8c6af8ab571d42492b8d2aeb6ccbb29a261c1401293cef76b2158ad6e7841eac"; }
|
||||
{ locale = "sl"; arch = "linux-x86_64"; sha256 = "3cc7b211f88458d1b261ea92ce20fd4f72ba39fe9ec86dd4f0410874c227874d"; }
|
||||
{ locale = "son"; arch = "linux-i686"; sha256 = "b38286ece3dae0f9998e37ba7494d394daa8ac390ba60f6f75960adc87d0f7a1"; }
|
||||
{ locale = "son"; arch = "linux-x86_64"; sha256 = "b99b4334c2ca7731db895972d55ecad7420c4a4da825a496aed2fccb81cd6ff4"; }
|
||||
{ locale = "sq"; arch = "linux-i686"; sha256 = "bdd66c3d22c66c908bf275ee1ad1b7827b4439cf3fb75a537625a39e7acca3c9"; }
|
||||
{ locale = "sq"; arch = "linux-x86_64"; sha256 = "d7ce54fb3cce04bad41ba5491834e6cbf8daa93e983b7f66d4bc2f6b52c4c41e"; }
|
||||
{ locale = "sr"; arch = "linux-i686"; sha256 = "20cba6a11d976c036243dd3e55c2a7ad586006b5355bb8b742db4fd71d0bb7eb"; }
|
||||
{ locale = "sr"; arch = "linux-x86_64"; sha256 = "a9c8be3942abe8d14b89316f32402fae1abadacf5ddb844d0e50a69c7173bf22"; }
|
||||
{ locale = "sv-SE"; arch = "linux-i686"; sha256 = "f692fbb6fd82d1fdac23cde63687490c1ccebac715003b6212238f6a78289fd6"; }
|
||||
{ locale = "sv-SE"; arch = "linux-x86_64"; sha256 = "cdd7d6f9ea77f209c1ce3b2c405757ce44a0bdbe1803d32e8bf8e683b7f1894f"; }
|
||||
{ locale = "ta"; arch = "linux-i686"; sha256 = "064ecf6db5cc65f281e03763acb3512e0e2c54237c6a7a0be3c8828804e2b433"; }
|
||||
{ locale = "ta"; arch = "linux-x86_64"; sha256 = "33187d93b82edbfd01debc0956c1194539339b3949ef9f65a2aed7791b5a253a"; }
|
||||
{ locale = "te"; arch = "linux-i686"; sha256 = "ffa689f1111d373300785a5e62b501ac53300e02b520345d8a31de5122302e25"; }
|
||||
{ locale = "te"; arch = "linux-x86_64"; sha256 = "4d7504b72456d68aec2f73daeaf89112fb8372c00f117a436a5feb7ad5c255b7"; }
|
||||
{ locale = "th"; arch = "linux-i686"; sha256 = "d22c3e017c1897c6b4f4da0d43647289f35854d43b0dcc18d3e5898d70e163fd"; }
|
||||
{ locale = "th"; arch = "linux-x86_64"; sha256 = "4f3b91bef8c6d778e33ff17fe97535ddb7bc6d8ecf050d09ee722f065dada050"; }
|
||||
{ locale = "tr"; arch = "linux-i686"; sha256 = "d8effc19f4f9991c3e0cc8f34aef9040a1e36e0e0c7a4f541a8bc4c5e837a1ea"; }
|
||||
{ locale = "tr"; arch = "linux-x86_64"; sha256 = "9a6db03d21904d9b5e335137c866c61037d9a0074cdae77bb436ffd6fffe7595"; }
|
||||
{ locale = "uk"; arch = "linux-i686"; sha256 = "f5053f5d3237ab26971b678ce53d052fc3d87282127577b2590f3a911feef140"; }
|
||||
{ locale = "uk"; arch = "linux-x86_64"; sha256 = "2a9f26d892db02c97ebeb9486ab582a20b08b73ebd8cc71a4f4f3596bcf875af"; }
|
||||
{ locale = "uz"; arch = "linux-i686"; sha256 = "b2cca9b4e5a15d80cecee587c7b7738c22fe41f7ea106b3a336d15940cca1f39"; }
|
||||
{ locale = "uz"; arch = "linux-x86_64"; sha256 = "efd24f9c7ec712ba72b9305f30232b6129af8d75e9bbac7133c9dd3e056d6f0d"; }
|
||||
{ locale = "vi"; arch = "linux-i686"; sha256 = "3d1ba2ed2615a0543bf6484a130922e3176b07fd91f2c5294ecfb65978fe454c"; }
|
||||
{ locale = "vi"; arch = "linux-x86_64"; sha256 = "15807c890efbc934385766fa04ced69c9cf125da52a01ac685689a2873b689dd"; }
|
||||
{ locale = "xh"; arch = "linux-i686"; sha256 = "c9ed7d523d2fe5fe9b60972d48148ca95f56ea801c49dd962e832c7485d368d1"; }
|
||||
{ locale = "xh"; arch = "linux-x86_64"; sha256 = "f7d1314255490fae9ab31fe36adb7ea8a657a11539a7d2f95fb7d34d18a83322"; }
|
||||
{ locale = "zh-CN"; arch = "linux-i686"; sha256 = "6fe6f89f22cd9752ad5d91cb0cf7da8b362090aab9e0576483dd14df509732e8"; }
|
||||
{ locale = "zh-CN"; arch = "linux-x86_64"; sha256 = "1443bc4a7b07d2393d5914df42d3fefe8736e927590d8373f9f7db8d6c903c43"; }
|
||||
{ locale = "zh-TW"; arch = "linux-i686"; sha256 = "12a793f7033926dcd760c428ae015983e1c5175adc1768609a8859c653ce2272"; }
|
||||
{ locale = "zh-TW"; arch = "linux-x86_64"; sha256 = "eca47abc014870a7799aedb3f7e5603297dffd1ffd54ce2536c3399881127605"; }
|
||||
];
|
||||
}
|
||||
|
@ -133,8 +133,8 @@ in {
|
||||
|
||||
firefox-unwrapped = common {
|
||||
pname = "firefox";
|
||||
version = "44.0.2";
|
||||
sha256 = "17id7ala1slb2mjqkikryqjadcsmdzqmkxrrnb5m1316m50qichb";
|
||||
version = "45.0";
|
||||
sha256 = "1wbrygxj285vs5qbpv3cq26w36bd533779mgi8d0gpxin44hzarn";
|
||||
};
|
||||
|
||||
firefox-esr-unwrapped = common {
|
||||
|
@ -14,7 +14,7 @@ stdenv.mkDerivation rec {
|
||||
homepage = "http://midori-browser.org";
|
||||
license = stdenv.lib.licenses.lgpl21Plus;
|
||||
platforms = stdenv.lib.platforms.linux;
|
||||
maintainers = with stdenv.lib.maintainers; [ raskin iyzsong ];
|
||||
maintainers = with stdenv.lib.maintainers; [ raskin ];
|
||||
};
|
||||
|
||||
src = fetchurl {
|
||||
|
@ -59,11 +59,11 @@ let
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
name = "flashplayer-${version}";
|
||||
version = "11.2.202.559";
|
||||
version = "11.2.202.577";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://fpdownload.macromedia.com/pub/flashplayer/installers/archive/fp_${version}_archive.zip";
|
||||
sha256 = "1vb01pd1jhhh86r01nwdzcf66d72jksiyiyp92hs4khy6n5qfsl3";
|
||||
sha256 = "1k02d6c9y8z9lxyqyq04zsc5735cvm30mkwli71mh87fr1va2q4j";
|
||||
};
|
||||
|
||||
buildInputs = [ unzip ];
|
||||
|
@ -41,25 +41,43 @@ in stdenv.mkDerivation rec {
|
||||
|
||||
preConfigure = ''
|
||||
substituteInPlace src/Makefile.am --subst-var-by mavenRepo ${mavenRepo}
|
||||
|
||||
substituteInPlace 3rdparty/libprocess/include/process/subprocess.hpp \
|
||||
--replace '"sh"' '"${bash}/bin/bash"'
|
||||
|
||||
substituteInPlace 3rdparty/libprocess/3rdparty/stout/include/stout/posix/os.hpp \
|
||||
--replace '"sh"' '"${bash}/bin/bash"'
|
||||
|
||||
substituteInPlace 3rdparty/libprocess/3rdparty/stout/include/stout/os/posix/fork.hpp \
|
||||
--replace '"sh"' '"${bash}/bin/bash"'
|
||||
|
||||
substituteInPlace src/cli/mesos-scp \
|
||||
--replace "'scp " "'${openssh}/bin/scp "
|
||||
|
||||
substituteInPlace src/launcher/executor.cpp \
|
||||
--replace '"sh"' '"${bash}/bin/bash"'
|
||||
|
||||
substituteInPlace src/launcher/fetcher.cpp \
|
||||
--replace '"gzip' '"${gzip}/bin/gzip' \
|
||||
--replace '"tar' '"${gnutar}/bin/tar' \
|
||||
--replace '"unzip' '"${unzip}/bin/unzip'
|
||||
|
||||
substituteInPlace src/cli/mesos-scp \
|
||||
--replace "'scp " "'${openssh}/bin/scp "
|
||||
|
||||
substituteInPlace src/python/cli/src/mesos/cli.py \
|
||||
--replace "['mesos-resolve'" "['$out/bin/mesos-resolve'"
|
||||
|
||||
substituteInPlace src/slave/containerizer/mesos/launch.cpp \
|
||||
--replace '"sh"' '"${bash}/bin/bash"'
|
||||
|
||||
'' + lib.optionalString (stdenv.isLinux) ''
|
||||
'' + lib.optionalString stdenv.isLinux ''
|
||||
|
||||
substituteInPlace configure.ac \
|
||||
--replace /usr/include/libnl3 ${libnl}/include/libnl3
|
||||
|
||||
substituteInPlace src/linux/perf.cpp \
|
||||
--replace '"perf ' '"${perf}/bin/perf '
|
||||
|
||||
substituteInPlace src/linux/systemd.cpp \
|
||||
--replace 'os::realpath("/sbin/init")' '"${systemd}/lib/systemd/systemd"'
|
||||
|
||||
substituteInPlace src/slave/containerizer/mesos/isolators/filesystem/shared.cpp \
|
||||
--replace '"mount ' '"${utillinux}/bin/mount ' \
|
||||
@ -72,15 +90,6 @@ in stdenv.mkDerivation rec {
|
||||
--replace '"ip ' '"${iproute}/bin/ip ' \
|
||||
--replace '"mount ' '"${utillinux}/bin/mount ' \
|
||||
--replace '/bin/sh' "${stdenv.shell}"
|
||||
|
||||
substituteInPlace src/launcher/executor.cpp \
|
||||
--replace '"sh"' '"${bash}/bin/bash"'
|
||||
|
||||
substituteInPlace src/slave/containerizer/mesos/launch.cpp \
|
||||
--replace '"sh"' '"${bash}/bin/bash"'
|
||||
|
||||
substituteInPlace src/linux/systemd.cpp \
|
||||
--replace 'os::realpath("/sbin/init")' '"${systemd}/lib/systemd/systemd"'
|
||||
'';
|
||||
|
||||
configureFlags = [
|
||||
|
@ -1,36 +0,0 @@
|
||||
{stdenv, fetchurl, sqlite, ruby }:
|
||||
|
||||
# Package builds rq with all dependencies into one blob. This to ascertain
|
||||
# the combination of packages works.
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "rq-3.4.0";
|
||||
src = fetchurl {
|
||||
url = http://www.codeforpeople.com/lib/ruby/rq/rq-3.4.0.tgz;
|
||||
sha256 = "1g8wiv83dcn4vzk9wjjzs9vjnwzwpy4h84h34cj32wfz793wfb8b";
|
||||
};
|
||||
|
||||
buildInputs = [ ruby ];
|
||||
|
||||
# patch checks for existing stdin file - sent it upstream
|
||||
patches = [ ./rq.patch ];
|
||||
|
||||
buildPhase = ''
|
||||
cd all
|
||||
./install.sh $out
|
||||
cd ..
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
'';
|
||||
|
||||
meta = {
|
||||
license = stdenv.lib.licenses.ruby;
|
||||
homepage = "http://www.codeforpeople.com/lib/ruby/rq/";
|
||||
description = "Simple cluster queue runner";
|
||||
longDescription = "rq creates instant linux clusters by managing priority work queues, even on a multi-core single machine. This cluster runner is easy to install and easy to manage, contrasting with the common complicated solutions.";
|
||||
pkgMaintainer = "Pjotr Prins";
|
||||
# rq installs a separate Ruby interpreter, which has lower priority
|
||||
priority = "10";
|
||||
};
|
||||
}
|
@ -1,12 +0,0 @@
|
||||
diff -r b58e759f84db lib/rq/jobrunner.rb
|
||||
--- a/lib/rq/jobrunner.rb Sun Sep 28 13:33:06 2008 +0200
|
||||
+++ b/lib/rq/jobrunner.rb Sun Sep 28 13:35:09 2008 +0200
|
||||
@@ -85,7 +85,7 @@ unless defined? $__rq_jobrunner__
|
||||
|
||||
command =
|
||||
if @sh_like
|
||||
- sin = "0<#{ @stdin }" if @stdin
|
||||
+ sin = "0<#{ @stdin }" if @stdin and File.exist?(@stdin)
|
||||
sout = "1>#{ @stdout }" if @stdout
|
||||
serr = "2>#{ @stderr }" if @stderr
|
||||
"( PATH=#{ path }:$PATH #{ command } ;) #{ sin } #{ sout } #{ serr }"
|
@ -1,10 +1,10 @@
|
||||
{ stdenv, fetchurl, libotr, pidgin, intltool } :
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "pidgin-otr-4.0.1";
|
||||
name = "pidgin-otr-4.0.2";
|
||||
src = fetchurl {
|
||||
url = "http://www.cypherpunks.ca/otr/${name}.tar.gz";
|
||||
sha256 = "02pkkf86fh5jvzsdn9y78impsgzj1n0p81kc2girvk3vq941yy0v";
|
||||
sha256 = "1i5s9rrgbyss9rszq6c6y53hwqyw1k86s40cpsfx5ccl9bprxdgl";
|
||||
};
|
||||
|
||||
postInstall = "ln -s \$out/lib/pidgin \$out/share/pidgin-otr";
|
||||
|
@ -4,7 +4,7 @@
|
||||
qtbase, qtsvg, qttools, qttranslations, sqlcipher }:
|
||||
|
||||
let
|
||||
version = "1.2.4";
|
||||
version = "1.3.0";
|
||||
revision = "v${version}";
|
||||
in
|
||||
|
||||
@ -15,7 +15,7 @@ stdenv.mkDerivation rec {
|
||||
owner = "tux3";
|
||||
repo = "qTox";
|
||||
rev = revision;
|
||||
sha256 = "0iqnl00kmbpf3pn6z38n3cjzzsqpw2793j60c24kkrydapihknz9";
|
||||
sha256 = "0z2rxsa23vpl4q0h63mybw7kv8n1sm6nwb93l0cc046a3n9axid8";
|
||||
};
|
||||
|
||||
buildInputs =
|
||||
|
@ -1,5 +1,4 @@
|
||||
{ fetchgit, libcommuni, qt5, stdenv
|
||||
}:
|
||||
{ fetchgit, libcommuni, makeQtWrapper, qt5, stdenv }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "communi-${version}";
|
||||
@ -11,20 +10,32 @@ stdenv.mkDerivation rec {
|
||||
sha256 = "0gk6gck09zb44qfsal7bs4ln2vl9s9x3vfxh7jvfc7mmf7l3sspd";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ makeQtWrapper ];
|
||||
|
||||
buildInputs = [ libcommuni qt5.qtbase ];
|
||||
|
||||
enableParallelBuild = true;
|
||||
|
||||
configurePhase = ''
|
||||
export QMAKEFEATURES=${libcommuni}/features
|
||||
qmake -r COMMUNI_INSTALL_PREFIX=$out
|
||||
qmake -r \
|
||||
COMMUNI_INSTALL_PREFIX=$out \
|
||||
COMMUNI_INSTALL_BINS=$out/bin \
|
||||
COMMUNI_INSTALL_PLUGINS=$out/lib/communi/plugins \
|
||||
COMMUNI_INSTALL_ICONS=$out/share/icons/hicolor \
|
||||
COMMUNI_INSTALL_DESKTOP=$out/share/applications \
|
||||
COMMUNI_INSTALL_THEMES=$out/share/communi/themes
|
||||
'';
|
||||
|
||||
postInstall = ''
|
||||
wrapQtProgram "$out/bin/communi"
|
||||
'';
|
||||
|
||||
meta = with stdenv.lib; {
|
||||
description = "A simple and elegant cross-platform IRC client";
|
||||
homepage = https://github.com/communi/communi-desktop;
|
||||
license = licenses.bsd3;
|
||||
platforms = platforms.all;
|
||||
maintainers = with maintainers; [ hrdinka ];
|
||||
platforms = platforms.all;
|
||||
};
|
||||
}
|
||||
|
@ -5,6 +5,7 @@
|
||||
, tag ? "" # tag added to the package name
|
||||
, withKDE ? stdenv.isLinux # enable KDE integration
|
||||
, kdelibs ? null
|
||||
, static ? false # link statically
|
||||
|
||||
, stdenv, fetchurl, cmake, makeWrapper, qt, automoc4, phonon, dconf, qca2 }:
|
||||
|
||||
@ -42,8 +43,8 @@ in with stdenv; mkDerivation rec {
|
||||
NIX_CFLAGS_COMPILE = "-fPIC";
|
||||
|
||||
cmakeFlags = [
|
||||
"-DEMBED_DATA=OFF"
|
||||
"-DSTATIC=OFF" ]
|
||||
"-DEMBED_DATA=OFF" ]
|
||||
++ edf static "STATIC"
|
||||
++ edf monolithic "WANT_MONO"
|
||||
++ edf daemon "WANT_CORE"
|
||||
++ edf client "WANT_QTCLIENT"
|
||||
|
@ -3,6 +3,7 @@
|
||||
, client ? false # build Quassel client
|
||||
, previews ? false # enable webpage previews on hovering over URLs
|
||||
, tag ? "" # tag added to the package name
|
||||
, static ? false # link statically
|
||||
|
||||
, stdenv, fetchurl, cmake, makeWrapper, dconf
|
||||
, qtbase, qtscript, qtwebkit
|
||||
@ -66,9 +67,9 @@ in with stdenv; mkDerivation rec {
|
||||
|
||||
cmakeFlags = [
|
||||
"-DEMBED_DATA=OFF"
|
||||
"-DSTATIC=OFF"
|
||||
"-DUSE_QT5=ON"
|
||||
]
|
||||
++ edf static "STATIC"
|
||||
++ edf monolithic "WANT_MONO"
|
||||
++ edf daemon "WANT_CORE"
|
||||
++ edf client "WANT_QTCLIENT"
|
||||
|
@ -21,9 +21,7 @@ stdenv.mkDerivation rec {
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://archive.mozilla.org/pub/thunderbird/releases/${verName}/source/thunderbird-${verName}.source.tar.bz2";
|
||||
|
||||
# https://archive.mozilla.org/pub/thunderbird/releases/${verName}/SHA1SUMS
|
||||
sha1 = "7c8ef066d6b6516fddbb654b38353f894f85d469";
|
||||
sha256 = "0sssw45sf4vfy63y0x1lj05zl9g3gjdcvgw232k6zfm44l9p25q4";
|
||||
};
|
||||
|
||||
buildInputs = # from firefox30Pkgs.xulrunner, but without gstreamer and libvpx
|
||||
|
@ -4,7 +4,7 @@
|
||||
}:
|
||||
|
||||
let
|
||||
version = "2.90";
|
||||
version = "2.92";
|
||||
in
|
||||
|
||||
with { inherit (stdenv.lib) optional optionals optionalString; };
|
||||
@ -14,7 +14,7 @@ stdenv.mkDerivation rec {
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://transmission.cachefly.net/transmission-${version}.tar.xz";
|
||||
sha256 = "1lig7y9fhmv2ajgq1isj9wqgpcgignzlczs3dy95ahb8h6pqrzv9";
|
||||
sha256 = "0pykmhi7pdmzq47glbj8i2im6iarp4wnj4l1pyvsrnba61f0939s";
|
||||
};
|
||||
|
||||
buildInputs = [ pkgconfig intltool file openssl curl libevent inotify-tools zlib ]
|
||||
@ -26,6 +26,7 @@ stdenv.mkDerivation rec {
|
||||
'';
|
||||
|
||||
configureFlags = [ "--with-systemd-daemon" ]
|
||||
++ [ "--enable-cli" ]
|
||||
++ optional enableGTK3 "--with-gtk";
|
||||
|
||||
preFixup = optionalString enableGTK3 /* gsettings schemas for file dialogues */ ''
|
||||
|
@ -9,11 +9,11 @@
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "calligra-2.9.8";
|
||||
name = "calligra-2.9.11";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://kde/stable/${name}/${name}.tar.xz";
|
||||
sha256 = "08a5k8gjmzp9yzq46xy0p1sw7dpvxmxh8zz6dyj8q1dq29719kkc";
|
||||
sha256 = "02gaahp7a7m53n0hvrp3868s8w37b457isxir0z7b4mwhw7jv3di";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ automoc4 cmake perl pkgconfig makeWrapper ];
|
||||
@ -48,7 +48,7 @@ stdenv.mkDerivation rec {
|
||||
vector graphics.
|
||||
'';
|
||||
homepage = http://calligra.org;
|
||||
maintainers = with stdenv.lib.maintainers; [ urkud phreedom ];
|
||||
maintainers = with stdenv.lib.maintainers; [ urkud phreedom ebzzry ];
|
||||
inherit (kdelibs.meta) platforms;
|
||||
};
|
||||
}
|
||||
|
@ -9,19 +9,18 @@
|
||||
|
||||
buildPythonApplication rec {
|
||||
name = "zim-${version}";
|
||||
version = "0.63";
|
||||
version = "0.65";
|
||||
namePrefix = "";
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://zim-wiki.org/downloads/${name}.tar.gz";
|
||||
sha256 = "077vf4h0hjmbk8bxj9l0z9rxcb3dw642n32lvfn6vjdna1qm910m";
|
||||
sha256 = "15pdq4fxag85qjsrdmmssiq85qsk5vnbp8mrqnpvx8lm8crz6hjl";
|
||||
};
|
||||
|
||||
propagatedBuildInputs = [ pythonPackages.sqlite3 pygtk pythonPackages.pyxdg pygobject ];
|
||||
|
||||
preBuild = ''
|
||||
mkdir -p /tmp/home
|
||||
export HOME="/tmp/home"
|
||||
export HOME=$TMP
|
||||
|
||||
sed -i '/zim_install_class,/d' setup.py
|
||||
'';
|
||||
@ -30,8 +29,14 @@ buildPythonApplication rec {
|
||||
preFixup = ''
|
||||
export makeWrapperArgs="--prefix XDG_DATA_DIRS : $out/share --argv0 $out/bin/.zim-wrapped"
|
||||
'';
|
||||
# Testing fails.
|
||||
doCheck = false;
|
||||
|
||||
postFixup = ''
|
||||
wrapPythonPrograms
|
||||
substituteInPlace $out/bin/.zim-wrapped \
|
||||
--replace "sys.argv[0] = 'zim'" "sys.argv[0] = '$out/bin/zim'"
|
||||
'';
|
||||
|
||||
doCheck = true;
|
||||
|
||||
meta = {
|
||||
description = "A desktop wiki";
|
||||
|
@ -50,7 +50,7 @@ stdenv.mkDerivation {
|
||||
homepage = "http://www.loria.fr/equipes/calligramme/acg";
|
||||
description = "A toolkit for developing ACG signatures and lexicon";
|
||||
license = licenses.cecill20;
|
||||
platforms = ocaml.meta.platforms;
|
||||
platforms = ocaml.meta.platforms or [];
|
||||
maintainers = [ maintainers.jirkamarsik ];
|
||||
};
|
||||
}
|
||||
|
@ -24,7 +24,7 @@ in
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "gitlab-${version}";
|
||||
version = "8.5.1";
|
||||
version = "8.5.5";
|
||||
|
||||
buildInputs = [ ruby bundler tzdata git nodejs procps ];
|
||||
|
||||
@ -32,7 +32,7 @@ stdenv.mkDerivation rec {
|
||||
owner = "gitlabhq";
|
||||
repo = "gitlabhq";
|
||||
rev = "v${version}";
|
||||
sha256 = "1pn5r4axzjkgdjr59y3wgxsd2n83zfd5bry1g2w4c2qw0wcw7zqb";
|
||||
sha256 = "05cjqjcmwxlc67xr34ki83q8pn6bsvxvywmiys20bksq3maxdyih";
|
||||
};
|
||||
|
||||
patches = [
|
||||
|
@ -975,10 +975,10 @@
|
||||
dependencies = ["actionpack" "activesupport" "rake" "thor"];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "07vmyrppa1x80whdjxhjij93qh9wvnmnxpsgn6fr9x2lqmzdyq5l";
|
||||
sha256 = "cfff64cbc0e409341003c35fa2e576e6a8cd8259a9894d09f15c6123be73f146";
|
||||
type = "gem";
|
||||
};
|
||||
version = "4.2.5.1";
|
||||
version = "4.2.5.2";
|
||||
};
|
||||
rails-html-sanitizer = {
|
||||
dependencies = ["loofah"];
|
||||
@ -1011,10 +1011,10 @@
|
||||
dependencies = ["actionmailer" "actionpack" "actionview" "activejob" "activemodel" "activerecord" "activesupport" "railties" "sprockets-rails"];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "03j6hfsqdl0bay59m4qjj2081s4vnhqagpl14qpm4wfrqrgpkcqb";
|
||||
sha256 = "aa93c1b9eb8b535eee58280504e30237f88217699fe9bb016e458e5122eefa2e";
|
||||
type = "gem";
|
||||
};
|
||||
version = "4.2.5.1";
|
||||
version = "4.2.5.2";
|
||||
};
|
||||
rack-test = {
|
||||
dependencies = ["rack"];
|
||||
@ -2906,10 +2906,10 @@
|
||||
dependencies = ["i18n" "json" "minitest" "thread_safe" "tzinfo"];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "16zgsvzwwf4hx3ywi2lz0dcm6d1ljsy6zr5k2q41amd7g62d886d";
|
||||
sha256 = "80ad345adf7e2b72c5d90753c0df91eacc34f4de02b34cfbf60bcf6c83483031";
|
||||
type = "gem";
|
||||
};
|
||||
version = "4.2.5.1";
|
||||
version = "4.2.5.2";
|
||||
};
|
||||
activerecord-session_store = {
|
||||
dependencies = ["actionpack" "activerecord" "railties"];
|
||||
@ -2940,55 +2940,55 @@
|
||||
dependencies = ["activemodel" "activesupport" "arel"];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "1qj5ii36yn9kb0ljnl05xgpgvs7j9l20yg2phsssy0j31g1ymmc5";
|
||||
sha256 = "c2b1b6a4c6b8542c2464b457dce4cac4915efcbd3d5acfba57102e58474c33f2";
|
||||
type = "gem";
|
||||
};
|
||||
version = "4.2.5.1";
|
||||
version = "4.2.5.2";
|
||||
};
|
||||
activemodel = {
|
||||
dependencies = ["activesupport" "builder"];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "1zr83avw82infmzdzpilk6xpv5r9fr8pxgf5ql16b3vysp6va57p";
|
||||
sha256 = "09ce967be3086b34ae9fcbd919e714b2bdf72b8ab6e89b64aa74627267d93962";
|
||||
type = "gem";
|
||||
};
|
||||
version = "4.2.5.1";
|
||||
version = "4.2.5.2";
|
||||
};
|
||||
activejob = {
|
||||
dependencies = ["activesupport" "globalid"];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "1xfj7lwp1v3k9zscavzq87wbbn6y825angz4zpx4xsvlwf3dn7jc";
|
||||
sha256 = "cecb9bbc55292dee064ca479990c6e50fa3e2273aac6722ce058d18c22383026";
|
||||
type = "gem";
|
||||
};
|
||||
version = "4.2.5.1";
|
||||
version = "4.2.5.2";
|
||||
};
|
||||
actionview = {
|
||||
dependencies = ["activesupport" "builder" "erubis" "rails-dom-testing" "rails-html-sanitizer"];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "1dp1gqh0yxpyydza1ada0jjbpww97qhnkj9c9pm9rg5jbmpzg12m";
|
||||
sha256 = "e8ce01cf6cc822ec023a15a856a0fae0e078ebb232b95b722c23af4117d2d635";
|
||||
type = "gem";
|
||||
};
|
||||
version = "4.2.5.1";
|
||||
version = "4.2.5.2";
|
||||
};
|
||||
actionpack = {
|
||||
dependencies = ["actionview" "activesupport" "rack" "rack-test" "rails-dom-testing" "rails-html-sanitizer"];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "13shdiwjfyqvfb11k0wqhcd7p7ix168fxd5l8m2pnn0bzskpswxv";
|
||||
sha256 = "a22e1818f06b707433c9a76867932929751b5d57edbeacc258635a7b23da12cf";
|
||||
type = "gem";
|
||||
};
|
||||
version = "4.2.5.1";
|
||||
version = "4.2.5.2";
|
||||
};
|
||||
actionmailer = {
|
||||
dependencies = ["actionpack" "actionview" "activejob" "mail" "rails-dom-testing"];
|
||||
source = {
|
||||
remotes = ["https://rubygems.org"];
|
||||
sha256 = "1fxn8f53nnpgan5xl9i5lszl1m8yk4q6ayc33d9xfzsnvhavpl4n";
|
||||
sha256 = "8cee5f2f1e58c8ada17cca696377443c0cbc9675df2b7eef97a04318876484b5";
|
||||
type = "gem";
|
||||
};
|
||||
version = "4.2.5.1";
|
||||
version = "4.2.5.2";
|
||||
};
|
||||
ace-rails-ap = {
|
||||
source = {
|
||||
@ -3014,4 +3014,4 @@
|
||||
};
|
||||
version = "2.3.2";
|
||||
};
|
||||
}
|
||||
}
|
||||
|
@ -8,11 +8,11 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
name = "smartgithg-${version}";
|
||||
version = "7_1_0";
|
||||
version = "7_1_2";
|
||||
|
||||
src = fetchurl {
|
||||
url = "http://www.syntevo.com/downloads/smartgit/smartgit-linux-${version}.tar.gz";
|
||||
sha256 = "0nlv2ipmv3z1j4642gfsrpsgc2y4mxngiz6mz3nidrbrkz0ylsvy";
|
||||
url = "http://www.syntevo.com/static/smart/download/smartgit/smartgit-linux-${version}.tar.gz";
|
||||
sha256 = "18jw4g2akhj6h9w8378kacv7ws35ndcnc3kkhci9iypwy432ak8d";
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
@ -58,5 +58,6 @@ stdenv.mkDerivation rec {
|
||||
homepage = http://www.syntevo.com/smartgit/;
|
||||
license = licenses.unfree;
|
||||
platforms = platforms.linux;
|
||||
maintainers = with stdenv.lib.maintainers; [ jraygauthier ];
|
||||
};
|
||||
}
|
||||
|
@ -17,13 +17,13 @@ assert javahlBindings -> jdk != null && perl != null;
|
||||
|
||||
let
|
||||
|
||||
common = { version, sha1 }: stdenv.mkDerivation (rec {
|
||||
common = { version, sha256 }: stdenv.mkDerivation (rec {
|
||||
inherit version;
|
||||
name = "subversion-${version}";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://apache/subversion/${name}.tar.bz2";
|
||||
inherit sha1;
|
||||
inherit sha256;
|
||||
};
|
||||
|
||||
buildInputs = [ zlib apr aprutil sqlite ]
|
||||
@ -89,12 +89,12 @@ in {
|
||||
|
||||
subversion18 = common {
|
||||
version = "1.8.15";
|
||||
sha1 = "680acf88f0db978fbbeac89ed63776d805b918ef";
|
||||
sha256 = "8bbf6bb125003d88ee1c22935a36b7b1ab7d957e0c8b5fbfe5cb6310b6e86ae0";
|
||||
};
|
||||
|
||||
subversion19 = common {
|
||||
version = "1.9.3";
|
||||
sha1 = "27e8df191c92095f48314a415194ec37c682cbcf";
|
||||
sha256 = "8bbf6bb125003d88ee1c22935a36b7b1ab7d957e0c8b5fbfe5cb6310b6e86ae0";
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -1,34 +1,31 @@
|
||||
{stdenv, fetchsvn, pkgconfig, libjpeg, imagemagick, libv4l}:
|
||||
{ stdenv, fetchFromGitHub, cmake, libjpeg }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
rev = "182";
|
||||
name = "mjpg-streamer-${rev}";
|
||||
name = "mjpg-streamer-${version}";
|
||||
version = "2016-03-08";
|
||||
|
||||
src = fetchsvn {
|
||||
url = https://mjpg-streamer.svn.sourceforge.net/svnroot/mjpg-streamer/mjpg-streamer;
|
||||
inherit rev;
|
||||
sha256 = "008k2wk6xagprbiwk8fvzbz4dd6i8kzrr9n62gj5i1zdv7zcb16q";
|
||||
src = fetchFromGitHub {
|
||||
owner = "jacksonliam";
|
||||
repo = "mjpg-streamer";
|
||||
rev = "4060cb64e3557037fd404d10e1c1d076b672e9e8";
|
||||
sha256 = "0g7y832jsz4ylmq9qp2l4fq6bm8l6dhsbi60fr5jfqpx4l0pia8m";
|
||||
};
|
||||
|
||||
patchPhase = ''
|
||||
substituteInPlace Makefile "make -C plugins\/input_gspcav1" "# make -C plugins\/input_gspcav1"
|
||||
substituteInPlace Makefile "cp plugins\/input_gspcav1\/input_gspcav1.so" "# cp plugins\/input_gspcav1\/input_gspcav1.so"
|
||||
prePatch = ''
|
||||
cd mjpg-streamer-experimental
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [ cmake ];
|
||||
buildInputs = [ libjpeg ];
|
||||
|
||||
postFixup = ''
|
||||
patchelf --set-rpath "$(patchelf --print-rpath $out/bin/mjpg_streamer):$out/lib:$out/lib/plugins" $out/bin/mjpg_streamer
|
||||
patchelf --set-rpath "$(patchelf --print-rpath $out/bin/mjpg_streamer):$out/lib/mjpg-streamer" $out/bin/mjpg_streamer
|
||||
'';
|
||||
|
||||
makeFlags = "DESTDIR=$(out)";
|
||||
|
||||
preInstall = ''
|
||||
mkdir -p $out/{bin,lib}
|
||||
'';
|
||||
|
||||
buildInputs = [ pkgconfig libjpeg imagemagick libv4l ];
|
||||
|
||||
meta = {
|
||||
meta = with stdenv.lib; {
|
||||
homepage = http://sourceforge.net/projects/mjpg-streamer/;
|
||||
description = "MJPG-streamer takes JPGs from Linux-UVC compatible webcams, filesystem or other input plugins and streams them as M-JPEG via HTTP to webbrowsers, VLC and other software";
|
||||
platforms = platforms.linux;
|
||||
licenses = licenses.gpl2;
|
||||
};
|
||||
}
|
||||
|
@ -27,7 +27,7 @@ stdenv.mkDerivation rec {
|
||||
(optional withGUI qt5.qtbase)
|
||||
];
|
||||
|
||||
preConfigure = "./autogen.sh";
|
||||
preConfigure = "./autogen.sh; patchShebangs .";
|
||||
buildPhase = "./drake -j $NIX_BUILD_CORES";
|
||||
installPhase = "./drake install -j $NIX_BUILD_CORES";
|
||||
|
||||
|
@ -23,7 +23,6 @@ in stdenv.mkDerivation rec {
|
||||
'';
|
||||
license = licenses.lgpl21Plus;
|
||||
platforms = platforms.linux;
|
||||
maintainers = with maintainers; [ iyzsong ];
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ pkgconfig intltool itstool makeWrapper ];
|
||||
|
@ -1,11 +1,15 @@
|
||||
{ stdenv, fetchurl, python, zlib, pkgconfig, glib, ncurses, perl, pixman
|
||||
, attr, libcap, vde2, alsaLib, texinfo, libuuid, flex, bison, lzo, snappy
|
||||
, libseccomp, libaio, libcap_ng, gnutls, nettle, numactl
|
||||
, vde2, alsaLib, texinfo, libuuid, flex, bison, lzo, snappy
|
||||
, libaio, gnutls, nettle
|
||||
, makeWrapper
|
||||
, pulseSupport ? true, libpulseaudio
|
||||
, sdlSupport ? true, SDL
|
||||
, attr, libcap, libcap_ng
|
||||
, CoreServices, Cocoa, rez, setfile
|
||||
, numaSupport ? stdenv.isLinux, numactl
|
||||
, seccompSupport ? stdenv.isLinux, libseccomp
|
||||
, pulseSupport ? !stdenv.isDarwin, libpulseaudio
|
||||
, sdlSupport ? !stdenv.isDarwin, SDL
|
||||
, vncSupport ? true, libjpeg, libpng
|
||||
, spiceSupport ? true, spice, spice_protocol, usbredir
|
||||
, spiceSupport ? !stdenv.isDarwin, spice, spice_protocol, usbredir
|
||||
, x86Only ? false
|
||||
}:
|
||||
|
||||
@ -26,31 +30,35 @@ stdenv.mkDerivation rec {
|
||||
};
|
||||
|
||||
buildInputs =
|
||||
[ python zlib pkgconfig glib ncurses perl pixman attr libcap
|
||||
vde2 texinfo libuuid flex bison makeWrapper lzo snappy libseccomp
|
||||
libcap_ng gnutls nettle numactl
|
||||
[ python zlib pkgconfig glib ncurses perl pixman
|
||||
vde2 texinfo libuuid flex bison makeWrapper lzo snappy
|
||||
gnutls nettle
|
||||
]
|
||||
++ optionals stdenv.isDarwin [ CoreServices Cocoa rez setfile ]
|
||||
++ optionals seccompSupport [ libseccomp ]
|
||||
++ optionals numaSupport [ numactl ]
|
||||
++ optionals pulseSupport [ libpulseaudio ]
|
||||
++ optionals sdlSupport [ SDL ]
|
||||
++ optionals vncSupport [ libjpeg libpng ]
|
||||
++ optionals spiceSupport [ spice_protocol spice usbredir ]
|
||||
++ optionals (hasSuffix "linux" stdenv.system) [ alsaLib libaio ];
|
||||
++ optionals stdenv.isLinux [ alsaLib libaio libcap_ng libcap attr ];
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
patches = [ ./no-etc-install.patch ];
|
||||
|
||||
configureFlags =
|
||||
[ "--enable-seccomp"
|
||||
"--enable-numa"
|
||||
"--smbd=smbd" # use `smbd' from $PATH
|
||||
[ "--smbd=smbd" # use `smbd' from $PATH
|
||||
"--audio-drv-list=${audio}"
|
||||
"--sysconfdir=/etc"
|
||||
"--localstatedir=/var"
|
||||
]
|
||||
++ optional numaSupport "--enable-numa"
|
||||
++ optional seccompSupport "--enable-seccomp"
|
||||
++ optional spiceSupport "--enable-spice"
|
||||
++ optional x86Only "--target-list=i386-softmmu,x86_64-softmmu"
|
||||
++ optional (hasSuffix "linux" stdenv.system) "--enable-linux-aio";
|
||||
++ optional stdenv.isDarwin "--enable-cocoa"
|
||||
++ optional stdenv.isLinux "--enable-linux-aio";
|
||||
|
||||
postInstall =
|
||||
''
|
||||
@ -66,6 +74,6 @@ stdenv.mkDerivation rec {
|
||||
description = "A generic and open source machine emulator and virtualizer";
|
||||
license = licenses.gpl2Plus;
|
||||
maintainers = with maintainers; [ viric eelco ];
|
||||
platforms = platforms.linux;
|
||||
platforms = platforms.linux ++ platforms.darwin;
|
||||
};
|
||||
}
|
||||
|
@ -15,39 +15,12 @@ let
|
||||
|
||||
libDir = if stdenv.is64bit then "lib64" else "lib";
|
||||
|
||||
# Sources needed to build the stubdoms and tools
|
||||
# Sources needed to build the tools
|
||||
# These sources are already rather old and probably do not change frequently
|
||||
xenExtfiles = [
|
||||
{ url = http://xenbits.xensource.com/xen-extfiles/lwip-1.3.0.tar.gz;
|
||||
sha256 = "13wlr85s1hnvia6a698qpryyy12lvmqw0a05xmjnd0h71ralsbkp";
|
||||
}
|
||||
{ url = http://xenbits.xensource.com/xen-extfiles/zlib-1.2.3.tar.gz;
|
||||
sha256 = "0pmh8kifb6sfkqfxc23wqp3f2wzk69sl80yz7w8p8cd4cz8cg58p";
|
||||
}
|
||||
{ url = http://xenbits.xensource.com/xen-extfiles/newlib-1.16.0.tar.gz;
|
||||
sha256 = "01rxk9js833mwadq92jx0flvk9jyjrnwrq93j39c2j2wjsa66hnv";
|
||||
}
|
||||
{ url = http://xenbits.xensource.com/xen-extfiles/grub-0.97.tar.gz;
|
||||
sha256 = "02r6b52r0nsp6ryqfiqchnl7r1d9smm80sqx24494gmx5p8ia7af";
|
||||
}
|
||||
{ url = http://xenbits.xensource.com/xen-extfiles/pciutils-2.2.9.tar.bz2;
|
||||
sha256 = "092v4q478i1gc7f3s2wz6p4xlf1wb4gs5shbkn21vnnmzcffc2pn";
|
||||
}
|
||||
{ url = http://xenbits.xensource.com/xen-extfiles/tpm_emulator-0.7.4.tar.gz;
|
||||
sha256 = "0nd4vs48j0zfzv1g5jymakxbjqf9ss6b2jph3b64356xhc6ylj2f";
|
||||
}
|
||||
{ url = http://xenbits.xensource.com/xen-extfiles/tboot-20090330.tar.gz;
|
||||
sha256 = "0rl1b53g019w2c268pyxhjqsj9ls37i4p74bdv1hdi2yvs0r1y81";
|
||||
}
|
||||
{ url = http://xenbits.xensource.com/xen-extfiles/ipxe-git-9a93db3f0947484e30e753bbd61a10b17336e20e.tar.gz;
|
||||
sha256 = "0p206zaxlhda60ci33h9gipi5gm46fvvsm6k5c0w7b6cjg0yhb33";
|
||||
}
|
||||
{ url = http://xenbits.xensource.com/xen-extfiles/polarssl-1.1.4-gpl.tgz;
|
||||
sha256 = "1dl4fprpwagv9akwqpb62qwqvh24i50znadxwvd2kfnhl02gsa9d";
|
||||
}
|
||||
{ url = http://xenbits.xensource.com/xen-extfiles/gmp-4.3.2.tar.bz2;
|
||||
sha256 = "0x8prpqi9amfcmi7r4zrza609ai9529pjaq0h4aw51i867064qck";
|
||||
}
|
||||
];
|
||||
|
||||
scriptEnvPath = stdenv.lib.concatStrings (stdenv.lib.intersperse ":" (map (x: "${x}/bin")
|
||||
@ -116,6 +89,9 @@ stdenv.mkDerivation {
|
||||
export EXTRA_QEMUU_CONFIGURE_ARGS="--enable-spice --enable-usb-redir --enable-linux-aio"
|
||||
'';
|
||||
|
||||
# https://github.com/NixOS/nixpkgs/issues/13590
|
||||
configureFlags = ["--disable-stubdom"];
|
||||
|
||||
postConfigure =
|
||||
''
|
||||
substituteInPlace tools/libfsimage/common/fsimage_plugin.c \
|
||||
@ -171,7 +147,7 @@ stdenv.mkDerivation {
|
||||
#makeFlags = "XSM_ENABLE=y FLASK_ENABLE=y PREFIX=$(out) CONFIG_DIR=/etc XEN_EXTFILES_URL=\\$(XEN_ROOT)/xen_ext_files ";
|
||||
makeFlags = "PREFIX=$(out) CONFIG_DIR=/etc XEN_EXTFILES_URL=\\$(XEN_ROOT)/xen_ext_files ";
|
||||
|
||||
buildFlags = "xen tools stubdom";
|
||||
buildFlags = "xen tools";
|
||||
|
||||
postBuild =
|
||||
''
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user