Merge branch 'master' into patch-2

This commit is contained in:
butterflya 2017-03-16 23:05:04 +01:00 committed by GitHub
commit ba126daace
291 changed files with 6197 additions and 3763 deletions

View File

@ -18,3 +18,8 @@ matrix:
env: env:
global: global:
- GITHUB_TOKEN=5edaaf1017f691ed34e7f80878f8f5fbd071603f - GITHUB_TOKEN=5edaaf1017f691ed34e7f80878f8f5fbd071603f
notifications:
email:
on_success: never
on_failure: change

View File

@ -823,10 +823,10 @@ alternative implemention for Integer called
[integer-simple](http://hackage.haskell.org/package/integer-simple). [integer-simple](http://hackage.haskell.org/package/integer-simple).
To get a GHC compiler build with `integer-simple` instead of `integer-gmp` use To get a GHC compiler build with `integer-simple` instead of `integer-gmp` use
the attribute: `pkgs.haskell.compiler.integer-simple."${ghcVersion}"`. the attribute: `haskell.compiler.integer-simple."${ghcVersion}"`.
For example: For example:
$ nix-build -E '(import <nixpkgs> {}).pkgs.haskell.compiler.integer-simple.ghc802' $ nix-build -E '(import <nixpkgs> {}).haskell.compiler.integer-simple.ghc802'
... ...
$ result/bin/ghc-pkg list | grep integer $ result/bin/ghc-pkg list | grep integer
integer-simple-0.1.1.1 integer-simple-0.1.1.1
@ -838,7 +838,6 @@ The following command displays the complete list of GHC compilers build with `in
haskell.compiler.integer-simple.ghc7103 ghc-7.10.3 haskell.compiler.integer-simple.ghc7103 ghc-7.10.3
haskell.compiler.integer-simple.ghc722 ghc-7.2.2 haskell.compiler.integer-simple.ghc722 ghc-7.2.2
haskell.compiler.integer-simple.ghc742 ghc-7.4.2 haskell.compiler.integer-simple.ghc742 ghc-7.4.2
haskell.compiler.integer-simple.ghc763 ghc-7.6.3
haskell.compiler.integer-simple.ghc783 ghc-7.8.3 haskell.compiler.integer-simple.ghc783 ghc-7.8.3
haskell.compiler.integer-simple.ghc784 ghc-7.8.4 haskell.compiler.integer-simple.ghc784 ghc-7.8.4
haskell.compiler.integer-simple.ghc801 ghc-8.0.1 haskell.compiler.integer-simple.ghc801 ghc-8.0.1
@ -846,10 +845,10 @@ The following command displays the complete list of GHC compilers build with `in
haskell.compiler.integer-simple.ghcHEAD ghc-8.1.20170106 haskell.compiler.integer-simple.ghcHEAD ghc-8.1.20170106
To get a package set supporting `integer-simple` use the attribute: To get a package set supporting `integer-simple` use the attribute:
`pkgs.haskell.packages.integer-simple."${ghcVersion}"`. For example `haskell.packages.integer-simple."${ghcVersion}"`. For example
use the following to get the `scientific` package build with `integer-simple`: use the following to get the `scientific` package build with `integer-simple`:
$ nix-build -A pkgs.haskell.packages.integer-simple.ghc802.scientific $ nix-build -A haskell.packages.integer-simple.ghc802.scientific
## Other resources ## Other resources

View File

@ -1,4 +1,4 @@
{lib, pkgs} : {lib, pkgs}:
let inherit (lib) nv nvs; in let inherit (lib) nv nvs; in
{ {
@ -19,7 +19,7 @@ let inherit (lib) nv nvs; in
# * vim_configurable # * vim_configurable
# #
# A minimal example illustrating most features would look like this: # A minimal example illustrating most features would look like this:
# let base = composableDerivation { (fixed : let inherit (fixed.fixed) name in { # let base = composableDerivation { (fixed: let inherit (fixed.fixed) name in {
# src = fetchurl { # src = fetchurl {
# } # }
# buildInputs = [A]; # buildInputs = [A];
@ -79,7 +79,7 @@ let inherit (lib) nv nvs; in
# consider adding addtional elements by derivation.merge { removeAttrs = ["elem"]; }; # consider adding addtional elements by derivation.merge { removeAttrs = ["elem"]; };
removeAttrs ? ["cfg" "flags"] removeAttrs ? ["cfg" "flags"]
}: (lib.defaultOverridableDelayableArgs ( a: mkDerivation a) }: (lib.defaultOverridableDelayableArgs ( a: mkDerivation a)
{ {
inherit applyPreTidy removeAttrs; inherit applyPreTidy removeAttrs;
}).merge; }).merge;

View File

@ -24,10 +24,10 @@ rec {
traceValSeq = v: traceVal (builtins.deepSeq v v); traceValSeq = v: traceVal (builtins.deepSeq v v);
# this can help debug your code as well - designed to not produce thousands of lines # this can help debug your code as well - designed to not produce thousands of lines
traceShowVal = x : trace (showVal x) x; traceShowVal = x: trace (showVal x) x;
traceShowValMarked = str: x: trace (str + showVal x) x; traceShowValMarked = str: x: trace (str + showVal x) x;
attrNamesToStr = a : lib.concatStringsSep "; " (map (x : "${x}=") (attrNames a)); attrNamesToStr = a: lib.concatStringsSep "; " (map (x: "${x}=") (attrNames a));
showVal = x : showVal = x:
if isAttrs x then if isAttrs x then
if x ? outPath then "x is a derivation, name ${if x ? name then x.name else "<no name>"}, { ${attrNamesToStr x} }" if x ? outPath then "x is a derivation, name ${if x ? name then x.name else "<no name>"}, { ${attrNamesToStr x} }"
else "x is attr set { ${attrNamesToStr x} }" else "x is attr set { ${attrNamesToStr x} }"
@ -43,9 +43,9 @@ rec {
# trace the arguments passed to function and its result # trace the arguments passed to function and its result
# maybe rewrite these functions in a traceCallXml like style. Then one function is enough # maybe rewrite these functions in a traceCallXml like style. Then one function is enough
traceCall = n : f : a : let t = n2 : x : traceShowValMarked "${n} ${n2}:" x; in t "result" (f (t "arg 1" a)); traceCall = n: f: a: let t = n2: x: traceShowValMarked "${n} ${n2}:" x; in t "result" (f (t "arg 1" a));
traceCall2 = n : f : a : b : let t = n2 : x : traceShowValMarked "${n} ${n2}:" x; in t "result" (f (t "arg 1" a) (t "arg 2" b)); traceCall2 = n: f: a: b: let t = n2: x: traceShowValMarked "${n} ${n2}:" x; in t "result" (f (t "arg 1" a) (t "arg 2" b));
traceCall3 = n : f : a : b : c : let t = n2 : x : traceShowValMarked "${n} ${n2}:" x; in t "result" (f (t "arg 1" a) (t "arg 2" b) (t "arg 3" c)); traceCall3 = n: f: a: b: c: let t = n2: x: traceShowValMarked "${n} ${n2}:" x; in t "result" (f (t "arg 1" a) (t "arg 2" b) (t "arg 3" c));
# FIXME: rename this? # FIXME: rename this?
traceValIfNot = c: x: traceValIfNot = c: x:
@ -71,7 +71,7 @@ rec {
# create a test assuming that list elements are true # create a test assuming that list elements are true
# usage: { testX = allTrue [ true ]; } # usage: { testX = allTrue [ true ]; }
testAllTrue = expr : { inherit expr; expected = map (x: true) expr; }; testAllTrue = expr: { inherit expr; expected = map (x: true) expr; };
strict = v: strict = v:
trace "Warning: strict is deprecated and will be removed in the next release" trace "Warning: strict is deprecated and will be removed in the next release"

View File

@ -16,23 +16,23 @@ rec {
defaultMergeArg = x : y: if builtins.isAttrs y then defaultMergeArg = x : y: if builtins.isAttrs y then
y y
else else
(y x); (y x);
defaultMerge = x: y: x // (defaultMergeArg x y); defaultMerge = x: y: x // (defaultMergeArg x y);
foldArgs = merger: f: init: x: foldArgs = merger: f: init: x:
let arg=(merger init (defaultMergeArg init x)); let arg = (merger init (defaultMergeArg init x));
# now add the function with composed args already applied to the final attrs # now add the function with composed args already applied to the final attrs
base = (setAttrMerge "passthru" {} (f arg) base = (setAttrMerge "passthru" {} (f arg)
( z : z // rec { ( z: z // rec {
function = foldArgs merger f arg; function = foldArgs merger f arg;
args = (lib.attrByPath ["passthru" "args"] {} z) // x; args = (lib.attrByPath ["passthru" "args"] {} z) // x;
} )); } ));
withStdOverrides = base // { withStdOverrides = base // {
override = base.passthru.function; override = base.passthru.function;
} ; };
in in
withStdOverrides; withStdOverrides;
# predecessors: proposed replacement for applyAndFun (which has a bug cause it merges twice) # predecessors: proposed replacement for applyAndFun (which has a bug cause it merges twice)
# the naming "overridableDelayableArgs" tries to express that you can # the naming "overridableDelayableArgs" tries to express that you can
@ -49,35 +49,35 @@ rec {
# #
# examples: see test cases "res" below; # examples: see test cases "res" below;
overridableDelayableArgs = overridableDelayableArgs =
f : # the function applied to the arguments f: # the function applied to the arguments
initial : # you pass attrs, the functions below are passing a function taking the fix argument initial: # you pass attrs, the functions below are passing a function taking the fix argument
let let
takeFixed = if isFunction initial then initial else (fixed : initial); # transform initial to an expression always taking the fixed argument takeFixed = if isFunction initial then initial else (fixed : initial); # transform initial to an expression always taking the fixed argument
tidy = args : tidy = args:
let # apply all functions given in "applyPreTidy" in sequence let # apply all functions given in "applyPreTidy" in sequence
applyPreTidyFun = fold ( n : a : x : n ( a x ) ) lib.id (maybeAttr "applyPreTidy" [] args); applyPreTidyFun = fold ( n: a: x: n ( a x ) ) lib.id (maybeAttr "applyPreTidy" [] args);
in removeAttrs (applyPreTidyFun args) ( ["applyPreTidy"] ++ (maybeAttr "removeAttrs" [] args) ); # tidy up args before applying them in removeAttrs (applyPreTidyFun args) ( ["applyPreTidy"] ++ (maybeAttr "removeAttrs" [] args) ); # tidy up args before applying them
fun = n : x : fun = n: x:
let newArgs = fixed : let newArgs = fixed:
let args = takeFixed fixed; let args = takeFixed fixed;
mergeFun = args.${n}; mergeFun = args.${n};
in if isAttrs x then (mergeFun args x) in if isAttrs x then (mergeFun args x)
else assert isFunction x; else assert isFunction x;
mergeFun args (x ( args // { inherit fixed; })); mergeFun args (x ( args // { inherit fixed; }));
in overridableDelayableArgs f newArgs; in overridableDelayableArgs f newArgs;
in in
(f (tidy (lib.fix takeFixed))) // { (f (tidy (lib.fix takeFixed))) // {
merge = fun "mergeFun"; merge = fun "mergeFun";
replace = fun "keepFun"; replace = fun "keepFun";
}; };
defaultOverridableDelayableArgs = f : defaultOverridableDelayableArgs = f:
let defaults = { let defaults = {
mergeFun = mergeAttrByFunc; # default merge function. merge strategie (concatenate lists, strings) is given by mergeAttrBy mergeFun = mergeAttrByFunc; # default merge function. merge strategie (concatenate lists, strings) is given by mergeAttrBy
keepFun = a : b : { inherit (a) removeAttrs mergeFun keepFun mergeAttrBy; } // b; # even when using replace preserve these values keepFun = a: b: { inherit (a) removeAttrs mergeFun keepFun mergeAttrBy; } // b; # even when using replace preserve these values
applyPreTidy = []; # list of functions applied to args before args are tidied up (usage case : prepareDerivationArgs) applyPreTidy = []; # list of functions applied to args before args are tidied up (usage case : prepareDerivationArgs)
mergeAttrBy = mergeAttrBy // { mergeAttrBy = mergeAttrBy // {
applyPreTidy = a : b : a ++ b; applyPreTidy = a: b: a ++ b;
removeAttrs = a : b: a ++ b; removeAttrs = a: b: a ++ b;
}; };
removeAttrs = ["mergeFun" "keepFun" "mergeAttrBy" "removeAttrs" "fixed" ]; # before applying the arguments to the function make sure these names are gone removeAttrs = ["mergeFun" "keepFun" "mergeAttrBy" "removeAttrs" "fixed" ]; # before applying the arguments to the function make sure these names are gone
}; };
@ -86,7 +86,7 @@ rec {
# rec { # an example of how composedArgsAndFun can be used # rec { # an example of how composedArgsAndFun can be used
# a = composedArgsAndFun (x : x) { a = ["2"]; meta = { d = "bar";}; }; # a = composedArgsAndFun (x: x) { a = ["2"]; meta = { d = "bar";}; };
# # meta.d will be lost ! It's your task to preserve it (eg using a merge function) # # meta.d will be lost ! It's your task to preserve it (eg using a merge function)
# b = a.passthru.function { a = [ "3" ]; meta = { d2 = "bar2";}; }; # b = a.passthru.function { a = [ "3" ]; meta = { d2 = "bar2";}; };
# # instead of passing/ overriding values you can use a merge function: # # instead of passing/ overriding values you can use a merge function:
@ -119,7 +119,7 @@ rec {
else if val == true || val == false then false else if val == true || val == false then false
else null; else null;
# Return true only if there is an attribute and it is true. # Return true only if there is an attribute and it is true.
checkFlag = attrSet: name: checkFlag = attrSet: name:
if name == "true" then true else if name == "true" then true else
@ -134,29 +134,29 @@ rec {
( attrByPath [name] (if checkFlag attrSet name then true else ( attrByPath [name] (if checkFlag attrSet name then true else
if argList == [] then null else if argList == [] then null else
let x = builtins.head argList; in let x = builtins.head argList; in
if (head x) == name then if (head x) == name then
(head (tail x)) (head (tail x))
else (getValue attrSet else (getValue attrSet
(tail argList) name)) attrSet ); (tail argList) name)) attrSet );
# Input : attrSet, [[name default] ...], [ [flagname reqs..] ... ] # Input : attrSet, [[name default] ...], [ [flagname reqs..] ... ]
# Output : are reqs satisfied? It's asserted. # Output : are reqs satisfied? It's asserted.
checkReqs = attrSet : argList : condList : checkReqs = attrSet: argList: condList:
( (
fold lib.and true fold lib.and true
(map (x: let name = (head x) ; in (map (x: let name = (head x); in
((checkFlag attrSet name) -> ((checkFlag attrSet name) ->
(fold lib.and true (fold lib.and true
(map (y: let val=(getValue attrSet argList y); in (map (y: let val=(getValue attrSet argList y); in
(val!=null) && (val!=false)) (val!=null) && (val!=false))
(tail x))))) condList)) ; (tail x))))) condList));
# This function has O(n^2) performance. # This function has O(n^2) performance.
uniqList = {inputList, acc ? []} : uniqList = { inputList, acc ? [] }:
let go = xs : acc : let go = xs: acc:
if xs == [] if xs == []
then [] then []
else let x = head xs; else let x = head xs;
@ -164,26 +164,26 @@ rec {
in y ++ go (tail xs) (y ++ acc); in y ++ go (tail xs) (y ++ acc);
in go inputList acc; in go inputList acc;
uniqListExt = {inputList, outputList ? [], uniqListExt = { inputList,
getter ? (x : x), compare ? (x: y: x==y)}: outputList ? [],
getter ? (x: x),
compare ? (x: y: x==y) }:
if inputList == [] then outputList else if inputList == [] then outputList else
let x=head inputList; let x = head inputList;
isX = y: (compare (getter y) (getter x)); isX = y: (compare (getter y) (getter x));
newOutputList = outputList ++ newOutputList = outputList ++
(if any isX outputList then [] else [x]); (if any isX outputList then [] else [x]);
in uniqListExt {outputList=newOutputList; in uniqListExt { outputList = newOutputList;
inputList = (tail inputList); inputList = (tail inputList);
inherit getter compare; inherit getter compare;
}; };
condConcat = name: list: checker: condConcat = name: list: checker:
if list == [] then name else if list == [] then name else
if checker (head list) then if checker (head list) then
condConcat condConcat
(name + (head (tail list))) (name + (head (tail list)))
(tail (tail list)) (tail (tail list))
checker checker
else condConcat else condConcat
name (tail (tail list)) checker; name (tail (tail list)) checker;
@ -202,12 +202,12 @@ rec {
in in
work startSet [] []; work startSet [] [];
innerModifySumArgs = f: x: a: b: if b == null then (f a b) // x else innerModifySumArgs = f: x: a: b: if b == null then (f a b) // x else
innerModifySumArgs f x (a // b); innerModifySumArgs f x (a // b);
modifySumArgs = f: x: innerModifySumArgs f x {}; modifySumArgs = f: x: innerModifySumArgs f x {};
innerClosePropagation = acc : xs : innerClosePropagation = acc: xs:
if xs == [] if xs == []
then acc then acc
else let y = head xs; else let y = head xs;
@ -227,31 +227,31 @@ rec {
closePropagation = list: (uniqList {inputList = (innerClosePropagation [] list);}); closePropagation = list: (uniqList {inputList = (innerClosePropagation [] list);});
# calls a function (f attr value ) for each record item. returns a list # calls a function (f attr value ) for each record item. returns a list
mapAttrsFlatten = f : r : map (attr: f attr r.${attr}) (attrNames r); mapAttrsFlatten = f: r: map (attr: f attr r.${attr}) (attrNames r);
# attribute set containing one attribute # attribute set containing one attribute
nvs = name : value : listToAttrs [ (nameValuePair name value) ]; nvs = name: value: listToAttrs [ (nameValuePair name value) ];
# adds / replaces an attribute of an attribute set # adds / replaces an attribute of an attribute set
setAttr = set : name : v : set // (nvs name v); setAttr = set: name: v: set // (nvs name v);
# setAttrMerge (similar to mergeAttrsWithFunc but only merges the values of a particular name) # setAttrMerge (similar to mergeAttrsWithFunc but only merges the values of a particular name)
# setAttrMerge "a" [] { a = [2];} (x : x ++ [3]) -> { a = [2 3]; } # setAttrMerge "a" [] { a = [2];} (x: x ++ [3]) -> { a = [2 3]; }
# setAttrMerge "a" [] { } (x : x ++ [3]) -> { a = [ 3]; } # setAttrMerge "a" [] { } (x: x ++ [3]) -> { a = [ 3]; }
setAttrMerge = name : default : attrs : f : setAttrMerge = name: default: attrs: f:
setAttr attrs name (f (maybeAttr name default attrs)); setAttr attrs name (f (maybeAttr name default attrs));
# Using f = a : b = b the result is similar to // # Using f = a: b = b the result is similar to //
# merge attributes with custom function handling the case that the attribute # merge attributes with custom function handling the case that the attribute
# exists in both sets # exists in both sets
mergeAttrsWithFunc = f : set1 : set2 : mergeAttrsWithFunc = f: set1: set2:
fold (n: set : if set ? ${n} fold (n: set: if set ? ${n}
then setAttr set n (f set.${n} set2.${n}) then setAttr set n (f set.${n} set2.${n})
else set ) else set )
(set2 // set1) (attrNames set2); (set2 // set1) (attrNames set2);
# merging two attribute set concatenating the values of same attribute names # merging two attribute set concatenating the values of same attribute names
# eg { a = 7; } { a = [ 2 3 ]; } becomes { a = [ 7 2 3 ]; } # eg { a = 7; } { a = [ 2 3 ]; } becomes { a = [ 7 2 3 ]; }
mergeAttrsConcatenateValues = mergeAttrsWithFunc ( a : b : (toList a) ++ (toList b) ); mergeAttrsConcatenateValues = mergeAttrsWithFunc ( a: b: (toList a) ++ (toList b) );
# merges attributes using //, if a name exisits in both attributes # merges attributes using //, if a name exisits in both attributes
# an error will be triggered unless its listed in mergeLists # an error will be triggered unless its listed in mergeLists
@ -262,10 +262,10 @@ rec {
# ! deprecated, use mergeAttrByFunc instead # ! deprecated, use mergeAttrByFunc instead
mergeAttrsNoOverride = { mergeLists ? ["buildInputs" "propagatedBuildInputs"], mergeAttrsNoOverride = { mergeLists ? ["buildInputs" "propagatedBuildInputs"],
overrideSnd ? [ "buildPhase" ] overrideSnd ? [ "buildPhase" ]
} : attrs1 : attrs2 : }: attrs1: attrs2:
fold (n: set : fold (n: set:
setAttr set n ( if set ? ${n} setAttr set n ( if set ? ${n}
then # merge then # merge
if elem n mergeLists # attribute contains list, merge them by concatenating if elem n mergeLists # attribute contains list, merge them by concatenating
then attrs2.${n} ++ attrs1.${n} then attrs2.${n} ++ attrs1.${n}
else if elem n overrideSnd else if elem n overrideSnd
@ -286,14 +286,14 @@ rec {
# { mergeAttrsBy = [...]; buildInputs = [ a b c d ]; } # { mergeAttrsBy = [...]; buildInputs = [ a b c d ]; }
# is used by prepareDerivationArgs, defaultOverridableDelayableArgs and can be used when composing using # is used by prepareDerivationArgs, defaultOverridableDelayableArgs and can be used when composing using
# foldArgs, composedArgsAndFun or applyAndFun. Example: composableDerivation in all-packages.nix # foldArgs, composedArgsAndFun or applyAndFun. Example: composableDerivation in all-packages.nix
mergeAttrByFunc = x : y : mergeAttrByFunc = x: y:
let let
mergeAttrBy2 = { mergeAttrBy=lib.mergeAttrs; } mergeAttrBy2 = { mergeAttrBy = lib.mergeAttrs; }
// (maybeAttr "mergeAttrBy" {} x) // (maybeAttr "mergeAttrBy" {} x)
// (maybeAttr "mergeAttrBy" {} y); in // (maybeAttr "mergeAttrBy" {} y); in
fold lib.mergeAttrs {} [ fold lib.mergeAttrs {} [
x y x y
(mapAttrs ( a : v : # merge special names using given functions (mapAttrs ( a: v: # merge special names using given functions
if x ? ${a} if x ? ${a}
then if y ? ${a} then if y ? ${a}
then v x.${a} y.${a} # both have attr, use merge func then v x.${a} y.${a} # both have attr, use merge func
@ -313,9 +313,9 @@ rec {
# #
# This function is best explained by an example: # This function is best explained by an example:
# #
# {version ? "2.x"} : # {version ? "2.x"}:
# #
# mkDerivation (mergeAttrsByVersion "package-name" version # mkDerivation (mergeAttrsByVersion "package-name" version
# { # version specific settings # { # version specific settings
# "git" = { src = ..; preConfigre = "autogen.sh"; buildInputs = [automake autoconf libtool]; }; # "git" = { src = ..; preConfigre = "autogen.sh"; buildInputs = [automake autoconf libtool]; };
# "2.x" = { src = ..; }; # "2.x" = { src = ..; };
@ -346,21 +346,24 @@ rec {
# See misc.nix -> versionedDerivation # See misc.nix -> versionedDerivation
# discussion: nixpkgs: pull/310 # discussion: nixpkgs: pull/310
mergeAttrsByVersion = name: version: attrsByVersion: base: mergeAttrsByVersion = name: version: attrsByVersion: base:
mergeAttrsByFuncDefaultsClean [ { name = "${name}-${version}"; } base (maybeAttr version (throw "bad version ${version} for ${name}") attrsByVersion)]; mergeAttrsByFuncDefaultsClean [ { name = "${name}-${version}"; }
base
(maybeAttr version (throw "bad version ${version} for ${name}") attrsByVersion)
];
# sane defaults (same name as attr name so that inherit can be used) # sane defaults (same name as attr name so that inherit can be used)
mergeAttrBy = # { buildInputs = concatList; [...]; passthru = mergeAttr; [..]; } mergeAttrBy = # { buildInputs = concatList; [...]; passthru = mergeAttr; [..]; }
listToAttrs (map (n : nameValuePair n lib.concat) listToAttrs (map (n: nameValuePair n lib.concat)
[ "nativeBuildInputs" "buildInputs" "propagatedBuildInputs" "configureFlags" "prePhases" "postAll" "patches" ]) [ "nativeBuildInputs" "buildInputs" "propagatedBuildInputs" "configureFlags" "prePhases" "postAll" "patches" ])
// listToAttrs (map (n : nameValuePair n lib.mergeAttrs) [ "passthru" "meta" "cfg" "flags" ]) // listToAttrs (map (n: nameValuePair n lib.mergeAttrs) [ "passthru" "meta" "cfg" "flags" ])
// listToAttrs (map (n : nameValuePair n (a: b: "${a}\n${b}") ) [ "preConfigure" "postInstall" ]) // listToAttrs (map (n: nameValuePair n (a: b: "${a}\n${b}") ) [ "preConfigure" "postInstall" ])
; ;
# prepareDerivationArgs tries to make writing configurable derivations easier # prepareDerivationArgs tries to make writing configurable derivations easier
# example: # example:
# prepareDerivationArgs { # prepareDerivationArgs {
# mergeAttrBy = { # mergeAttrBy = {
# myScript = x : y : x ++ "\n" ++ y; # myScript = x: y: x ++ "\n" ++ y;
# }; # };
# cfg = { # cfg = {
# readlineSupport = true; # readlineSupport = true;
@ -392,10 +395,10 @@ rec {
# TODO use args.mergeFun here as well? # TODO use args.mergeFun here as well?
prepareDerivationArgs = args: prepareDerivationArgs = args:
let args2 = { cfg = {}; flags = {}; } // args; let args2 = { cfg = {}; flags = {}; } // args;
flagName = name : "${name}Support"; flagName = name: "${name}Support";
cfgWithDefaults = (listToAttrs (map (n : nameValuePair (flagName n) false) (attrNames args2.flags))) cfgWithDefaults = (listToAttrs (map (n: nameValuePair (flagName n) false) (attrNames args2.flags)))
// args2.cfg; // args2.cfg;
opts = attrValues (mapAttrs (a : v : opts = attrValues (mapAttrs (a: v:
let v2 = if v ? set || v ? unset then v else { set = v; }; let v2 = if v ? set || v ? unset then v else { set = v; };
n = if cfgWithDefaults.${flagName a} then "set" else "unset"; n = if cfgWithDefaults.${flagName a} then "set" else "unset";
attr = maybeAttr n {} v2; in attr = maybeAttr n {} v2; in

View File

@ -71,6 +71,7 @@
bjg = "Brian Gough <bjg@gnu.org>"; bjg = "Brian Gough <bjg@gnu.org>";
bjornfor = "Bjørn Forsman <bjorn.forsman@gmail.com>"; bjornfor = "Bjørn Forsman <bjorn.forsman@gmail.com>";
bluescreen303 = "Mathijs Kwik <mathijs@bluescreen303.nl>"; bluescreen303 = "Mathijs Kwik <mathijs@bluescreen303.nl>";
bobakker = "Bo Bakker <bobakk3r@gmail.com>";
bobvanderlinden = "Bob van der Linden <bobvanderlinden@gmail.com>"; bobvanderlinden = "Bob van der Linden <bobvanderlinden@gmail.com>";
bodil = "Bodil Stokke <nix@bodil.org>"; bodil = "Bodil Stokke <nix@bodil.org>";
boothead = "Ben Ford <ben@perurbis.com>"; boothead = "Ben Ford <ben@perurbis.com>";
@ -203,6 +204,7 @@
havvy = "Ryan Scheel <ryan.havvy@gmail.com>"; havvy = "Ryan Scheel <ryan.havvy@gmail.com>";
hbunke = "Hendrik Bunke <bunke.hendrik@gmail.com>"; hbunke = "Hendrik Bunke <bunke.hendrik@gmail.com>";
hce = "Hans-Christian Esperer <hc@hcesperer.org>"; hce = "Hans-Christian Esperer <hc@hcesperer.org>";
heel = "Sergii Paryzhskyi <parizhskiy@gmail.com>";
henrytill = "Henry Till <henrytill@gmail.com>"; henrytill = "Henry Till <henrytill@gmail.com>";
hinton = "Tom Hinton <t@larkery.com>"; hinton = "Tom Hinton <t@larkery.com>";
hrdinka = "Christoph Hrdinka <c.nix@hrdinka.at>"; hrdinka = "Christoph Hrdinka <c.nix@hrdinka.at>";

View File

@ -114,7 +114,7 @@ rec {
/* Massage a module into canonical form, that is, a set consisting /* Massage a module into canonical form, that is, a set consisting
of options, config and imports attributes. */ of options, config and imports attributes. */
unifyModuleSyntax = file: key: m: unifyModuleSyntax = file: key: m:
let metaSet = if m ? meta let metaSet = if m ? meta
then { meta = m.meta; } then { meta = m.meta; }
else {}; else {};
in in
@ -595,7 +595,7 @@ rec {
functionality functionality
This show a warning if any a.b.c or d.e.f is set, and set the value of This show a warning if any a.b.c or d.e.f is set, and set the value of
x.y.z to the result of the merge function x.y.z to the result of the merge function
*/ */
mkMergedOptionModule = from: to: mergeFn: mkMergedOptionModule = from: to: mergeFn:
{ config, options, ... }: { config, options, ... }:
@ -611,12 +611,12 @@ rec {
let val = getAttrFromPath f config; let val = getAttrFromPath f config;
opt = getAttrFromPath f options; opt = getAttrFromPath f options;
in in
optionalString optionalString
(val != "_mkMergedOptionModule") (val != "_mkMergedOptionModule")
"The option `${showOption f}' defined in ${showFiles opt.files} has been changed to `${showOption to}' that has a different type. Please read `${showOption to}' documentation and update your configuration accordingly." "The option `${showOption f}' defined in ${showFiles opt.files} has been changed to `${showOption to}' that has a different type. Please read `${showOption to}' documentation and update your configuration accordingly."
) from); ) from);
} // setAttrByPath to (mkMerge } // setAttrByPath to (mkMerge
(optional (optional
(any (f: (getAttrFromPath f config) != "_mkMergedOptionModule") from) (any (f: (getAttrFromPath f config) != "_mkMergedOptionModule") from)
(mergeFn config))); (mergeFn config)));
}; };

View File

@ -80,7 +80,7 @@ runTests {
y = x.merge {}; y = x.merge {};
in (y.merge) { a = 10; }; in (y.merge) { a = 10; };
resRem7 = res6.replace (a : removeAttrs a ["a"]); resRem7 = res6.replace (a: removeAttrs a ["a"]);
resReplace6 = let x = defaultOverridableDelayableArgs id { a = 7; mergeAttrBy = { a = add; }; }; resReplace6 = let x = defaultOverridableDelayableArgs id { a = 7; mergeAttrBy = { a = add; }; };
x2 = x.merge { a = 20; }; # now we have 27 x2 = x.merge { a = 20; }; # now we have 27
@ -88,10 +88,10 @@ runTests {
# fixed tests (delayed args): (when using them add some comments, please) # fixed tests (delayed args): (when using them add some comments, please)
resFixed1 = resFixed1 =
let x = defaultOverridableDelayableArgs id ( x : { a = 7; c = x.fixed.b; }); let x = defaultOverridableDelayableArgs id ( x: { a = 7; c = x.fixed.b; });
y = x.merge (x : { name = "name-${builtins.toString x.fixed.c}"; }); y = x.merge (x: { name = "name-${builtins.toString x.fixed.c}"; });
in (y.merge) { b = 10; }; in (y.merge) { b = 10; };
strip = attrs : removeAttrs attrs ["merge" "replace"]; strip = attrs: removeAttrs attrs ["merge" "replace"];
in all id in all id
[ ((strip res1) == { }) [ ((strip res1) == { })
((strip res2) == { a = 7; }) ((strip res2) == { a = 7; })

View File

@ -81,7 +81,7 @@ rec {
# name: name of the type # name: name of the type
# type: type function. # type: type function.
# wrapped: the type wrapped in case of compound types. # wrapped: the type wrapped in case of compound types.
# payload: values of the type, two payloads of the same type must be # payload: values of the type, two payloads of the same type must be
# combinable with the binOp binary operation. # combinable with the binOp binary operation.
# binOp: binary operation that merge two payloads of the same type. # binOp: binary operation that merge two payloads of the same type.
functor ? defaultFunctor name functor ? defaultFunctor name

View File

@ -1,14 +0,0 @@
*~
,*
.*.swp
.*.swo
result
result-*
/doc/NEWS.html
/doc/NEWS.txt
/doc/manual.html
/doc/manual.pdf
.version-suffix
.DS_Store
.git

View File

@ -1,12 +0,0 @@
FROM busybox
RUN dir=`mktemp -d` && trap 'rm -rf "$dir"' EXIT && \
wget -O- https://nixos.org/releases/nix/nix-1.7/nix-1.7-x86_64-linux.tar.bz2 | bzcat | tar x -C $dir && \
mkdir -m 0755 /nix && USER=root sh $dir/*/install && \
echo ". /root/.nix-profile/etc/profile.d/nix.sh" >> /etc/profile
ADD . /root/nix/nixpkgs
ONBUILD ENV NIX_PATH nixpkgs=/root/nix/nixpkgs:nixos=/root/nix/nixpkgs/nixos
ONBUILD ENV PATH /root/.nix-profile/bin:/root/.nix-profile/sbin:/bin:/sbin:/usr/bin:/usr/sbin
ONBUILD ENV ENV /etc/profile
ENV ENV /etc/profile

View File

@ -74,13 +74,13 @@ def cli(jobset):
# TODO: dependency failed without propagated builds # TODO: dependency failed without propagated builds
for tr in d('img[alt="Failed"]').parents('tr'): for tr in d('img[alt="Failed"]').parents('tr'):
a = pq(tr)('a')[1] a = pq(tr)('a')[1]
print "- [ ] [{}]({})".format(a.text, a.get('href')) print("- [ ] [{}]({})".format(a.text, a.get('href')))
sys.stdout.flush() sys.stdout.flush()
maintainers = get_maintainers(a.text) maintainers = get_maintainers(a.text)
if maintainers: if maintainers:
print " - maintainers: {}".format(", ".join(map(lambda u: '@' + u, maintainers))) print(" - maintainers: {}".format(", ".join(map(lambda u: '@' + u, maintainers))))
# TODO: print last three persons that touched this file # TODO: print last three persons that touched this file
# TODO: pinpoint the diff that broke this build, or maybe it's transient or maybe it never worked? # TODO: pinpoint the diff that broke this build, or maybe it's transient or maybe it never worked?

View File

@ -177,7 +177,7 @@ foreach my $u (@{$spec->{users}}) {
} }
# Create a home directory. # Create a home directory.
if ($u->{createHome} && ! -e $u->{home}) { if ($u->{createHome}) {
make_path($u->{home}, { mode => 0700 }) if ! -e $u->{home}; make_path($u->{home}, { mode => 0700 }) if ! -e $u->{home};
chown $u->{uid}, $u->{gid}, $u->{home}; chown $u->{uid}, $u->{gid}, $u->{home};
} }

View File

@ -0,0 +1,30 @@
{ config, lib, pkgs, ... }:
with lib;
{
###### interface
options = {
hardware.sensor.iio = {
enable = mkOption {
description = "Enable this option to support IIO sensors.";
type = types.bool;
default = false;
};
};
};
###### implementation
config = mkIf config.hardware.sensor.iio.enable {
boot.initrd.availableKernelModules = [ "hid-sensor-hub" ];
environment.systemPackages = with pkgs; [ iio-sensor-proxy ];
services.dbus.packages = with pkgs; [ iio-sensor-proxy ];
services.udev.packages = with pkgs; [ iio-sensor-proxy ];
systemd.packages = with pkgs; [ iio-sensor-proxy ];
};
}

View File

@ -29,6 +29,7 @@
./hardware/ckb.nix ./hardware/ckb.nix
./hardware/cpu/amd-microcode.nix ./hardware/cpu/amd-microcode.nix
./hardware/cpu/intel-microcode.nix ./hardware/cpu/intel-microcode.nix
./hardware/sensor/iio.nix
./hardware/ksm.nix ./hardware/ksm.nix
./hardware/mcelog.nix ./hardware/mcelog.nix
./hardware/network/b43.nix ./hardware/network/b43.nix
@ -328,6 +329,7 @@
./services/monitoring/prometheus/default.nix ./services/monitoring/prometheus/default.nix
./services/monitoring/prometheus/alertmanager.nix ./services/monitoring/prometheus/alertmanager.nix
./services/monitoring/prometheus/blackbox-exporter.nix ./services/monitoring/prometheus/blackbox-exporter.nix
./services/monitoring/prometheus/fritzbox-exporter.nix
./services/monitoring/prometheus/json-exporter.nix ./services/monitoring/prometheus/json-exporter.nix
./services/monitoring/prometheus/nginx-exporter.nix ./services/monitoring/prometheus/nginx-exporter.nix
./services/monitoring/prometheus/node-exporter.nix ./services/monitoring/prometheus/node-exporter.nix

View File

@ -312,7 +312,7 @@
Overflows in boot critical code (e.g., the root filesystem module) can Overflows in boot critical code (e.g., the root filesystem module) can
render the system unbootable. Work around by setting render the system unbootable. Work around by setting
<programlisting> <programlisting>
boot.kernel.kernelParams = [ "pax_size_overflow_report_only" ]; boot.kernelParams = [ "pax_size_overflow_report_only" ];
</programlisting> </programlisting>
</para></listitem> </para></listitem>

View File

@ -4,20 +4,29 @@ with lib;
let let
cfg = config.services.couchdb; cfg = config.services.couchdb;
configFile = pkgs.writeText "couchdb.ini" useVersion2 = strings.versionAtLeast (strings.getVersion cfg.package) "2.0";
configFile = pkgs.writeText "couchdb.ini" (
'' ''
[couchdb] [couchdb]
database_dir = ${cfg.databaseDir} database_dir = ${cfg.databaseDir}
uri_file = ${cfg.uriFile} uri_file = ${cfg.uriFile}
view_index_dir = ${cfg.viewIndexDir} view_index_dir = ${cfg.viewIndexDir}
'' + (if useVersion2 then
''
[chttpd]
'' else
''
[httpd] [httpd]
'') +
''
port = ${toString cfg.port} port = ${toString cfg.port}
bind_address = ${cfg.bindAddress} bind_address = ${cfg.bindAddress}
[log] [log]
file = ${cfg.logFile} file = ${cfg.logFile}
''; '');
executable = if useVersion2 then "${cfg.package}/bin/couchdb"
else ''${cfg.package}/bin/couchdb -a ${configFile} -a ${pkgs.writeText "couchdb-extra.ini" cfg.extraConfig} -a ${cfg.configFile}'';
in { in {
@ -130,7 +139,6 @@ in {
configFile = mkOption { configFile = mkOption {
type = types.string; type = types.string;
default = "/var/lib/couchdb/couchdb.ini";
description = '' description = ''
Configuration file for persisting runtime changes. File Configuration file for persisting runtime changes. File
needs to be readable and writable from couchdb user/group. needs to be readable and writable from couchdb user/group.
@ -147,6 +155,9 @@ in {
environment.systemPackages = [ cfg.package ]; environment.systemPackages = [ cfg.package ];
services.couchdb.configFile = mkDefault
(if useVersion2 then "/var/lib/couchdb/local.ini" else "/var/lib/couchdb/couchdb.ini");
systemd.services.couchdb = { systemd.services.couchdb = {
description = "CouchDB Server"; description = "CouchDB Server";
wantedBy = [ "multi-user.target" ]; wantedBy = [ "multi-user.target" ];
@ -170,11 +181,20 @@ in {
fi fi
''; '';
environment = mkIf useVersion2 {
# we are actually specifying 4 configuration files:
# 1. the preinstalled default.ini
# 2. the module configuration
# 3. the extraConfig from the module options
# 4. the locally writable config file, which couchdb itself writes to
ERL_FLAGS= ''-couch_ini ${cfg.package}/etc/default.ini ${configFile} ${pkgs.writeText "couchdb-extra.ini" cfg.extraConfig} ${cfg.configFile}'';
};
serviceConfig = { serviceConfig = {
PermissionsStartOnly = true; PermissionsStartOnly = true;
User = cfg.user; User = cfg.user;
Group = cfg.group; Group = cfg.group;
ExecStart = "${cfg.package}/bin/couchdb -a ${configFile} -a ${pkgs.writeText "couchdb-extra.ini" cfg.extraConfig} -a ${cfg.configFile}"; ExecStart = executable;
}; };
}; };

View File

@ -18,7 +18,7 @@ let
footer = domain: list: "To unsubscribe send a mail to ${list}+unsubscribe@${domain}"; footer = domain: list: "To unsubscribe send a mail to ${list}+unsubscribe@${domain}";
createList = d: l: '' createList = d: l: ''
${pkgs.coreutils}/bin/mkdir -p ${listCtl d l} ${pkgs.coreutils}/bin/mkdir -p ${listCtl d l}
echo ${listAddress d l} > ${listCtl d l}/listadress echo ${listAddress d l} > ${listCtl d l}/listaddress
echo "${lib.concatStringsSep "\n" (customHeaders d l)}" > ${listCtl d l}/customheaders echo "${lib.concatStringsSep "\n" (customHeaders d l)}" > ${listCtl d l}/customheaders
echo ${footer d l} > ${listCtl d l}/footer echo ${footer d l} > ${listCtl d l}/footer
echo ${subjectPrefix l} > ${listCtl d l}/prefix echo ${subjectPrefix l} > ${listCtl d l}/prefix

View File

@ -41,7 +41,7 @@ let
entry = "${manual.manual}/share/doc/nixos/index.html"; entry = "${manual.manual}/share/doc/nixos/index.html";
help = pkgs.writeScriptBin "nixos-help" helpScript = pkgs.writeScriptBin "nixos-help"
'' ''
#! ${pkgs.stdenv.shell} -e #! ${pkgs.stdenv.shell} -e
browser="$BROWSER" browser="$BROWSER"
@ -58,6 +58,15 @@ let
exec "$browser" ${entry} exec "$browser" ${entry}
''; '';
desktopItem = pkgs.makeDesktopItem {
name = "nixos-manual";
desktopName = "NixOS Manual";
genericName = "View NixOS documentation in a web browser";
# TODO: find a better icon (Nix logo + help overlay?)
icon = "system-help";
exec = "${helpScript}/bin/nixos-help";
categories = "System";
};
in in
{ {
@ -105,7 +114,8 @@ in
system.build.manual = manual; system.build.manual = manual;
environment.systemPackages = environment.systemPackages =
[ manual.manual help ] [ manual.manual helpScript ]
++ optional config.services.xserver.enable desktopItem
++ optional config.programs.man.enable manual.manpages; ++ optional config.programs.man.enable manual.manpages;
boot.extraTTYs = mkIf cfg.showManual ["tty${toString cfg.ttyNumber}"]; boot.extraTTYs = mkIf cfg.showManual ["tty${toString cfg.ttyNumber}"];

View File

@ -0,0 +1,76 @@
{ config, pkgs, lib, ... }:
with lib;
let
cfg = config.services.prometheus.fritzboxExporter;
in {
options = {
services.prometheus.fritzboxExporter = {
enable = mkEnableOption "prometheus fritzbox exporter";
port = mkOption {
type = types.int;
default = 9133;
description = ''
Port to listen on.
'';
};
gatewayAddress = mkOption {
type = types.str;
default = "fritz.box";
description = ''
The hostname or IP of the FRITZ!Box.
'';
};
gatewayPort = mkOption {
type = types.int;
default = 49000;
description = ''
The port of the FRITZ!Box UPnP service.
'';
};
extraFlags = mkOption {
type = types.listOf types.str;
default = [];
description = ''
Extra commandline options when launching the fritzbox exporter.
'';
};
openFirewall = mkOption {
type = types.bool;
default = false;
description = ''
Open port in firewall for incoming connections.
'';
};
};
};
config = mkIf cfg.enable {
networking.firewall.allowedTCPPorts = optional cfg.openFirewall cfg.port;
systemd.services.prometheus-fritzbox-exporter = {
description = "Prometheus exporter for FRITZ!Box via UPnP";
unitConfig.Documentation = "https://github.com/ndecker/fritzbox_exporter";
wantedBy = [ "multi-user.target" ];
serviceConfig = {
User = "nobody";
Restart = "always";
PrivateTmp = true;
WorkingDirectory = /tmp;
ExecStart = ''
${pkgs.prometheus-fritzbox-exporter}/bin/fritzbox_exporter \
-listen-address :${toString cfg.port} \
-gateway-address ${cfg.gatewayAddress} \
-gateway-port ${toString cfg.gatewayPort} \
${concatStringsSep " \\\n " cfg.extraFlags}
'';
};
};
};
}

View File

@ -2,14 +2,10 @@
with lib; with lib;
let let
apparmorEnabled = config.security.apparmor.enable;
cfg = config.services.dnscrypt-proxy; cfg = config.services.dnscrypt-proxy;
stateDirectory = "/var/lib/dnscrypt-proxy"; stateDirectory = "/var/lib/dnscrypt-proxy";
localAddress = "${cfg.localAddress}:${toString cfg.localPort}";
# The minisign public key used to sign the upstream resolver list. # The minisign public key used to sign the upstream resolver list.
# This is somewhat more flexible than preloading the key as an # This is somewhat more flexible than preloading the key as an
# embedded string. # embedded string.
@ -18,31 +14,33 @@ let
sha256 = "18lnp8qr6ghfc2sd46nn1rhcpr324fqlvgsp4zaigw396cd7vnnh"; sha256 = "18lnp8qr6ghfc2sd46nn1rhcpr324fqlvgsp4zaigw396cd7vnnh";
}; };
# Internal flag indicating whether the upstream resolver list is used # Internal flag indicating whether the upstream resolver list is used.
useUpstreamResolverList = cfg.resolverList == null && cfg.customResolver == null; useUpstreamResolverList = cfg.customResolver == null;
resolverList = # The final local address.
if (cfg.resolverList != null) localAddress = "${cfg.localAddress}:${toString cfg.localPort}";
then cfg.resolverList
else "${stateDirectory}/dnscrypt-resolvers.csv";
resolverArgs = if (cfg.customResolver != null) # The final resolvers list path.
then resolverList = "${stateDirectory}/dnscrypt-resolvers.csv";
[ "--resolver-address=${cfg.customResolver.address}:${toString cfg.customResolver.port}"
"--provider-name=${cfg.customResolver.name}" # Build daemon command line
"--provider-key=${cfg.customResolver.key}"
] resolverArgs =
else if (cfg.customResolver == null)
[ "--resolvers-list=${resolverList}" then
"--resolver-name=${cfg.resolverName}" [ "-L ${resolverList}"
]; "-R ${cfg.resolverName}"
]
else with cfg.customResolver;
[ "-N ${name}"
"-k ${key}"
"-r ${address}:${toString port}"
];
# The final command line arguments passed to the daemon
daemonArgs = daemonArgs =
[ "--local-address=${localAddress}" ] [ "-a ${localAddress}" ]
++ optional cfg.tcpOnly "--tcp-only" ++ resolverArgs
++ optional cfg.ephemeralKeys "-E" ++ cfg.extraArgs;
++ resolverArgs;
in in
{ {
@ -52,6 +50,9 @@ in
}; };
options = { options = {
# Before adding another option, consider whether it could
# equally well be passed via extraArgs.
services.dnscrypt-proxy = { services.dnscrypt-proxy = {
enable = mkOption { enable = mkOption {
default = false; default = false;
@ -84,19 +85,11 @@ in
default = "dnscrypt.eu-nl"; default = "dnscrypt.eu-nl";
type = types.nullOr types.str; type = types.nullOr types.str;
description = '' description = ''
The name of the upstream DNSCrypt resolver to use, taken from The name of the DNSCrypt resolver to use, taken from
<filename>${resolverList}</filename>. The default resolver is <filename>${resolverList}</filename>. The default
located in Holland, supports DNS security extensions, and resolver is located in Holland, supports DNS security
<emphasis>claims</emphasis> to not keep logs. extensions, and <emphasis>claims</emphasis> to not
''; keep logs.
};
resolverList = mkOption {
default = null;
type = types.nullOr types.path;
description = ''
List of DNSCrypt resolvers. The default is to use the list of
public resolvers provided by upstream.
''; '';
}; };
@ -133,25 +126,15 @@ in
}; })); }; }));
}; };
tcpOnly = mkOption { extraArgs = mkOption {
default = false; default = [];
type = types.bool; type = types.listOf types.str;
description = '' description = ''
Force sending encrypted DNS queries to the upstream resolver over Additional command-line arguments passed verbatim to the daemon.
TCP instead of UDP (on port 443). Use only if the UDP port is blocked. See <citerefentry><refentrytitle>dnscrypt-proxy</refentrytitle>
''; <manvolnum>8</manvolnum></citerefentry> for details.
};
ephemeralKeys = mkOption {
default = false;
type = types.bool;
description = ''
Compute a new key pair for every query. Enabling this option
increases CPU usage, but makes it more difficult for the upstream
resolver to track your usage of their service across IP addresses.
The default is to re-use the public key pair for all queries, making
tracking trivial.
''; '';
example = [ "-X libdcplugin_example_cache.so,--min-ttl=60" ];
}; };
}; };
}; };
@ -187,16 +170,13 @@ in
documentation = [ "man:dnscrypt-proxy(8)" ]; documentation = [ "man:dnscrypt-proxy(8)" ];
before = [ "nss-lookup.target" ]; before = [ "nss-lookup.target" ];
after = [ "network.target" ];
after = [ "network.target" ] requires = [ "dnscrypt-proxy.socket "];
++ optional apparmorEnabled "apparmor.service";
requires = [ "dnscrypt-proxy.socket "]
++ optional apparmorEnabled "apparmor.service";
serviceConfig = { serviceConfig = {
NonBlocking = "true"; NonBlocking = "true";
ExecStart = "${pkgs.dnscrypt-proxy}/bin/dnscrypt-proxy ${toString daemonArgs}"; ExecStart = "${pkgs.dnscrypt-proxy}/bin/dnscrypt-proxy ${toString daemonArgs}";
ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID";
User = "dnscrypt-proxy"; User = "dnscrypt-proxy";
@ -207,7 +187,9 @@ in
}; };
} }
(mkIf apparmorEnabled { (mkIf config.security.apparmor.enable {
systemd.services.dnscrypt-proxy.after = [ "apparmor.service" ];
security.apparmor.profiles = singleton (pkgs.writeText "apparmor-dnscrypt-proxy" '' security.apparmor.profiles = singleton (pkgs.writeText "apparmor-dnscrypt-proxy" ''
${pkgs.dnscrypt-proxy}/bin/dnscrypt-proxy { ${pkgs.dnscrypt-proxy}/bin/dnscrypt-proxy {
/dev/null rw, /dev/null rw,
@ -272,15 +254,18 @@ in
path = with pkgs; [ curl diffutils dnscrypt-proxy minisign ]; path = with pkgs; [ curl diffutils dnscrypt-proxy minisign ];
script = '' script = ''
cd ${stateDirectory} cd ${stateDirectory}
domain=download.dnscrypt.org domain=raw.githubusercontent.com
get="curl -fSs --resolve $domain:443:$(hostip -r 8.8.8.8 $domain | head -1)" get="curl -fSs --resolve $domain:443:$(hostip -r 8.8.8.8 $domain | head -1)"
$get -o dnscrypt-resolvers.csv.tmp \ $get -o dnscrypt-resolvers.csv.tmp \
https://$domain/dnscrypt-proxy/dnscrypt-resolvers.csv https://$domain/jedisct1/dnscrypt-proxy/master/dnscrypt-resolvers.csv
$get -o dnscrypt-resolvers.csv.minisig.tmp \ $get -o dnscrypt-resolvers.csv.minisig.tmp \
https://$domain/dnscrypt-proxy/dnscrypt-resolvers.csv.minisig https://$domain/jedisct1/dnscrypt-proxy/master/dnscrypt-resolvers.csv.minisig
mv dnscrypt-resolvers.csv.minisig{.tmp,} mv dnscrypt-resolvers.csv.minisig{.tmp,}
minisign -q -V -p ${upstreamResolverListPubKey} \ if ! minisign -q -V -p ${upstreamResolverListPubKey} \
-m dnscrypt-resolvers.csv.tmp -x dnscrypt-resolvers.csv.minisig -m dnscrypt-resolvers.csv.tmp -x dnscrypt-resolvers.csv.minisig ; then
echo "failed to verify resolver list!" >&2
exit 1
fi
[[ -f dnscrypt-resolvers.csv ]] && mv dnscrypt-resolvers.csv{,.old} [[ -f dnscrypt-resolvers.csv ]] && mv dnscrypt-resolvers.csv{,.old}
mv dnscrypt-resolvers.csv{.tmp,} mv dnscrypt-resolvers.csv{.tmp,}
if cmp dnscrypt-resolvers.csv{,.old} ; then if cmp dnscrypt-resolvers.csv{,.old} ; then
@ -312,5 +297,24 @@ in
imports = [ imports = [
(mkRenamedOptionModule [ "services" "dnscrypt-proxy" "port" ] [ "services" "dnscrypt-proxy" "localPort" ]) (mkRenamedOptionModule [ "services" "dnscrypt-proxy" "port" ] [ "services" "dnscrypt-proxy" "localPort" ])
(mkChangedOptionModule
[ "services" "dnscrypt-proxy" "tcpOnly" ]
[ "services" "dnscrypt-proxy" "extraArgs" ]
(config:
let val = getAttrFromPath [ "services" "dnscrypt-proxy" "tcpOnly" ] config; in
optional val "-T"))
(mkChangedOptionModule
[ "services" "dnscrypt-proxy" "ephemeralKeys" ]
[ "services" "dnscrypt-proxy" "extraArgs" ]
(config:
let val = getAttrFromPath [ "services" "dnscrypt-proxy" "ephemeralKeys" ] config; in
optional val "-E"))
(mkRemovedOptionModule [ "services" "dnscrypt-proxy" "resolverList" ] ''
The current resolver listing from upstream is always used
unless a custom resolver is specified.
'')
]; ];
} }

View File

@ -26,17 +26,7 @@ in
This will switch to a new virtual terminal, turn off console This will switch to a new virtual terminal, turn off console
switching and disable SysRq mechanism (when switching and disable SysRq mechanism (when
<option>services.physlock.disableSysRq</option> is set) <option>services.physlock.disableSysRq</option> is set)
until the root or <option>services.physlock.user</option> until the root or user password is given.
password is given.
'';
};
user = mkOption {
type = types.nullOr types.str;
default = null;
description = ''
User whose password will be used to unlock the screen on par
with the root password.
''; '';
}; };
@ -105,7 +95,7 @@ in
++ cfg.lockOn.extraTargets; ++ cfg.lockOn.extraTargets;
serviceConfig.Type = "forking"; serviceConfig.Type = "forking";
script = '' script = ''
${pkgs.physlock}/bin/physlock -d${optionalString cfg.disableSysRq "s"}${optionalString (cfg.user != null) " -u ${cfg.user}"} ${pkgs.physlock}/bin/physlock -d${optionalString cfg.disableSysRq "s"}
''; '';
}; };

View File

@ -0,0 +1,23 @@
var fs = require('fs');
var opts = JSON.parse(fs.readFileSync("/dev/stdin").toString());
var config = opts.config;
var readSecret = function(filename) {
return fs.readFileSync(filename).toString().trim();
};
if (opts.secretFile) {
config.secret = readSecret(opts.secretFile);
}
if (opts.dbPasswordFile) {
config.params.dbpass = readSecret(opts.dbPasswordFile);
}
if (opts.smtpPasswordFile) {
config.smtppass = readSecret(opts.smtpPasswordFile);
}
if (opts.spamClientSecretFile) {
config.spamclientsecret = readSecret(opts.opts.spamClientSecretFile);
}
fs.writeFileSync(opts.outputFile, JSON.stringify(config));

View File

@ -5,71 +5,74 @@ with lib;
let let
cfg = config.services.pumpio; cfg = config.services.pumpio;
dataDir = "/var/lib/pump.io"; dataDir = "/var/lib/pump.io";
runDir = "/run/pump.io";
user = "pumpio"; user = "pumpio";
optionalSet = condition: value: if condition then value else {};
configScript = ./pump.io-configure.js;
configOptions = { configOptions = {
driver = if cfg.driver == "disk" then null else cfg.driver; outputFile = "${runDir}/config.json";
params = ({ } // config =
(if cfg.driver == "disk" then { (optionalSet (cfg.driver != "disk") {
dir = dataDir; driver = cfg.driver;
} else { }) // }) //
(if cfg.driver == "mongodb" || cfg.driver == "redis" then { {
host = cfg.dbHost; params = (optionalSet (cfg.driver == "disk") { dir = dataDir; }) //
port = cfg.dbPort; (optionalSet (cfg.driver == "mongodb" || cfg.driver == "redis") {
dbname = cfg.dbName; host = cfg.dbHost;
dbuser = cfg.dbUser; port = cfg.dbPort;
dbpass = cfg.dbPassword; dbname = cfg.dbName;
} else { }) // dbuser = cfg.dbUser;
(if cfg.driver == "memcached" then { dbpass = cfg.dbPassword;
host = cfg.dbHost; }) //
port = cfg.dbPort; (optionalSet (cfg.driver == "memcached") {
} else { }) // host = cfg.dbHost;
cfg.driverParams); port = cfg.dbPort;
}) // cfg.driverParams;
secret = cfg.secret;
secret = cfg.secret; address = cfg.address;
port = cfg.port;
address = cfg.address; noweb = false;
port = cfg.port; urlPort = cfg.urlPort;
hostname = cfg.hostname;
favicon = cfg.favicon;
noweb = false; site = cfg.site;
urlPort = cfg.urlPort; owner = cfg.owner;
hostname = cfg.hostname; ownerURL = cfg.ownerURL;
favicon = cfg.favicon;
site = cfg.site; key = cfg.sslKey;
owner = cfg.owner; cert = cfg.sslCert;
ownerURL = cfg.ownerURL; bounce = false;
key = cfg.sslKey; spamhost = cfg.spamHost;
cert = cfg.sslCert; spamclientid = cfg.spamClientId;
bounce = false; spamclientsecret = cfg.spamClientSecret;
spamhost = cfg.spamHost; requireEmail = cfg.requireEmail;
spamclientid = cfg.spamClientId; smtpserver = cfg.smtpHost;
spamclientsecret = cfg.spamClientSecret; smtpport = cfg.smtpPort;
smtpuser = cfg.smtpUser;
smtppass = cfg.smtpPassword;
smtpusessl = cfg.smtpUseSSL;
smtpfrom = cfg.smtpFrom;
requireEmail = cfg.requireEmail; nologger = false;
smtpserver = cfg.smtpHost; enableUploads = cfg.enableUploads;
smtpport = cfg.smtpPort; datadir = dataDir;
smtpuser = cfg.smtpUser; debugClient = false;
smtppass = cfg.smtpPassword; firehose = cfg.firehose;
smtpusessl = cfg.smtpUseSSL; disableRegistration = cfg.disableRegistration;
smtpfrom = cfg.smtpFrom;
nologger = false; inherit (cfg) secretFile dbPasswordFile smtpPasswordFile spamClientSecretFile;
uploaddir = "${dataDir}/uploads"; } //
debugClient = false; (optionalSet (cfg.port < 1024) {
firehose = cfg.firehose; serverUser = user; # have pump.io listen then drop privileges
disableRegistration = cfg.disableRegistration; }) // cfg.extraConfig;
} // }; in {
(if cfg.port < 1024 then {
serverUser = user; # have pump.io listen then drop privileges
} else { }) //
cfg.extraConfig;
in
{
options = { options = {
services.pumpio = { services.pumpio = {
@ -77,7 +80,8 @@ in
enable = mkEnableOption "Pump.io social streams server"; enable = mkEnableOption "Pump.io social streams server";
secret = mkOption { secret = mkOption {
type = types.str; type = types.nullOr types.str;
default = null;
example = "my dog has fleas"; example = "my dog has fleas";
description = '' description = ''
A session-generating secret, server-wide password. Warning: A session-generating secret, server-wide password. Warning:
@ -85,6 +89,16 @@ in
''; '';
}; };
secretFile = mkOption {
type = types.nullOr types.path;
default = null;
example = "/run/keys/pump.io-secret";
description = ''
A file containing the session-generating secret,
server-wide password.
'';
};
site = mkOption { site = mkOption {
type = types.str; type = types.str;
example = "Awesome Sauce"; example = "Awesome Sauce";
@ -125,7 +139,7 @@ in
hostname = mkOption { hostname = mkOption {
type = types.nullOr types.str; type = types.nullOr types.str;
default = null; default = "localhost";
description = '' description = ''
The hostname of the server, used for generating The hostname of the server, used for generating
URLs. Defaults to "localhost" which doesn't do much for you. URLs. Defaults to "localhost" which doesn't do much for you.
@ -152,6 +166,15 @@ in
''; '';
}; };
enableUploads = mkOption {
type = types.bool;
default = true;
description = ''
If you want to disable file uploads, set this to false. Uploaded files will be stored
in ${dataDir}/uploads.
'';
};
sslKey = mkOption { sslKey = mkOption {
type = types.path; type = types.path;
example = "${dataDir}/myserver.key"; example = "${dataDir}/myserver.key";
@ -253,6 +276,15 @@ in
''; '';
}; };
dbPasswordFile = mkOption {
type = types.nullOr types.path;
default = null;
example = "/run/keys/pump.io-dbpassword";
description = ''
A file containing the password corresponding to dbUser.
'';
};
smtpHost = mkOption { smtpHost = mkOption {
type = types.nullOr types.str; type = types.nullOr types.str;
default = null; default = null;
@ -291,6 +323,17 @@ in
''; '';
}; };
smtpPasswordFile = mkOption {
type = types.nullOr types.path;
default = null;
example = "/run/keys/pump.io-smtppassword";
description = ''
A file containing the password used to connect to SMTP
server. Might not be necessary for some servers.
'';
};
smtpUseSSL = mkOption { smtpUseSSL = mkOption {
type = types.bool; type = types.bool;
default = false; default = false;
@ -332,24 +375,55 @@ in
stored in cleartext in the Nix store! stored in cleartext in the Nix store!
''; '';
}; };
spamClientSecretFile = mkOption {
type = types.nullOr types.path;
default = null;
example = "/run/keys/pump.io-spamclientsecret";
description = ''
A file containing the OAuth key for the spam server.
'';
};
}; };
}; };
config = mkIf cfg.enable { config = mkIf cfg.enable {
warnings = let warn = k: optional (cfg.${k} != null)
"config.services.pumpio.${k} is insecure. Use ${k}File instead.";
in concatMap warn [ "secret" "dbPassword" "smtpPassword" "spamClientSecret" ];
assertions = [
{ assertion = !(isNull cfg.secret && isNull cfg.secretFile);
message = "pump.io needs a secretFile configured";
}
];
systemd.services."pump.io" = systemd.services."pump.io" =
{ description = "pump.io social network stream server"; { description = "Pump.io - stream server that does most of what people really want from a social network";
after = [ "network.target" ]; after = [ "network.target" ];
wantedBy = [ "multi-user.target" ]; wantedBy = [ "multi-user.target" ];
serviceConfig.ExecStart = "${pkgs.pumpio}/bin/pump -c /etc/pump.io.json";
serviceConfig.User = if cfg.port < 1024 then "root" else user;
serviceConfig.Group = user;
};
environment.etc."pump.io.json" = { preStart = ''
mode = "0440"; mkdir -p ${dataDir}/uploads
gid = config.ids.gids.pumpio; mkdir -p ${runDir}
text = builtins.toJSON configOptions; chown pumpio:pumpio ${dataDir}/uploads ${runDir}
chmod 770 ${dataDir}/uploads ${runDir}
${pkgs.nodejs}/bin/node ${configScript} <<EOF
${builtins.toJSON configOptions}
EOF
chgrp pumpio ${configOptions.outputFile}
chmod 640 ${configOptions.outputFile}
'';
serviceConfig = {
ExecStart = "${pkgs.pumpio}/bin/pump -c ${configOptions.outputFile}";
PermissionsStartOnly = true;
User = if cfg.port < 1024 then "root" else user;
Group = user;
};
environment = { NODE_ENV = "production"; };
}; };
users.extraGroups.pumpio.gid = config.ids.gids.pumpio; users.extraGroups.pumpio.gid = config.ids.gids.pumpio;

View File

@ -4,11 +4,6 @@
with lib; with lib;
let let
# Upgrading? We have a test! nix-build ./nixos/tests/wordpress.nix
version = "4.7.2";
fullversion = "${version}";
# Our bare-bones wp-config.php file using the above settings # Our bare-bones wp-config.php file using the above settings
wordpressConfig = pkgs.writeText "wp-config.php" '' wordpressConfig = pkgs.writeText "wp-config.php" ''
<?php <?php
@ -71,12 +66,7 @@ let
# The wordpress package itself # The wordpress package itself
wordpressRoot = pkgs.stdenv.mkDerivation rec { wordpressRoot = pkgs.stdenv.mkDerivation rec {
name = "wordpress"; name = "wordpress";
src = pkgs.fetchFromGitHub { src = config.package;
owner = "WordPress";
repo = "WordPress";
rev = "${fullversion}";
sha256 = "0vph12708drf8ww0xd05hpdvbyy7n5gj9ca598lhdhy2i1j6wy32";
};
installPhase = '' installPhase = ''
mkdir -p $out mkdir -p $out
# copy all the wordpress files we downloaded # copy all the wordpress files we downloaded
@ -122,6 +112,14 @@ in
enablePHP = true; enablePHP = true;
options = { options = {
package = mkOption {
type = types.path;
default = pkgs.wordpress;
description = ''
Path to the wordpress sources.
Upgrading? We have a test! nix-build ./nixos/tests/wordpress.nix
'';
};
dbHost = mkOption { dbHost = mkOption {
default = "localhost"; default = "localhost";
description = "The location of the database server."; description = "The location of the database server.";

View File

@ -25,7 +25,7 @@ in
enable = mkOption { enable = mkOption {
default = false; default = false;
description = "Whether to enable jboss"; description = "Whether to enable JBoss. WARNING : this package is outdated and is known to have vulnerabilities.";
}; };
tempDir = mkOption { tempDir = mkOption {

View File

@ -434,8 +434,8 @@ in
chmod +x $out/bin/cryptsetup-askpass chmod +x $out/bin/cryptsetup-askpass
${optionalString luks.yubikeySupport '' ${optionalString luks.yubikeySupport ''
copy_bin_and_libs ${pkgs.ykpers}/bin/ykchalresp copy_bin_and_libs ${pkgs.yubikey-personalization}/bin/ykchalresp
copy_bin_and_libs ${pkgs.ykpers}/bin/ykinfo copy_bin_and_libs ${pkgs.yubikey-personalization}/bin/ykinfo
copy_bin_and_libs ${pkgs.openssl.bin}/bin/openssl copy_bin_and_libs ${pkgs.openssl.bin}/bin/openssl
cc -O3 -I${pkgs.openssl.dev}/include -L${pkgs.openssl.out}/lib ${./pbkdf2-sha512.c} -o pbkdf2-sha512 -lcrypto cc -O3 -I${pkgs.openssl.dev}/include -L${pkgs.openssl.out}/lib ${./pbkdf2-sha512.c} -o pbkdf2-sha512 -lcrypto

View File

@ -71,6 +71,7 @@ in
environment.etc."lxc/lxc.conf".text = cfg.systemConfig; environment.etc."lxc/lxc.conf".text = cfg.systemConfig;
environment.etc."lxc/lxc-usernet".text = cfg.usernetConfig; environment.etc."lxc/lxc-usernet".text = cfg.usernetConfig;
environment.etc."lxc/default.conf".text = cfg.defaultConfig; environment.etc."lxc/default.conf".text = cfg.defaultConfig;
systemd.tmpfiles.rules = [ "d /var/lib/lxc/rootfs 0755 root root -" ];
security.apparmor.packages = [ pkgs.lxc ]; security.apparmor.packages = [ pkgs.lxc ];
security.apparmor.profiles = [ "${pkgs.lxc}/etc/apparmor.d/lxc-containers" ]; security.apparmor.profiles = [ "${pkgs.lxc}/etc/apparmor.d/lxc-containers" ];

View File

@ -4,7 +4,7 @@
{ nixpkgs ? { outPath = ./..; revCount = 56789; shortRev = "gfedcba"; } { nixpkgs ? { outPath = ./..; revCount = 56789; shortRev = "gfedcba"; }
, stableBranch ? false , stableBranch ? false
, supportedSystems ? [ "x86_64-linux" "i686-linux" ] , supportedSystems ? [ "x86_64-linux" "i686-linux" "aarch64-linux" ]
}: }:
let let

View File

@ -1,6 +1,6 @@
{ nixpkgs ? { outPath = ./..; revCount = 56789; shortRev = "gfedcba"; } { nixpkgs ? { outPath = ./..; revCount = 56789; shortRev = "gfedcba"; }
, stableBranch ? false , stableBranch ? false
, supportedSystems ? [ "x86_64-linux" "i686-linux" ] , supportedSystems ? [ "x86_64-linux" "i686-linux" "aarch64-linux" ]
}: }:
with import ../lib; with import ../lib;

View File

@ -51,16 +51,6 @@ import ./make-test.nix ({ pkgs, ...} : let
Vd5WD2HJhLb9u0UxVp9vfWIUDgydopV5ZmWCQ5YvNepb1w== Vd5WD2HJhLb9u0UxVp9vfWIUDgydopV5ZmWCQ5YvNepb1w==
-----END CERTIFICATE----- -----END CERTIFICATE-----
''; '';
makePump = { opts ? { } }:
{
enable = true;
sslCert = pkgs.writeText "snakeoil.cert" snakeOilCert;
sslKey = pkgs.writeText "snakeoil.pem" snakeOilKey;
secret = "test";
site = "test";
} // opts;
in { in {
name = "pumpio"; name = "pumpio";
meta = with pkgs.stdenv.lib.maintainers; { meta = with pkgs.stdenv.lib.maintainers; {
@ -72,9 +62,14 @@ in {
{ config, pkgs, ... }: { config, pkgs, ... }:
{ {
services = { services = {
pumpio = makePump { opts = { pumpio = {
port = 443; port = 443;
}; }; enable = true;
sslCert = pkgs.writeText "snakeoil.cert" snakeOilCert;
sslKey = pkgs.writeText "snakeoil.pem" snakeOilKey;
secretFile = pkgs.writeText "secretFile" "test123";
site = "test";
};
mongodb.enable = true; mongodb.enable = true;
mongodb.extraConfig = '' mongodb.extraConfig = ''
storage.journal.enabled: false storage.journal.enabled: false

View File

@ -10,14 +10,10 @@ import ./make-test.nix ({ pkgs, ... }:
{ web = { web =
{ config, pkgs, ... }: { config, pkgs, ... }:
{ {
services.mysql.enable = true; services.mysql = {
services.mysql.package = pkgs.mysql; enable = true;
services.mysql.initialScript = pkgs.writeText "start.sql" '' package = pkgs.mysql;
CREATE DATABASE wordpress; };
CREATE USER 'wordpress'@'localhost' IDENTIFIED BY 'wordpress';
GRANT ALL on wordpress.* TO 'wordpress'@'localhost';
'';
services.httpd = { services.httpd = {
enable = true; enable = true;
logPerVirtualHost = true; logPerVirtualHost = true;

View File

@ -1,4 +1,4 @@
{ stdenv, fetchurl, cmake, libsndfile, flex, bison { stdenv, fetchFromGitHub, cmake, libsndfile, flex, bison, boost
, alsaLib ? null , alsaLib ? null
, libpulseaudio ? null , libpulseaudio ? null
, tcltk ? null , tcltk ? null
@ -11,26 +11,30 @@
# , wiiuse ? null # , wiiuse ? null
}: }:
stdenv.mkDerivation { stdenv.mkDerivation rec {
name = "csound-6.04"; name = "csound-6.08.1";
version = "6.08.1";
enableParallelBuilding = true; enableParallelBuilding = true;
hardeningDisable = [ "format" ]; hardeningDisable = [ "format" ];
src = fetchurl { src = fetchFromGitHub {
url = mirror://sourceforge/csound/Csound6.04.tar.gz; owner = "csound";
sha256 = "1030w38lxdwjz1irr32m9cl0paqmgr02lab2m7f7j1yihwxj1w0g"; repo = "csound";
rev = version;
sha256 = "03xnva17sw35ga3n96x1zdfgw913dga1hccly85wzfn0kxz4rld9";
}; };
buildInputs = [ cmake libsndfile flex bison alsaLib libpulseaudio tcltk ]; nativeBuildInputs = [ cmake flex bison ];
buildInputs = [ libsndfile alsaLib libpulseaudio tcltk boost ];
meta = { meta = with stdenv.lib; {
description = "Sound design, audio synthesis, and signal processing system, providing facilities for music composition and performance on all major operating systems and platforms"; description = "Sound design, audio synthesis, and signal processing system, providing facilities for music composition and performance on all major operating systems and platforms";
homepage = http://www.csounds.com/; homepage = http://www.csounds.com/;
license = stdenv.lib.licenses.gpl2; license = licenses.gpl2;
maintainers = [stdenv.lib.maintainers.marcweber]; maintainers = [maintainers.marcweber];
platforms = stdenv.lib.platforms.linux; platforms = platforms.linux;
}; };
} }

View File

@ -52,7 +52,7 @@ stdenv.mkDerivation {
src = src =
fetchurl { fetchurl {
url = "http://repository-origin.spotify.com/pool/non-free/s/spotify-client/spotify-client_${version}_amd64.deb"; url = "https://repository-origin.spotify.com/pool/non-free/s/spotify-client/spotify-client_${version}_amd64.deb";
sha256 = "0l008x06d257vcw6gq3q90hvv93cq6mxpj11by1np6bzzg61qv8x"; sha256 = "0l008x06d257vcw6gq3q90hvv93cq6mxpj11by1np6bzzg61qv8x";
}; };

View File

@ -0,0 +1,25 @@
Disable openpty() and forkpty() prototypes when needed.
--- a/yasr/yasr.h
+++ b/yasr/yasr.h
@@ -308,8 +308,10 @@ extern void opt_set(int num, void *val);
extern void opt_queue_empty(int ll);
extern void opt_write(FILE * fp);
+#ifndef HAVE_OPENPTY
/* openpty.c prototypes */
extern int openpty(int *, int *, char *, struct termios *, struct winsize *);
+#endif
/* cfmakeraw.c prototypes */
extern void cfmakeraw(struct termios *);
@@ -317,8 +319,10 @@ extern void cfmakeraw(struct termios *);
/* login_tty.c prototypes */
extern int login_tty(int);
+#ifndef HAVE_FORKPTY
/* forkpty.c prototypes */
extern int forkpty(int *, char *, struct termios *, struct winsize *);
+#endif
/* tbc - Would it be more efficient to ensure that "blank" grids always held
ascii 0x20 rather than ascii 0x00? */

View File

@ -0,0 +1,11 @@
--- a/yasr/config.c.orig 2011-11-28 03:56:58.764995828 +0100
+++ a/yasr/config.c 2011-11-28 03:57:00.048967703 +0100
@@ -60,7 +60,7 @@
int args, arg[16], *argp;
int i, key, ln = 0, mode = 0;
char *home, *ptr, *s;
- char confname[MAXPATHLEN];
+ char confname[strlen(PACKAGE_DATA_DIR) + 10 + 1];
if ((home = getenv("HOME")) != NULL)
{

View File

@ -0,0 +1,18 @@
diff --git a/yasr.conf b/yasr.conf
index 1e07fc6..72f5922 100644
--- a/yasr.conf
+++ b/yasr.conf
@@ -59,11 +59,11 @@ synthesizer=emacspeak server
#synthesizer=speech dispatcher
#synthesizer port=S0
#synthesizer port=l0
-synthesizer port=|/usr/local/bin/eflite
+synthesizer port=|eflite
# Below line appropriate for Speech Dispatcher in its default configuration
#synthesizer port=127.0.0.1:6560
key echo=off
-shell=/bin/bash
+shell=/bin/sh
special=off
up and down arrows=speak line
DisableKey=6925

View File

@ -0,0 +1,14 @@
Index: yasr-0.6.9/yasr/tts.c
===================================================================
--- yasr-0.6.9.orig/yasr/tts.c 2008-02-03 00:10:07.000000000 +1100
+++ yasr-0.6.9/yasr/tts.c 2012-02-05 10:59:06.059007839 +1100
@@ -281,6 +281,9 @@
char *p = synth[tts.synth].unspeakable;
if (ch < 32) return 1;
+ /* characters with high bit set cause DECTALK to crash */
+ if (tts.synth == TTS_DECTALK && ch & 0x80)
+ return 1;
while (*p)
{
if (*p++ == ch) return 1;

View File

@ -0,0 +1,28 @@
{stdenv,fetchurl}:
stdenv.mkDerivation rec {
name = "yasr-${version}";
version = "0.6.9";
src = fetchurl {
url = "https://sourceforge.net/projects/yasr/files/yasr/${version}/${name}.tar.gz";
sha256 = "1prv9r9y6jb5ga5578ldiw507fa414m60xhlvjl29278p3x7rwa1";
};
patches = [
./10_fix_openpty_forkpty_declarations
./20_maxpathlen
./30_conf
./40_dectalk_extended_chars
]; # taken from the debian yasr package
meta = {
homepage = "http://yasr.sourceforge.net";
description = "A general-purpose console screen reader";
longDescription = "Yasr is a general-purpose console screen reader for GNU/Linux and other Unix-like operating systems.";
platforms = stdenv.lib.platforms.unix;
license = stdenv.lib.licenses.gpl2;
maintainers = with stdenv.lib.maintainers; [ jhhuh ];
};
}

View File

@ -3,11 +3,11 @@
}: }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "bluefish-2.2.9"; name = "bluefish-2.2.10";
src = fetchurl { src = fetchurl {
url = "mirror://sourceforge/bluefish/${name}.tar.bz2"; url = "mirror://sourceforge/bluefish/${name}.tar.bz2";
sha256 = "1l7pg6h485yj84i34jr09y8qzc1yr4ih6w5jdhmnrg156db7nwav"; sha256 = "1ciygj79q6i3ga5x1j8aivc05nh6rhhnm7hrq8q8xd9vd4ms3v5g";
}; };
nativeBuildInputs = [ intltool pkgconfig wrapGAppsHook ]; nativeBuildInputs = [ intltool pkgconfig wrapGAppsHook ];

View File

@ -1,4 +1,6 @@
{ stdenv, makeDesktopItem, freetype, fontconfig, libX11, libXrender, zlib, jdk, glib, gtk2, libXtst, webkitgtk2, makeWrapper, ... }: { stdenv, makeDesktopItem, freetype, fontconfig, libX11, libXrender
, zlib, jdk, glib, gtk2, libXtst, gsettings_desktop_schemas, webkitgtk2
, makeWrapper, ... }:
{ name, src ? builtins.getAttr stdenv.system sources, sources ? null, description }: { name, src ? builtins.getAttr stdenv.system sources, sources ? null, description }:
@ -15,7 +17,10 @@ stdenv.mkDerivation rec {
categories = "Application;Development;"; categories = "Application;Development;";
}; };
buildInputs = [ makeWrapper ]; buildInputs = [
fontconfig freetype glib gsettings_desktop_schemas gtk2 jdk libX11
libXrender libXtst makeWrapper zlib
] ++ stdenv.lib.optional (webkitgtk2 != null) webkitgtk2;
buildCommand = '' buildCommand = ''
# Unpack tarball. # Unpack tarball.
@ -37,6 +42,7 @@ stdenv.mkDerivation rec {
makeWrapper $out/eclipse/eclipse $out/bin/eclipse \ makeWrapper $out/eclipse/eclipse $out/bin/eclipse \
--prefix PATH : ${jdk}/bin \ --prefix PATH : ${jdk}/bin \
--prefix LD_LIBRARY_PATH : ${stdenv.lib.makeLibraryPath ([ glib gtk2 libXtst ] ++ stdenv.lib.optional (webkitgtk2 != null) webkitgtk2)} \ --prefix LD_LIBRARY_PATH : ${stdenv.lib.makeLibraryPath ([ glib gtk2 libXtst ] ++ stdenv.lib.optional (webkitgtk2 != null) webkitgtk2)} \
--prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH" \
--add-flags "-configuration \$HOME/.eclipse/''${productId}_$productVersion/configuration" --add-flags "-configuration \$HOME/.eclipse/''${productId}_$productVersion/configuration"
# Create desktop item. # Create desktop item.

View File

@ -1,6 +1,6 @@
{ stdenv, lib, fetchurl, makeDesktopItem, makeWrapper { stdenv, lib, fetchurl, makeDesktopItem, makeWrapper
, freetype, fontconfig, libX11, libXext, libXrender, zlib , freetype, fontconfig, libX11, libXext, libXrender, zlib
, glib, gtk2, libXtst, jdk , glib, gtk2, libXtst, jdk, gsettings_desktop_schemas
, webkitgtk2 ? null # for internal web browser , webkitgtk2 ? null # for internal web browser
, buildEnv, writeText, runCommand , buildEnv, writeText, runCommand
, callPackage , callPackage
@ -12,7 +12,8 @@ rec {
buildEclipse = import ./build-eclipse.nix { buildEclipse = import ./build-eclipse.nix {
inherit stdenv makeDesktopItem freetype fontconfig libX11 libXrender zlib inherit stdenv makeDesktopItem freetype fontconfig libX11 libXrender zlib
jdk glib gtk2 libXtst webkitgtk2 makeWrapper; jdk glib gtk2 libXtst gsettings_desktop_schemas webkitgtk2
makeWrapper;
}; };
### Eclipse CPP ### Eclipse CPP

View File

@ -645,10 +645,10 @@
el-search = callPackage ({ elpaBuild, emacs, fetchurl, lib, stream }: el-search = callPackage ({ elpaBuild, emacs, fetchurl, lib, stream }:
elpaBuild { elpaBuild {
pname = "el-search"; pname = "el-search";
version = "1.2.3"; version = "1.3";
src = fetchurl { src = fetchurl {
url = "https://elpa.gnu.org/packages/el-search-1.2.3.tar"; url = "https://elpa.gnu.org/packages/el-search-1.3.tar";
sha256 = "1d7iqr4fr0kr171fnjcm2n0bgcwzdh6jl585mwjf2zqnqszv13h0"; sha256 = "0hg7jppdsaxy285bdaban1i096bjx21pqmczz7w9f3nr34n28pyn";
}; };
packageRequires = [ emacs stream ]; packageRequires = [ emacs stream ];
meta = { meta = {
@ -821,10 +821,10 @@
gnorb = callPackage ({ cl-lib ? null, elpaBuild, fetchurl, lib }: gnorb = callPackage ({ cl-lib ? null, elpaBuild, fetchurl, lib }:
elpaBuild { elpaBuild {
pname = "gnorb"; pname = "gnorb";
version = "1.1.2"; version = "1.1.5";
src = fetchurl { src = fetchurl {
url = "https://elpa.gnu.org/packages/gnorb-1.1.2.tar"; url = "https://elpa.gnu.org/packages/gnorb-1.1.5.tar";
sha256 = "18d5wdv33lcg96m3ljnv9zn98in27apm7bjycgq0asd2f31dvcvx"; sha256 = "128ag8zkfxspf6szxfd7dcscm1zzzcibx7p9dpbpk036cr7m5i1p";
}; };
packageRequires = [ cl-lib ]; packageRequires = [ cl-lib ];
meta = { meta = {

File diff suppressed because it is too large Load Diff

View File

@ -1477,6 +1477,27 @@
license = lib.licenses.free; license = lib.licenses.free;
}; };
}) {}; }) {};
anything-tramp = callPackage ({ anything, emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }:
melpaBuild {
pname = "anything-tramp";
version = "0.2";
src = fetchFromGitHub {
owner = "masasam";
repo = "emacs-anything-tramp";
rev = "75df15ac263701f921649fefb29f03f6b7d49b9f";
sha256 = "0al2k5az5x6idnhkhckjxr4vh52f0n9fi20ranwid9ac8k6kspvz";
};
recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/bf5be5351cb187dff8388865ac424f8e5be71639/recipes/anything-tramp";
sha256 = "1dpah5c35j552ixbd9mw2400vnfbibwhk1ihyz2n8b1c06syfny1";
name = "anything-tramp";
};
packageRequires = [ anything emacs ];
meta = {
homepage = "https://melpa.org/#/anything-tramp";
license = lib.licenses.free;
};
}) {};
anzu = callPackage ({ cl-lib ? null, emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }: anzu = callPackage ({ cl-lib ? null, emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }:
melpaBuild { melpaBuild {
pname = "anzu"; pname = "anzu";
@ -2284,12 +2305,12 @@
base16-theme = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }: base16-theme = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }:
melpaBuild { melpaBuild {
pname = "base16-theme"; pname = "base16-theme";
version = "2.0"; version = "2.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "belak"; owner = "belak";
repo = "base16-emacs"; repo = "base16-emacs";
rev = "b50e90a39344402d169b8fdd5d18cc43fb16a256"; rev = "f6d3d45a88d8fa2d70eaa26d8ebcef741b370dd1";
sha256 = "13b9ccm7yw95zc8v8sri762fgqdp2hp107nj5b40yv90g3y4fwby"; sha256 = "19jbvz07qc325mqdzk0q1ycvpibndw0mb7s7bpr0f0nblla0l0sv";
}; };
recipeFile = fetchurl { recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/30862f6be74882cfb57fb031f7318d3fd15551e3/recipes/base16-theme"; url = "https://raw.githubusercontent.com/milkypostman/melpa/30862f6be74882cfb57fb031f7318d3fd15551e3/recipes/base16-theme";
@ -4458,12 +4479,12 @@
company-ansible = callPackage ({ company, emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }: company-ansible = callPackage ({ company, emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }:
melpaBuild { melpaBuild {
pname = "company-ansible"; pname = "company-ansible";
version = "0.4.0"; version = "0.5.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "krzysztof-magosa"; owner = "krzysztof-magosa";
repo = "company-ansible"; repo = "company-ansible";
rev = "2e3264670c861ecbe862f7618241367ab497b5ff"; rev = "f08c19e95e67c852512c30b6825dae3dbd3005a0";
sha256 = "0a0pb3amsxj6m8ka12ny1w9qjy3dg7vsxdsy1wg3qzanj2pdsk4l"; sha256 = "0qypfla1j7c34syphh21nyswr363v6vwi87614wx9d1rz5v4h24n";
}; };
recipeFile = fetchurl { recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/7b44cd4bd9f9a7c942ca3f3bd88b2ce61ffff130/recipes/company-ansible"; url = "https://raw.githubusercontent.com/milkypostman/melpa/7b44cd4bd9f9a7c942ca3f3bd88b2ce61ffff130/recipes/company-ansible";
@ -5115,12 +5136,12 @@
copy-as-format = callPackage ({ cl-lib ? null, fetchFromGitHub, fetchurl, lib, melpaBuild }: copy-as-format = callPackage ({ cl-lib ? null, fetchFromGitHub, fetchurl, lib, melpaBuild }:
melpaBuild { melpaBuild {
pname = "copy-as-format"; pname = "copy-as-format";
version = "0.0.4"; version = "0.0.5";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "sshaw"; owner = "sshaw";
repo = "copy-as-format"; repo = "copy-as-format";
rev = "a77b914ba99729ef618e9e86543da24a46be315a"; rev = "161feb918b104e87f1a284f5c4e5e507e0c177f8";
sha256 = "181d0fxzy228vvgjmfhfnxh9djyjhq4bpf4lklv0mxhzay03pzdx"; sha256 = "0y1j6f9xs877r4bv6dmcl2jsl27v0n6rsmpml719id2cfnh9sn4g";
}; };
recipeFile = fetchurl { recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/42fe8a2113d1c15701abe7a7e0a68e939c3d789b/recipes/copy-as-format"; url = "https://raw.githubusercontent.com/milkypostman/melpa/42fe8a2113d1c15701abe7a7e0a68e939c3d789b/recipes/copy-as-format";
@ -5721,22 +5742,22 @@
license = lib.licenses.free; license = lib.licenses.free;
}; };
}) {}; }) {};
darktooth-theme = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }: darktooth-theme = callPackage ({ autothemer, fetchFromGitHub, fetchurl, lib, melpaBuild }:
melpaBuild { melpaBuild {
pname = "darktooth-theme"; pname = "darktooth-theme";
version = "0.2.100"; version = "0.3.5";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "emacsfodder"; owner = "emacsfodder";
repo = "emacs-theme-darktooth"; repo = "emacs-theme-darktooth";
rev = "380fdcff12f44faf099bc5a38984d88784b495a2"; rev = "dde50661210d8610cd03526a6c9a922bb0e494a6";
sha256 = "1pragypiv59rrvq2xjzmldkf1v007viwwcvr3f5iyv31n0bmd0cn"; sha256 = "1mab28rm175ylg17ziha2kndcqb9a23f8wrpydypa8k7iirhadp6";
}; };
recipeFile = fetchurl { recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/b7f62ac1566ced7332e83253f79078dc30cb7889/recipes/darktooth-theme"; url = "https://raw.githubusercontent.com/milkypostman/melpa/b7f62ac1566ced7332e83253f79078dc30cb7889/recipes/darktooth-theme";
sha256 = "1vss0mg1vz4wvsal1r0ya8lid2c18ig11ip5v9nc80b5slbixzvs"; sha256 = "1vss0mg1vz4wvsal1r0ya8lid2c18ig11ip5v9nc80b5slbixzvs";
name = "darktooth-theme"; name = "darktooth-theme";
}; };
packageRequires = []; packageRequires = [ autothemer ];
meta = { meta = {
homepage = "https://melpa.org/#/darktooth-theme"; homepage = "https://melpa.org/#/darktooth-theme";
license = lib.licenses.free; license = lib.licenses.free;
@ -6349,6 +6370,27 @@
license = lib.licenses.free; license = lib.licenses.free;
}; };
}) {}; }) {};
dired-hide-dotfiles = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }:
melpaBuild {
pname = "dired-hide-dotfiles";
version = "0.1";
src = fetchFromGitHub {
owner = "mattiasb";
repo = "dired-hide-dotfiles";
rev = "32cf3b6f90dc56f6ff271c28d827aab303bc6221";
sha256 = "1fpzgmvbgfgl6wdrynlpvvdlbm8npgrmnzfz2133zvf5x3zfzq6r";
};
recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/ba64a50f85fdb0ad54149dfed4051b4c1a719cbb/recipes/dired-hide-dotfiles";
sha256 = "0yy131cvj9a9sz02ari7pzwf22r5y7acyg757h3jvih317v6jyp0";
name = "dired-hide-dotfiles";
};
packageRequires = [ emacs ];
meta = {
homepage = "https://melpa.org/#/dired-hide-dotfiles";
license = lib.licenses.free;
};
}) {};
dired-icon = callPackage ({ emacs, fetchFromGitLab, fetchurl, lib, melpaBuild }: dired-icon = callPackage ({ emacs, fetchFromGitLab, fetchurl, lib, melpaBuild }:
melpaBuild { melpaBuild {
pname = "dired-icon"; pname = "dired-icon";
@ -6496,6 +6538,27 @@
license = lib.licenses.free; license = lib.licenses.free;
}; };
}) {}; }) {};
direnv = callPackage ({ dash, emacs, fetchFromGitHub, fetchurl, lib, melpaBuild, with-editor }:
melpaBuild {
pname = "direnv";
version = "1.1.0";
src = fetchFromGitHub {
owner = "wbolster";
repo = "emacs-direnv";
rev = "cc8fbcc9c71f120c45c3363ed6ad202352e9a6d5";
sha256 = "03m4c2x7d7hmsgx3ma4z0ra5y6s7fyfsxmzwz618pfa94nbx3qny";
};
recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/5419809ee62b920463e359c8e1314cd0763657c1/recipes/direnv";
sha256 = "0zzmi5m6fh42kyf8dyjrjyrl03pkbipnh4mnssrhp83ljczxkyhd";
name = "direnv";
};
packageRequires = [ dash emacs with-editor ];
meta = {
homepage = "https://melpa.org/#/direnv";
license = lib.licenses.free;
};
}) {};
direx = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }: direx = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }:
melpaBuild { melpaBuild {
pname = "direx"; pname = "direx";
@ -8099,12 +8162,12 @@
elmacro = callPackage ({ dash, fetchFromGitHub, fetchurl, lib, melpaBuild, s }: elmacro = callPackage ({ dash, fetchFromGitHub, fetchurl, lib, melpaBuild, s }:
melpaBuild { melpaBuild {
pname = "elmacro"; pname = "elmacro";
version = "1.0.1"; version = "1.1.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "Silex"; owner = "Silex";
repo = "elmacro"; repo = "elmacro";
rev = "d712c8efc01646117097e061e1b14933b822b9c7"; rev = "9ed19a362b63d9c7436a78feb91bc694194cfefe";
sha256 = "00fry1gjsrx4dv9d9rjf5pd8w3709mn0052al0l948vhwz4wys9z"; sha256 = "00qqa9p9z50gxna4qrsvph4nj41gldl1qj210ywk3lgwn0jjm0k9";
}; };
recipeFile = fetchurl { recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/566cc5bc0f71c5a4191ad93b917dc268f6e1a2da/recipes/elmacro"; url = "https://raw.githubusercontent.com/milkypostman/melpa/566cc5bc0f71c5a4191ad93b917dc268f6e1a2da/recipes/elmacro";
@ -9419,6 +9482,27 @@
license = lib.licenses.free; license = lib.licenses.free;
}; };
}) {}; }) {};
eslintd-fix = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }:
melpaBuild {
pname = "eslintd-fix";
version = "1.0.0";
src = fetchFromGitHub {
owner = "aaronjensen";
repo = "eslintd-fix";
rev = "555fdad8ebee4ca0d990b8c80151c77c8bd6b773";
sha256 = "0xmlr98gyq56vas02nnjdfv7x6zjddy4b1qpy3zz770jnpnrgq33";
};
recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/c72d2b3ee9b8066d51d09e165e58e9846ca879cc/recipes/eslintd-fix";
sha256 = "0lv4xpp9bm1yyn9mj7hpgw1v46yyxr0nlwggbav78jbg4v7ai04v";
name = "eslintd-fix";
};
packageRequires = [];
meta = {
homepage = "https://melpa.org/#/eslintd-fix";
license = lib.licenses.free;
};
}) {};
espuds = callPackage ({ dash, f, fetchFromGitHub, fetchurl, lib, melpaBuild, s }: espuds = callPackage ({ dash, f, fetchFromGitHub, fetchurl, lib, melpaBuild, s }:
melpaBuild { melpaBuild {
pname = "espuds"; pname = "espuds";
@ -9947,12 +10031,12 @@
evil-nerd-commenter = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }: evil-nerd-commenter = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }:
melpaBuild { melpaBuild {
pname = "evil-nerd-commenter"; pname = "evil-nerd-commenter";
version = "3.0.1"; version = "3.0.2";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "redguardtoo"; owner = "redguardtoo";
repo = "evil-nerd-commenter"; repo = "evil-nerd-commenter";
rev = "7c274dbb7ed4102ee06b998fa6f529c0f816fe9d"; rev = "cac2f7945fc90f43d1282dfe4aca24ded9f7cd03";
sha256 = "0997szqya4ljjgmsx1w9zbj6h21wq6l46qk1bs0027zvqwcylsv8"; sha256 = "1zjnscnj0zrxpdjikxwg4fw7m6yb39060cmn24xzs0hmnmbxnw9m";
}; };
recipeFile = fetchurl { recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/a3e1ff69e7cc95a5b5d628524ad836833f4ee736/recipes/evil-nerd-commenter"; url = "https://raw.githubusercontent.com/milkypostman/melpa/a3e1ff69e7cc95a5b5d628524ad836833f4ee736/recipes/evil-nerd-commenter";
@ -12647,12 +12731,12 @@
gams-mode = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }: gams-mode = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }:
melpaBuild { melpaBuild {
pname = "gams-mode"; pname = "gams-mode";
version = "6.1.2"; version = "6.2";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "ShiroTakeda"; owner = "ShiroTakeda";
repo = "gams-mode"; repo = "gams-mode";
rev = "a803f9e4509b8f8fed17ef25737d941bbe846c96"; rev = "ce51aa1afec78bf96aedb4badf33463383b7593e";
sha256 = "1avbdfw3hvwqnrlg3hv8p64m9gqgvwl9ggqzn6rhxh1zlr7i5cwy"; sha256 = "182qrzs88wvkbbalmbdwpmzchkijvg1s6582qihgh29nn8lrl0l5";
}; };
recipeFile = fetchurl { recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/c895a716636b00c2a158d33aab18f664a8601833/recipes/gams-mode"; url = "https://raw.githubusercontent.com/milkypostman/melpa/c895a716636b00c2a158d33aab18f664a8601833/recipes/gams-mode";
@ -13046,12 +13130,12 @@
git-commit = callPackage ({ dash, emacs, fetchFromGitHub, fetchurl, lib, melpaBuild, with-editor }: git-commit = callPackage ({ dash, emacs, fetchFromGitHub, fetchurl, lib, melpaBuild, with-editor }:
melpaBuild { melpaBuild {
pname = "git-commit"; pname = "git-commit";
version = "2.10.2"; version = "2.10.3";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "magit"; owner = "magit";
repo = "magit"; repo = "magit";
rev = "ade30b02b7a732c4b145f8e7e2af1e17af0a9f4d"; rev = "d5b747473ab0bf0f0034fca2f57f6497d476b67e";
sha256 = "0fgid2z4rqlqlzxp0ix1kmv78m2zfs60hgnhgwn4ny007q5138qv"; sha256 = "1cw1nrgmbh0jikr88di4na3f0m643v0p7x8cf7xya2lgqwkdravc";
}; };
recipeFile = fetchurl { recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/cec5af50ae7634cc566adfbfdf0f95c3e2951c0c/recipes/git-commit"; url = "https://raw.githubusercontent.com/milkypostman/melpa/cec5af50ae7634cc566adfbfdf0f95c3e2951c0c/recipes/git-commit";
@ -16306,6 +16390,27 @@
license = lib.licenses.free; license = lib.licenses.free;
}; };
}) {}; }) {};
helm-tramp = callPackage ({ emacs, fetchFromGitHub, fetchurl, helm, lib, melpaBuild }:
melpaBuild {
pname = "helm-tramp";
version = "0.2";
src = fetchFromGitHub {
owner = "masasam";
repo = "emacs-helm-tramp";
rev = "87d323306a79bf5d71b0f556a7aefdfe5824f523";
sha256 = "08rzgfzd70xf1hh54py325p9kf5war40qi5w21anzs4wwg86rz1v";
};
recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/4a69f0a17c4efbaea012be8e878af4060fa0c93b/recipes/helm-tramp";
sha256 = "1113qxl34sf27a88vpvckrfrigp8vnm42nmfrcxz156maa1g9cbv";
name = "helm-tramp";
};
packageRequires = [ emacs helm ];
meta = {
homepage = "https://melpa.org/#/helm-tramp";
license = lib.licenses.free;
};
}) {};
helm-unicode = callPackage ({ emacs, fetchFromGitHub, fetchurl, helm, lib, melpaBuild }: helm-unicode = callPackage ({ emacs, fetchFromGitHub, fetchurl, helm, lib, melpaBuild }:
melpaBuild { melpaBuild {
pname = "helm-unicode"; pname = "helm-unicode";
@ -17170,12 +17275,12 @@
ido-completing-read-plus = callPackage ({ cl-lib ? null, emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }: ido-completing-read-plus = callPackage ({ cl-lib ? null, emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }:
melpaBuild { melpaBuild {
pname = "ido-completing-read-plus"; pname = "ido-completing-read-plus";
version = "3.14"; version = "3.15";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "DarwinAwardWinner"; owner = "DarwinAwardWinner";
repo = "ido-ubiquitous"; repo = "ido-ubiquitous";
rev = "397a43309c0405009cc6961053c54dedebdc83a2"; rev = "950afaed5d36fc4447dd3a517ddb0dd281d8aaf6";
sha256 = "091kq58bb5dxq13d3jap7m4v6ddpin7hkybzy7drqkwn2q005ggb"; sha256 = "0gk1bkllzs3fil2fcj3iha43y43370sgrrs5r6j7hzyhnxqmp965";
}; };
recipeFile = fetchurl { recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/4a227a6d44f1981e8a3f73b253d2c33eb18ef72f/recipes/ido-completing-read+"; url = "https://raw.githubusercontent.com/milkypostman/melpa/4a227a6d44f1981e8a3f73b253d2c33eb18ef72f/recipes/ido-completing-read+";
@ -17275,12 +17380,12 @@
ido-ubiquitous = callPackage ({ cl-lib ? null, emacs, fetchFromGitHub, fetchurl, ido-completing-read-plus, lib, melpaBuild }: ido-ubiquitous = callPackage ({ cl-lib ? null, emacs, fetchFromGitHub, fetchurl, ido-completing-read-plus, lib, melpaBuild }:
melpaBuild { melpaBuild {
pname = "ido-ubiquitous"; pname = "ido-ubiquitous";
version = "3.14"; version = "3.15";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "DarwinAwardWinner"; owner = "DarwinAwardWinner";
repo = "ido-ubiquitous"; repo = "ido-ubiquitous";
rev = "397a43309c0405009cc6961053c54dedebdc83a2"; rev = "950afaed5d36fc4447dd3a517ddb0dd281d8aaf6";
sha256 = "091kq58bb5dxq13d3jap7m4v6ddpin7hkybzy7drqkwn2q005ggb"; sha256 = "0gk1bkllzs3fil2fcj3iha43y43370sgrrs5r6j7hzyhnxqmp965";
}; };
recipeFile = fetchurl { recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/4a227a6d44f1981e8a3f73b253d2c33eb18ef72f/recipes/ido-ubiquitous"; url = "https://raw.githubusercontent.com/milkypostman/melpa/4a227a6d44f1981e8a3f73b253d2c33eb18ef72f/recipes/ido-ubiquitous";
@ -18550,6 +18655,27 @@
license = lib.licenses.free; license = lib.licenses.free;
}; };
}) {}; }) {};
jinja2-mode = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }:
melpaBuild {
pname = "jinja2-mode";
version = "0.2";
src = fetchFromGitHub {
owner = "paradoxxxzero";
repo = "jinja2-mode";
rev = "cfaa7bbe7bb290cc500440124ce89686f3e26f86";
sha256 = "0l26wcy496k6xk7q5sf905xir0p73ziy6c44is77854lv3y0z381";
};
recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/b79196cf0dc0b436ff75eabea369a62f92825d9f/recipes/jinja2-mode";
sha256 = "0480fh719r4v7xdwyf4jlg1k36y54i5zrv7gxlhfm66pil75zafx";
name = "jinja2-mode";
};
packageRequires = [];
meta = {
homepage = "https://melpa.org/#/jinja2-mode";
license = lib.licenses.free;
};
}) {};
jpop = callPackage ({ dash, emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }: jpop = callPackage ({ dash, emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }:
melpaBuild { melpaBuild {
pname = "jpop"; pname = "jpop";
@ -19796,6 +19922,27 @@
license = lib.licenses.free; license = lib.licenses.free;
}; };
}) {}; }) {};
literal-string = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, markdown-mode, melpaBuild }:
melpaBuild {
pname = "literal-string";
version = "0.1";
src = fetchFromGitHub {
owner = "joodie";
repo = "literal-string-mode";
rev = "46dd2b620df70d681261616f1a26afa4a032e2d5";
sha256 = "02a1jvxk2m1lb21p3281cr9xyhzix31cn8a9la53w90sz569i66r";
};
recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/6519bb53f409eeb0d557809b338849e473c193c4/recipes/literal-string";
sha256 = "0ylv9dpw17w272f92vn5cldklyz1d8daihi1fsh5ylvxqpinyrkn";
name = "literal-string";
};
packageRequires = [ emacs markdown-mode ];
meta = {
homepage = "https://melpa.org/#/literal-string";
license = lib.licenses.free;
};
}) {};
literate-coffee-mode = callPackage ({ coffee-mode, fetchFromGitHub, fetchurl, lib, melpaBuild }: literate-coffee-mode = callPackage ({ coffee-mode, fetchFromGitHub, fetchurl, lib, melpaBuild }:
melpaBuild { melpaBuild {
pname = "literate-coffee-mode"; pname = "literate-coffee-mode";
@ -20135,12 +20282,12 @@
magit = callPackage ({ async, dash, emacs, fetchFromGitHub, fetchurl, git-commit, lib, magit-popup, melpaBuild, with-editor }: magit = callPackage ({ async, dash, emacs, fetchFromGitHub, fetchurl, git-commit, lib, magit-popup, melpaBuild, with-editor }:
melpaBuild { melpaBuild {
pname = "magit"; pname = "magit";
version = "2.10.2"; version = "2.10.3";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "magit"; owner = "magit";
repo = "magit"; repo = "magit";
rev = "ade30b02b7a732c4b145f8e7e2af1e17af0a9f4d"; rev = "d5b747473ab0bf0f0034fca2f57f6497d476b67e";
sha256 = "0fgid2z4rqlqlzxp0ix1kmv78m2zfs60hgnhgwn4ny007q5138qv"; sha256 = "1cw1nrgmbh0jikr88di4na3f0m643v0p7x8cf7xya2lgqwkdravc";
}; };
recipeFile = fetchurl { recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/68bb049b7c4424345f5c1aea82e950a5e47e9e47/recipes/magit"; url = "https://raw.githubusercontent.com/milkypostman/melpa/68bb049b7c4424345f5c1aea82e950a5e47e9e47/recipes/magit";
@ -20289,12 +20436,12 @@
magit-popup = callPackage ({ async, dash, emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }: magit-popup = callPackage ({ async, dash, emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }:
melpaBuild { melpaBuild {
pname = "magit-popup"; pname = "magit-popup";
version = "2.10.2"; version = "2.10.3";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "magit"; owner = "magit";
repo = "magit"; repo = "magit";
rev = "ade30b02b7a732c4b145f8e7e2af1e17af0a9f4d"; rev = "d5b747473ab0bf0f0034fca2f57f6497d476b67e";
sha256 = "0fgid2z4rqlqlzxp0ix1kmv78m2zfs60hgnhgwn4ny007q5138qv"; sha256 = "1cw1nrgmbh0jikr88di4na3f0m643v0p7x8cf7xya2lgqwkdravc";
}; };
recipeFile = fetchurl { recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/cec5af50ae7634cc566adfbfdf0f95c3e2951c0c/recipes/magit-popup"; url = "https://raw.githubusercontent.com/milkypostman/melpa/cec5af50ae7634cc566adfbfdf0f95c3e2951c0c/recipes/magit-popup";
@ -20951,8 +21098,8 @@
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "the-lambda-church"; owner = "the-lambda-church";
repo = "merlin"; repo = "merlin";
rev = "afc398a9e6787b9a8ece385f23bd94ae0ef71805"; rev = "89f9643c08211a770454919551a7fd8605d1fca8";
sha256 = "0899yjw3zm8c0xrv1nk3vcn4rzng68kw5dlns4w6pmzv0pc3cq7q"; sha256 = "13x0zjd297ssqmbvba32zk2p588kznd5ag4wh3nqb6fdgyzy4d63";
}; };
recipeFile = fetchurl { recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/b1b9bfd3164e62758dc0a3362d85c6627ed7cbf8/recipes/merlin"; url = "https://raw.githubusercontent.com/milkypostman/melpa/b1b9bfd3164e62758dc0a3362d85c6627ed7cbf8/recipes/merlin";
@ -21238,6 +21385,27 @@
license = lib.licenses.free; license = lib.licenses.free;
}; };
}) {}; }) {};
mmm-jinja2 = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild, mmm-mode }:
melpaBuild {
pname = "mmm-jinja2";
version = "0.1";
src = fetchFromGitHub {
owner = "glynnforrest";
repo = "mmm-jinja2";
rev = "c8cb763174fa2fb61b9a0e5e0ff8cb0210f8492f";
sha256 = "0big2i3bg4cm14f68ncaiz2h6dk6zqiisrz4l0bv10q9kaa9q2sj";
};
recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/721b9a6f16fb8efd4d339ac7953cc07d7a234b53/recipes/mmm-jinja2";
sha256 = "0zg4psrgikb8644x3vmsns0id71ni9fcpm591zn16b4j64llvgsi";
name = "mmm-jinja2";
};
packageRequires = [ mmm-mode ];
meta = {
homepage = "https://melpa.org/#/mmm-jinja2";
license = lib.licenses.free;
};
}) {};
mmm-mako = callPackage ({ fetchhg, fetchurl, lib, melpaBuild, mmm-mode }: mmm-mako = callPackage ({ fetchhg, fetchurl, lib, melpaBuild, mmm-mode }:
melpaBuild { melpaBuild {
pname = "mmm-mako"; pname = "mmm-mako";
@ -22392,11 +22560,11 @@
}) {}; }) {};
notmuch = callPackage ({ fetchgit, fetchurl, lib, melpaBuild }: melpaBuild { notmuch = callPackage ({ fetchgit, fetchurl, lib, melpaBuild }: melpaBuild {
pname = "notmuch"; pname = "notmuch";
version = "0.24pre0"; version = "0.24";
src = fetchgit { src = fetchgit {
url = "git://git.notmuchmail.org/git/notmuch"; url = "git://git.notmuchmail.org/git/notmuch";
rev = "990f8cd03203c7a19cef4e3edbec823cc99fa701"; rev = "e60b44ecf8bd5934959727496c7ef3016ff80cf6";
sha256 = "06135xc3i839hw4sa9gmvnb7qq4llv67q8h537vfgb9gixr40f1q"; sha256 = "1q81ibvhjvnz4hbwmdna3a1xjkik21avy5im89fnkhq068kwac2j";
}; };
recipeFile = fetchurl { recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/b19f21ed7485036e799ccd88edbf7896a379d759/recipes/notmuch"; url = "https://raw.githubusercontent.com/milkypostman/melpa/b19f21ed7485036e799ccd88edbf7896a379d759/recipes/notmuch";
@ -22769,12 +22937,12 @@
ocp-indent = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }: ocp-indent = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }:
melpaBuild { melpaBuild {
pname = "ocp-indent"; pname = "ocp-indent";
version = "1.5.3"; version = "1.6.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "OCamlPro"; owner = "OCamlPro";
repo = "ocp-indent"; repo = "ocp-indent";
rev = "8c349c5531d3bc90b00df875b6cd3c64110f59f1"; rev = "032599b162624a4b65c82c20be06433f24b00e8f";
sha256 = "1c4fdm6r3r3fqjflqjncfmx0ps52b5f17vq957g0b3pcaql5n63d"; sha256 = "1h9y597s3ag8w1z32zzv4dfk3ppq557s55bnlfw5a5wqwvia911f";
}; };
recipeFile = fetchurl { recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/e1af061328b15360ed25a232cc6b8fbce4a7b098/recipes/ocp-indent"; url = "https://raw.githubusercontent.com/milkypostman/melpa/e1af061328b15360ed25a232cc6b8fbce4a7b098/recipes/ocp-indent";
@ -23815,12 +23983,12 @@
org-table-sticky-header = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild, org }: org-table-sticky-header = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild, org }:
melpaBuild { melpaBuild {
pname = "org-table-sticky-header"; pname = "org-table-sticky-header";
version = "0.1.0"; version = "0.1.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "cute-jumper"; owner = "cute-jumper";
repo = "org-table-sticky-header"; repo = "org-table-sticky-header";
rev = "1fca19fbccbb21159086970b82af56a81f78e247"; rev = "4dba2dc9a3ed63f58aa946aeec84a52d46ca4043";
sha256 = "1swhsspa5yz68hl2449l9hk1d6r9c32z19z4mrdxw4nimdxhxmqp"; sha256 = "0az4lzd9qk4cx7jjfj36r2fvlkwyrhn3xqhha5d1pydglnhd9amy";
}; };
recipeFile = fetchurl { recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/5dd0e18bf4c3f3263eff8aff6d7c743a554243b5/recipes/org-table-sticky-header"; url = "https://raw.githubusercontent.com/milkypostman/melpa/5dd0e18bf4c3f3263eff8aff6d7c743a554243b5/recipes/org-table-sticky-header";
@ -24379,6 +24547,27 @@
license = lib.licenses.free; license = lib.licenses.free;
}; };
}) {}; }) {};
ox-epub = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild, org }:
melpaBuild {
pname = "ox-epub";
version = "0.1.6";
src = fetchFromGitHub {
owner = "ofosos";
repo = "ox-epub";
rev = "edc253b6f7397ac89a3a0b2d2a05e650baa483f8";
sha256 = "0kvs5kpkly45fqdb7mka1w2yn7pks95gxgiy2ayx12cgvn3inyw6";
};
recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/c3ac31dfef00e83fa6b716ea006f35afb5dc6cd5/recipes/ox-epub";
sha256 = "15q6vsmgv76c0qfdxa3prqvgmr6n7k4rd4bpi05574ibi23y0ynh";
name = "ox-epub";
};
packageRequires = [ emacs org ];
meta = {
homepage = "https://melpa.org/#/ox-epub";
license = lib.licenses.free;
};
}) {};
ox-ioslide = callPackage ({ cl-lib ? null, emacs, f, fetchFromGitHub, fetchurl, lib, melpaBuild, org }: ox-ioslide = callPackage ({ cl-lib ? null, emacs, f, fetchFromGitHub, fetchurl, lib, melpaBuild, org }:
melpaBuild { melpaBuild {
pname = "ox-ioslide"; pname = "ox-ioslide";
@ -24842,12 +25031,12 @@
parsebib = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }: parsebib = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }:
melpaBuild { melpaBuild {
pname = "parsebib"; pname = "parsebib";
version = "1.0.5"; version = "2.0.3";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "joostkremers"; owner = "joostkremers";
repo = "parsebib"; repo = "parsebib";
rev = "9a1f60bed2814dfb5cec2b92efb5951a4b465cce"; rev = "748d6a179fcbbc4af77c7b96059a66d579f34dc8";
sha256 = "0n91whyjnrdhb9bqfif01ygmwv5biwpz2pvjv5w5y1d4g0k1x9ml"; sha256 = "0f8rcifzfp4fs52pjgfly39vqz54kgjb3yqyxlh4adq12zbq11cd";
}; };
recipeFile = fetchurl { recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/c39633957475dcd6a033760ba20a957716cce59c/recipes/parsebib"; url = "https://raw.githubusercontent.com/milkypostman/melpa/c39633957475dcd6a033760ba20a957716cce59c/recipes/parsebib";
@ -25260,12 +25449,12 @@
persp-mode = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }: persp-mode = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }:
melpaBuild { melpaBuild {
pname = "persp-mode"; pname = "persp-mode";
version = "2.9.5"; version = "2.9.6";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "Bad-ptr"; owner = "Bad-ptr";
repo = "persp-mode.el"; repo = "persp-mode.el";
rev = "1116ead88123a11efef346db0045ee8389250bd2"; rev = "1dfea0de788f6d25ee47b5c62ddbeaf9e8e92f06";
sha256 = "11xncsvzy13xc939qfvlzplsz2izvf16hy45k500h44g2dxcvq3m"; sha256 = "11ww8hg9p8qlmr8zpir0m5xzzbvd1faiqjx6vn4b05d4ll03rnhm";
}; };
recipeFile = fetchurl { recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/caad63d14f770f07d09b6174b7b40c5ab06a1083/recipes/persp-mode"; url = "https://raw.githubusercontent.com/milkypostman/melpa/caad63d14f770f07d09b6174b7b40c5ab06a1083/recipes/persp-mode";
@ -28131,22 +28320,22 @@
license = lib.licenses.free; license = lib.licenses.free;
}; };
}) {}; }) {};
rubocop = callPackage ({ dash, emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }: rubocop = callPackage ({ emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }:
melpaBuild { melpaBuild {
pname = "rubocop"; pname = "rubocop";
version = "0.4.0"; version = "0.5.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "bbatsov"; owner = "bbatsov";
repo = "rubocop-emacs"; repo = "rubocop-emacs";
rev = "405e0fd4c57adb125e3d04208bc86081e3e78d4c"; rev = "980bedb455e3551d35a212fae515c054888907c1";
sha256 = "10djjp1520xc05qkciaiaiiciscaln6c74h7ymba40mvzlf67y9q"; sha256 = "152ara2p59imry2ymfnk5mycbc07rblcmfmqjgm5fijb2x94xv8p";
}; };
recipeFile = fetchurl { recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/00f2cf3e8e28bce5c26c86aba54390ffff48d7da/recipes/rubocop"; url = "https://raw.githubusercontent.com/milkypostman/melpa/00f2cf3e8e28bce5c26c86aba54390ffff48d7da/recipes/rubocop";
sha256 = "114azl0fasmnq0fxxyiif3363mpg8qz3ynx91in5acqzh902fa3q"; sha256 = "114azl0fasmnq0fxxyiif3363mpg8qz3ynx91in5acqzh902fa3q";
name = "rubocop"; name = "rubocop";
}; };
packageRequires = [ dash emacs ]; packageRequires = [ emacs ];
meta = { meta = {
homepage = "https://melpa.org/#/rubocop"; homepage = "https://melpa.org/#/rubocop";
license = lib.licenses.free; license = lib.licenses.free;
@ -28425,6 +28614,27 @@
license = lib.licenses.free; license = lib.licenses.free;
}; };
}) {}; }) {};
salt-mode = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild, mmm-jinja2, mmm-mode, yaml-mode }:
melpaBuild {
pname = "salt-mode";
version = "0.1";
src = fetchFromGitHub {
owner = "glynnforrest";
repo = "salt-mode";
rev = "e14ed8f2ce0ab7a783c4341879ec8c003e2b5c81";
sha256 = "19gw35qv13f2r4wif5fgqfhrph2r320n81faxx8980zds28x2q0x";
};
recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/9dcf1a93a06fc42581521c88cfd988b03bedc000/recipes/salt-mode";
sha256 = "1n7i9d6qpjsdcgbzmbf63y4c7ggxh5wsim8fd0casnrq9bl7ssym";
name = "salt-mode";
};
packageRequires = [ mmm-jinja2 mmm-mode yaml-mode ];
meta = {
homepage = "https://melpa.org/#/salt-mode";
license = lib.licenses.free;
};
}) {};
sass-mode = callPackage ({ fetchFromGitHub, fetchurl, haml-mode, lib, melpaBuild }: sass-mode = callPackage ({ fetchFromGitHub, fetchurl, haml-mode, lib, melpaBuild }:
melpaBuild { melpaBuild {
pname = "sass-mode"; pname = "sass-mode";
@ -28488,22 +28698,22 @@
license = lib.licenses.free; license = lib.licenses.free;
}; };
}) {}; }) {};
sayid = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }: sayid = callPackage ({ cider, fetchFromGitHub, fetchurl, lib, melpaBuild }:
melpaBuild { melpaBuild {
pname = "sayid"; pname = "sayid";
version = "0.0.13"; version = "0.0.14";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "bpiel"; owner = "bpiel";
repo = "sayid"; repo = "sayid";
rev = "01bf777cb15a4f236bc44842712e9ca82fed7f55"; rev = "3e5456cade044f01eb0753aabc9e50868000bd14";
sha256 = "0lh4mmdm5vizr08lyz2jc131991dqmyx29n8njgpxa1vjzqd08az"; sha256 = "1asphbijh5y4ax03x1cn02l4ya8v44s23ani91a0d52msdaxbnyw";
}; };
recipeFile = fetchurl { recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/2bd2e05f9c9328d8f9ae434c86697a4a04af8b0d/recipes/sayid"; url = "https://raw.githubusercontent.com/milkypostman/melpa/2bd2e05f9c9328d8f9ae434c86697a4a04af8b0d/recipes/sayid";
sha256 = "0chz46wmwmsn4ys59pn7lqs4assqy2hv43rvka7kq61jdl4g6fgs"; sha256 = "0chz46wmwmsn4ys59pn7lqs4assqy2hv43rvka7kq61jdl4g6fgs";
name = "sayid"; name = "sayid";
}; };
packageRequires = []; packageRequires = [ cider ];
meta = { meta = {
homepage = "https://melpa.org/#/sayid"; homepage = "https://melpa.org/#/sayid";
license = lib.licenses.free; license = lib.licenses.free;
@ -30040,22 +30250,22 @@
license = lib.licenses.free; license = lib.licenses.free;
}; };
}) {}; }) {};
sparql-mode = callPackage ({ cl-lib ? null, fetchFromGitHub, fetchurl, lib, melpaBuild }: sparql-mode = callPackage ({ cl-lib ? null, emacs, fetchFromGitHub, fetchurl, lib, melpaBuild }:
melpaBuild { melpaBuild {
pname = "sparql-mode"; pname = "sparql-mode";
version = "0.11.2"; version = "2.0.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "ljos"; owner = "ljos";
repo = "sparql-mode"; repo = "sparql-mode";
rev = "303858e7f91829ec720141482c777460e66f310b"; rev = "33da09b3895e03e64959005678d448ab82e527b6";
sha256 = "1gk2ps7fn9z8n6r923qzn518gz9mrj7mb6j726cz8qb585ndjbij"; sha256 = "17fpfc0hc39y9h12mj62fwfga4mhk0c9fm2qnbnzf4i3ajhp7r2w";
}; };
recipeFile = fetchurl { recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/c3d729130a41903bb01465d0f01c34fbc508b56e/recipes/sparql-mode"; url = "https://raw.githubusercontent.com/milkypostman/melpa/c3d729130a41903bb01465d0f01c34fbc508b56e/recipes/sparql-mode";
sha256 = "1xicrfmgxpb31lz30qj450w8v7dl4ipjp7b2wz54s4kn88nsfj7d"; sha256 = "1xicrfmgxpb31lz30qj450w8v7dl4ipjp7b2wz54s4kn88nsfj7d";
name = "sparql-mode"; name = "sparql-mode";
}; };
packageRequires = [ cl-lib ]; packageRequires = [ cl-lib emacs ];
meta = { meta = {
homepage = "https://melpa.org/#/sparql-mode"; homepage = "https://melpa.org/#/sparql-mode";
license = lib.licenses.free; license = lib.licenses.free;
@ -34335,12 +34545,12 @@
zenburn-theme = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }: zenburn-theme = callPackage ({ fetchFromGitHub, fetchurl, lib, melpaBuild }:
melpaBuild { melpaBuild {
pname = "zenburn-theme"; pname = "zenburn-theme";
version = "2.4"; version = "2.5";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "bbatsov"; owner = "bbatsov";
repo = "zenburn-emacs"; repo = "zenburn-emacs";
rev = "e5dc3962fd30005914b79b14e9821d298f2c305a"; rev = "f031c785b469cf4356fddb997eccf60399e34235";
sha256 = "1n7ka608lk0xp7vg4zcw282zna0cwvcwvmhic6ym1ag7lq5cjrhc"; sha256 = "029955wp29wdrk1ddmhxixd76vhkp2li3mjaknw9d8iqz819vshc";
}; };
recipeFile = fetchurl { recipeFile = fetchurl {
url = "https://raw.githubusercontent.com/milkypostman/melpa/091dcc3775ec2137cb61d66df4e72aca4900897a/recipes/zenburn-theme"; url = "https://raw.githubusercontent.com/milkypostman/melpa/091dcc3775ec2137cb61d66df4e72aca4900897a/recipes/zenburn-theme";

View File

@ -9,8 +9,8 @@
let let
pname = "kdevelop"; pname = "kdevelop";
version = "5.0.3"; version = "5.0.4";
dirVersion = "5.0.3"; dirVersion = "5.0.4";
in in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
@ -18,7 +18,7 @@ stdenv.mkDerivation rec {
src = fetchurl { src = fetchurl {
url = "mirror://kde/stable/${pname}/${dirVersion}/src/${name}.tar.xz"; url = "mirror://kde/stable/${pname}/${dirVersion}/src/${name}.tar.xz";
sha256 = "17a58dfc38b853c6c5987084e8973b4f7f5015a6c2c20f94c2a9f96b0c13f601"; sha256 = "191142b2bdb14837c82721fdfeb15e852329f2c4c0d48fd479c57514c3235d55";
}; };
nativeBuildInputs = [ nativeBuildInputs = [

View File

@ -1,55 +0,0 @@
From e84645d1694bdad7f179cd41babce723fe07aa63 Mon Sep 17 00:00:00 2001
From: Kevin Funk <kfunk@kde.org>
Date: Mon, 5 Dec 2016 15:20:53 +0100
Subject: Hotfix for restoring build with newer KConfig
https://phabricator.kde.org/D3386 is a SIC change, handle that
---
project/projectconfigskeleton.cpp | 4 ++++
project/projectconfigskeleton.h | 14 +++++---------
2 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/project/projectconfigskeleton.cpp b/project/projectconfigskeleton.cpp
index 0e06149..c4c9767 100644
--- a/project/projectconfigskeleton.cpp
+++ b/project/projectconfigskeleton.cpp
@@ -46,6 +46,10 @@ ProjectConfigSkeleton::ProjectConfigSkeleton( const QString & configname )
ProjectConfigSkeleton::ProjectConfigSkeleton( KSharedConfigPtr config )
: KConfigSkeleton( config ), d( new ProjectConfigSkeletonPrivate )
{
+ // FIXME: Check if that does the right thing.
+ // https://phabricator.kde.org/D3386 broke source compat in kconfig, thus requiring us to make this ctor public
+ Q_ASSERT(config);
+ d->m_developerTempFile = config->name();
}
void ProjectConfigSkeleton::setDeveloperTempFile( const QString& cfg )
diff --git a/project/projectconfigskeleton.h b/project/projectconfigskeleton.h
index ed17ed0..c8314df 100644
--- a/project/projectconfigskeleton.h
+++ b/project/projectconfigskeleton.h
@@ -55,16 +55,12 @@ public:
Path projectFile() const;
Path developerFile() const;
+
+protected:
+ explicit ProjectConfigSkeleton( KSharedConfigPtr config );
+
private:
- /**
- * There's no way in KDE4 API to find out the file that the config object
- * was created from, so we can't apply defaults when using this
- * constructors. Thus I'm making this private, so we can find out when
- * this constructor is used and see if we need to add appropriate API to
- * kdelibs
- */
- explicit ProjectConfigSkeleton( KSharedConfigPtr config );
- struct ProjectConfigSkeletonPrivate * const d;
+ struct ProjectConfigSkeletonPrivate * const d;
};
}
--
cgit v0.11.2

View File

@ -6,8 +6,8 @@
let let
pname = "kdevplatform"; pname = "kdevplatform";
version = "5.0.3"; version = "5.0.4";
dirVersion = "5.0.3"; dirVersion = "5.0.4";
in in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
@ -15,11 +15,9 @@ stdenv.mkDerivation rec {
src = fetchurl { src = fetchurl {
url = "mirror://kde/stable/kdevelop/${dirVersion}/src/${name}.tar.xz"; url = "mirror://kde/stable/kdevelop/${dirVersion}/src/${name}.tar.xz";
sha256 = "643d1145e1948af221f9ae148d0a10809f3d89af4b97ff0d6c4d571004f46bd4"; sha256 = "01abfcd71383048d017fe989ccce0e7590010a3975bbe6e161f55ababe2ad471";
}; };
patches = [ ./kdevplatform-projectconfigskeleton.patch ];
nativeBuildInputs = [ cmake gettext pkgconfig extra-cmake-modules makeQtWrapper ]; nativeBuildInputs = [ cmake gettext pkgconfig extra-cmake-modules makeQtWrapper ];
propagatedBuildInputs = [ ]; propagatedBuildInputs = [ ];

View File

@ -1,6 +1,6 @@
{ fetchurl, stdenv, glib, xorg, cairo, gtk2, pango, makeWrapper, openssl, bzip2, { fetchurl, stdenv, glib, xorg, cairo, gtk2, pango, makeWrapper, openssl, bzip2,
pkexecPath ? "/run/wrappers/bin/pkexec", libredirect, pkexecPath ? "/run/wrappers/bin/pkexec", libredirect,
gksuSupport ? false, gksu}: gksuSupport ? false, gksu, unzip, zip, bash }:
assert stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux"; assert stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux";
assert gksuSupport -> gksu != null; assert gksuSupport -> gksu != null;
@ -33,6 +33,21 @@ in let
dontPatchELF = true; dontPatchELF = true;
buildInputs = [ makeWrapper ]; buildInputs = [ makeWrapper ];
# make exec.py in Default.sublime-package use own bash with
# an LD_PRELOAD instead of "/bin/bash"
patchPhase = ''
mkdir Default.sublime-package-fix
( cd Default.sublime-package-fix
${unzip}/bin/unzip ../Packages/Default.sublime-package > /dev/null
substituteInPlace "exec.py" --replace \
"[\"/bin/bash\"" \
"[\"$out/sublime_bash\""
)
${zip}/bin/zip -j Default.sublime-package.zip Default.sublime-package-fix/* > /dev/null
mv Default.sublime-package.zip Packages/Default.sublime-package
rm -r Default.sublime-package-fix
'';
buildPhase = '' buildPhase = ''
for i in sublime_text plugin_host crash_reporter; do for i in sublime_text plugin_host crash_reporter; do
patchelf \ patchelf \
@ -52,6 +67,12 @@ in let
mkdir -p $out mkdir -p $out
cp -prvd * $out/ cp -prvd * $out/
# We can't just call /usr/bin/env bash because a relocation error occurs
# when trying to run a build from within Sublime Text
ln -s ${bash}/bin/bash $out/sublime_bash
wrapProgram $out/sublime_bash \
--set LD_PRELOAD "${stdenv.cc.cc.lib}/lib${stdenv.lib.optionalString stdenv.is64bit "64"}/libgcc_s.so.1"
wrapProgram $out/sublime_text \ wrapProgram $out/sublime_text \
--set LD_PRELOAD "${libredirect}/lib/libredirect.so" \ --set LD_PRELOAD "${libredirect}/lib/libredirect.so" \
--set NIX_REDIRECTS ${builtins.concatStringsSep ":" redirects} --set NIX_REDIRECTS ${builtins.concatStringsSep ":" redirects}
@ -66,6 +87,7 @@ in stdenv.mkDerivation {
phases = [ "installPhase" ]; phases = [ "installPhase" ];
installPhase = '' installPhase = ''
mkdir -p $out/bin mkdir -p $out/bin
ln -s ${sublime}/sublime_text $out/bin/subl
ln -s ${sublime}/sublime_text $out/bin/sublime ln -s ${sublime}/sublime_text $out/bin/sublime
ln -s ${sublime}/sublime_text $out/bin/sublime3 ln -s ${sublime}/sublime_text $out/bin/sublime3
mkdir -p $out/share/applications mkdir -p $out/share/applications

View File

@ -1,4 +1,4 @@
{ stdenv, fetchurl, gdal, cmake, qt4, flex, bison, proj, geos, xlibsWrapper, sqlite, gsl { stdenv, fetchurl, fetchpatch, gdal, cmake, qt4, flex, bison, proj, geos, xlibsWrapper, sqlite, gsl
, qwt, fcgi, python2Packages, libspatialindex, libspatialite, qscintilla, postgresql, makeWrapper , qwt, fcgi, python2Packages, libspatialindex, libspatialite, qscintilla, postgresql, makeWrapper
, qjson, qca2, txt2tags, openssl , qjson, qca2, txt2tags, openssl
, withGrass ? false, grass , withGrass ? false, grass
@ -14,6 +14,15 @@ stdenv.mkDerivation rec {
nativeBuildInputs = [ cmake makeWrapper ]; nativeBuildInputs = [ cmake makeWrapper ];
patches = [
# See https://hub.qgis.org/issues/16071
(fetchpatch {
name = "fix-build-against-recent-sip";
url = "https://github.com/qgis/QGIS/commit/85a0db24f32351f6096cd8282f03ad5c2f4e6ef5.patch";
sha256 = "0snspzdrpawd7j5b69i8kk7pmmy6ij8bn02bzg94qznfpf9ihf30";
})
];
# fatal error: ui_qgsdelimitedtextsourceselectbase.h: No such file or directory # fatal error: ui_qgsdelimitedtextsourceselectbase.h: No such file or directory
#enableParallelBuilding = true; #enableParallelBuilding = true;

View File

@ -1,25 +1,26 @@
{stdenv, fetchgit, flex, bison, cmake, git, zlib}: {stdenv, fetchFromGitHub, flex, bison, cmake, git, zlib}:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
version = "2016-05-19"; version = "2017-01-12";
name = "pbrt-v3-${version}"; name = "pbrt-v3-${version}";
src = fetchgit {
url = "https://github.com/mmp/pbrt-v3.git";
rev = "638249e5cf4596e129695c8df8525d43f11573ff";
sha256 = "10ykqrg4zcfb4sfsg3z793c6vld6b6g8bzfyk7ya3yvvc9sdlr5g";
};
fetchSubmodules = true; src = fetchFromGitHub {
rev = "35b6da3429526f2026fe5e5ebaf36d593e113028";
owner = "mmp";
repo = "pbrt-v3";
sha256 = "10lvbph13p6ilzqb8sgrvn9gg1zmi8wpy3hhjbqp8dnsa4x0mhj7";
fetchSubmodules = true;
};
buildInputs = [ git flex bison cmake zlib ]; buildInputs = [ git flex bison cmake zlib ];
meta = { meta = with stdenv.lib; {
homepage = "http://pbrt.org"; homepage = "http://pbrt.org";
description = "The renderer described in the third edition of the book 'Physically Based Rendering: From Theory To Implementation'"; description = "The renderer described in the third edition of the book 'Physically Based Rendering: From Theory To Implementation'";
platforms = stdenv.lib.platforms.linux ; platforms = platforms.linux ;
license = stdenv.lib.licenses.bsd3; license = licenses.bsd2;
maintainers = [ stdenv.lib.maintainers.juliendehos ]; maintainers = [ maintainers.juliendehos ];
priority = 10; priority = 10;
}; };
} }

View File

@ -62,6 +62,7 @@ let
kate = callPackage ./kate.nix {}; kate = callPackage ./kate.nix {};
kdenlive = callPackage ./kdenlive.nix {}; kdenlive = callPackage ./kdenlive.nix {};
kcalc = callPackage ./kcalc.nix {}; kcalc = callPackage ./kcalc.nix {};
kcachegrind = callPackage ./kcachegrind.nix {};
kcolorchooser = callPackage ./kcolorchooser.nix {}; kcolorchooser = callPackage ./kcolorchooser.nix {};
kcontacts = callPackage ./kcontacts.nix {}; kcontacts = callPackage ./kcontacts.nix {};
kdegraphics-mobipocket = callPackage ./kdegraphics-mobipocket.nix {}; kdegraphics-mobipocket = callPackage ./kdegraphics-mobipocket.nix {};
@ -76,6 +77,7 @@ let
kmix = callPackage ./kmix.nix {}; kmix = callPackage ./kmix.nix {};
kompare = callPackage ./kompare.nix {}; kompare = callPackage ./kompare.nix {};
konsole = callPackage ./konsole.nix {}; konsole = callPackage ./konsole.nix {};
krfb = callPackage ./krfb.nix {};
kwalletmanager = callPackage ./kwalletmanager.nix {}; kwalletmanager = callPackage ./kwalletmanager.nix {};
libkdcraw = callPackage ./libkdcraw.nix {}; libkdcraw = callPackage ./libkdcraw.nix {};
libkexiv2 = callPackage ./libkexiv2.nix {}; libkexiv2 = callPackage ./libkexiv2.nix {};

View File

@ -0,0 +1,27 @@
{
kdeApp, lib, kdeWrapper,
cmake, automoc4,
kdelibs, perl, python, php
}:
kdeWrapper {
unwrapped = kdeApp {
name = "kcachegrind";
meta = {
license = with lib.licenses; [ gpl2 ];
maintainers = with lib.maintainers; [ orivej ];
};
nativeBuildInputs = [ cmake automoc4 ];
buildInputs = [ kdelibs perl python php ];
enableParallelBuilding = true;
};
targets = [
"bin/kcachegrind"
"bin/dprof2calltree" # perl
"bin/hotshot2calltree" # python
"bin/memprof2calltree" # perl
"bin/op2calltree" # perl
"bin/pprof2calltree" # php
];
}

View File

@ -0,0 +1,22 @@
{
kdeApp, lib, kdeWrapper,
extra-cmake-modules, kdoctools,
kdelibs4support, kdnssd, libvncserver, libXtst
}:
let
unwrapped =
kdeApp {
name = "krfb";
meta = {
license = with lib.licenses; [ gpl2 fdl12 ];
maintainers = with lib.maintainers; [ jerith666 ];
};
nativeBuildInputs = [ extra-cmake-modules kdoctools ];
propagatedBuildInputs = [ kdelibs4support kdnssd libvncserver libXtst ];
};
in
kdeWrapper {
inherit unwrapped;
targets = [ "bin/krfb" ];
}

View File

@ -2,11 +2,11 @@
python2Packages.buildPythonApplication rec { python2Packages.buildPythonApplication rec {
name = "electrum-${version}"; name = "electrum-${version}";
version = "2.7.18"; version = "2.8.1";
src = fetchurl { src = fetchurl {
url = "https://download.electrum.org/${version}/Electrum-${version}.tar.gz"; url = "https://download.electrum.org/${version}/Electrum-${version}.tar.gz";
sha256 = "1l9krc7hqhqrm5bwp999bpykkcq4958qwvx8v0l5mxcxw8k7fkab"; sha256 = "1398s9d8j04is24il2xjb6xkj666pj21bsr90xglpsmfa1js9z7g";
}; };
propagatedBuildInputs = with python2Packages; [ propagatedBuildInputs = with python2Packages; [
@ -15,22 +15,22 @@ python2Packages.buildPythonApplication rec {
jsonrpclib jsonrpclib
pbkdf2 pbkdf2
protobuf3_0 protobuf3_0
pyasn1 pyaes
pyasn1-modules
pycrypto pycrypto
pyqt4 pyqt4
pysocks
qrcode qrcode
requests requests
slowaes
tlslite tlslite
# plugins # plugins
trezor
keepkey keepkey
trezor
# TODO plugins # TODO plugins
# matplotlib
# btchip
# amodem # amodem
# btchip
# matplotlib
]; ];
preBuild = '' preBuild = ''
@ -43,8 +43,11 @@ python2Packages.buildPythonApplication rec {
postInstall = '' postInstall = ''
# Despite setting usr_share above, these files are installed under # Despite setting usr_share above, these files are installed under
# $out/nix ... # $out/nix ...
mv $out/lib/python2.7/site-packages/nix/store/*/share $out mv $out/lib/python2.7/site-packages/nix/store"/"*/share $out
rm -rf $out/lib/python2.7/site-packages/nix rm -rf $out/lib/python2.7/site-packages/nix
substituteInPlace $out/share/applications/electrum.desktop \
--replace "Exec=electrum %u" "Exec=$out/bin/electrum %u"
''; '';
doInstallCheck = true; doInstallCheck = true;

View File

@ -2,14 +2,14 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "emem"; pname = "emem";
version = "0.2.34"; version = "0.2.41";
name = "${pname}-${version}"; name = "${pname}-${version}";
inherit jdk; inherit jdk;
src = fetchurl { src = fetchurl {
url = "https://github.com/ebzzry/${pname}/releases/download/v${version}/${pname}.jar"; url = "https://github.com/ebzzry/${pname}/releases/download/v${version}/${pname}.jar";
sha256 = "19dslv632qyz3hcycx22w6x96nwph7cxl1yjprir2w2c692dq06x"; sha256 = "0pg7m4fyrcbm8d5nj96xvvh1cvml501rw34hniqq384waifr2kqs";
}; };
buildInputs = [ ]; buildInputs = [ ];
@ -17,8 +17,7 @@ stdenv.mkDerivation rec {
phases = [ "buildPhase" "installPhase" ]; phases = [ "buildPhase" "installPhase" ];
buildPhase = '' buildPhase = ''
mkdir -p $out/bin mkdir -p $out/bin $out/share/java
mkdir -p $out/share/java
''; '';
installPhase = '' installPhase = ''

View File

@ -0,0 +1,31 @@
{ stdenv, buildEnv, fetchzip, mono }:
let
version = "0.8.1";
drv = stdenv.mkDerivation {
name = "keeagent-${version}";
src = fetchzip {
url = http://lechnology.com/wp-content/uploads/2016/07/KeeAgent_v0.8.1.zip;
sha256 = "16x1qrnzg0xkvi7w29wj3z0ldmql2vcbwxksbsmnidzmygwg98hk";
stripRoot = false;
};
meta = {
description = "KeePass plugin to allow other programs to access SSH keys stored in a KeePass database for authentication";
homepage = http://lechnology.com/software/keeagent;
platforms = with stdenv.lib.platforms; linux;
license = stdenv.lib.licenses.gpl2;
maintainers = [ ];
};
pluginFilename = "KeeAgent.plgx";
installPhase = ''
mkdir -p $out/lib/dotnet/keepass/
cp $pluginFilename $out/lib/dotnet/keepass/$pluginFilename
'';
};
in
# Mono is required to compile plugin at runtime, after loading.
buildEnv { name = drv.name; paths = [ mono drv ]; }

View File

@ -1,5 +1,5 @@
{ stdenv, fetchFromGitHub, wxGTK, libuuid, xercesc, zip , libXt, libXtst { stdenv, fetchFromGitHub, wxGTK, libuuid, xercesc, zip , libXt, libXtst
, libXi, xextproto, gettext, perl, pkgconfig, libyubikey, ykpers , libXi, xextproto, gettext, perl, pkgconfig, libyubikey, yubikey-personalization
}: }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
@ -14,12 +14,12 @@ stdenv.mkDerivation rec {
}; };
makefile = "Makefile.linux"; makefile = "Makefile.linux";
makeFlags = "YBPERS_LIBPATH=${ykpers}/lib"; makeFlags = "YBPERS_LIBPATH=${yubikey-personalization}/lib";
buildFlags = "unicoderelease"; buildFlags = "unicoderelease";
buildInputs = [ wxGTK libuuid gettext perl zip buildInputs = [ wxGTK libuuid gettext perl zip
xercesc libXt libXtst libXi xextproto xercesc libXt libXtst libXi xextproto
pkgconfig libyubikey ykpers ]; pkgconfig libyubikey yubikey-personalization ];
postPatch = '' postPatch = ''
# Fix perl scripts used during the build. # Fix perl scripts used during the build.

View File

@ -0,0 +1,32 @@
{ stdenv, fetchurl, qmake4Hook, unzip, qt4 }:
stdenv.mkDerivation rec {
name = "${project}-${version}";
project = "qmetro";
version = "0.7.1";
src = fetchurl {
url = "mirror://sourceforge/${project}/${name}.zip";
sha256 = "1zdj87lzcr43gr2h05g17z31pd22n5kxdwbvx7rx656rmhv0sjq5";
};
nativeBuildInputs = [ qmake4Hook unzip ];
buildInputs = [ qt4 ];
postPatch = ''
sed -e 's#Exec=/usr/bin/qmetro#Exec=qmetro#' -i rc/qmetro.desktop
echo 'LIBS += -lz' >> qmetro.pro
'';
enableParallelBuilding = true;
meta = with stdenv.lib; {
homepage = https://sourceforge.net/projects/qmetro/;
description = "Worldwide transit maps viewer";
license = licenses.gpl3;
maintainter = with maintainers; [ orivej ];
platforms = platforms.unix;
};
}

View File

@ -16,7 +16,7 @@ stdenv.mkDerivation rec {
buildInputs = [ qtbase qtwebengine ]; buildInputs = [ qtbase qtwebengine ];
nativeBuildInputs = [ qmakeHook ]; nativeBuildInputs = [ qmakeHook ];
enableParallelBuilding = true; enableParallelBuilding = true;
postInstall = '' postInstall = ''
mkdir -p $out/bin mkdir -p $out/bin
cp binary/QSyncthingTray $out/bin cp binary/QSyncthingTray $out/bin
@ -33,5 +33,6 @@ stdenv.mkDerivation rec {
license = licenses.lgpl3; license = licenses.lgpl3;
maintainers = with maintainers; [ zraexy ]; maintainers = with maintainers; [ zraexy ];
platforms = platforms.all; platforms = platforms.all;
broken = builtins.compareVersions qtbase.version "5.7.0" >= 0;
}; };
} }

View File

@ -1,23 +1,25 @@
{ stdenv, fetchFromGitHub, yacc, ncurses, libxml2, pkgconfig }: { stdenv, fetchFromGitHub, yacc, ncurses, libxml2, libzip, libxls, pkgconfig }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
version = "0.4.0"; version = "0.5.0";
name = "sc-im-${version}"; name = "sc-im-${version}";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "andmarti1424"; owner = "andmarti1424";
repo = "sc-im"; repo = "sc-im";
rev = "v${version}"; rev = "v${version}";
sha256 = "1v1cfmfqs5997bqlirp6p7smc3qrinq8dvsi33sk09r33zkzyar0"; sha256 = "1vdn9p9srvdksxznrn65pfigwrd7brlq8bac3pjfqsvf8gjnzq61";
}; };
buildInputs = [ yacc ncurses libxml2 pkgconfig ]; buildInputs = [ yacc ncurses libxml2 libzip libxls pkgconfig ];
buildPhase = '' buildPhase = ''
cd src cd src
sed -i "s,prefix=/usr,prefix=$out," Makefile sed -e "\|^prefix = /usr/local| s|/usr/local|$out|" \
sed -i "s,-I/usr/include/libxml2,-I$libxml2," Makefile -e "\|^#LDLIBS += -lxlsreader| s|^#|| " \
-e "\|^#CFLAGS += -DXLS| s|^#|| " \
-i Makefile
make make
export DESTDIR=$out export DESTDIR=$out

View File

@ -1,76 +0,0 @@
{stdenv, fetchurl,
zlib, libpng, libjpeg, perl, expat, qt3,
libX11, libXext, libSM, libICE,
}:
stdenv.mkDerivation rec {
name = "taskjuggler-2.4.3";
src = fetchurl {
url = "http://www.taskjuggler.org/download/${name}.tar.bz2";
sha256 = "14gkxa2vwfih5z7fffbavps7m44z5bq950qndigw2icam5ks83jl";
};
buildInputs =
[zlib libpng libX11 libXext libSM libICE perl expat libjpeg]
;
patches = [ ./timezone-glibc.patch ];
preConfigure = ''
for i in $(grep -R "/bin/bash" . | sed 's/:.*//'); do
substituteInPlace $i --replace /bin/bash $(type -Pp bash)
done
for i in $(grep -R "/usr/bin/perl" . | sed 's/:.*//'); do
substituteInPlace $i --replace /usr/bin/perl ${perl}/bin/perl
done
# Fix install
for i in docs/en/Makefile.in Examples/BigProject/Common/Makefile.in Examples/BigProject/Makefile.in Examples/BigProject/Project1/Makefile.in Examples/BigProject/Project2/Makefile.in Examples/FirstProject/Makefile.in Examples/ShiftSchedule/Makefile.in; do
# Do not use variable substitution because there is some text after the last '@'
substituteInPlace $i --replace 'docprefix = @PACKAGES_DIR@' 'docprefix = $(docdir)/'
done
# Comment because the ical export need the KDE support.
for i in Examples/FirstProject/AccountingSoftware.tjp; do
substituteInPlace $i --replace "icalreport" "# icalreport"
done
for i in TestSuite/testdir TestSuite/createrefs \
TestSuite/Scheduler/Correct/Expression.sh; do
substituteInPlace $i --replace '/bin/rm' 'rm'
done
# Some tests require writing at $HOME
HOME=$TMPDIR
'';
configureFlags = "
--without-arts --disable-docs
--x-includes=${libX11.dev}/include
--x-libraries=${libX11.out}/lib
--with-qt-dir=${qt3}
";
preInstall = ''
mkdir -p $out/share/emacs/site-lisp/
cp Contrib/emacs/taskjug.el $out/share/emacs/site-lisp/
'';
installFlags =
# kde_locale is not defined when installing without kde.
"kde_locale=\${out}/share/locale";
meta = {
homepage = "http://www.taskjuggler.org";
license = stdenv.lib.licenses.gpl2;
description = "Project management tool";
longDescription = ''
TaskJuggler is a modern and powerful, Open Source project management
tool. Its new approach to project planing and tracking is more
flexible and superior to the commonly used Gantt chart editing
tools. It has already been successfully used in many projects and
scales easily to projects with hundreds of resources and thousands of
tasks.
'';
};
}

View File

@ -1,48 +0,0 @@
From the discussion in http://groups.google.com/group/taskjuggler-users/browse_thread/thread/f65a3efd4dcae2fc/a44c711a9d28ebee?show_docid=a44c711a9d28ebee
From: Chris Schlaeger <cs@kde.org>
Date: Sat, 27 Feb 2010 06:33:35 +0000 (+0100)
Subject: Try to fix time zone check for glibc 2.11.
X-Git-Url: http://www.taskjuggler.org/cgi-bin/gitweb.cgi?p=taskjuggler.git;a=commitdiff_plain;h=2382ed54f90c3c899badb3f56aaa2b3b5dba361e;hp=c666c5068312fec7db75e17d1c567d94127d1dda
Try to fix time zone check for glibc 2.11.
Reported-by: Lee <pFQh8RQn4fqB@dyweni.com>
---
diff --git a/taskjuggler/Utility.cpp b/taskjuggler/Utility.cpp
index 5e2bf21..9b7fce2 100644
--- a/taskjuggler/Utility.cpp
+++ b/taskjuggler/Utility.cpp
@@ -206,16 +206,28 @@ setTimezone(const char* tZone)
/* To validate the tZone value we call tzset(). It will convert the zone
* into a three-letter acronym in case the tZone value is good. If not, it
- * will just copy the wrong value to tzname[0] (glibc < 2.5) or fall back
- * to UTC. */
+ * will
+ * - copy the wrong value to tzname[0] (glibc < 2.5)
+ * - or fall back to UTC (glibc >= 2.5 && < 2.11)
+ * - copy the part before the '/' to tzname[0] (glibc >= 2.11).
+ */
tzset();
+ char* region = new(char[strlen(tZone) + 1]);
+ region[0] = 0;
+ if (strchr(tZone, '/'))
+ {
+ strcpy(region, tZone);
+ *strchr(region, '/') = 0;
+ }
if (timezone2tz(tZone) == 0 &&
- (strcmp(tzname[0], tZone) == 0 ||
+ (strcmp(tzname[0], tZone) == 0 || strcmp(tzname[0], region) == 0 ||
(strcmp(tZone, "UTC") != 0 && strcmp(tzname[0], "UTC") == 0)))
{
UtilityError = QString(i18n("Illegal timezone '%1'")).arg(tZone);
+ delete region;
return false;
}
+ delete region;
if (!LtHashTab)
return true;

View File

@ -13,11 +13,7 @@ stdenv.mkDerivation rec {
nativeBuildInputs = [ cmake ]; nativeBuildInputs = [ cmake ];
installPhase = '' patches = [ ./install-all-themes.patch ];
mkdir -p $out/{bin,share/man/man1}
cp -rv doc/man/*.1 $out/share/man/man1
cp src/timew $out/bin/
'';
meta = with stdenv.lib; { meta = with stdenv.lib; {
description = "A command-line time tracker"; description = "A command-line time tracker";

View File

@ -0,0 +1,27 @@
From e4a14c61bff3a55de42718dc11b282c4d5342995 Mon Sep 17 00:00:00 2001
From: Will Dietz <w@wdtz.org>
Date: Tue, 14 Mar 2017 07:51:02 -0500
Subject: [PATCH] doc/themes: install all themes, not just 'dark.theme'.
---
doc/themes/CMakeLists.txt | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/doc/themes/CMakeLists.txt b/doc/themes/CMakeLists.txt
index a954576..3a3b453 100644
--- a/doc/themes/CMakeLists.txt
+++ b/doc/themes/CMakeLists.txt
@@ -2,5 +2,8 @@ cmake_minimum_required (VERSION 2.8)
message ("-- Configuring theme documentation")
-install (FILES README DESTINATION ${TIMEW_DOCDIR}/doc/themes)
-install (FILES dark.theme DESTINATION ${TIMEW_DOCDIR}/doc/themes)
+install (FILES README DESTINATION ${TIMEW_DOCDIR}/doc/themes)
+install (FILES dark.theme DESTINATION ${TIMEW_DOCDIR}/doc/themes)
+install (FILES dark_blue.theme DESTINATION ${TIMEW_DOCDIR}/doc/themes)
+install (FILES dark_green.theme DESTINATION ${TIMEW_DOCDIR}/doc/themes)
+install (FILES dark_red.theme DESTINATION ${TIMEW_DOCDIR}/doc/themes)
--
2.12.0

View File

@ -37,5 +37,6 @@ stdenv.mkDerivation rec {
platforms = platforms.all; platforms = platforms.all;
license = licenses.bsd3; license = licenses.bsd3;
maintainers = with maintainers; [ offline peterhoeg ]; maintainers = with maintainers; [ offline peterhoeg ];
broken = builtins.compareVersions qtbase.version "5.7.0" >= 0;
}; };
} }

View File

@ -1,24 +0,0 @@
{stdenv, fetchurl, pkgconfig, libusb1, libyubikey}:
stdenv.mkDerivation rec
{
version = "1.17.2";
name = "ykpers-${version}";
src = fetchurl
{
url = "http://opensource.yubico.com/yubikey-personalization/releases/${name}.tar.gz";
sha256 = "1z6ybpdhl74phwzg2lhxhipqf7xnfhg52dykkzb3fbx21m0i4jkh";
};
buildInputs = [pkgconfig libusb1 libyubikey];
meta =
{
homepage = "http://opensource.yubico.com/yubikey-personalization/";
description = "YubiKey Personalization cross-platform library and tool";
license = "bsd";
maintainers = [ stdenv.lib.maintainers.calrama ];
platforms = stdenv.lib.platforms.linux;
};
}

View File

@ -94,12 +94,12 @@ let
flash = stdenv.mkDerivation rec { flash = stdenv.mkDerivation rec {
name = "flashplayer-ppapi-${version}"; name = "flashplayer-ppapi-${version}";
version = "24.0.0.221"; version = "25.0.0.127";
src = fetchzip { src = fetchzip {
url = "https://fpdownload.adobe.com/pub/flashplayer/pdc/" url = "https://fpdownload.adobe.com/pub/flashplayer/pdc/"
+ "${version}/flash_player_ppapi_linux.x86_64.tar.gz"; + "${version}/flash_player_ppapi_linux.x86_64.tar.gz";
sha256 = "0vqvb098wms9v2r1xm9yq4cpn1h9dr1y7izfy2rwg3y7gr8ycv80"; sha256 = "1gf0ncclkk3h4vj9kkhbqj1nnnm54gwm5mdcs4p4pl8i339scs14";
stripRoot = false; stripRoot = false;
}; };

View File

@ -1,18 +1,18 @@
# This file is autogenerated from update.sh in the same directory. # This file is autogenerated from update.sh in the same directory.
{ {
beta = { beta = {
sha256 = "0mwwscybips1kazl0rva3jdswfzfb7yp90ggqgk27z2ndp0qj8b3"; sha256 = "0bbr5wr5icrw5101dlhyn20pg28mah7w4vk365i4gf6a1zvyrd8n";
sha256bin64 = "17n0jcysxi99v8hwlg7f69nrs2y5z87644145a8r53l809hkvkrk"; sha256bin64 = "0dx9ivjc7avm0zgw0jcx5mmlzapwc2lp1sdjpwgd4y0iai1zr3yw";
version = "57.0.2987.21"; version = "57.0.2987.98";
}; };
dev = { dev = {
sha256 = "18gsj415cdlllp95q8pv1s3hhjg8cmjb6kwrvbr5mjdvsvj0ianf"; sha256 = "1i6qr1ypjww3q59lqg60xpns8xqxxrkd0yrpyx96alb1bp22x85p";
sha256bin64 = "0z58rwz00bq61d24h8jynhzxanbh0m9wi04jbczci3681b4zyiyh"; sha256bin64 = "1ahp99p4hi8r2bvkdpnkakwkpmmnndjn299axc7cafz85zs6z9vl";
version = "58.0.3000.4"; version = "58.0.3029.14";
}; };
stable = { stable = {
sha256 = "1q2kg85pd6lv036w7lsss5mhiiva9rx4f0410sbn9bnazhghib4s"; sha256 = "0bbr5wr5icrw5101dlhyn20pg28mah7w4vk365i4gf6a1zvyrd8n";
sha256bin64 = "1s64smkpjmnlw7ym14v3g3lcpagsgavmnlq6wkgci80kyvwasd3w"; sha256bin64 = "1qs8pmfasf3j84pjf4fnf6yb0pfa2hdgicskvfmr1sqy7c7yg348";
version = "56.0.2924.87"; version = "57.0.2987.98";
}; };
} }

View File

@ -30,6 +30,10 @@ common = { pname, version, sha512, updateScript }: stdenv.mkDerivation rec {
inherit sha512; inherit sha512;
}; };
# this patch should no longer be needed in 53
# from https://bugzilla.mozilla.org/show_bug.cgi?id=1013882
patches = lib.optional debugBuild ./fix-debug.patch;
buildInputs = buildInputs =
[ pkgconfig gtk2 perl zip libIDL libjpeg zlib bzip2 [ pkgconfig gtk2 perl zip libIDL libjpeg zlib bzip2
python dbus dbus_glib pango freetype fontconfig xorg.libXi python dbus dbus_glib pango freetype fontconfig xorg.libXi

View File

@ -0,0 +1,77 @@
# HG changeset patch
# User Michelangelo De Simone <mdesimone@mozilla.com>
# Date 1479198095 28800
# Node ID fde6e9ccfc72fbc0fcd93af7a40436b216e7ea1a
# Parent 687eac6845a77d2cac5505da9c8912885c2a9e57
Bug 1013882 - TestInterfaceJS should be packaged only if it's available. r=glandium, a=jcristau
MozReview-Commit-ID: IEHesdoU4Sz
diff --git a/b2g/installer/package-manifest.in b/b2g/installer/package-manifest.in
--- a/b2g/installer/package-manifest.in
+++ b/b2g/installer/package-manifest.in
@@ -570,17 +570,17 @@
@RESPATH@/components/InputMethod.manifest
#ifdef MOZ_B2G
@RESPATH@/components/inputmethod.xpt
#endif
@RESPATH@/components/SystemUpdate.manifest
@RESPATH@/components/SystemUpdateManager.js
-#ifdef MOZ_DEBUG
+#if defined(ENABLE_TESTS) && defined(MOZ_DEBUG)
@RESPATH@/components/TestInterfaceJS.js
@RESPATH@/components/TestInterfaceJS.manifest
@RESPATH@/components/TestInterfaceJSMaplike.js
#endif
; Modules
@RESPATH@/modules/*
diff --git a/browser/installer/package-manifest.in b/browser/installer/package-manifest.in
--- a/browser/installer/package-manifest.in
+++ b/browser/installer/package-manifest.in
@@ -554,17 +554,17 @@
@RESPATH@/components/PresentationControlService.js
@RESPATH@/components/PresentationDataChannelSessionTransport.js
@RESPATH@/components/PresentationDataChannelSessionTransport.manifest
; InputMethod API
@RESPATH@/components/MozKeyboard.js
@RESPATH@/components/InputMethod.manifest
-#ifdef MOZ_DEBUG
+#if defined(ENABLE_TESTS) && defined(MOZ_DEBUG)
@RESPATH@/components/TestInterfaceJS.js
@RESPATH@/components/TestInterfaceJS.manifest
@RESPATH@/components/TestInterfaceJSMaplike.js
#endif
; [Extensions]
@RESPATH@/components/extensions-toolkit.manifest
@RESPATH@/browser/components/extensions-browser.manifest
diff --git a/mobile/android/installer/package-manifest.in b/mobile/android/installer/package-manifest.in
--- a/mobile/android/installer/package-manifest.in
+++ b/mobile/android/installer/package-manifest.in
@@ -381,17 +381,17 @@
@BINPATH@/components/CaptivePortalDetectComponents.manifest
@BINPATH@/components/captivedetect.js
#ifdef MOZ_WEBSPEECH
@BINPATH@/components/dom_webspeechsynth.xpt
#endif
-#ifdef MOZ_DEBUG
+#if defined(ENABLE_TESTS) && defined(MOZ_DEBUG)
@BINPATH@/components/TestInterfaceJS.js
@BINPATH@/components/TestInterfaceJS.manifest
@BINPATH@/components/TestInterfaceJSMaplike.js
#endif
@BINPATH@/components/nsAsyncShutdown.manifest
@BINPATH@/components/nsAsyncShutdown.js

View File

@ -16,10 +16,11 @@ stdenv.mkDerivation rec {
sha256 = "1f24y83wa1vzzjq5kp857gjqdpnmf8pb29yw7fam0m8wxxw0c3gp"; sha256 = "1f24y83wa1vzzjq5kp857gjqdpnmf8pb29yw7fam0m8wxxw0c3gp";
}; };
buildInputs = buildInputs = with stdenv.lib;
[ libev librsvg libpng libjpeg libtiff gpm openssl xz bzip2 zlib ] [ libev librsvg libpng libjpeg libtiff openssl xz bzip2 zlib ]
++ stdenv.lib.optionals enableX11 [ libX11 libXau libXt ] ++ optionals stdenv.isLinux [ gpm ]
++ stdenv.lib.optional enableDirectFB [ directfb ]; ++ optionals enableX11 [ libX11 libXau libXt ]
++ optional enableDirectFB [ directfb ];
nativeBuildInputs = [ pkgconfig bzip2 ]; nativeBuildInputs = [ pkgconfig bzip2 ];
@ -39,6 +40,6 @@ stdenv.mkDerivation rec {
homepage = http://links.twibright.com/; homepage = http://links.twibright.com/;
description = "A small browser with some graphics support"; description = "A small browser with some graphics support";
maintainers = with maintainers; [ raskin urkud viric ]; maintainers = with maintainers; [ raskin urkud viric ];
platforms = platforms.linux; platforms = platforms.unix;
}; };
} }

View File

@ -73,25 +73,25 @@ let
in in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "flashplayer-${version}"; name = "flashplayer-${version}";
version = "24.0.0.221"; version = "25.0.0.127";
src = fetchurl { src = fetchurl {
url = url =
if debug then if debug then
"https://fpdownload.macromedia.com/pub/flashplayer/updaters/24/flash_player_npapi_linux_debug.${arch}.tar.gz" "https://fpdownload.macromedia.com/pub/flashplayer/updaters/25/flash_player_npapi_linux_debug.${arch}.tar.gz"
else else
"https://fpdownload.adobe.com/get/flashplayer/pdc/${version}/flash_player_npapi_linux.${arch}.tar.gz"; "https://fpdownload.adobe.com/get/flashplayer/pdc/${version}/flash_player_npapi_linux.${arch}.tar.gz";
sha256 = sha256 =
if debug then if debug then
if arch == "x86_64" then if arch == "x86_64" then
"10f8m5zc8p4xbhihbl785lws1kpv6smnbhx4ydzf8ai3mlv3y241" "0d37rwbqszl593pggph8pm8jwn05fppys7q8vk1jrk9jaz262iva"
else else
"1rz9rkbvln8wdkfmsnnq936xs6969qma141jc4qx408419q7v3hg" "0lhngdx1q51kfpw3a961h9p9n1fnspk9pmg21i069hvd0h143arx"
else else
if arch == "x86_64" then if arch == "x86_64" then
"1cb4mvslphj3bcchgr7lcswz8kk8si0s60rl5266mi53byplhw08" "1yasj9xzmb6ly9209b1hmrqrzxrr1bafsfjszsr3yf994hql6nzn"
else else
"1vcyp9041171xkcnz05dlk3n7bnbcb9qbh4sy5wfgjkqsyd6i5bl"; "02vs12cm6fpl2fif1lij9y15m89wk6aizc8sbjiw6w59wixn3p9d";
}; };
nativeBuildInputs = [ unzip ]; nativeBuildInputs = [ unzip ];

View File

@ -57,19 +57,19 @@ let
in in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "flashplayer-standalone-${version}"; name = "flashplayer-standalone-${version}";
version = "24.0.0.221"; version = "25.0.0.127";
src = fetchurl { src = fetchurl {
url = url =
if debug then if debug then
"https://fpdownload.macromedia.com/pub/flashplayer/updaters/24/flash_player_sa_linux_debug.x86_64.tar.gz" "https://fpdownload.macromedia.com/pub/flashplayer/updaters/25/flash_player_sa_linux_debug.x86_64.tar.gz"
else else
"https://fpdownload.macromedia.com/pub/flashplayer/updaters/24/flash_player_sa_linux.x86_64.tar.gz"; "https://fpdownload.macromedia.com/pub/flashplayer/updaters/25/flash_player_sa_linux.x86_64.tar.gz";
sha256 = sha256 =
if debug then if debug then
"0cy81cml72ayx2wa0fd9vgp2wzny866jasahndg01v0jfxcxw5rz" "07a8x1n997lmkxj74bkygh60shwzxzcvfxpz07pxj1nmvakmin51"
else else
"0xgiycd47mzmwvmhbi0ig3rd7prksfdpcd4h62as1m9gs1ax4d7l"; "0rzxfcvjjwbd1m6pyby8km4g5834zy5d5sih7xq3czds9x0a2jp2";
}; };
nativeBuildInputs = [ unzip ]; nativeBuildInputs = [ unzip ];

View File

@ -24,12 +24,12 @@ let
in buildPythonApplication rec { in buildPythonApplication rec {
name = "qutebrowser-${version}"; name = "qutebrowser-${version}";
version = "0.9.1"; version = "0.10.1";
namePrefix = ""; namePrefix = "";
src = fetchurl { src = fetchurl {
url = "https://github.com/The-Compiler/qutebrowser/releases/download/v${version}/${name}.tar.gz"; url = "https://github.com/The-Compiler/qutebrowser/releases/download/v${version}/${name}.tar.gz";
sha256 = "0pf91nc0xcykahc3x7ww525c9czm8zpg80nxl8n2mrzc4ilgvass"; sha256 = "57f4915f0f2b1509f3aa1cb9c47117fdaad35b4c895e9223c4eb0a6e8af51917";
}; };
# Needs tox # Needs tox

View File

@ -27,5 +27,6 @@ buildGoPackage rec {
homepage = https://github.com/kubernetes/kops; homepage = https://github.com/kubernetes/kops;
license = licenses.asl20; license = licenses.asl20;
maintainers = with maintainers; [offline]; maintainers = with maintainers; [offline];
platforms = platforms.unix;
}; };
} }

View File

@ -1,4 +1,4 @@
{ stdenv, lib, fetchFromGitHub, which, go, go-bindata, makeWrapper, rsync { stdenv, lib, fetchFromGitHub, removeReferencesTo, which, go, go-bindata, makeWrapper, rsync
, iptables, coreutils , iptables, coreutils
, components ? [ , components ? [
"cmd/kubeadm" "cmd/kubeadm"
@ -18,16 +18,16 @@ with lib;
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "kubernetes-${version}"; name = "kubernetes-${version}";
version = "1.5.2"; version = "1.5.4";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "kubernetes"; owner = "kubernetes";
repo = "kubernetes"; repo = "kubernetes";
rev = "v${version}"; rev = "v${version}";
sha256 = "1ps9bn5gqknyjv0b9jvp7xg3cyd4anq11j785p22347al0b8w81v"; sha256 = "1xhz6m6ly6ffj60id9ms1liijlrik8n2pxyzb5m77ym3zf7rxlpl";
}; };
buildInputs = [ makeWrapper which go rsync go-bindata ]; buildInputs = [ removeReferencesTo makeWrapper which go rsync go-bindata ];
outputs = ["out" "man" "pause"]; outputs = ["out" "man" "pause"];
@ -59,12 +59,7 @@ stdenv.mkDerivation rec {
''; '';
preFixup = '' preFixup = ''
# Remove references to go compiler find $out/bin $pause/bin -type f -exec remove-references-to -t ${go} '{}' +
while read file; do
cat $file | sed "s,${go},$(echo "${go}" | sed "s,$NIX_STORE/[^-]*,$NIX_STORE/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee,"),g" > $file.tmp
mv $file.tmp $file
chmod +x $file
done < <(find $out/bin $pause/bin -type f 2>/dev/null)
''; '';
meta = { meta = {

View File

@ -1,47 +1,77 @@
{ stdenv, lib, fetchurl, makeWrapper, docker-machine-kvm, kubernetes, libvirt, qemu }: { stdenv, buildGoPackage, fetchFromGitHub, fetchurl, go-bindata, kubernetes, libvirt, qemu, docker-machine-kvm, makeWrapper }:
let let
arch = if stdenv.isLinux binPath = [ kubernetes ]
then "linux-amd64" ++ stdenv.lib.optionals stdenv.isLinux [ libvirt qemu docker-machine-kvm ]
else "darwin-amd64"; ++ stdenv.lib.optionals stdenv.isDarwin [];
checksum = if stdenv.isLinux
then "0cdcabsx5l4jbpyj3zzyz5bnzks6wl64bmzdsnk41x92ar5y5yal"
else "12f3b7s5lwpvzx4wj6i6h62n4zjshqf206fxxwpwx9kpsdaw6xdi";
# TODO: compile from source # Normally, minikube bundles localkube in its own binary via go-bindata. Unfortunately, it needs to make that localkube
# a static linux binary, and our Linux nixpkgs go compiler doesn't seem to work when asking for a cgo binary that's static
in stdenv.mkDerivation rec { # (presumably because we don't have some static system libraries it wants), and cross-compiling cgo on Darwin is a nightmare.
pname = "minikube"; #
# Note that minikube can download (and cache) versions of localkube it needs on demand. Unfortunately, minikube's knowledge
# of where it can download versions of localkube seems to rely on a json file that doesn't get updated as often as we'd like,
# so for example it doesn't know about v1.5.3 even though there's a perfectly good version of localkube hosted there. So
# instead, we download localkube ourselves and shove it into the minikube binary. The versions URL that minikube uses is
# currently https://storage.googleapis.com/minikube/k8s_releases.json. Note that we can't use 1.5.3 with minikube 0.17.1
# expects to be able to pass it a command-line argument that it doesn't understand. v1.5.4 and higher should be fine. There
# doesn't seem to ae any official release of localkube for 1.5.4 yet so I'm temporarily grabbing a version built from the
# minikube CI server.
localkube-binary = fetchurl {
url = "https://storage.googleapis.com/minikube-builds/1216/localkube";
# url = "https://storage.googleapis.com/minikube/k8sReleases/v${kubernetes.version}/localkube-linux-amd64";
sha256 = "1vqrsak7n045ci6af3rpgs2qwjnrqk8k7c3ax6wzli4m8vhsiv57";
};
in buildGoPackage rec {
pname = "minikube";
name = "${pname}-${version}";
version = "0.17.1"; version = "0.17.1";
name = "${pname}-${version}";
src = fetchurl { goPackagePath = "k8s.io/minikube";
url = "https://storage.googleapis.com/minikube/releases/v${version}/minikube-${arch}";
sha256 = "${checksum}"; src = fetchFromGitHub {
owner = "kubernetes";
repo = "minikube";
rev = "v${version}";
sha256 = "1m61yipn0p3cfavjddhrg1rcmr0hv6k3zxvqqd9fisl79g0sdfsr";
}; };
phases = [ "installPhase" "fixupPhase" ]; # kubernetes is here only to shut up a loud warning when generating the completions below. minikube checks very eagerly
# that kubectl is on the $PATH, even if it doesn't use it at all to generate the completions
buildInputs = [ go-bindata makeWrapper kubernetes ];
subPackages = [ "cmd/minikube" ];
buildInputs = [ makeWrapper ]; preBuild = ''
pushd go/src/${goPackagePath} >/dev/null
binPath = lib.makeBinPath [ docker-machine-kvm kubernetes libvirt qemu ]; mkdir -p out
cp ${localkube-binary} out/localkube
installPhase = '' go-bindata -nomemcopy -o pkg/minikube/assets/assets.go -pkg assets ./out/localkube deploy/addons/...
install -Dm755 ${src} $out/bin/${pname}
ISO_VERSION=$(grep "^ISO_VERSION" Makefile | sed "s/^.*\s//")
ISO_BUCKET=$(grep "^ISO_BUCKET" Makefile | sed "s/^.*\s//")
export buildFlagsArray="-ldflags=\
-X k8s.io/minikube/pkg/version.version=v${version} \
-X k8s.io/minikube/pkg/version.isoVersion=$ISO_VERSION \
-X k8s.io/minikube/pkg/version.isoPath=$ISO_BUCKET"
popd >/dev/null
''; '';
fixupPhase = '' postInstall = ''
patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" "$out/bin/minikube" mkdir -p $bin/share/bash-completion/completions/
MINIKUBE_WANTUPDATENOTIFICATION=false HOME=$PWD $bin/bin/minikube completion bash > $bin/share/bash-completion/completions/minikube
wrapProgram $out/bin/${pname} \
--prefix PATH : ${binPath}
''; '';
postFixup = "wrapProgram $bin/bin/${pname} --prefix PATH : ${stdenv.lib.makeBinPath binPath}";
meta = with stdenv.lib; { meta = with stdenv.lib; {
homepage = https://github.com/kubernetes/minikube; homepage = https://github.com/kubernetes/minikube;
description = "A tool that makes it easy to run Kubernetes locally"; description = "A tool that makes it easy to run Kubernetes locally";
license = licenses.asl20; license = licenses.asl20;
maintainers = with maintainers; [ ebzzry ]; maintainers = with maintainers; [ ebzzry copumpkin ];
platforms = with platforms; linux ++ darwin; platforms = with platforms; unix;
}; };
} }

View File

@ -2,7 +2,7 @@
buildGoPackage rec { buildGoPackage rec {
name = "nomad-${version}"; name = "nomad-${version}";
version = "0.5.4"; version = "0.5.5";
rev = "v${version}"; rev = "v${version}";
goPackagePath = "github.com/hashicorp/nomad"; goPackagePath = "github.com/hashicorp/nomad";
@ -12,7 +12,7 @@ buildGoPackage rec {
owner = "hashicorp"; owner = "hashicorp";
repo = "nomad"; repo = "nomad";
inherit rev; inherit rev;
sha256 = "0x7bi6wq7kpqv3wfhk5mqikj4hsb0f6lx867xz5l9cq3i39b5gj3"; sha256 = "17xq88ymm77b6y27l4v49i9hm6yjyrk61rdb2v7nvn8fa4bn6b65";
}; };
meta = with stdenv.lib; { meta = with stdenv.lib; {

View File

@ -0,0 +1,34 @@
{ stdenv, lib, buildGoPackage, fetchFromGitHub }:
buildGoPackage rec {
name = "terraform-${version}";
version = "0.8.5";
goPackagePath = "github.com/hashicorp/terraform";
src = fetchFromGitHub {
owner = "hashicorp";
repo = "terraform";
rev = "v${version}";
sha256 = "1cxwv3652fpsbm2zk1akw356cd7w7vhny1623ighgbz9ha8gvg09";
};
postInstall = ''
# remove all plugins, they are part of the main binary now
for i in $bin/bin/*; do
if [[ $(basename $i) != terraform ]]; then
rm "$i"
fi
done
'';
meta = with stdenv.lib; {
description = "Tool for building, changing, and versioning infrastructure";
homepage = "https://www.terraform.io/";
license = licenses.mpl20;
maintainers = with maintainers; [
jgeerds
zimbatm
];
};
}

View File

@ -0,0 +1,35 @@
{ stdenv, lib, buildGoPackage, fetchFromGitHub, terraform, makeWrapper }:
buildGoPackage rec {
name = "terragrunt-${version}";
version = "0.9.8";
goPackagePath = "github.com/gruntwork-io/terragrunt";
src = fetchFromGitHub {
rev = "v${version}";
owner = "gruntwork-io";
repo = "terragrunt";
sha256 = "0aakr17yzh5jzvlmg3pzpnsfwl31njg27bpck541492shqcqmkiz";
};
goDeps = ./deps.nix;
buildInputs = [ makeWrapper ];
preBuild = ''
buildFlagsArray+=("-ldflags" "-X main.VERSION=v${version}")
'';
postInstall = ''
wrapProgram $bin/bin/terragrunt \
--set TERRAGRUNT_TFPATH ${lib.getBin terraform}/bin/terraform
'';
meta = with stdenv.lib; {
description = "A thin wrapper for Terraform that supports locking for Terraform state and enforces best practices.";
homepage = https://github.com/gruntwork-io/terragrunt/;
license = licenses.mit;
maintainers = with maintainers; [ peterhoeg ];
};
}

View File

@ -17,6 +17,10 @@ buildGoPackage rec {
buildInputs = [ makeWrapper ]; buildInputs = [ makeWrapper ];
preBuild = ''
buildFlagsArray+=("-ldflags" "-X main.VERSION=v${version}")
'';
postInstall = '' postInstall = ''
wrapProgram $bin/bin/terragrunt \ wrapProgram $bin/bin/terragrunt \
--set TERRAGRUNT_TFPATH ${lib.getBin terraform}/bin/terraform --set TERRAGRUNT_TFPATH ${lib.getBin terraform}/bin/terraform

View File

@ -1,11 +1,11 @@
{ stdenv, fetchurl, openssl, curl, coreutils, gawk, bash, which }: { stdenv, fetchurl, openssl, curl, coreutils, gawk, bash, which }:
stdenv.mkDerivation { stdenv.mkDerivation rec {
name = "esniper-2.32.0"; name = "esniper-2.33.0";
src = fetchurl { src = fetchurl {
url = "mirror://sourceforge/esniper/esniper-2-32-0.tgz"; url = "mirror://sourceforge/esniper/${stdenv.lib.replaceStrings ["."] ["-"] name}.tgz";
sha256 = "04lka4d0mnrwc369yzvq28n8qi1qbm8810ykx6d0a4kaghiybqsy"; sha256 = "1pck2x7mp7ip0b21v2sjvq86fz12gzw6kig4vvbrghz5xw5b3f69";
}; };
buildInputs = [ openssl curl ]; buildInputs = [ openssl curl ];

View File

@ -1,13 +1,13 @@
{ stdenv, fetchurl, dbus, gnutls, wxGTK30, libidn, tinyxml, gettext { stdenv, fetchurl, dbus, gnutls, wxGTK30, libidn, tinyxml, gettext
, pkgconfig, xdg_utils, gtk2, sqlite, pugixml, libfilezilla, nettle }: , pkgconfig, xdg_utils, gtk2, sqlite, pugixml, libfilezilla, nettle }:
let version = "3.24.0"; in let version = "3.25.0"; in
stdenv.mkDerivation { stdenv.mkDerivation {
name = "filezilla-${version}"; name = "filezilla-${version}";
src = fetchurl { src = fetchurl {
url = "mirror://sourceforge/project/filezilla/FileZilla_Client/${version}/FileZilla_${version}_src.tar.bz2"; url = "mirror://sourceforge/project/filezilla/FileZilla_Client/${version}/FileZilla_${version}_src.tar.bz2";
sha256 = "1bacrl8lj90hqbh129hpbgqj78k1i84j83rkzn507jnykj4x8p9x"; sha256 = "1b1lb1zvm887xy3q9i5ziqvwk4ww2pd81a1msbwjrxzy5lq5ykhh";
}; };
configureFlags = [ configureFlags = [

View File

@ -4,7 +4,7 @@
let let
version = "2.5.1"; version = "2.5.2";
rpath = stdenv.lib.makeLibraryPath [ rpath = stdenv.lib.makeLibraryPath [
alsaLib alsaLib
@ -45,7 +45,7 @@ let
if stdenv.system == "x86_64-linux" then if stdenv.system == "x86_64-linux" then
fetchurl { fetchurl {
url = "https://downloads.slack-edge.com/linux_releases/slack-desktop-${version}-amd64.deb"; url = "https://downloads.slack-edge.com/linux_releases/slack-desktop-${version}-amd64.deb";
sha256 = "1rrhgqmz0ajv2135bzykv3dq0mifzf5kiycgrisk2sfxn6nwyyvj"; sha256 = "0mg8js18lnnwyvqksrhpym7d04bin16bh7sdmxbm36iijb9ajxmi";
} }
else else
throw "Slack is not supported on ${stdenv.system}"; throw "Slack is not supported on ${stdenv.system}";

View File

@ -2,14 +2,14 @@
, cyrus_sasl, gdbm, gpgme, kerberos, libidn, notmuch, openssl, lmdb }: , cyrus_sasl, gdbm, gpgme, kerberos, libidn, notmuch, openssl, lmdb }:
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
version = "20170128"; version = "20170306";
name = "neomutt-${version}"; name = "neomutt-${version}";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "neomutt"; owner = "neomutt";
repo = "neomutt"; repo = "neomutt";
rev = "neomutt-${version}"; rev = "neomutt-${version}";
sha256 = "082ksn4fsj48nkz61ia0hcxz3396p6a4p9q8738w15qkycq23c20"; sha256 = "0nlazabwj4czi30m84ppga275hkr51glyndizqzg540q9wp1acz4";
}; };
nativeBuildInputs = [ which autoconf automake ]; nativeBuildInputs = [ which autoconf automake ];

View File

@ -10,11 +10,11 @@ assert guiSupport -> (dbus_libs != null);
with stdenv.lib; with stdenv.lib;
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "qbittorrent-${version}"; name = "qbittorrent-${version}";
version = "3.3.10"; version = "3.3.11";
src = fetchurl { src = fetchurl {
url = "mirror://sourceforge/qbittorrent/${name}.tar.xz"; url = "mirror://sourceforge/qbittorrent/${name}.tar.xz";
sha256 = "1lm8y5k9363gajbw0k9jb1cb7zg0lz5rw2ja0kd36h68rpm7qr9c"; sha256 = "0q57ahhlx7r5k1ji87gbp4rvjfvhirlmcx5nbwrfvqmxsigar4j8";
}; };
nativeBuildInputs = [ pkgconfig which ]; nativeBuildInputs = [ pkgconfig which ];

View File

@ -1,7 +1,7 @@
{ stdenv, lib, fetchurl, pkgconfig, pcre, perl, flex, bison, gettext, libpcap, libnl, c-ares { stdenv, lib, fetchurl, pkgconfig, pcre, perl, flex, bison, gettext, libpcap, libnl, c-ares
, gnutls, libgcrypt, libgpgerror, geoip, openssl, lua5, makeDesktopItem, python, libcap, glib , gnutls, libgcrypt, libgpgerror, geoip, openssl, lua5, makeDesktopItem, python, libcap, glib
, libssh, zlib, cmake, extra-cmake-modules , libssh, zlib, cmake, extra-cmake-modules
, withGtk ? false, gtk3 ? null, pango ? null, cairo ? null, gdk_pixbuf ? null , withGtk ? false, gtk3 ? null, librsvg ? null, gsettings_desktop_schemas ? null, wrapGAppsHook ? null
, withQt ? false, qt5 ? null , withQt ? false, qt5 ? null
, ApplicationServices, SystemConfiguration, gmp , ApplicationServices, SystemConfiguration, gmp
}: }:
@ -23,11 +23,15 @@ in stdenv.mkDerivation {
sha256 = "049r5962yrajhhz9r4dsnx403dab50d6091y2mw298ymxqszp9s2"; sha256 = "049r5962yrajhhz9r4dsnx403dab50d6091y2mw298ymxqszp9s2";
}; };
nativeBuildInputs = [
bison cmake extra-cmake-modules flex
] ++ optional withGtk wrapGAppsHook;
buildInputs = [ buildInputs = [
bison cmake extra-cmake-modules flex gettext pcre perl pkgconfig libpcap lua5 libssh openssl libgcrypt libgpgerror gnutls gettext pcre perl pkgconfig libpcap lua5 libssh openssl libgcrypt
geoip c-ares python glib zlib libgpgerror gnutls geoip c-ares python glib zlib
] ++ (optionals withQt (with qt5; [ qtbase qtmultimedia qtsvg qttools ])) ] ++ optionals withQt (with qt5; [ qtbase qtmultimedia qtsvg qttools ])
++ (optionals withGtk [ gtk3 pango cairo gdk_pixbuf ]) ++ optionals withGtk [ gtk3 librsvg gsettings_desktop_schemas ]
++ optionals stdenv.isLinux [ libcap libnl ] ++ optionals stdenv.isLinux [ libcap libnl ]
++ optionals stdenv.isDarwin [ SystemConfiguration ApplicationServices gmp ]; ++ optionals stdenv.isDarwin [ SystemConfiguration ApplicationServices gmp ];

View File

@ -2,7 +2,7 @@
let let
version = "1.3.1"; version = "1.3.3";
in in
stdenv.mkDerivation { stdenv.mkDerivation {
name = "money-manager-ex-${version}"; name = "money-manager-ex-${version}";
@ -10,7 +10,7 @@ in
src = fetchgit { src = fetchgit {
url = "https://github.com/moneymanagerex/moneymanagerex.git"; url = "https://github.com/moneymanagerex/moneymanagerex.git";
rev = "refs/tags/v${version}"; rev = "refs/tags/v${version}";
sha256 = "1cmwmvlzg7r85qq23lbbmq2y91vhf9f5pblpja5ph98bsd218pc0"; sha256 = "0r4n93z3scv0i0zqflsxwv7j4yl8jy3gr0m4l30y1q8qv0zj9n74";
}; };
buildInputs = [ sqlite wxGTK30 gettext ]; buildInputs = [ sqlite wxGTK30 gettext ];

View File

@ -1,4 +1,4 @@
{stdenv, fetchurl, readline, perl, libX11, libpng, libXt, zlib}: {stdenv, fetchurl, readline, perl, libharu, libX11, libpng, libXt, zlib}:
stdenv.mkDerivation { stdenv.mkDerivation {
name = "emboss-6.6.0"; name = "emboss-6.6.0";
@ -6,16 +6,14 @@ stdenv.mkDerivation {
url = "ftp://emboss.open-bio.org/pub/EMBOSS/EMBOSS-6.6.0.tar.gz"; url = "ftp://emboss.open-bio.org/pub/EMBOSS/EMBOSS-6.6.0.tar.gz";
sha256 = "7184a763d39ad96bb598bfd531628a34aa53e474db9e7cac4416c2a40ab10c6e"; sha256 = "7184a763d39ad96bb598bfd531628a34aa53e474db9e7cac4416c2a40ab10c6e";
}; };
# patch = fetchurl {
# url = ftp://emboss.open-bio.org/pub/EMBOSS/fixes/patches/patch-1-9.gz;
# sha256 = "1pfn5zdxrr71c3kwpdkzmmsqvdwkmynkvcr707vqh73h9cjhk3c1";
# };
buildInputs = [readline perl libpng libX11 libXt zlib]; buildInputs = [ readline perl libharu libpng libX11 libXt zlib ];
# preConfigure = '' configureFlags = [ "--with-hpdf=${libharu}" "--with-pngdriver=${zlib}" ];
# gzip -d $patch | patch -p1
# ''; postConfigure = ''
sed -i 's@$(bindir)/embossupdate@true@' Makefile
'';
meta = { meta = {
description = "The European Molecular Biology Open Software Suite"; description = "The European Molecular Biology Open Software Suite";

View File

@ -83,5 +83,6 @@ stdenv.mkDerivation {
license = licenses.bsd3; license = licenses.bsd3;
maintainers = with maintainers; [ mudri ]; maintainers = with maintainers; [ mudri ];
platforms = with platforms; linux; platforms = with platforms; linux;
broken = true;
}; };
} }

View File

@ -2,13 +2,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "geogebra-${version}"; name = "geogebra-${version}";
version = "5-0-331-0"; version = "5-0-338-0";
preferLocalBuild = true; preferLocalBuild = true;
src = fetchurl { src = fetchurl {
url = "http://download.geogebra.org/installers/5.0/GeoGebra-Linux-Portable-${version}.tar.bz2"; url = "http://download.geogebra.org/installers/5.0/GeoGebra-Linux-Portable-${version}.tar.bz2";
sha256 = "135g2xqafgs1gv98vqq2jpfwyi1aflyiynx1gmsgs23jxbr218v2"; sha256 = "1namwib3912zjizgl9swan0fwgmq9kvfq5k5y8lz818vh4lv88kx";
}; };
srcIcon = fetchurl { srcIcon = fetchurl {

View File

@ -1,5 +1,5 @@
{ stdenv, fetchurl, m4, perl, gfortran, texlive, ffmpeg, tk { stdenv, fetchurl, m4, perl, gfortran, texlive, ffmpeg, tk, gnused_422
, imagemagick, liblapack, python, openssl, libpng , imagemagick, liblapack, python, openssl, libpng
, which , which
}: }:
@ -9,10 +9,11 @@ stdenv.mkDerivation rec {
src = fetchurl { src = fetchurl {
url = "http://old.files.sagemath.org/src-old/${name}.tar.gz"; url = "http://old.files.sagemath.org/src-old/${name}.tar.gz";
sha256 = "102mrzzi215g1xn5zgcv501x9sghwg758jagx2jixvg1rj2jijj9"; sha256 = "102mrzzi215g1xn5zgcv501x9sghwg758jagx2jixvg1rj2jijj9";
}; };
buildInputs = [ m4 perl gfortran texlive.combined.scheme-basic ffmpeg tk imagemagick liblapack buildInputs = [ m4 perl gfortran texlive.combined.scheme-basic ffmpeg gnused_422 tk imagemagick liblapack
python openssl libpng which]; python openssl libpng which ];
patches = [ ./spkg-singular.patch ./spkg-python.patch ./spkg-git.patch ]; patches = [ ./spkg-singular.patch ./spkg-python.patch ./spkg-git.patch ];

View File

@ -66,6 +66,8 @@ rec {
git-imerge = callPackage ./git-imerge { }; git-imerge = callPackage ./git-imerge { };
git-octopus = callPackage ./git-octopus { };
git-radar = callPackage ./git-radar { }; git-radar = callPackage ./git-radar { };
git-remote-hg = callPackage ./git-remote-hg { }; git-remote-hg = callPackage ./git-remote-hg { };

View File

@ -0,0 +1,34 @@
{ stdenv, fetchFromGitHub, git, perl, makeWrapper }:
with stdenv.lib;
stdenv.mkDerivation rec {
name = "git-octopus-${version}";
version = "1.4";
installFlags = [ "prefix=$(out)" ];
buildInputs = [ makeWrapper ];
# perl provides shasum
postInstall = ''
for f in $out/bin/*; do
wrapProgram $f --prefix PATH : ${makeBinPath [ git perl ]}
done
'';
src = fetchFromGitHub {
owner = "lesfurets";
repo = "git-octopus";
rev = "v${version}";
sha256 = "14p61xk7jankp6gc26xciag9fnvm7r9vcbhclcy23f4ghf4q4sj1";
};
meta = {
homepage = https://github.com/lesfurets/git-octopus;
description = "The continuous merge workflow";
license = licenses.lgpl3;
platforms = platforms.unix;
maintainers = [maintainers.mic92];
};
}

View File

@ -6,11 +6,11 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
name = "gitkraken-${version}"; name = "gitkraken-${version}";
version = "2.1.0"; version = "2.2.0";
src = fetchurl { src = fetchurl {
url = "https://release.gitkraken.com/linux/v${version}.tar.gz"; url = "https://release.gitkraken.com/linux/v${version}.tar.gz";
sha256 = "56b5657f5c13fa1d8f6b7b9331194cbc8c48c0b913e5f0fb561d0e9af82f7999"; sha256 = "0a3ed917e6e937af4dd180144fbb4ad8b99b35b5d8c1f0684a55de38189a812d";
}; };
libPath = stdenv.lib.makeLibraryPath [ libPath = stdenv.lib.makeLibraryPath [
@ -69,6 +69,6 @@ stdenv.mkDerivation rec {
description = "The downright luxurious and most popular Git client for Windows, Mac & Linux"; description = "The downright luxurious and most popular Git client for Windows, Mac & Linux";
license = licenses.unfree; license = licenses.unfree;
platforms = platforms.linux; platforms = platforms.linux;
maintainers = [ ]; maintainers = with maintainers; [ xnwdd ];
}; };
} }

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