Merge branch 'master' into staging
This commit is contained in:
commit
f01dd648f5
@ -8,6 +8,15 @@
|
|||||||
The nixpkgs repository has several utility functions to manipulate Nix expressions.
|
The nixpkgs repository has several utility functions to manipulate Nix expressions.
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
|
<section xml:id="sec-overrides">
|
||||||
|
<title>Overriding</title>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
Sometimes one wants to override parts of
|
||||||
|
<literal>nixpkgs</literal>, e.g. derivation attributes, the results of
|
||||||
|
derivations or even the whole package set.
|
||||||
|
</para>
|
||||||
|
|
||||||
<section xml:id="sec-pkgs-overridePackages">
|
<section xml:id="sec-pkgs-overridePackages">
|
||||||
<title>pkgs.overridePackages</title>
|
<title>pkgs.overridePackages</title>
|
||||||
|
|
||||||
@ -258,6 +267,40 @@ c = lib.makeOverridable f { a = 1; b = 2; }</programlisting>
|
|||||||
|
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section xml:id="sec-generators">
|
||||||
|
<title>Generators</title>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
Generators are functions that create file formats from nix
|
||||||
|
data structures, e. g. for configuration files.
|
||||||
|
There are generators available for: <literal>INI</literal>,
|
||||||
|
<literal>JSON</literal> and <literal>YAML</literal>
|
||||||
|
</para>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
All generators follow a similar call interface: <code>generatorName
|
||||||
|
configFunctions data</code>, where <literal>configFunctions</literal> is a
|
||||||
|
set of user-defined functions that format variable parts of the content.
|
||||||
|
They each have common defaults, so often they do not need to be set
|
||||||
|
manually. An example is <code>mkSectionName ? (name: libStr.escape [ "[" "]"
|
||||||
|
] name)</code> from the <literal>INI</literal> generator. It gets the name
|
||||||
|
of a section and returns a sanitized name. The default
|
||||||
|
<literal>mkSectionName</literal> escapes <literal>[</literal> and
|
||||||
|
<literal>]</literal> with a backslash.
|
||||||
|
</para>
|
||||||
|
|
||||||
|
<note><para>Nix store paths can be converted to strings by enclosing a
|
||||||
|
derivation attribute like so: <code>"${drv}"</code>.</para></note>
|
||||||
|
|
||||||
|
<para>
|
||||||
|
Detailed documentation for each generator can be found in
|
||||||
|
<literal>lib/generators.nix</literal>.
|
||||||
|
</para>
|
||||||
|
|
||||||
|
</section>
|
||||||
|
|
||||||
|
|
||||||
<section xml:id="sec-fhs-environments">
|
<section xml:id="sec-fhs-environments">
|
||||||
<title>buildFHSUserEnv</title>
|
<title>buildFHSUserEnv</title>
|
||||||
|
@ -20,6 +20,7 @@
|
|||||||
<xi:include href="package-notes.xml" />
|
<xi:include href="package-notes.xml" />
|
||||||
<xi:include href="coding-conventions.xml" />
|
<xi:include href="coding-conventions.xml" />
|
||||||
<xi:include href="submitting-changes.xml" />
|
<xi:include href="submitting-changes.xml" />
|
||||||
|
<xi:include href="reviewing-contributions.xml" />
|
||||||
<xi:include href="contributing.xml" />
|
<xi:include href="contributing.xml" />
|
||||||
|
|
||||||
</book>
|
</book>
|
||||||
|
@ -27,6 +27,7 @@ let
|
|||||||
|
|
||||||
# misc
|
# misc
|
||||||
debug = import ./debug.nix;
|
debug = import ./debug.nix;
|
||||||
|
generators = import ./generators.nix;
|
||||||
misc = import ./deprecated.nix;
|
misc = import ./deprecated.nix;
|
||||||
|
|
||||||
# domain-specific
|
# domain-specific
|
||||||
@ -39,7 +40,7 @@ in
|
|||||||
customisation maintainers meta sources
|
customisation maintainers meta sources
|
||||||
modules options types
|
modules options types
|
||||||
licenses platforms systems
|
licenses platforms systems
|
||||||
debug misc
|
debug generators misc
|
||||||
sandbox fetchers;
|
sandbox fetchers;
|
||||||
}
|
}
|
||||||
# !!! don't include everything at top-level; perhaps only the most
|
# !!! don't include everything at top-level; perhaps only the most
|
||||||
|
72
lib/generators.nix
Normal file
72
lib/generators.nix
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
/* Functions that generate widespread file
|
||||||
|
* formats from nix data structures.
|
||||||
|
*
|
||||||
|
* They all follow a similar interface:
|
||||||
|
* generator { config-attrs } data
|
||||||
|
*
|
||||||
|
* Tests can be found in ./tests.nix
|
||||||
|
* Documentation in the manual, #sec-generators
|
||||||
|
*/
|
||||||
|
with import ./trivial.nix;
|
||||||
|
let
|
||||||
|
libStr = import ./strings.nix;
|
||||||
|
libAttr = import ./attrsets.nix;
|
||||||
|
|
||||||
|
flipMapAttrs = flip libAttr.mapAttrs;
|
||||||
|
in
|
||||||
|
|
||||||
|
rec {
|
||||||
|
|
||||||
|
/* Generates an INI-style config file from an
|
||||||
|
* attrset of sections to an attrset of key-value pairs.
|
||||||
|
*
|
||||||
|
* generators.toINI {} {
|
||||||
|
* foo = { hi = "${pkgs.hello}"; ciao = "bar"; };
|
||||||
|
* baz = { "also, integers" = 42; };
|
||||||
|
* }
|
||||||
|
*
|
||||||
|
*> [baz]
|
||||||
|
*> also, integers=42
|
||||||
|
*>
|
||||||
|
*> [foo]
|
||||||
|
*> ciao=bar
|
||||||
|
*> hi=/nix/store/y93qql1p5ggfnaqjjqhxcw0vqw95rlz0-hello-2.10
|
||||||
|
*
|
||||||
|
* The mk* configuration attributes can generically change
|
||||||
|
* the way sections and key-value strings are generated.
|
||||||
|
*
|
||||||
|
* For more examples see the test cases in ./tests.nix.
|
||||||
|
*/
|
||||||
|
toINI = {
|
||||||
|
# apply transformations (e.g. escapes) to section names
|
||||||
|
mkSectionName ? (name: libStr.escape [ "[" "]" ] name),
|
||||||
|
# format a setting line from key and value
|
||||||
|
mkKeyValue ? (k: v: "${libStr.escape ["="] k}=${toString v}")
|
||||||
|
}: attrsOfAttrs:
|
||||||
|
let
|
||||||
|
# map function to string for each key val
|
||||||
|
mapAttrsToStringsSep = sep: mapFn: attrs:
|
||||||
|
libStr.concatStringsSep sep
|
||||||
|
(libAttr.mapAttrsToList mapFn attrs);
|
||||||
|
mkLine = k: v: mkKeyValue k v + "\n";
|
||||||
|
mkSection = sectName: sectValues: ''
|
||||||
|
[${mkSectionName sectName}]
|
||||||
|
'' + libStr.concatStrings (libAttr.mapAttrsToList mkLine sectValues);
|
||||||
|
in
|
||||||
|
# map input to ini sections
|
||||||
|
mapAttrsToStringsSep "\n" mkSection attrsOfAttrs;
|
||||||
|
|
||||||
|
|
||||||
|
/* Generates JSON from an arbitrary (non-function) value.
|
||||||
|
* For more information see the documentation of the builtin.
|
||||||
|
*/
|
||||||
|
toJSON = {}: builtins.toJSON;
|
||||||
|
|
||||||
|
|
||||||
|
/* YAML has been a strict superset of JSON since 1.2, so we
|
||||||
|
* use toJSON. Before it only had a few differences referring
|
||||||
|
* to implicit typing rules, so it should work with older
|
||||||
|
* parsers as well.
|
||||||
|
*/
|
||||||
|
toYAML = {}@args: toJSON args;
|
||||||
|
}
|
@ -48,6 +48,7 @@
|
|||||||
aske = "Kirill Boltaev <aske@fmap.me>";
|
aske = "Kirill Boltaev <aske@fmap.me>";
|
||||||
asppsa = "Alastair Pharo <asppsa@gmail.com>";
|
asppsa = "Alastair Pharo <asppsa@gmail.com>";
|
||||||
astsmtl = "Alexander Tsamutali <astsmtl@yandex.ru>";
|
astsmtl = "Alexander Tsamutali <astsmtl@yandex.ru>";
|
||||||
|
asymmetric = "Lorenzo Manacorda <lorenzo@mailbox.org>";
|
||||||
aszlig = "aszlig <aszlig@redmoonstudios.org>";
|
aszlig = "aszlig <aszlig@redmoonstudios.org>";
|
||||||
auntie = "Jonathan Glines <auntieNeo@gmail.com>";
|
auntie = "Jonathan Glines <auntieNeo@gmail.com>";
|
||||||
avnik = "Alexander V. Nikolaev <avn@avnik.info>";
|
avnik = "Alexander V. Nikolaev <avn@avnik.info>";
|
||||||
@ -88,6 +89,7 @@
|
|||||||
chris-martin = "Chris Martin <ch.martin@gmail.com>";
|
chris-martin = "Chris Martin <ch.martin@gmail.com>";
|
||||||
chrisjefferson = "Christopher Jefferson <chris@bubblescope.net>";
|
chrisjefferson = "Christopher Jefferson <chris@bubblescope.net>";
|
||||||
christopherpoole = "Christopher Mark Poole <mail@christopherpoole.net>";
|
christopherpoole = "Christopher Mark Poole <mail@christopherpoole.net>";
|
||||||
|
ckampka = "Christian Kampka <christian@kampka.net>";
|
||||||
cko = "Christine Koppelt <christine.koppelt@gmail.com>";
|
cko = "Christine Koppelt <christine.koppelt@gmail.com>";
|
||||||
cleverca22 = "Michael Bishop <cleverca22@gmail.com>";
|
cleverca22 = "Michael Bishop <cleverca22@gmail.com>";
|
||||||
cmcdragonkai = "Roger Qiu <roger.qiu@matrix.ai>";
|
cmcdragonkai = "Roger Qiu <roger.qiu@matrix.ai>";
|
||||||
@ -129,6 +131,7 @@
|
|||||||
doublec = "Chris Double <chris.double@double.co.nz>";
|
doublec = "Chris Double <chris.double@double.co.nz>";
|
||||||
drets = "Dmytro Rets <dmitryrets@gmail.com>";
|
drets = "Dmytro Rets <dmitryrets@gmail.com>";
|
||||||
drewkett = "Andrew Burkett <burkett.andrew@gmail.com>";
|
drewkett = "Andrew Burkett <burkett.andrew@gmail.com>";
|
||||||
|
dtzWill = "Will Dietz <nix@wdtz.org>";
|
||||||
ebzzry = "Rommel Martinez <ebzzry@gmail.com>";
|
ebzzry = "Rommel Martinez <ebzzry@gmail.com>";
|
||||||
ederoyd46 = "Matthew Brown <matt@ederoyd.co.uk>";
|
ederoyd46 = "Matthew Brown <matt@ederoyd.co.uk>";
|
||||||
eduarrrd = "Eduard Bachmakov <e.bachmakov@gmail.com>";
|
eduarrrd = "Eduard Bachmakov <e.bachmakov@gmail.com>";
|
||||||
@ -288,6 +291,7 @@
|
|||||||
mlieberman85 = "Michael Lieberman <mlieberman85@gmail.com>";
|
mlieberman85 = "Michael Lieberman <mlieberman85@gmail.com>";
|
||||||
modulistic = "Pablo Costa <modulistic@gmail.com>";
|
modulistic = "Pablo Costa <modulistic@gmail.com>";
|
||||||
mog = "Matthew O'Gorman <mog-lists@rldn.net>";
|
mog = "Matthew O'Gorman <mog-lists@rldn.net>";
|
||||||
|
montag451 = "montag451 <montag451@laposte.net>";
|
||||||
moosingin3space = "Nathan Moos <moosingin3space@gmail.com>";
|
moosingin3space = "Nathan Moos <moosingin3space@gmail.com>";
|
||||||
moretea = "Maarten Hoogendoorn <maarten@moretea.nl>";
|
moretea = "Maarten Hoogendoorn <maarten@moretea.nl>";
|
||||||
mornfall = "Petr Ročkai <me@mornfall.net>";
|
mornfall = "Petr Ročkai <me@mornfall.net>";
|
||||||
@ -333,6 +337,7 @@
|
|||||||
palo = "Ingolf Wanger <palipalo9@googlemail.com>";
|
palo = "Ingolf Wanger <palipalo9@googlemail.com>";
|
||||||
pashev = "Igor Pashev <pashev.igor@gmail.com>";
|
pashev = "Igor Pashev <pashev.igor@gmail.com>";
|
||||||
pawelpacana = "Paweł Pacana <pawel.pacana@gmail.com>";
|
pawelpacana = "Paweł Pacana <pawel.pacana@gmail.com>";
|
||||||
|
periklis = "theopompos@gmail.com";
|
||||||
pesterhazy = "Paulus Esterhazy <pesterhazy@gmail.com>";
|
pesterhazy = "Paulus Esterhazy <pesterhazy@gmail.com>";
|
||||||
peterhoeg = "Peter Hoeg <peter@hoeg.com>";
|
peterhoeg = "Peter Hoeg <peter@hoeg.com>";
|
||||||
peti = "Peter Simons <simons@cryp.to>";
|
peti = "Peter Simons <simons@cryp.to>";
|
||||||
|
@ -375,10 +375,13 @@ rec {
|
|||||||
if def._type or "" == "merge" then
|
if def._type or "" == "merge" then
|
||||||
concatMap dischargeProperties def.contents
|
concatMap dischargeProperties def.contents
|
||||||
else if def._type or "" == "if" then
|
else if def._type or "" == "if" then
|
||||||
|
if isBool def.condition then
|
||||||
if def.condition then
|
if def.condition then
|
||||||
dischargeProperties def.content
|
dischargeProperties def.content
|
||||||
else
|
else
|
||||||
[ ]
|
[ ]
|
||||||
|
else
|
||||||
|
throw "‘mkIf’ called with a non-Boolean condition"
|
||||||
else
|
else
|
||||||
[ def ];
|
[ def ];
|
||||||
|
|
||||||
|
@ -12,8 +12,7 @@ rec {
|
|||||||
|
|
||||||
# Bring in a path as a source, filtering out all Subversion and CVS
|
# Bring in a path as a source, filtering out all Subversion and CVS
|
||||||
# directories, as well as backup files (*~).
|
# directories, as well as backup files (*~).
|
||||||
cleanSource =
|
cleanSourceFilter = name: type: let baseName = baseNameOf (toString name); in ! (
|
||||||
let filter = name: type: let baseName = baseNameOf (toString name); in ! (
|
|
||||||
# Filter out Subversion and CVS directories.
|
# Filter out Subversion and CVS directories.
|
||||||
(type == "directory" && (baseName == ".git" || baseName == ".svn" || baseName == "CVS" || baseName == ".hg")) ||
|
(type == "directory" && (baseName == ".git" || baseName == ".svn" || baseName == "CVS" || baseName == ".hg")) ||
|
||||||
# Filter out backup files.
|
# Filter out backup files.
|
||||||
@ -24,7 +23,8 @@ rec {
|
|||||||
# Filter out nix-build result symlinks
|
# Filter out nix-build result symlinks
|
||||||
(type == "symlink" && lib.hasPrefix "result" baseName)
|
(type == "symlink" && lib.hasPrefix "result" baseName)
|
||||||
);
|
);
|
||||||
in src: builtins.filterSource filter src;
|
|
||||||
|
cleanSource = builtins.filterSource cleanSourceFilter;
|
||||||
|
|
||||||
|
|
||||||
# Get all files ending with the specified suffices from the given
|
# Get all files ending with the specified suffices from the given
|
||||||
|
@ -130,4 +130,78 @@ runTests {
|
|||||||
expected = false;
|
expected = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/* Generator tests */
|
||||||
|
# these tests assume attributes are converted to lists
|
||||||
|
# in alphabetical order
|
||||||
|
|
||||||
|
testToINIEmpty = {
|
||||||
|
expr = generators.toINI {} {};
|
||||||
|
expected = "";
|
||||||
|
};
|
||||||
|
|
||||||
|
testToINIEmptySection = {
|
||||||
|
expr = generators.toINI {} { foo = {}; bar = {}; };
|
||||||
|
expected = ''
|
||||||
|
[bar]
|
||||||
|
|
||||||
|
[foo]
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
testToINIDefaultEscapes = {
|
||||||
|
expr = generators.toINI {} {
|
||||||
|
"no [ and ] allowed unescaped" = {
|
||||||
|
"and also no = in keys" = 42;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
expected = ''
|
||||||
|
[no \[ and \] allowed unescaped]
|
||||||
|
and also no \= in keys=42
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
testToINIDefaultFull = {
|
||||||
|
expr = generators.toINI {} {
|
||||||
|
"section 1" = {
|
||||||
|
attribute1 = 5;
|
||||||
|
x = "Me-se JarJar Binx";
|
||||||
|
};
|
||||||
|
"foo[]" = {
|
||||||
|
"he\\h=he" = "this is okay";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
expected = ''
|
||||||
|
[foo\[\]]
|
||||||
|
he\h\=he=this is okay
|
||||||
|
|
||||||
|
[section 1]
|
||||||
|
attribute1=5
|
||||||
|
x=Me-se JarJar Binx
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
/* right now only invocation check */
|
||||||
|
testToJSONSimple =
|
||||||
|
let val = {
|
||||||
|
foobar = [ "baz" 1 2 3 ];
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
expr = generators.toJSON {} val;
|
||||||
|
# trival implementation
|
||||||
|
expected = builtins.toJSON val;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* right now only invocation check */
|
||||||
|
testToYAMLSimple =
|
||||||
|
let val = {
|
||||||
|
list = [ { one = 1; } { two = 2; } ];
|
||||||
|
all = 42;
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
expr = generators.toYAML {} val;
|
||||||
|
# trival implementation
|
||||||
|
expected = builtins.toJSON val;
|
||||||
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -47,4 +47,12 @@ where <literal>eth0</literal> should be replaced with the desired
|
|||||||
external interface. Note that <literal>ve-+</literal> is a wildcard
|
external interface. Note that <literal>ve-+</literal> is a wildcard
|
||||||
that matches all container interfaces.</para>
|
that matches all container interfaces.</para>
|
||||||
|
|
||||||
|
<para>If you are using Network Manager, you need to explicitly prevent
|
||||||
|
it from managing container interfaces:
|
||||||
|
|
||||||
|
<programlisting>
|
||||||
|
networking.networkmanager.unmanaged = [ "interface-name:ve-*" ];
|
||||||
|
</programlisting>
|
||||||
|
</para>
|
||||||
|
|
||||||
</section>
|
</section>
|
||||||
|
@ -18,7 +18,6 @@ NixOS.</para>
|
|||||||
<xi:include href="building-nixos.xml" />
|
<xi:include href="building-nixos.xml" />
|
||||||
<xi:include href="nixos-tests.xml" />
|
<xi:include href="nixos-tests.xml" />
|
||||||
<xi:include href="testing-installer.xml" />
|
<xi:include href="testing-installer.xml" />
|
||||||
<xi:include href="reviewing-contributions.xml" />
|
|
||||||
<xi:include href="releases.xml" />
|
<xi:include href="releases.xml" />
|
||||||
|
|
||||||
</part>
|
</part>
|
||||||
|
@ -68,6 +68,15 @@ following incompatible changes:</para>
|
|||||||
that may be in /etc.
|
that may be in /etc.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
Parsoid service now uses YAML configuration format.
|
||||||
|
<literal>service.parsoid.interwikis</literal> is now called
|
||||||
|
<literal>service.parsoid.wikis</literal> and is a list of either API URLs
|
||||||
|
or attribute sets as specified in parsoid's documentation.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
</itemizedlist>
|
</itemizedlist>
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#!/usr/bin/env nix-shell
|
#!/usr/bin/env nix-shell
|
||||||
#! nix-shell -i bash -p qemu awscli ec2_ami_tools jq
|
#! nix-shell -i bash -p qemu ec2_ami_tools jq ec2_api_tools awscli
|
||||||
|
|
||||||
# To start with do: nix-shell -p awscli --run "aws configure"
|
# To start with do: nix-shell -p awscli --run "aws configure"
|
||||||
|
|
||||||
@ -19,7 +19,7 @@ rm -f ec2-amis.nix
|
|||||||
|
|
||||||
types="hvm pv"
|
types="hvm pv"
|
||||||
stores="ebs s3"
|
stores="ebs s3"
|
||||||
regions="eu-west-1 eu-central-1 us-east-1 us-west-1 us-west-2 ap-southeast-1 ap-southeast-2 ap-northeast-1 ap-northeast-2 sa-east-1 ap-south-1"
|
regions="eu-west-1 eu-central-1 us-east-1 us-east-2 us-west-1 us-west-2 ap-southeast-1 ap-southeast-2 ap-northeast-1 ap-northeast-2 sa-east-1 ap-south-1"
|
||||||
|
|
||||||
for type in $types; do
|
for type in $types; do
|
||||||
link=$stateDir/$type
|
link=$stateDir/$type
|
||||||
@ -61,7 +61,7 @@ for type in $types; do
|
|||||||
ami=$(aws ec2 copy-image \
|
ami=$(aws ec2 copy-image \
|
||||||
--region "$region" \
|
--region "$region" \
|
||||||
--source-region "$prevRegion" --source-image-id "$prevAmi" \
|
--source-region "$prevRegion" --source-image-id "$prevAmi" \
|
||||||
--name "$name" --description "$description" | json -q .ImageId)
|
--name "$name" --description "$description" | jq -r '.ImageId')
|
||||||
if [ "$ami" = null ]; then break; fi
|
if [ "$ami" = null ]; then break; fi
|
||||||
else
|
else
|
||||||
|
|
||||||
|
@ -301,9 +301,7 @@ in
|
|||||||
};
|
};
|
||||||
|
|
||||||
style = mkOption {
|
style = mkOption {
|
||||||
type = types.str // {
|
type = types.enum ["none" "slight" "medium" "full"];
|
||||||
check = flip elem ["none" "slight" "medium" "full"];
|
|
||||||
};
|
|
||||||
default = "full";
|
default = "full";
|
||||||
description = ''
|
description = ''
|
||||||
TrueType hinting style, one of <literal>none</literal>,
|
TrueType hinting style, one of <literal>none</literal>,
|
||||||
@ -329,9 +327,7 @@ in
|
|||||||
default = "rgb";
|
default = "rgb";
|
||||||
type = types.enum ["rgb" "bgr" "vrgb" "vbgr" "none"];
|
type = types.enum ["rgb" "bgr" "vrgb" "vbgr" "none"];
|
||||||
description = ''
|
description = ''
|
||||||
Subpixel order, one of <literal>none</literal>,
|
Subpixel order.
|
||||||
<literal>rgb</literal>, <literal>bgr</literal>,
|
|
||||||
<literal>vrgb</literal>, or <literal>vbgr</literal>.
|
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -339,9 +335,7 @@ in
|
|||||||
default = "default";
|
default = "default";
|
||||||
type = types.enum ["none" "default" "light" "legacy"];
|
type = types.enum ["none" "default" "light" "legacy"];
|
||||||
description = ''
|
description = ''
|
||||||
FreeType LCD filter, one of <literal>none</literal>,
|
FreeType LCD filter.
|
||||||
<literal>default</literal>, <literal>light</literal>, or
|
|
||||||
<literal>legacy</literal>.
|
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -44,6 +44,7 @@ in
|
|||||||
consolePackages = mkOption {
|
consolePackages = mkOption {
|
||||||
type = types.listOf types.package;
|
type = types.listOf types.package;
|
||||||
default = with pkgs.kbdKeymaps; [ dvp neo ];
|
default = with pkgs.kbdKeymaps; [ dvp neo ];
|
||||||
|
defaultText = ''with pkgs.kbdKeymaps; [ dvp neo ]'';
|
||||||
description = ''
|
description = ''
|
||||||
List of additional packages that provide console fonts, keymaps and
|
List of additional packages that provide console fonts, keymaps and
|
||||||
other resources.
|
other resources.
|
||||||
|
@ -13,6 +13,8 @@ let
|
|||||||
useDisplayDevice = cfg.connectDisplay;
|
useDisplayDevice = cfg.connectDisplay;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
useBbswitch = cfg.pmMethod == "bbswitch";
|
||||||
|
|
||||||
primus = pkgs.primus.override {
|
primus = pkgs.primus.override {
|
||||||
inherit useNvidia;
|
inherit useNvidia;
|
||||||
};
|
};
|
||||||
@ -22,25 +24,26 @@ in
|
|||||||
{
|
{
|
||||||
|
|
||||||
options = {
|
options = {
|
||||||
hardware.bumblebee.enable = mkOption {
|
hardware.bumblebee = {
|
||||||
|
|
||||||
|
enable = mkOption {
|
||||||
default = false;
|
default = false;
|
||||||
type = types.bool;
|
type = types.bool;
|
||||||
description = ''
|
description = ''
|
||||||
Enable the bumblebee daemon to manage Optimus hybrid video cards.
|
Enable the bumblebee daemon to manage Optimus hybrid video cards.
|
||||||
This should power off secondary GPU until its use is requested
|
This should power off secondary GPU until its use is requested
|
||||||
by running an application with optirun.
|
by running an application with optirun.
|
||||||
|
|
||||||
Only nvidia driver is supported so far.
|
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
hardware.bumblebee.group = mkOption {
|
|
||||||
|
group = mkOption {
|
||||||
default = "wheel";
|
default = "wheel";
|
||||||
example = "video";
|
example = "video";
|
||||||
type = types.str;
|
type = types.str;
|
||||||
description = ''Group for bumblebee socket'';
|
description = ''Group for bumblebee socket'';
|
||||||
};
|
};
|
||||||
|
|
||||||
hardware.bumblebee.connectDisplay = mkOption {
|
connectDisplay = mkOption {
|
||||||
default = false;
|
default = false;
|
||||||
type = types.bool;
|
type = types.bool;
|
||||||
description = ''
|
description = ''
|
||||||
@ -52,28 +55,38 @@ in
|
|||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
hardware.bumblebee.driver = mkOption {
|
driver = mkOption {
|
||||||
default = "nvidia";
|
default = "nvidia";
|
||||||
type = types.enum [ "nvidia" "nouveau" ];
|
type = types.enum [ "nvidia" "nouveau" ];
|
||||||
description = ''
|
description = ''
|
||||||
Set driver used by bumblebeed. Supported are nouveau and nvidia.
|
Set driver used by bumblebeed. Supported are nouveau and nvidia.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
pmMethod = mkOption {
|
||||||
|
default = "auto";
|
||||||
|
type = types.enum [ "auto" "bbswitch" "nouveau" "switcheroo" "none" ];
|
||||||
|
description = ''
|
||||||
|
Set preferred power management method for unused card.
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf config.hardware.bumblebee.enable {
|
};
|
||||||
boot.blacklistedKernelModules = [ "nouveau" "nvidia" ];
|
};
|
||||||
boot.kernelModules = [ "bbswitch" ];
|
|
||||||
boot.extraModulePackages = [ kernel.bbswitch ] ++ optional useNvidia kernel.nvidia_x11;
|
config = mkIf cfg.enable {
|
||||||
|
boot.blacklistedKernelModules = [ "nvidia-drm" "nvidia" "nouveau" ];
|
||||||
|
boot.kernelModules = optional useBbswitch [ "bbswitch" ];
|
||||||
|
boot.extraModulePackages = optional useBbswitch kernel.bbswitch ++ optional useNvidia kernel.nvidia_x11;
|
||||||
|
|
||||||
environment.systemPackages = [ bumblebee primus ];
|
environment.systemPackages = [ bumblebee primus ];
|
||||||
|
|
||||||
systemd.services.bumblebeed = {
|
systemd.services.bumblebeed = {
|
||||||
description = "Bumblebee Hybrid Graphics Switcher";
|
description = "Bumblebee Hybrid Graphics Switcher";
|
||||||
wantedBy = [ "display-manager.service" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
path = [ kernel.bbswitch bumblebee ];
|
before = [ "display-manager.service" ];
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
ExecStart = "${bumblebee}/bin/bumblebeed --use-syslog -g ${cfg.group} --driver ${cfg.driver}";
|
ExecStart = "${bumblebee}/bin/bumblebeed --use-syslog -g ${cfg.group} --driver ${cfg.driver} --pm-method ${cfg.pmMethod}";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -1,20 +1,41 @@
|
|||||||
# This module defines a NixOS installation CD that contains X11 and
|
# This module defines a NixOS installation CD that contains X11 and
|
||||||
# KDE 4.
|
# KDE 5.
|
||||||
|
|
||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
with lib;
|
with lib;
|
||||||
|
|
||||||
{
|
{
|
||||||
imports = [ ./installation-cd-base.nix ../../profiles/graphical.nix ];
|
imports = [ ./installation-cd-base.nix ];
|
||||||
|
|
||||||
# Provide wicd for easy wireless configuration.
|
services.xserver = {
|
||||||
#networking.wicd.enable = true;
|
enable = true;
|
||||||
|
|
||||||
|
# Automatically login as root.
|
||||||
|
displayManager.slim = {
|
||||||
|
enable = true;
|
||||||
|
defaultUser = "root";
|
||||||
|
autoLogin = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
desktopManager.kde5 = {
|
||||||
|
enable = true;
|
||||||
|
enableQt4Support = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Enable touchpad support for many laptops.
|
||||||
|
synaptics.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
environment.systemPackages =
|
environment.systemPackages =
|
||||||
[ # Include gparted for partitioning disks.
|
[ pkgs.glxinfo
|
||||||
|
|
||||||
|
# Include gparted for partitioning disks.
|
||||||
pkgs.gparted
|
pkgs.gparted
|
||||||
|
|
||||||
|
# Firefox for reading the manual.
|
||||||
|
pkgs.firefox
|
||||||
|
|
||||||
# Include some editors.
|
# Include some editors.
|
||||||
pkgs.vim
|
pkgs.vim
|
||||||
pkgs.bvi # binary editor
|
pkgs.bvi # binary editor
|
||||||
@ -32,80 +53,21 @@ with lib;
|
|||||||
# Don't start the X server by default.
|
# Don't start the X server by default.
|
||||||
services.xserver.autorun = mkForce false;
|
services.xserver.autorun = mkForce false;
|
||||||
|
|
||||||
# Auto-login as root.
|
|
||||||
services.xserver.displayManager.kdm.extraConfig =
|
|
||||||
''
|
|
||||||
[X-*-Core]
|
|
||||||
AllowRootLogin=true
|
|
||||||
AutoLoginEnable=true
|
|
||||||
AutoLoginUser=root
|
|
||||||
AutoLoginPass=""
|
|
||||||
'';
|
|
||||||
|
|
||||||
# Custom kde-workspace adding some icons on the desktop
|
|
||||||
|
|
||||||
system.activationScripts.installerDesktop = let
|
system.activationScripts.installerDesktop = let
|
||||||
openManual = pkgs.writeScript "nixos-manual.sh" ''
|
|
||||||
#!${pkgs.stdenv.shell}
|
|
||||||
cd ${config.system.build.manual.manual}/share/doc/nixos/
|
|
||||||
konqueror ./index.html
|
|
||||||
'';
|
|
||||||
|
|
||||||
desktopFile = pkgs.writeText "nixos-manual.desktop" ''
|
desktopFile = pkgs.writeText "nixos-manual.desktop" ''
|
||||||
[Desktop Entry]
|
[Desktop Entry]
|
||||||
Version=1.0
|
Version=1.0
|
||||||
Type=Application
|
Type=Application
|
||||||
Name=NixOS Manual
|
Name=NixOS Manual
|
||||||
Exec=${openManual}
|
Exec=firefox ${config.system.build.manual.manual}/share/doc/nixos/index.html
|
||||||
Icon=konqueror
|
Icon=text-html
|
||||||
'';
|
'';
|
||||||
|
|
||||||
in ''
|
in ''
|
||||||
mkdir -p /root/Desktop
|
mkdir -p /root/Desktop
|
||||||
ln -sfT ${desktopFile} /root/Desktop/nixos-manual.desktop
|
ln -sfT ${desktopFile} /root/Desktop/nixos-manual.desktop
|
||||||
ln -sfT ${pkgs.kde4.konsole}/share/applications/kde4/konsole.desktop /root/Desktop/konsole.desktop
|
ln -sfT ${pkgs.kde5.konsole}/share/applications/org.kde.konsole.desktop /root/Desktop/org.kde.konsole.desktop
|
||||||
ln -sfT ${pkgs.gparted}/share/applications/gparted.desktop /root/Desktop/gparted.desktop
|
ln -sfT ${pkgs.gparted}/share/applications/gparted.desktop /root/Desktop/gparted.desktop
|
||||||
'';
|
'';
|
||||||
|
|
||||||
services.xserver.desktopManager.kde4.kdeWorkspacePackage = let
|
|
||||||
pkg = pkgs.kde4.kde_workspace;
|
|
||||||
|
|
||||||
plasmaInit = pkgs.writeText "00-defaultLayout.js" ''
|
|
||||||
loadTemplate("org.kde.plasma-desktop.defaultPanel")
|
|
||||||
|
|
||||||
for (var i = 0; i < screenCount; ++i) {
|
|
||||||
var desktop = new Activity
|
|
||||||
desktop.name = i18n("Desktop")
|
|
||||||
desktop.screen = i
|
|
||||||
desktop.wallpaperPlugin = 'image'
|
|
||||||
desktop.wallpaperMode = 'SingleImage'
|
|
||||||
|
|
||||||
var folderview = desktop.addWidget("folderview");
|
|
||||||
folderview.writeConfig("url", "desktop:/");
|
|
||||||
|
|
||||||
//Create more panels for other screens
|
|
||||||
if (i > 0){
|
|
||||||
var panel = new Panel
|
|
||||||
panel.screen = i
|
|
||||||
panel.location = 'bottom'
|
|
||||||
panel.height = screenGeometry(i).height > 1024 ? 35 : 27
|
|
||||||
var tasks = panel.addWidget("tasks")
|
|
||||||
tasks.writeConfig("showOnlyCurrentScreen", true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
|
|
||||||
in
|
|
||||||
pkgs.runCommand pkg.name
|
|
||||||
{ inherit (pkg) meta; }
|
|
||||||
''
|
|
||||||
mkdir -p $out
|
|
||||||
cp -prf ${pkg}/* $out/
|
|
||||||
chmod a+w $out/share/apps/plasma-desktop/init
|
|
||||||
cp -f ${plasmaInit} $out/share/apps/plasma-desktop/init/00-defaultLayout.js
|
|
||||||
'';
|
|
||||||
|
|
||||||
# Disable large stuff that's not very useful on the installation CD.
|
|
||||||
services.xserver.desktopManager.kde4.enablePIM = false;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -84,7 +84,7 @@
|
|||||||
spamd = 56;
|
spamd = 56;
|
||||||
#networkmanager = 57; # unused
|
#networkmanager = 57; # unused
|
||||||
nslcd = 58;
|
nslcd = 58;
|
||||||
#scanner = 59; # unused
|
scanner = 59;
|
||||||
nginx = 60;
|
nginx = 60;
|
||||||
chrony = 61;
|
chrony = 61;
|
||||||
#systemd-journal = 62; # unused
|
#systemd-journal = 62; # unused
|
||||||
@ -279,6 +279,8 @@
|
|||||||
hound = 259;
|
hound = 259;
|
||||||
leaps = 260;
|
leaps = 260;
|
||||||
ipfs = 261;
|
ipfs = 261;
|
||||||
|
stanchion = 262;
|
||||||
|
riak-cs = 263;
|
||||||
|
|
||||||
# When adding a uid, make sure it doesn't match an existing gid. And don't use uids above 399!
|
# When adding a uid, make sure it doesn't match an existing gid. And don't use uids above 399!
|
||||||
|
|
||||||
@ -528,6 +530,8 @@
|
|||||||
hound = 259;
|
hound = 259;
|
||||||
leaps = 260;
|
leaps = 260;
|
||||||
ipfs = 261;
|
ipfs = 261;
|
||||||
|
stanchion = 262;
|
||||||
|
riak-cs = 263;
|
||||||
|
|
||||||
# When adding a gid, make sure it doesn't match an existing
|
# When adding a gid, make sure it doesn't match an existing
|
||||||
# uid. Users and groups with the same name should have equal
|
# uid. Users and groups with the same name should have equal
|
||||||
|
@ -159,6 +159,8 @@
|
|||||||
./services/databases/postgresql.nix
|
./services/databases/postgresql.nix
|
||||||
./services/databases/redis.nix
|
./services/databases/redis.nix
|
||||||
./services/databases/riak.nix
|
./services/databases/riak.nix
|
||||||
|
./services/databases/riak-cs.nix
|
||||||
|
./services/databases/stanchion.nix
|
||||||
./services/databases/virtuoso.nix
|
./services/databases/virtuoso.nix
|
||||||
./services/desktops/accountsservice.nix
|
./services/desktops/accountsservice.nix
|
||||||
./services/desktops/geoclue2.nix
|
./services/desktops/geoclue2.nix
|
||||||
@ -346,6 +348,7 @@
|
|||||||
./services/networking/connman.nix
|
./services/networking/connman.nix
|
||||||
./services/networking/consul.nix
|
./services/networking/consul.nix
|
||||||
./services/networking/coturn.nix
|
./services/networking/coturn.nix
|
||||||
|
./services/networking/dante.nix
|
||||||
./services/networking/ddclient.nix
|
./services/networking/ddclient.nix
|
||||||
./services/networking/dhcpcd.nix
|
./services/networking/dhcpcd.nix
|
||||||
./services/networking/dhcpd.nix
|
./services/networking/dhcpd.nix
|
||||||
@ -539,7 +542,6 @@
|
|||||||
./services/x11/window-managers/fluxbox.nix
|
./services/x11/window-managers/fluxbox.nix
|
||||||
./services/x11/window-managers/icewm.nix
|
./services/x11/window-managers/icewm.nix
|
||||||
./services/x11/window-managers/bspwm.nix
|
./services/x11/window-managers/bspwm.nix
|
||||||
./services/x11/window-managers/bspwm-unstable.nix
|
|
||||||
./services/x11/window-managers/metacity.nix
|
./services/x11/window-managers/metacity.nix
|
||||||
./services/x11/window-managers/none.nix
|
./services/x11/window-managers/none.nix
|
||||||
./services/x11/window-managers/twm.nix
|
./services/x11/window-managers/twm.nix
|
||||||
|
@ -34,6 +34,7 @@ in
|
|||||||
|
|
||||||
package = mkOption {
|
package = mkOption {
|
||||||
default = pkgs.jdk;
|
default = pkgs.jdk;
|
||||||
|
defaultText = "pkgs.jdk";
|
||||||
description = ''
|
description = ''
|
||||||
Java package to install. Typical values are pkgs.jdk or pkgs.jre.
|
Java package to install. Typical values are pkgs.jdk or pkgs.jre.
|
||||||
'';
|
'';
|
||||||
|
@ -165,7 +165,7 @@ in
|
|||||||
config = {
|
config = {
|
||||||
|
|
||||||
programs.ssh.setXAuthLocation =
|
programs.ssh.setXAuthLocation =
|
||||||
mkDefault (config.services.xserver.enable || config.programs.ssh.forwardX11);
|
mkDefault (config.services.xserver.enable || config.programs.ssh.forwardX11 || config.services.openssh.forwardX11);
|
||||||
|
|
||||||
assertions =
|
assertions =
|
||||||
[ { assertion = cfg.forwardX11 -> cfg.setXAuthLocation;
|
[ { assertion = cfg.forwardX11 -> cfg.setXAuthLocation;
|
||||||
|
@ -30,6 +30,8 @@ with lib;
|
|||||||
(mkRenamedOptionModule [ "services" "gitlab" "stateDir" ] [ "services" "gitlab" "statePath" ])
|
(mkRenamedOptionModule [ "services" "gitlab" "stateDir" ] [ "services" "gitlab" "statePath" ])
|
||||||
(mkRemovedOptionModule [ "services" "gitlab" "satelliteDir" ] "")
|
(mkRemovedOptionModule [ "services" "gitlab" "satelliteDir" ] "")
|
||||||
|
|
||||||
|
(mkRenamedOptionModule [ "services" "clamav" "updater" "config" ] [ "services" "clamav" "updater" "extraConfig" ])
|
||||||
|
|
||||||
# Old Grub-related options.
|
# Old Grub-related options.
|
||||||
(mkRenamedOptionModule [ "boot" "initrd" "extraKernelModules" ] [ "boot" "initrd" "kernelModules" ])
|
(mkRenamedOptionModule [ "boot" "initrd" "extraKernelModules" ] [ "boot" "initrd" "kernelModules" ])
|
||||||
(mkRenamedOptionModule [ "boot" "extraKernelParams" ] [ "boot" "kernelParams" ])
|
(mkRenamedOptionModule [ "boot" "extraKernelParams" ] [ "boot" "kernelParams" ])
|
||||||
@ -142,6 +144,12 @@ with lib;
|
|||||||
# murmur
|
# murmur
|
||||||
(mkRenamedOptionModule [ "services" "murmur" "welcome" ] [ "services" "murmur" "welcometext" ])
|
(mkRenamedOptionModule [ "services" "murmur" "welcome" ] [ "services" "murmur" "welcometext" ])
|
||||||
|
|
||||||
|
# parsoid
|
||||||
|
(mkRemovedOptionModule [ "services" "parsoid" "interwikis" ] [ "services" "parsoid" "wikis" ])
|
||||||
|
|
||||||
|
# tarsnap
|
||||||
|
(mkRemovedOptionModule [ "services" "tarsnap" "cachedir" ] "Use services.tarsnap.archives.<name>.cachedir")
|
||||||
|
|
||||||
# Options that are obsolete and have no replacement.
|
# Options that are obsolete and have no replacement.
|
||||||
(mkRemovedOptionModule [ "boot" "initrd" "luks" "enable" ] "")
|
(mkRemovedOptionModule [ "boot" "initrd" "luks" "enable" ] "")
|
||||||
(mkRemovedOptionModule [ "programs" "bash" "enable" ] "")
|
(mkRemovedOptionModule [ "programs" "bash" "enable" ] "")
|
||||||
|
@ -73,7 +73,7 @@ in
|
|||||||
};
|
};
|
||||||
|
|
||||||
failmode = mkOption {
|
failmode = mkOption {
|
||||||
type = types.str;
|
type = types.enum [ "safe" "enum" ];
|
||||||
default = "safe";
|
default = "safe";
|
||||||
description = ''
|
description = ''
|
||||||
On service or configuration errors that prevent Duo
|
On service or configuration errors that prevent Duo
|
||||||
@ -115,7 +115,7 @@ in
|
|||||||
};
|
};
|
||||||
|
|
||||||
prompts = mkOption {
|
prompts = mkOption {
|
||||||
type = types.int;
|
type = types.enum [ 1 2 3 ];
|
||||||
default = 3;
|
default = 3;
|
||||||
description = ''
|
description = ''
|
||||||
If a user fails to authenticate with a second factor, Duo
|
If a user fails to authenticate with a second factor, Duo
|
||||||
@ -181,13 +181,7 @@ in
|
|||||||
|
|
||||||
config = mkIf (cfg.ssh.enable || cfg.pam.enable) {
|
config = mkIf (cfg.ssh.enable || cfg.pam.enable) {
|
||||||
assertions =
|
assertions =
|
||||||
[ { assertion = cfg.failmode == "safe" || cfg.failmode == "secure";
|
[ { assertion = !cfg.pam.enable;
|
||||||
message = "Invalid value for failmode (must be safe or secure).";
|
|
||||||
}
|
|
||||||
{ assertion = cfg.prompts == 1 || cfg.prompts == 2 || cfg.prompts == 3;
|
|
||||||
message = "Invalid value for prompts (must be 1, 2, or 3).";
|
|
||||||
}
|
|
||||||
{ assertion = !cfg.pam.enable;
|
|
||||||
message = "PAM support is currently not implemented.";
|
message = "PAM support is currently not implemented.";
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
@ -6,14 +6,6 @@ let
|
|||||||
cfg = config.security.grsecurity;
|
cfg = config.security.grsecurity;
|
||||||
grsecLockPath = "/proc/sys/kernel/grsecurity/grsec_lock";
|
grsecLockPath = "/proc/sys/kernel/grsecurity/grsec_lock";
|
||||||
|
|
||||||
# Ascertain whether ZFS is required for booting the system; grsecurity is
|
|
||||||
# currently incompatible with ZFS, rendering the system unbootable.
|
|
||||||
zfsNeededForBoot = filter
|
|
||||||
(fs: (fs.neededForBoot
|
|
||||||
|| elem fs.mountPoint [ "/" "/nix" "/nix/store" "/var" "/var/log" "/var/lib" "/etc" ])
|
|
||||||
&& fs.fsType == "zfs")
|
|
||||||
config.system.build.fileSystems != [];
|
|
||||||
|
|
||||||
# Ascertain whether NixOS container support is required
|
# Ascertain whether NixOS container support is required
|
||||||
containerSupportRequired =
|
containerSupportRequired =
|
||||||
config.boot.enableContainers && config.containers != {};
|
config.boot.enableContainers && config.containers != {};
|
||||||
@ -27,7 +19,14 @@ in
|
|||||||
|
|
||||||
options.security.grsecurity = {
|
options.security.grsecurity = {
|
||||||
|
|
||||||
enable = mkEnableOption "grsecurity/PaX";
|
enable = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
example = true;
|
||||||
|
default = false;
|
||||||
|
description = ''
|
||||||
|
Enable grsecurity/PaX.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
lockTunables = mkOption {
|
lockTunables = mkOption {
|
||||||
type = types.bool;
|
type = types.bool;
|
||||||
@ -58,20 +57,10 @@ in
|
|||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
|
||||||
# Allow the user to select a different package set, subject to the stated
|
|
||||||
# required kernel config
|
|
||||||
boot.kernelPackages = mkDefault pkgs.linuxPackages_grsec_nixos;
|
boot.kernelPackages = mkDefault pkgs.linuxPackages_grsec_nixos;
|
||||||
|
|
||||||
boot.kernelParams = optional cfg.disableEfiRuntimeServices "noefi";
|
boot.kernelParams = optional cfg.disableEfiRuntimeServices "noefi";
|
||||||
|
|
||||||
system.requiredKernelConfig = with config.lib.kernelConfig;
|
|
||||||
[ (isEnabled "GRKERNSEC")
|
|
||||||
(isEnabled "PAX")
|
|
||||||
(isYes "GRKERNSEC_SYSCTL")
|
|
||||||
(isYes "GRKERNSEC_SYSCTL_DISTRO")
|
|
||||||
(isNo "GRKERNSEC_NO_RBAC")
|
|
||||||
];
|
|
||||||
|
|
||||||
nixpkgs.config.grsecurity = true;
|
nixpkgs.config.grsecurity = true;
|
||||||
|
|
||||||
# Install PaX related utillities into the system profile.
|
# Install PaX related utillities into the system profile.
|
||||||
@ -135,11 +124,5 @@ in
|
|||||||
"kernel.grsecurity.chroot_caps" = mkForce 0;
|
"kernel.grsecurity.chroot_caps" = mkForce 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
assertions = [
|
|
||||||
{ assertion = !zfsNeededForBoot;
|
|
||||||
message = "grsecurity is currently incompatible with ZFS";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -225,11 +225,9 @@
|
|||||||
</para>
|
</para>
|
||||||
|
|
||||||
<para>
|
<para>
|
||||||
The NixOS module makes several assumptions about the kernel and so may be
|
The NixOS module makes several assumptions about the kernel and so
|
||||||
incompatible with your customised kernel. Most of these assumptions are
|
may be incompatible with your customised kernel. Currently, the only way
|
||||||
encoded as assertions — mismatches should ideally result in a build
|
to work around incompatibilities is to eschew the NixOS module.
|
||||||
failure. Currently, the only way to work around incompatibilities is to
|
|
||||||
eschew the NixOS module and do all configuration yourself.
|
|
||||||
</para>
|
</para>
|
||||||
|
|
||||||
</sect1>
|
</sect1>
|
||||||
|
@ -1,25 +1,25 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
{ config, lib, pkgs, utils, ... }:
|
||||||
|
|
||||||
with lib;
|
with lib;
|
||||||
|
|
||||||
let
|
let
|
||||||
cfg = config.services.tarsnap;
|
gcfg = config.services.tarsnap;
|
||||||
|
|
||||||
configFile = name: cfg: ''
|
configFile = name: cfg: ''
|
||||||
cachedir ${config.services.tarsnap.cachedir}/${name}
|
|
||||||
keyfile ${cfg.keyfile}
|
keyfile ${cfg.keyfile}
|
||||||
|
${optionalString (cfg.cachedir != null) "cachedir ${cfg.cachedir}"}
|
||||||
${optionalString cfg.nodump "nodump"}
|
${optionalString cfg.nodump "nodump"}
|
||||||
${optionalString cfg.printStats "print-stats"}
|
${optionalString cfg.printStats "print-stats"}
|
||||||
${optionalString cfg.printStats "humanize-numbers"}
|
${optionalString cfg.printStats "humanize-numbers"}
|
||||||
${optionalString (cfg.checkpointBytes != null) ("checkpoint-bytes "+cfg.checkpointBytes)}
|
${optionalString (cfg.checkpointBytes != null) ("checkpoint-bytes "+cfg.checkpointBytes)}
|
||||||
${optionalString cfg.aggressiveNetworking "aggressive-networking"}
|
${optionalString cfg.aggressiveNetworking "aggressive-networking"}
|
||||||
${concatStringsSep "\n" (map (v: "exclude "+v) cfg.excludes)}
|
${concatStringsSep "\n" (map (v: "exclude ${v}") cfg.excludes)}
|
||||||
${concatStringsSep "\n" (map (v: "include "+v) cfg.includes)}
|
${concatStringsSep "\n" (map (v: "include ${v}") cfg.includes)}
|
||||||
${optionalString cfg.lowmem "lowmem"}
|
${optionalString cfg.lowmem "lowmem"}
|
||||||
${optionalString cfg.verylowmem "verylowmem"}
|
${optionalString cfg.verylowmem "verylowmem"}
|
||||||
${optionalString (cfg.maxbw != null) ("maxbw "+toString cfg.maxbw)}
|
${optionalString (cfg.maxbw != null) "maxbw ${toString cfg.maxbw}"}
|
||||||
${optionalString (cfg.maxbwRateUp != null) ("maxbw-rate-up "+toString cfg.maxbwRateUp)}
|
${optionalString (cfg.maxbwRateUp != null) "maxbw-rate-up ${toString cfg.maxbwRateUp}"}
|
||||||
${optionalString (cfg.maxbwRateDown != null) ("maxbw-rate-down "+toString cfg.maxbwRateDown)}
|
${optionalString (cfg.maxbwRateDown != null) "maxbw-rate-down ${toString cfg.maxbwRateDown}"}
|
||||||
'';
|
'';
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
@ -60,34 +60,13 @@ in
|
|||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
cachedir = mkOption {
|
|
||||||
type = types.nullOr types.path;
|
|
||||||
default = "/var/cache/tarsnap";
|
|
||||||
description = ''
|
|
||||||
The cache allows tarsnap to identify previously stored data
|
|
||||||
blocks, reducing archival time and bandwidth usage.
|
|
||||||
|
|
||||||
Should the cache become desynchronized or corrupted, tarsnap
|
|
||||||
will refuse to run until you manually rebuild the cache with
|
|
||||||
<command>tarsnap --fsck</command>.
|
|
||||||
|
|
||||||
Note that each individual archive (specified below) has its own cache
|
|
||||||
directory specified under <literal>cachedir</literal>; this is because
|
|
||||||
tarsnap locks the cache during backups, meaning multiple services
|
|
||||||
archives cannot be backed up concurrently or overlap with a shared
|
|
||||||
cache.
|
|
||||||
|
|
||||||
Set to <literal>null</literal> to disable caching.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
archives = mkOption {
|
archives = mkOption {
|
||||||
type = types.attrsOf (types.submodule (
|
type = types.attrsOf (types.submodule ({ config, ... }:
|
||||||
{
|
{
|
||||||
options = {
|
options = {
|
||||||
keyfile = mkOption {
|
keyfile = mkOption {
|
||||||
type = types.str;
|
type = types.str;
|
||||||
default = config.services.tarsnap.keyfile;
|
default = gcfg.keyfile;
|
||||||
description = ''
|
description = ''
|
||||||
Set a specific keyfile for this archive. This defaults to
|
Set a specific keyfile for this archive. This defaults to
|
||||||
<literal>"/root/tarsnap.key"</literal> if left unspecified.
|
<literal>"/root/tarsnap.key"</literal> if left unspecified.
|
||||||
@ -107,6 +86,21 @@ in
|
|||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
cachedir = mkOption {
|
||||||
|
type = types.nullOr types.path;
|
||||||
|
default = "/var/cache/tarsnap/${utils.escapeSystemdPath config.keyfile}";
|
||||||
|
description = ''
|
||||||
|
The cache allows tarsnap to identify previously stored data
|
||||||
|
blocks, reducing archival time and bandwidth usage.
|
||||||
|
|
||||||
|
Should the cache become desynchronized or corrupted, tarsnap
|
||||||
|
will refuse to run until you manually rebuild the cache with
|
||||||
|
<command>tarsnap --fsck</command>.
|
||||||
|
|
||||||
|
Set to <literal>null</literal> to disable caching.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
nodump = mkOption {
|
nodump = mkOption {
|
||||||
type = types.bool;
|
type = types.bool;
|
||||||
default = true;
|
default = true;
|
||||||
@ -262,8 +256,8 @@ in
|
|||||||
archive names are suffixed by a 1 second resolution timestamp.
|
archive names are suffixed by a 1 second resolution timestamp.
|
||||||
|
|
||||||
For each member of the set is created a timer which triggers the
|
For each member of the set is created a timer which triggers the
|
||||||
instanced <literal>tarsnap@</literal> service unit. You may use
|
instanced <literal>tarsnap-archive-name</literal> service unit. You may use
|
||||||
<command>systemctl start tarsnap@archive-name</command> to
|
<command>systemctl start tarsnap-archive-name</command> to
|
||||||
manually trigger creation of <literal>archive-name</literal> at
|
manually trigger creation of <literal>archive-name</literal> at
|
||||||
any time.
|
any time.
|
||||||
'';
|
'';
|
||||||
@ -271,63 +265,73 @@ in
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf gcfg.enable {
|
||||||
assertions =
|
assertions =
|
||||||
(mapAttrsToList (name: cfg:
|
(mapAttrsToList (name: cfg:
|
||||||
{ assertion = cfg.directories != [];
|
{ assertion = cfg.directories != [];
|
||||||
message = "Must specify paths for tarsnap to back up";
|
message = "Must specify paths for tarsnap to back up";
|
||||||
}) cfg.archives) ++
|
}) gcfg.archives) ++
|
||||||
(mapAttrsToList (name: cfg:
|
(mapAttrsToList (name: cfg:
|
||||||
{ assertion = !(cfg.lowmem && cfg.verylowmem);
|
{ assertion = !(cfg.lowmem && cfg.verylowmem);
|
||||||
message = "You cannot set both lowmem and verylowmem";
|
message = "You cannot set both lowmem and verylowmem";
|
||||||
}) cfg.archives);
|
}) gcfg.archives);
|
||||||
|
|
||||||
systemd.services."tarsnap@" = {
|
systemd.services =
|
||||||
description = "Tarsnap archive '%i'";
|
mapAttrs' (name: cfg: nameValuePair "tarsnap-${name}" {
|
||||||
|
description = "Tarsnap archive '${name}'";
|
||||||
requires = [ "network-online.target" ];
|
requires = [ "network-online.target" ];
|
||||||
after = [ "network-online.target" ];
|
after = [ "network-online.target" ];
|
||||||
|
|
||||||
path = [ pkgs.iputils pkgs.tarsnap pkgs.coreutils ];
|
path = [ pkgs.iputils pkgs.tarsnap pkgs.utillinux ];
|
||||||
|
|
||||||
# In order for the persistent tarsnap timer to work reliably, we have to
|
# In order for the persistent tarsnap timer to work reliably, we have to
|
||||||
# make sure that the tarsnap server is reachable after systemd starts up
|
# make sure that the tarsnap server is reachable after systemd starts up
|
||||||
# the service - therefore we sleep in a loop until we can ping the
|
# the service - therefore we sleep in a loop until we can ping the
|
||||||
# endpoint.
|
# endpoint.
|
||||||
preStart = "while ! ping -q -c 1 v1-0-0-server.tarsnap.com &> /dev/null; do sleep 3; done";
|
preStart = ''
|
||||||
scriptArgs = "%i";
|
while ! ping -q -c 1 v1-0-0-server.tarsnap.com &> /dev/null; do sleep 3; done
|
||||||
script = ''
|
|
||||||
mkdir -p -m 0755 ${dirOf cfg.cachedir}
|
|
||||||
mkdir -p -m 0700 ${cfg.cachedir}
|
|
||||||
chown root:root ${cfg.cachedir}
|
|
||||||
chmod 0700 ${cfg.cachedir}
|
|
||||||
mkdir -p -m 0700 ${cfg.cachedir}/$1
|
|
||||||
DIRS=`cat /etc/tarsnap/$1.dirs`
|
|
||||||
exec tarsnap --configfile /etc/tarsnap/$1.conf -c -f $1-$(date +"%Y%m%d%H%M%S") $DIRS
|
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
script =
|
||||||
|
let run = ''tarsnap --configfile "/etc/tarsnap/${name}.conf" -c -f "${name}-$(date +"%Y%m%d%H%M%S")" ${concatStringsSep " " cfg.directories}'';
|
||||||
|
in if (cfg.cachedir != null) then ''
|
||||||
|
mkdir -p ${cfg.cachedir}
|
||||||
|
chmod 0700 ${cfg.cachedir}
|
||||||
|
|
||||||
|
( flock 9
|
||||||
|
if [ ! -e ${cfg.cachedir}/firstrun ]; then
|
||||||
|
( flock 10
|
||||||
|
flock -u 9
|
||||||
|
tarsnap --configfile "/etc/tarsnap/${name}.conf" --fsck
|
||||||
|
flock 9
|
||||||
|
) 10>${cfg.cachedir}/firstrun
|
||||||
|
fi
|
||||||
|
) 9>${cfg.cachedir}/lockf
|
||||||
|
|
||||||
|
exec flock ${cfg.cachedir}/firstrun ${run}
|
||||||
|
'' else "exec ${run}";
|
||||||
|
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
|
Type = "oneshot";
|
||||||
IOSchedulingClass = "idle";
|
IOSchedulingClass = "idle";
|
||||||
NoNewPrivileges = "true";
|
NoNewPrivileges = "true";
|
||||||
CapabilityBoundingSet = "CAP_DAC_READ_SEARCH";
|
CapabilityBoundingSet = [ "CAP_DAC_READ_SEARCH" ];
|
||||||
PermissionsStartOnly = "true";
|
PermissionsStartOnly = "true";
|
||||||
};
|
};
|
||||||
};
|
}) gcfg.archives;
|
||||||
|
|
||||||
# Note: the timer must be Persistent=true, so that systemd will start it even
|
# Note: the timer must be Persistent=true, so that systemd will start it even
|
||||||
# if e.g. your laptop was asleep while the latest interval occurred.
|
# if e.g. your laptop was asleep while the latest interval occurred.
|
||||||
systemd.timers = mapAttrs' (name: cfg: nameValuePair "tarsnap@${name}"
|
systemd.timers = mapAttrs' (name: cfg: nameValuePair "tarsnap-${name}"
|
||||||
{ timerConfig.OnCalendar = cfg.period;
|
{ timerConfig.OnCalendar = cfg.period;
|
||||||
timerConfig.Persistent = "true";
|
timerConfig.Persistent = "true";
|
||||||
wantedBy = [ "timers.target" ];
|
wantedBy = [ "timers.target" ];
|
||||||
}) cfg.archives;
|
}) gcfg.archives;
|
||||||
|
|
||||||
environment.etc =
|
environment.etc =
|
||||||
(mapAttrs' (name: cfg: nameValuePair "tarsnap/${name}.conf"
|
mapAttrs' (name: cfg: nameValuePair "tarsnap/${name}.conf"
|
||||||
{ text = configFile name cfg;
|
{ text = configFile name cfg;
|
||||||
}) cfg.archives) //
|
}) gcfg.archives;
|
||||||
(mapAttrs' (name: cfg: nameValuePair "tarsnap/${name}.dirs"
|
|
||||||
{ text = concatStringsSep " " cfg.directories;
|
|
||||||
}) cfg.archives);
|
|
||||||
|
|
||||||
environment.systemPackages = [ pkgs.tarsnap ];
|
environment.systemPackages = [ pkgs.tarsnap ];
|
||||||
};
|
};
|
||||||
|
88
nixos/modules/services/computing/boinc/client.nix
Normal file
88
nixos/modules/services/computing/boinc/client.nix
Normal file
@ -0,0 +1,88 @@
|
|||||||
|
{config, lib, pkgs, ...}:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.services.boinc;
|
||||||
|
allowRemoteGuiRpcFlag = optionalString cfg.allowRemoteGuiRpc "--allow_remote_gui_rpc";
|
||||||
|
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.services.boinc = {
|
||||||
|
enable = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = false;
|
||||||
|
example = true;
|
||||||
|
description = ''
|
||||||
|
Whether to enable the BOINC distributed computing client. If this
|
||||||
|
option is set to true, the boinc_client daemon will be run as a
|
||||||
|
background service. The boinccmd command can be used to control the
|
||||||
|
daemon.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
package = mkOption {
|
||||||
|
type = types.package;
|
||||||
|
default = pkgs.boinc;
|
||||||
|
defaultText = "pkgs.boinc";
|
||||||
|
description = ''
|
||||||
|
Which BOINC package to use.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
dataDir = mkOption {
|
||||||
|
type = types.path;
|
||||||
|
default = "/var/lib/boinc";
|
||||||
|
description = ''
|
||||||
|
The directory in which to store BOINC's configuration and data files.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
allowRemoteGuiRpc = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = false;
|
||||||
|
example = true;
|
||||||
|
description = ''
|
||||||
|
If set to true, any remote host can connect to and control this BOINC
|
||||||
|
client (subject to password authentication). If instead set to false,
|
||||||
|
only the hosts listed in <varname>dataDir</varname>/remote_hosts.cfg will be allowed to
|
||||||
|
connect.
|
||||||
|
|
||||||
|
See also: <ulink url="http://boinc.berkeley.edu/wiki/Controlling_BOINC_remotely#Remote_access"/>
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
environment.systemPackages = [cfg.package];
|
||||||
|
|
||||||
|
users.users.boinc = {
|
||||||
|
createHome = false;
|
||||||
|
description = "BOINC Client";
|
||||||
|
home = cfg.dataDir;
|
||||||
|
isSystemUser = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.services.boinc = {
|
||||||
|
description = "BOINC Client";
|
||||||
|
after = ["network.target" "local-fs.target"];
|
||||||
|
wantedBy = ["multi-user.target"];
|
||||||
|
preStart = ''
|
||||||
|
mkdir -p ${cfg.dataDir}
|
||||||
|
chown boinc ${cfg.dataDir}
|
||||||
|
'';
|
||||||
|
script = ''
|
||||||
|
${cfg.package}/bin/boinc_client --dir ${cfg.dataDir} --redirectio ${allowRemoteGuiRpcFlag}
|
||||||
|
'';
|
||||||
|
serviceConfig = {
|
||||||
|
PermissionsStartOnly = true; # preStart must be run as root
|
||||||
|
User = "boinc";
|
||||||
|
Nice = 10;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
maintainers = with lib.maintainers; [kierdavis];
|
||||||
|
};
|
||||||
|
}
|
@ -37,6 +37,7 @@ in {
|
|||||||
|
|
||||||
packages = mkOption {
|
packages = mkOption {
|
||||||
default = [ pkgs.stdenv pkgs.jre pkgs.git config.programs.ssh.package pkgs.nix ];
|
default = [ pkgs.stdenv pkgs.jre pkgs.git config.programs.ssh.package pkgs.nix ];
|
||||||
|
defaultText = "[ pkgs.stdenv pkgs.jre pkgs.git config.programs.ssh.package pkgs.nix ]";
|
||||||
type = types.listOf types.package;
|
type = types.listOf types.package;
|
||||||
description = ''
|
description = ''
|
||||||
Packages to add to PATH for the Go.CD agent process.
|
Packages to add to PATH for the Go.CD agent process.
|
||||||
|
@ -68,6 +68,7 @@ in {
|
|||||||
|
|
||||||
packages = mkOption {
|
packages = mkOption {
|
||||||
default = [ pkgs.stdenv pkgs.jre pkgs.git config.programs.ssh.package pkgs.nix ];
|
default = [ pkgs.stdenv pkgs.jre pkgs.git config.programs.ssh.package pkgs.nix ];
|
||||||
|
defaultText = "[ pkgs.stdenv pkgs.jre pkgs.git config.programs.ssh.package pkgs.nix ]";
|
||||||
type = types.listOf types.package;
|
type = types.listOf types.package;
|
||||||
description = ''
|
description = ''
|
||||||
Packages to add to PATH for the Go.CD server's process.
|
Packages to add to PATH for the Go.CD server's process.
|
||||||
|
202
nixos/modules/services/databases/riak-cs.nix
Normal file
202
nixos/modules/services/databases/riak-cs.nix
Normal file
@ -0,0 +1,202 @@
|
|||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
let
|
||||||
|
|
||||||
|
cfg = config.services.riak-cs;
|
||||||
|
|
||||||
|
in
|
||||||
|
|
||||||
|
{
|
||||||
|
|
||||||
|
###### interface
|
||||||
|
|
||||||
|
options = {
|
||||||
|
|
||||||
|
services.riak-cs = {
|
||||||
|
|
||||||
|
enable = mkEnableOption "riak-cs";
|
||||||
|
|
||||||
|
package = mkOption {
|
||||||
|
type = types.package;
|
||||||
|
default = pkgs.riak-cs;
|
||||||
|
defaultText = "pkgs.riak-cs";
|
||||||
|
example = literalExample "pkgs.riak-cs";
|
||||||
|
description = ''
|
||||||
|
Riak package to use.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
nodeName = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "riak-cs@127.0.0.1";
|
||||||
|
description = ''
|
||||||
|
Name of the Erlang node.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
anonymousUserCreation = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = false;
|
||||||
|
description = ''
|
||||||
|
Anonymous user creation.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
riakHost = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "127.0.0.1:8087";
|
||||||
|
description = ''
|
||||||
|
Name of riak hosting service.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
listener = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "127.0.0.1:8080";
|
||||||
|
description = ''
|
||||||
|
Name of Riak CS listening service.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
stanchionHost = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "127.0.0.1:8085";
|
||||||
|
description = ''
|
||||||
|
Name of stanchion hosting service.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
stanchionSsl = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = true;
|
||||||
|
description = ''
|
||||||
|
Tell stanchion to use SSL.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
distributedCookie = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "riak";
|
||||||
|
description = ''
|
||||||
|
Cookie for distributed node communication. All nodes in the
|
||||||
|
same cluster should use the same cookie or they will not be able to
|
||||||
|
communicate.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
dataDir = mkOption {
|
||||||
|
type = types.path;
|
||||||
|
default = "/var/db/riak-cs";
|
||||||
|
description = ''
|
||||||
|
Data directory for Riak CS.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
logDir = mkOption {
|
||||||
|
type = types.path;
|
||||||
|
default = "/var/log/riak-cs";
|
||||||
|
description = ''
|
||||||
|
Log directory for Riak CS.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
extraConfig = mkOption {
|
||||||
|
type = types.lines;
|
||||||
|
default = "";
|
||||||
|
description = ''
|
||||||
|
Additional text to be appended to <filename>riak-cs.conf</filename>.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
extraAdvancedConfig = mkOption {
|
||||||
|
type = types.lines;
|
||||||
|
default = "";
|
||||||
|
description = ''
|
||||||
|
Additional text to be appended to <filename>advanced.config</filename>.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
###### implementation
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
|
||||||
|
environment.systemPackages = [ cfg.package ];
|
||||||
|
environment.etc."riak-cs/riak-cs.conf".text = ''
|
||||||
|
nodename = ${cfg.nodeName}
|
||||||
|
distributed_cookie = ${cfg.distributedCookie}
|
||||||
|
|
||||||
|
platform_log_dir = ${cfg.logDir}
|
||||||
|
|
||||||
|
riak_host = ${cfg.riakHost}
|
||||||
|
listener = ${cfg.listener}
|
||||||
|
stanchion_host = ${cfg.stanchionHost}
|
||||||
|
|
||||||
|
anonymous_user_creation = ${if cfg.anonymousUserCreation then "on" else "off"}
|
||||||
|
|
||||||
|
${cfg.extraConfig}
|
||||||
|
'';
|
||||||
|
|
||||||
|
environment.etc."riak-cs/advanced.config".text = ''
|
||||||
|
${cfg.extraAdvancedConfig}
|
||||||
|
'';
|
||||||
|
|
||||||
|
users.extraUsers.riak-cs = {
|
||||||
|
name = "riak-cs";
|
||||||
|
uid = config.ids.uids.riak-cs;
|
||||||
|
group = "riak";
|
||||||
|
description = "Riak CS server user";
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.services.riak-cs = {
|
||||||
|
description = "Riak CS Server";
|
||||||
|
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
after = [ "network.target" ];
|
||||||
|
|
||||||
|
path = [
|
||||||
|
pkgs.utillinux # for `logger`
|
||||||
|
pkgs.bash
|
||||||
|
];
|
||||||
|
|
||||||
|
environment.HOME = "${cfg.dataDir}";
|
||||||
|
environment.RIAK_CS_DATA_DIR = "${cfg.dataDir}";
|
||||||
|
environment.RIAK_CS_LOG_DIR = "${cfg.logDir}";
|
||||||
|
environment.RIAK_CS_ETC_DIR = "/etc/riak";
|
||||||
|
|
||||||
|
preStart = ''
|
||||||
|
if ! test -e ${cfg.logDir}; then
|
||||||
|
mkdir -m 0755 -p ${cfg.logDir}
|
||||||
|
chown -R riak-cs ${cfg.logDir}
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! test -e ${cfg.dataDir}; then
|
||||||
|
mkdir -m 0700 -p ${cfg.dataDir}
|
||||||
|
chown -R riak-cs ${cfg.dataDir}
|
||||||
|
fi
|
||||||
|
'';
|
||||||
|
|
||||||
|
serviceConfig = {
|
||||||
|
ExecStart = "${cfg.package}/bin/riak-cs console";
|
||||||
|
ExecStop = "${cfg.package}/bin/riak-cs stop";
|
||||||
|
StandardInput = "tty";
|
||||||
|
User = "riak-cs";
|
||||||
|
Group = "riak-cs";
|
||||||
|
PermissionsStartOnly = true;
|
||||||
|
# Give Riak a decent amount of time to clean up.
|
||||||
|
TimeoutStopSec = 120;
|
||||||
|
LimitNOFILE = 65536;
|
||||||
|
};
|
||||||
|
|
||||||
|
unitConfig.RequiresMountsFor = [
|
||||||
|
"${cfg.dataDir}"
|
||||||
|
"${cfg.logDir}"
|
||||||
|
"/etc/riak"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
@ -20,6 +20,8 @@ in
|
|||||||
|
|
||||||
package = mkOption {
|
package = mkOption {
|
||||||
type = types.package;
|
type = types.package;
|
||||||
|
default = pkgs.riak;
|
||||||
|
defaultText = "pkgs.riak";
|
||||||
example = literalExample "pkgs.riak";
|
example = literalExample "pkgs.riak";
|
||||||
description = ''
|
description = ''
|
||||||
Riak package to use.
|
Riak package to use.
|
||||||
@ -68,6 +70,14 @@ in
|
|||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
extraAdvancedConfig = mkOption {
|
||||||
|
type = types.lines;
|
||||||
|
default = "";
|
||||||
|
description = ''
|
||||||
|
Additional text to be appended to <filename>advanced.config</filename>.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
@ -88,6 +98,10 @@ in
|
|||||||
${cfg.extraConfig}
|
${cfg.extraConfig}
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
environment.etc."riak/advanced.config".text = ''
|
||||||
|
${cfg.extraAdvancedConfig}
|
||||||
|
'';
|
||||||
|
|
||||||
users.extraUsers.riak = {
|
users.extraUsers.riak = {
|
||||||
name = "riak";
|
name = "riak";
|
||||||
uid = config.ids.uids.riak;
|
uid = config.ids.uids.riak;
|
||||||
|
212
nixos/modules/services/databases/stanchion.nix
Normal file
212
nixos/modules/services/databases/stanchion.nix
Normal file
@ -0,0 +1,212 @@
|
|||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
let
|
||||||
|
|
||||||
|
cfg = config.services.stanchion;
|
||||||
|
|
||||||
|
in
|
||||||
|
|
||||||
|
{
|
||||||
|
|
||||||
|
###### interface
|
||||||
|
|
||||||
|
options = {
|
||||||
|
|
||||||
|
services.stanchion = {
|
||||||
|
|
||||||
|
enable = mkEnableOption "stanchion";
|
||||||
|
|
||||||
|
package = mkOption {
|
||||||
|
type = types.package;
|
||||||
|
default = pkgs.stanchion;
|
||||||
|
defaultText = "pkgs.stanchion";
|
||||||
|
example = literalExample "pkgs.stanchion";
|
||||||
|
description = ''
|
||||||
|
Stanchion package to use.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
nodeName = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "stanchion@127.0.0.1";
|
||||||
|
description = ''
|
||||||
|
Name of the Erlang node.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
adminKey = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "";
|
||||||
|
description = ''
|
||||||
|
Name of admin user.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
adminSecret = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "";
|
||||||
|
description = ''
|
||||||
|
Name of admin secret
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
riakHost = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "127.0.0.1:8087";
|
||||||
|
description = ''
|
||||||
|
Name of riak hosting service.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
listener = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "127.0.0.1:8085";
|
||||||
|
description = ''
|
||||||
|
Name of Riak CS listening service.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
stanchionHost = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "127.0.0.1:8085";
|
||||||
|
description = ''
|
||||||
|
Name of stanchion hosting service.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
stanchionSsl = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = true;
|
||||||
|
description = ''
|
||||||
|
Tell stanchion to use SSL.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
distributedCookie = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "riak";
|
||||||
|
description = ''
|
||||||
|
Cookie for distributed node communication. All nodes in the
|
||||||
|
same cluster should use the same cookie or they will not be able to
|
||||||
|
communicate.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
dataDir = mkOption {
|
||||||
|
type = types.path;
|
||||||
|
default = "/var/db/stanchion";
|
||||||
|
description = ''
|
||||||
|
Data directory for Stanchion.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
logDir = mkOption {
|
||||||
|
type = types.path;
|
||||||
|
default = "/var/log/stanchion";
|
||||||
|
description = ''
|
||||||
|
Log directory for Stanchino.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
extraConfig = mkOption {
|
||||||
|
type = types.lines;
|
||||||
|
default = "";
|
||||||
|
description = ''
|
||||||
|
Additional text to be appended to <filename>stanchion.conf</filename>.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
###### implementation
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
|
||||||
|
environment.systemPackages = [ cfg.package ];
|
||||||
|
|
||||||
|
environment.etc."stanchion/advanced.config".text = ''
|
||||||
|
[{stanchion, []}].
|
||||||
|
'';
|
||||||
|
|
||||||
|
environment.etc."stanchion/stanchion.conf".text = ''
|
||||||
|
listener = ${cfg.listener}
|
||||||
|
|
||||||
|
riak_host = ${cfg.riakHost}
|
||||||
|
|
||||||
|
${optionalString (cfg.adminKey == "") "#"} admin.key=${optionalString (cfg.adminKey != "") cfg.adminKey}
|
||||||
|
${optionalString (cfg.adminSecret == "") "#"} admin.secret=${optionalString (cfg.adminSecret != "") cfg.adminSecret}
|
||||||
|
|
||||||
|
platform_bin_dir = ${pkgs.stanchion}/bin
|
||||||
|
platform_data_dir = ${cfg.dataDir}
|
||||||
|
platform_etc_dir = /etc/stanchion
|
||||||
|
platform_lib_dir = ${pkgs.stanchion}/lib
|
||||||
|
platform_log_dir = ${cfg.logDir}
|
||||||
|
|
||||||
|
nodename = ${cfg.nodeName}
|
||||||
|
|
||||||
|
distributed_cookie = ${cfg.distributedCookie}
|
||||||
|
|
||||||
|
stanchion_ssl=${if cfg.stanchionSsl then "on" else "off"}
|
||||||
|
|
||||||
|
${cfg.extraConfig}
|
||||||
|
'';
|
||||||
|
|
||||||
|
users.extraUsers.stanchion = {
|
||||||
|
name = "stanchion";
|
||||||
|
uid = config.ids.uids.stanchion;
|
||||||
|
group = "stanchion";
|
||||||
|
description = "Stanchion server user";
|
||||||
|
};
|
||||||
|
|
||||||
|
users.extraGroups.stanchion.gid = config.ids.gids.stanchion;
|
||||||
|
|
||||||
|
systemd.services.stanchion = {
|
||||||
|
description = "Stanchion Server";
|
||||||
|
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
after = [ "network.target" ];
|
||||||
|
|
||||||
|
path = [
|
||||||
|
pkgs.utillinux # for `logger`
|
||||||
|
pkgs.bash
|
||||||
|
];
|
||||||
|
|
||||||
|
environment.HOME = "${cfg.dataDir}";
|
||||||
|
environment.STANCHION_DATA_DIR = "${cfg.dataDir}";
|
||||||
|
environment.STANCHION_LOG_DIR = "${cfg.logDir}";
|
||||||
|
environment.STANCHION_ETC_DIR = "/etc/stanchion";
|
||||||
|
|
||||||
|
preStart = ''
|
||||||
|
if ! test -e ${cfg.logDir}; then
|
||||||
|
mkdir -m 0755 -p ${cfg.logDir}
|
||||||
|
chown -R stanchion:stanchion ${cfg.logDir}
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! test -e ${cfg.dataDir}; then
|
||||||
|
mkdir -m 0700 -p ${cfg.dataDir}
|
||||||
|
chown -R stanchion:stanchion ${cfg.dataDir}
|
||||||
|
fi
|
||||||
|
'';
|
||||||
|
|
||||||
|
serviceConfig = {
|
||||||
|
ExecStart = "${cfg.package}/bin/stanchion console";
|
||||||
|
ExecStop = "${cfg.package}/bin/stanchion stop";
|
||||||
|
StandardInput = "tty";
|
||||||
|
User = "stanchion";
|
||||||
|
Group = "stanchion";
|
||||||
|
PermissionsStartOnly = true;
|
||||||
|
# Give Stanchion a decent amount of time to clean up.
|
||||||
|
TimeoutStopSec = 120;
|
||||||
|
LimitNOFILE = 65536;
|
||||||
|
};
|
||||||
|
|
||||||
|
unitConfig.RequiresMountsFor = [
|
||||||
|
"${cfg.dataDir}"
|
||||||
|
"${cfg.logDir}"
|
||||||
|
"/etc/stanchion"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
@ -7,9 +7,35 @@ let
|
|||||||
pkg = if config.hardware.sane.snapshot
|
pkg = if config.hardware.sane.snapshot
|
||||||
then pkgs.sane-backends-git
|
then pkgs.sane-backends-git
|
||||||
else pkgs.sane-backends;
|
else pkgs.sane-backends;
|
||||||
backends = [ pkg ] ++ config.hardware.sane.extraBackends;
|
|
||||||
|
sanedConf = pkgs.writeTextFile {
|
||||||
|
name = "saned.conf";
|
||||||
|
destination = "/etc/sane.d/saned.conf";
|
||||||
|
text = ''
|
||||||
|
localhost
|
||||||
|
${config.services.saned.extraConfig}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
netConf = pkgs.writeTextFile {
|
||||||
|
name = "net.conf";
|
||||||
|
destination = "/etc/sane.d/net.conf";
|
||||||
|
text = ''
|
||||||
|
${lib.optionalString config.services.saned.enable "localhost"}
|
||||||
|
${config.hardware.sane.netConf}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
env = {
|
||||||
|
SANE_CONFIG_DIR = config.hardware.sane.configDir;
|
||||||
|
LD_LIBRARY_PATH = [ "${saneConfig}/lib/sane" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
backends = [ pkg netConf ] ++ optional config.services.saned.enable sanedConf ++ config.hardware.sane.extraBackends;
|
||||||
saneConfig = pkgs.mkSaneConfig { paths = backends; };
|
saneConfig = pkgs.mkSaneConfig { paths = backends; };
|
||||||
|
|
||||||
|
enabled = config.hardware.sane.enable || config.services.saned.enable;
|
||||||
|
|
||||||
in
|
in
|
||||||
|
|
||||||
{
|
{
|
||||||
@ -51,27 +77,86 @@ in
|
|||||||
|
|
||||||
hardware.sane.configDir = mkOption {
|
hardware.sane.configDir = mkOption {
|
||||||
type = types.string;
|
type = types.string;
|
||||||
|
internal = true;
|
||||||
description = "The value of SANE_CONFIG_DIR.";
|
description = "The value of SANE_CONFIG_DIR.";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
hardware.sane.netConf = mkOption {
|
||||||
|
type = types.lines;
|
||||||
|
default = "";
|
||||||
|
example = "192.168.0.16";
|
||||||
|
description = ''
|
||||||
|
Network hosts that should be probed for remote scanners.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
services.saned.enable = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = false;
|
||||||
|
description = ''
|
||||||
|
Enable saned network daemon for remote connection to scanners.
|
||||||
|
|
||||||
|
saned would be runned from <literal>scanner</literal> user; to allow
|
||||||
|
access to hardware that doesn't have <literal>scanner</literal> group
|
||||||
|
you should add needed groups to this user.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
services.saned.extraConfig = mkOption {
|
||||||
|
type = types.lines;
|
||||||
|
default = "";
|
||||||
|
example = "192.168.0.0/24";
|
||||||
|
description = ''
|
||||||
|
Extra saned configuration lines.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
###### implementation
|
###### implementation
|
||||||
|
|
||||||
config = mkIf config.hardware.sane.enable {
|
config = mkMerge [
|
||||||
|
(mkIf enabled {
|
||||||
hardware.sane.configDir = mkDefault "${saneConfig}/etc/sane.d";
|
hardware.sane.configDir = mkDefault "${saneConfig}/etc/sane.d";
|
||||||
|
|
||||||
environment.systemPackages = backends;
|
environment.systemPackages = backends;
|
||||||
environment.sessionVariables = {
|
environment.sessionVariables = env;
|
||||||
SANE_CONFIG_DIR = config.hardware.sane.configDir;
|
|
||||||
LD_LIBRARY_PATH = [ "${saneConfig}/lib/sane" ];
|
|
||||||
};
|
|
||||||
services.udev.packages = backends;
|
services.udev.packages = backends;
|
||||||
|
|
||||||
users.extraGroups."scanner".gid = config.ids.gids.scanner;
|
users.extraGroups."scanner".gid = config.ids.gids.scanner;
|
||||||
|
})
|
||||||
|
|
||||||
|
(mkIf config.services.saned.enable {
|
||||||
|
networking.firewall.connectionTrackingModules = [ "sane" ];
|
||||||
|
|
||||||
|
systemd.services."saned@" = {
|
||||||
|
description = "Scanner Service";
|
||||||
|
environment = mapAttrs (name: val: toString val) env;
|
||||||
|
serviceConfig = {
|
||||||
|
User = "scanner";
|
||||||
|
Group = "scanner";
|
||||||
|
ExecStart = "${pkg}/bin/saned";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
systemd.sockets.saned = {
|
||||||
|
description = "saned incoming socket";
|
||||||
|
wantedBy = [ "sockets.target" ];
|
||||||
|
listenStreams = [ "0.0.0.0:6566" "[::]:6566" ];
|
||||||
|
socketConfig = {
|
||||||
|
# saned needs to distinguish between IPv4 and IPv6 to open matching data sockets.
|
||||||
|
BindIPv6Only = "ipv6-only";
|
||||||
|
Accept = true;
|
||||||
|
MaxConnections = 1;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
users.extraUsers."scanner" = {
|
||||||
|
uid = config.ids.uids.scanner;
|
||||||
|
group = "scanner";
|
||||||
|
};
|
||||||
|
})
|
||||||
|
];
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -25,7 +25,8 @@ in
|
|||||||
DBs = mkOption {
|
DBs = mkOption {
|
||||||
type = types.listOf types.package;
|
type = types.listOf types.package;
|
||||||
default = with pkgs.dictdDBs; [ wiktionary wordnet ];
|
default = with pkgs.dictdDBs; [ wiktionary wordnet ];
|
||||||
example = [ pkgs.dictdDBs.nld2eng ];
|
defaultText = "with pkgs.dictdDBs; [ wiktionary wordnet ]";
|
||||||
|
example = literalExample "[ pkgs.dictdDBs.nld2eng ]";
|
||||||
description = ''List of databases to make available.'';
|
description = ''List of databases to make available.'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -41,6 +41,7 @@ in
|
|||||||
type = types.path;
|
type = types.path;
|
||||||
description = "The Disnix package";
|
description = "The Disnix package";
|
||||||
default = pkgs.disnix;
|
default = pkgs.disnix;
|
||||||
|
defaultText = "pkgs.disnix";
|
||||||
};
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
@ -164,18 +164,21 @@ in {
|
|||||||
packages.gitlab = mkOption {
|
packages.gitlab = mkOption {
|
||||||
type = types.package;
|
type = types.package;
|
||||||
default = pkgs.gitlab;
|
default = pkgs.gitlab;
|
||||||
|
defaultText = "pkgs.gitlab";
|
||||||
description = "Reference to the gitlab package";
|
description = "Reference to the gitlab package";
|
||||||
};
|
};
|
||||||
|
|
||||||
packages.gitlab-shell = mkOption {
|
packages.gitlab-shell = mkOption {
|
||||||
type = types.package;
|
type = types.package;
|
||||||
default = pkgs.gitlab-shell;
|
default = pkgs.gitlab-shell;
|
||||||
|
defaultText = "pkgs.gitlab-shell";
|
||||||
description = "Reference to the gitlab-shell package";
|
description = "Reference to the gitlab-shell package";
|
||||||
};
|
};
|
||||||
|
|
||||||
packages.gitlab-workhorse = mkOption {
|
packages.gitlab-workhorse = mkOption {
|
||||||
type = types.package;
|
type = types.package;
|
||||||
default = pkgs.gitlab-workhorse;
|
default = pkgs.gitlab-workhorse;
|
||||||
|
defaultText = "pkgs.gitlab-workhorse";
|
||||||
description = "Reference to the gitlab-workhorse package";
|
description = "Reference to the gitlab-workhorse package";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -6,20 +6,21 @@ let
|
|||||||
|
|
||||||
cfg = config.services.parsoid;
|
cfg = config.services.parsoid;
|
||||||
|
|
||||||
conf = ''
|
confTree = {
|
||||||
exports.setup = function( parsoidConfig ) {
|
worker_heartbeat_timeout = 300000;
|
||||||
${toString (mapAttrsToList (name: str: "parsoidConfig.setInterwiki('${name}', '${str}');") cfg.interwikis)}
|
logging = { level = "info"; };
|
||||||
|
services = [{
|
||||||
parsoidConfig.serverInterface = "${cfg.interface}";
|
module = "lib/index.js";
|
||||||
parsoidConfig.serverPort = ${toString cfg.port};
|
entrypoint = "apiServiceWorker";
|
||||||
|
conf = {
|
||||||
parsoidConfig.useSelser = true;
|
mwApis = map (x: if isAttrs x then x else { uri = x; }) cfg.wikis;
|
||||||
|
serverInterface = cfg.interface;
|
||||||
${cfg.extraConfig}
|
serverPort = cfg.port;
|
||||||
|
};
|
||||||
|
}];
|
||||||
};
|
};
|
||||||
'';
|
|
||||||
|
|
||||||
confFile = builtins.toFile "localsettings.js" conf;
|
confFile = pkgs.writeText "config.yml" (builtins.toJSON (recursiveUpdate confTree cfg.extraConfig));
|
||||||
|
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
@ -38,9 +39,9 @@ in
|
|||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
interwikis = mkOption {
|
wikis = mkOption {
|
||||||
type = types.attrsOf types.str;
|
type = types.listOf (types.either types.str types.attrs);
|
||||||
example = { localhost = "http://localhost/api.php"; };
|
example = [ "http://localhost/api.php" ];
|
||||||
description = ''
|
description = ''
|
||||||
Used MediaWiki API endpoints.
|
Used MediaWiki API endpoints.
|
||||||
'';
|
'';
|
||||||
@ -71,8 +72,8 @@ in
|
|||||||
};
|
};
|
||||||
|
|
||||||
extraConfig = mkOption {
|
extraConfig = mkOption {
|
||||||
type = types.lines;
|
type = types.attrs;
|
||||||
default = "";
|
default = {};
|
||||||
description = ''
|
description = ''
|
||||||
Extra configuration to add to parsoid configuration.
|
Extra configuration to add to parsoid configuration.
|
||||||
'';
|
'';
|
||||||
|
@ -19,30 +19,21 @@ let
|
|||||||
type = types.str;
|
type = types.str;
|
||||||
description = "Public key at the opposite end of the tunnel.";
|
description = "Public key at the opposite end of the tunnel.";
|
||||||
};
|
};
|
||||||
hostname = mkOption {
|
|
||||||
default = "";
|
|
||||||
example = "foobar.hype";
|
|
||||||
type = types.str;
|
|
||||||
description = "Optional hostname to add to /etc/hosts; prevents reverse lookup failures.";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
# Additional /etc/hosts entries for peers with an associated hostname
|
# check for the required attributes, otherwise
|
||||||
cjdnsExtraHosts = import (pkgs.runCommand "cjdns-hosts" {}
|
# permit attributes not undefined here
|
||||||
# Generate a builder that produces an output usable as a Nix string value
|
checkPeers = x:
|
||||||
''
|
x // {
|
||||||
exec >$out
|
connectTo = mapAttrs
|
||||||
echo \'\'
|
(name: value:
|
||||||
${concatStringsSep "\n" (mapAttrsToList (k: v:
|
if !hasAttr "publicKey" value then abort "cjdns peer ${name} missing a publicKey" else
|
||||||
optionalString (v.hostname != "")
|
if !hasAttr "password" value then abort "cjdns peer ${name} missing a password" else
|
||||||
"echo $(${pkgs.cjdns}/bin/publictoip6 ${v.publicKey}) ${v.hostname}")
|
value
|
||||||
(cfg.ETHInterface.connectTo // cfg.UDPInterface.connectTo))}
|
)
|
||||||
echo \'\'
|
x.connectTo;
|
||||||
'');
|
};
|
||||||
|
|
||||||
parseModules = x:
|
|
||||||
x // { connectTo = mapAttrs (name: value: { inherit (value) password publicKey; }) x.connectTo; };
|
|
||||||
|
|
||||||
# would be nice to merge 'cfg' with a //,
|
# would be nice to merge 'cfg' with a //,
|
||||||
# but the json nesting is wacky.
|
# but the json nesting is wacky.
|
||||||
@ -53,8 +44,8 @@ let
|
|||||||
};
|
};
|
||||||
authorizedPasswords = map (p: { password = p; }) cfg.authorizedPasswords;
|
authorizedPasswords = map (p: { password = p; }) cfg.authorizedPasswords;
|
||||||
interfaces = {
|
interfaces = {
|
||||||
ETHInterface = if (cfg.ETHInterface.bind != "") then [ (parseModules cfg.ETHInterface) ] else [ ];
|
ETHInterface = if (cfg.ETHInterface.bind != "") then [ (checkPeers cfg.ETHInterface) ] else [ ];
|
||||||
UDPInterface = if (cfg.UDPInterface.bind != "") then [ (parseModules cfg.UDPInterface) ] else [ ];
|
UDPInterface = if (cfg.UDPInterface.bind != "") then [ (checkPeers cfg.UDPInterface) ] else [ ];
|
||||||
};
|
};
|
||||||
|
|
||||||
privateKey = "@CJDNS_PRIVATE_KEY@";
|
privateKey = "@CJDNS_PRIVATE_KEY@";
|
||||||
@ -134,11 +125,11 @@ in
|
|||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
connectTo = mkOption {
|
connectTo = mkOption {
|
||||||
type = types.attrsOf ( types.submodule ( connectToSubmodule ) );
|
type = types.attrsOf (types.attrsOf types.str);
|
||||||
default = { };
|
default = { };
|
||||||
example = {
|
example = {
|
||||||
"192.168.1.1:27313" = {
|
"192.168.1.1:27313" = {
|
||||||
hostname = "homer.hype";
|
user = "foobar";
|
||||||
password = "5kG15EfpdcKNX3f2GSQ0H1HC7yIfxoCoImnO5FHM";
|
password = "5kG15EfpdcKNX3f2GSQ0H1HC7yIfxoCoImnO5FHM";
|
||||||
publicKey = "371zpkgs8ss387tmr81q04mp0hg1skb51hw34vk1cq644mjqhup0.k";
|
publicKey = "371zpkgs8ss387tmr81q04mp0hg1skb51hw34vk1cq644mjqhup0.k";
|
||||||
};
|
};
|
||||||
@ -179,11 +170,11 @@ in
|
|||||||
};
|
};
|
||||||
|
|
||||||
connectTo = mkOption {
|
connectTo = mkOption {
|
||||||
type = types.attrsOf ( types.submodule ( connectToSubmodule ) );
|
type = types.attrsOf (types.attrsOf types.str);
|
||||||
default = { };
|
default = { };
|
||||||
example = {
|
example = {
|
||||||
"01:02:03:04:05:06" = {
|
"01:02:03:04:05:06" = {
|
||||||
hostname = "homer.hype";
|
user = "foobar";
|
||||||
password = "5kG15EfpdcKNX3f2GSQ0H1HC7yIfxoCoImnO5FHM";
|
password = "5kG15EfpdcKNX3f2GSQ0H1HC7yIfxoCoImnO5FHM";
|
||||||
publicKey = "371zpkgs8ss387tmr81q04mp0hg1skb51hw34vk1cq644mjqhup0.k";
|
publicKey = "371zpkgs8ss387tmr81q04mp0hg1skb51hw34vk1cq644mjqhup0.k";
|
||||||
};
|
};
|
||||||
@ -254,8 +245,6 @@ in
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
networking.extraHosts = cjdnsExtraHosts;
|
|
||||||
|
|
||||||
assertions = [
|
assertions = [
|
||||||
{ assertion = ( cfg.ETHInterface.bind != "" || cfg.UDPInterface.bind != "" || cfg.confFile != null );
|
{ assertion = ( cfg.ETHInterface.bind != "" || cfg.UDPInterface.bind != "" || cfg.confFile != null );
|
||||||
message = "Neither cjdns.ETHInterface.bind nor cjdns.UDPInterface.bind defined.";
|
message = "Neither cjdns.ETHInterface.bind nor cjdns.UDPInterface.bind defined.";
|
||||||
|
61
nixos/modules/services/networking/dante.nix
Normal file
61
nixos/modules/services/networking/dante.nix
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.services.dante;
|
||||||
|
confFile = pkgs.writeText "dante-sockd.conf" ''
|
||||||
|
user.privileged: root
|
||||||
|
user.unprivileged: dante
|
||||||
|
|
||||||
|
${cfg.config}
|
||||||
|
'';
|
||||||
|
in
|
||||||
|
|
||||||
|
{
|
||||||
|
meta = {
|
||||||
|
maintainers = with maintainers; [ arobyn ];
|
||||||
|
};
|
||||||
|
|
||||||
|
options = {
|
||||||
|
services.dante = {
|
||||||
|
enable = mkEnableOption "Dante SOCKS proxy";
|
||||||
|
|
||||||
|
config = mkOption {
|
||||||
|
default = null;
|
||||||
|
type = types.str;
|
||||||
|
description = ''
|
||||||
|
Contents of Dante's configuration file
|
||||||
|
NOTE: user.privileged/user.unprivileged are set by the service
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
assertions = [
|
||||||
|
{ assertion = cfg.config != null;
|
||||||
|
message = "please provide Dante configuration file contents";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
users.users.dante = {
|
||||||
|
description = "Dante SOCKS proxy daemon user";
|
||||||
|
isSystemUser = true;
|
||||||
|
group = "dante";
|
||||||
|
};
|
||||||
|
users.groups.dante = {};
|
||||||
|
|
||||||
|
systemd.services.dante = {
|
||||||
|
description = "Dante SOCKS v4 and v5 compatible proxy server";
|
||||||
|
after = [ "network.target" ];
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "simple";
|
||||||
|
ExecStart = "${pkgs.dante}/bin/sockd -f ${confFile}";
|
||||||
|
ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID";
|
||||||
|
Restart = "always";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
@ -20,6 +20,7 @@ in {
|
|||||||
description = "Package to use for flannel";
|
description = "Package to use for flannel";
|
||||||
type = types.package;
|
type = types.package;
|
||||||
default = pkgs.flannel.bin;
|
default = pkgs.flannel.bin;
|
||||||
|
defaultText = "pkgs.flannel.bin";
|
||||||
};
|
};
|
||||||
|
|
||||||
publicIp = mkOption {
|
publicIp = mkOption {
|
||||||
|
@ -86,7 +86,7 @@ in
|
|||||||
|
|
||||||
hwMode = mkOption {
|
hwMode = mkOption {
|
||||||
default = "g";
|
default = "g";
|
||||||
type = types.string;
|
type = types.enum [ "a" "b" "g" ];
|
||||||
description = ''
|
description = ''
|
||||||
Operation mode.
|
Operation mode.
|
||||||
(a = IEEE 802.11a, b = IEEE 802.11b, g = IEEE 802.11g).
|
(a = IEEE 802.11a, b = IEEE 802.11b, g = IEEE 802.11g).
|
||||||
@ -152,9 +152,6 @@ in
|
|||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
|
||||||
assertions = [
|
assertions = [
|
||||||
{ assertion = (cfg.hwMode == "a" || cfg.hwMode == "b" || cfg.hwMode == "g");
|
|
||||||
message = "hwMode must be a/b/g";
|
|
||||||
}
|
|
||||||
{ assertion = (cfg.channel >= 1 && cfg.channel <= 13);
|
{ assertion = (cfg.channel >= 1 && cfg.channel <= 13);
|
||||||
message = "channel must be between 1 and 13";
|
message = "channel must be between 1 and 13";
|
||||||
}];
|
}];
|
||||||
|
@ -148,11 +148,11 @@ in
|
|||||||
};
|
};
|
||||||
|
|
||||||
verbosity = mkOption {
|
verbosity = mkOption {
|
||||||
type = types.str;
|
type = types.enum [ "error" "warning" "notice" "info" "debug" ];
|
||||||
default = "info";
|
default = "info";
|
||||||
example = "error";
|
example = "error";
|
||||||
description = ''
|
description = ''
|
||||||
Verbosity level (error, warning, notice, info, debug)
|
Verbosity level
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -345,12 +345,10 @@ let
|
|||||||
};
|
};
|
||||||
|
|
||||||
rrlWhitelist = mkOption {
|
rrlWhitelist = mkOption {
|
||||||
type = types.listOf types.str;
|
type = with types; listOf (enum [ "nxdomain" "error" "referral" "any" "rrsig" "wildcard" "nodata" "dnskey" "positive" "all" ]);
|
||||||
default = [];
|
default = [];
|
||||||
description = ''
|
description = ''
|
||||||
Whitelists the given rrl-types.
|
Whitelists the given rrl-types.
|
||||||
The RRL classification types are: nxdomain, error, referral, any,
|
|
||||||
rrsig, wildcard, nodata, dnskey, positive, all
|
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -26,10 +26,11 @@ in
|
|||||||
package = mkOption {
|
package = mkOption {
|
||||||
type = types.package;
|
type = types.package;
|
||||||
default = pkgs.kde4.quasselDaemon;
|
default = pkgs.kde4.quasselDaemon;
|
||||||
|
defaultText = "pkgs.kde4.quasselDaemon";
|
||||||
description = ''
|
description = ''
|
||||||
The package of the quassel daemon.
|
The package of the quassel daemon.
|
||||||
'';
|
'';
|
||||||
example = pkgs.quasselDaemon;
|
example = literalExample "pkgs.quasselDaemon";
|
||||||
};
|
};
|
||||||
|
|
||||||
interfaces = mkOption {
|
interfaces = mkOption {
|
||||||
|
@ -228,8 +228,6 @@ in
|
|||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
|
|
||||||
programs.ssh.setXAuthLocation = mkForce cfg.forwardX11;
|
|
||||||
|
|
||||||
users.extraUsers.sshd =
|
users.extraUsers.sshd =
|
||||||
{ isSystemUser = true;
|
{ isSystemUser = true;
|
||||||
description = "SSH privilege separation user";
|
description = "SSH privilege separation user";
|
||||||
|
@ -50,6 +50,8 @@ in {
|
|||||||
|
|
||||||
package = mkOption {
|
package = mkOption {
|
||||||
default = pkgs.hound;
|
default = pkgs.hound;
|
||||||
|
defaultText = "pkgs.hound";
|
||||||
|
type = types.package;
|
||||||
description = ''
|
description = ''
|
||||||
Package for running hound.
|
Package for running hound.
|
||||||
'';
|
'';
|
||||||
|
@ -3,26 +3,37 @@ with lib;
|
|||||||
let
|
let
|
||||||
clamavUser = "clamav";
|
clamavUser = "clamav";
|
||||||
stateDir = "/var/lib/clamav";
|
stateDir = "/var/lib/clamav";
|
||||||
runDir = "/var/run/clamav";
|
runDir = "/run/clamav";
|
||||||
logDir = "/var/log/clamav";
|
|
||||||
clamavGroup = clamavUser;
|
clamavGroup = clamavUser;
|
||||||
cfg = config.services.clamav;
|
cfg = config.services.clamav;
|
||||||
|
pkg = pkgs.clamav;
|
||||||
|
|
||||||
clamdConfigFile = pkgs.writeText "clamd.conf" ''
|
clamdConfigFile = pkgs.writeText "clamd.conf" ''
|
||||||
DatabaseDirectory ${stateDir}
|
DatabaseDirectory ${stateDir}
|
||||||
LocalSocket ${runDir}/clamd.ctl
|
LocalSocket ${runDir}/clamd.ctl
|
||||||
LogFile ${logDir}/clamav.log
|
|
||||||
PidFile ${runDir}/clamd.pid
|
PidFile ${runDir}/clamd.pid
|
||||||
|
TemporaryDirectory /tmp
|
||||||
User clamav
|
User clamav
|
||||||
|
Foreground yes
|
||||||
|
|
||||||
${cfg.daemon.extraConfig}
|
${cfg.daemon.extraConfig}
|
||||||
'';
|
'';
|
||||||
pkg = pkgs.clamav;
|
|
||||||
|
freshclamConfigFile = pkgs.writeText "freshclam.conf" ''
|
||||||
|
DatabaseDirectory ${stateDir}
|
||||||
|
Foreground yes
|
||||||
|
Checks ${toString cfg.updater.frequency}
|
||||||
|
|
||||||
|
${cfg.updater.extraConfig}
|
||||||
|
|
||||||
|
DatabaseMirror database.clamav.net
|
||||||
|
'';
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options = {
|
options = {
|
||||||
services.clamav = {
|
services.clamav = {
|
||||||
daemon = {
|
daemon = {
|
||||||
enable = mkEnableOption "clamd daemon";
|
enable = mkEnableOption "ClamAV clamd daemon";
|
||||||
|
|
||||||
extraConfig = mkOption {
|
extraConfig = mkOption {
|
||||||
type = types.lines;
|
type = types.lines;
|
||||||
@ -34,16 +45,27 @@ in
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
updater = {
|
updater = {
|
||||||
enable = mkEnableOption "freshclam updater";
|
enable = mkEnableOption "ClamAV freshclam updater";
|
||||||
|
|
||||||
frequency = mkOption {
|
frequency = mkOption {
|
||||||
|
type = types.int;
|
||||||
default = 12;
|
default = 12;
|
||||||
description = ''
|
description = ''
|
||||||
Number of database checks per day.
|
Number of database checks per day.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkOption {
|
interval = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "hourly";
|
||||||
|
description = ''
|
||||||
|
How often freshclam is invoked. See systemd.time(7) for more
|
||||||
|
information about the format.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
extraConfig = mkOption {
|
||||||
|
type = types.lines;
|
||||||
default = "";
|
default = "";
|
||||||
description = ''
|
description = ''
|
||||||
Extra configuration for freshclam. Contents will be added verbatim to the
|
Extra configuration for freshclam. Contents will be added verbatim to the
|
||||||
@ -68,50 +90,53 @@ in
|
|||||||
gid = config.ids.gids.clamav;
|
gid = config.ids.gids.clamav;
|
||||||
};
|
};
|
||||||
|
|
||||||
services.clamav.updater.config = mkIf cfg.updater.enable ''
|
environment.etc."clamav/freshclam.conf".source = freshclamConfigFile;
|
||||||
DatabaseDirectory ${stateDir}
|
environment.etc."clamav/clamd.conf".source = clamdConfigFile;
|
||||||
Foreground yes
|
|
||||||
Checks ${toString cfg.updater.frequency}
|
|
||||||
DatabaseMirror database.clamav.net
|
|
||||||
'';
|
|
||||||
|
|
||||||
systemd.services.clamd = mkIf cfg.daemon.enable {
|
systemd.services.clamav-daemon = mkIf cfg.daemon.enable {
|
||||||
description = "ClamAV daemon (clamd)";
|
description = "ClamAV daemon (clamd)";
|
||||||
path = [ pkg ];
|
after = mkIf cfg.updater.enable [ "clamav-freshclam.service" ];
|
||||||
after = [ "network.target" "freshclam.service" ];
|
requires = mkIf cfg.updater.enable [ "clamav-freshclam.service" ];
|
||||||
requires = [ "freshclam.service" ];
|
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
restartTriggers = [ clamdConfigFile ];
|
||||||
|
|
||||||
preStart = ''
|
preStart = ''
|
||||||
mkdir -m 0755 -p ${logDir}
|
|
||||||
mkdir -m 0755 -p ${runDir}
|
mkdir -m 0755 -p ${runDir}
|
||||||
chown ${clamavUser}:${clamavGroup} ${logDir}
|
|
||||||
chown ${clamavUser}:${clamavGroup} ${runDir}
|
chown ${clamavUser}:${clamavGroup} ${runDir}
|
||||||
'';
|
'';
|
||||||
|
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
ExecStart = "${pkg}/bin/clamd --config-file=${clamdConfigFile}";
|
ExecStart = "${pkg}/bin/clamd";
|
||||||
Type = "forking";
|
ExecReload = "${pkgs.coreutils}/bin/kill -USR2 $MAINPID";
|
||||||
ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID";
|
PrivateTmp = "yes";
|
||||||
Restart = "on-failure";
|
PrivateDevices = "yes";
|
||||||
RestartSec = "10s";
|
PrivateNetwork = "yes";
|
||||||
StartLimitInterval = "1min";
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
systemd.services.freshclam = mkIf cfg.updater.enable {
|
systemd.timers.clamav-freshclam = mkIf cfg.updater.enable {
|
||||||
description = "ClamAV updater (freshclam)";
|
description = "Timer for ClamAV virus database updater (freshclam)";
|
||||||
after = [ "network.target" ];
|
wantedBy = [ "timers.target" ];
|
||||||
wantedBy = [ "multi-user.target" ];
|
timerConfig = {
|
||||||
path = [ pkg ];
|
OnCalendar = cfg.updater.interval;
|
||||||
|
Unit = "clamav-freshclam.service";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.services.clamav-freshclam = mkIf cfg.updater.enable {
|
||||||
|
description = "ClamAV virus database updater (freshclam)";
|
||||||
|
restartTriggers = [ freshclamConfigFile ];
|
||||||
|
|
||||||
preStart = ''
|
preStart = ''
|
||||||
mkdir -m 0755 -p ${stateDir}
|
mkdir -m 0755 -p ${stateDir}
|
||||||
chown ${clamavUser}:${clamavGroup} ${stateDir}
|
chown ${clamavUser}:${clamavGroup} ${stateDir}
|
||||||
'';
|
'';
|
||||||
|
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
ExecStart = "${pkg}/bin/freshclam --daemon --config-file=${pkgs.writeText "freshclam.conf" cfg.updater.config}";
|
Type = "oneshot";
|
||||||
ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID";
|
ExecStart = "${pkg}/bin/freshclam";
|
||||||
Restart = "on-failure";
|
PrivateTmp = "yes";
|
||||||
RestartSec = "10s";
|
PrivateDevices = "yes";
|
||||||
StartLimitInterval = "1min";
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -13,6 +13,7 @@ in {
|
|||||||
opentracker package to use
|
opentracker package to use
|
||||||
'';
|
'';
|
||||||
default = pkgs.opentracker;
|
default = pkgs.opentracker;
|
||||||
|
defaultText = "pkgs.opentracker";
|
||||||
};
|
};
|
||||||
|
|
||||||
extraOptions = mkOption {
|
extraOptions = mkOption {
|
||||||
|
@ -31,6 +31,8 @@ in {
|
|||||||
};
|
};
|
||||||
pkg = mkOption {
|
pkg = mkOption {
|
||||||
default = pkgs.quassel-webserver;
|
default = pkgs.quassel-webserver;
|
||||||
|
defaultText = "pkgs.quassel-webserver";
|
||||||
|
type = types.package;
|
||||||
description = "The quassel-webserver package";
|
description = "The quassel-webserver package";
|
||||||
};
|
};
|
||||||
quasselCoreHost = mkOption {
|
quasselCoreHost = mkOption {
|
||||||
|
@ -188,6 +188,7 @@ in {
|
|||||||
package = mkOption {
|
package = mkOption {
|
||||||
type = types.package;
|
type = types.package;
|
||||||
default = pkgs.compton;
|
default = pkgs.compton;
|
||||||
|
defaultText = "pkgs.compton";
|
||||||
example = literalExample "pkgs.compton";
|
example = literalExample "pkgs.compton";
|
||||||
description = ''
|
description = ''
|
||||||
Compton derivation to use.
|
Compton derivation to use.
|
||||||
|
@ -22,6 +22,15 @@ in
|
|||||||
description = "Enable the Plasma 5 (KDE 5) desktop environment.";
|
description = "Enable the Plasma 5 (KDE 5) desktop environment.";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enableQt4Support = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = true;
|
||||||
|
description = ''
|
||||||
|
Enable support for Qt 4-based applications. Particularly, install the
|
||||||
|
Qt 4 version of the Breeze theme and a default backend for Phonon.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
@ -105,7 +114,7 @@ in
|
|||||||
kde5.sonnet
|
kde5.sonnet
|
||||||
kde5.threadweaver
|
kde5.threadweaver
|
||||||
|
|
||||||
kde5.breeze
|
kde5.breeze-qt5
|
||||||
kde5.kactivitymanagerd
|
kde5.kactivitymanagerd
|
||||||
kde5.kde-cli-tools
|
kde5.kde-cli-tools
|
||||||
kde5.kdecoration
|
kde5.kdecoration
|
||||||
@ -141,13 +150,12 @@ in
|
|||||||
kde5.konsole
|
kde5.konsole
|
||||||
kde5.print-manager
|
kde5.print-manager
|
||||||
|
|
||||||
# Oxygen icons moved to KDE Frameworks 5.16 and later.
|
# Install Breeze icons if available
|
||||||
(kde5.oxygen-icons or kde5.oxygen-icons5)
|
(kde5.breeze-icons or kde5.oxygen-icons5 or kde5.oxygen-icons)
|
||||||
pkgs.hicolor_icon_theme
|
pkgs.hicolor_icon_theme
|
||||||
|
|
||||||
kde5.kde-gtk-config
|
kde5.kde-gtk-config kde5.breeze-gtk
|
||||||
|
|
||||||
pkgs.phonon-backend-gstreamer
|
|
||||||
pkgs.qt5.phonon-backend-gstreamer
|
pkgs.qt5.phonon-backend-gstreamer
|
||||||
]
|
]
|
||||||
|
|
||||||
@ -155,15 +163,14 @@ in
|
|||||||
# If it is not available, Orion is very similar to Breeze.
|
# If it is not available, Orion is very similar to Breeze.
|
||||||
++ lib.optional (!(lib.hasAttr "breeze-gtk" kde5)) pkgs.orion
|
++ lib.optional (!(lib.hasAttr "breeze-gtk" kde5)) pkgs.orion
|
||||||
|
|
||||||
# Install Breeze icons if available
|
|
||||||
++ lib.optional (lib.hasAttr "breeze-icons" kde5) kde5.breeze-icons
|
|
||||||
|
|
||||||
# Install activity manager if available
|
# Install activity manager if available
|
||||||
++ lib.optional (lib.hasAttr "kactivitymanagerd" kde5) kde5.kactivitymanagerd
|
++ lib.optional (lib.hasAttr "kactivitymanagerd" kde5) kde5.kactivitymanagerd
|
||||||
|
|
||||||
# frameworkintegration was split with plasma-integration in Plasma 5.6
|
# frameworkintegration was split with plasma-integration in Plasma 5.6
|
||||||
++ lib.optional (lib.hasAttr "plasma-integration" kde5) kde5.plasma-integration
|
++ lib.optional (lib.hasAttr "plasma-integration" kde5) kde5.plasma-integration
|
||||||
|
|
||||||
|
++ lib.optionals cfg.enableQt4Support [ kde5.breeze-qt4 pkgs.phonon-backend-gstreamer ]
|
||||||
|
|
||||||
# Optional hardware support features
|
# Optional hardware support features
|
||||||
++ lib.optional config.hardware.bluetooth.enable kde5.bluedevil
|
++ lib.optional config.hardware.bluetooth.enable kde5.bluedevil
|
||||||
++ lib.optional config.networking.networkmanager.enable kde5.plasma-nm
|
++ lib.optional config.networking.networkmanager.enable kde5.plasma-nm
|
||||||
@ -217,7 +224,6 @@ in
|
|||||||
kde5.ecm # for the setup-hook
|
kde5.ecm # for the setup-hook
|
||||||
kde5.plasma-workspace
|
kde5.plasma-workspace
|
||||||
kde5.breeze-icons
|
kde5.breeze-icons
|
||||||
(kde5.oxygen-icons or kde5.oxygen-icons5)
|
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1,48 +0,0 @@
|
|||||||
{ config, lib, pkgs, ... }:
|
|
||||||
|
|
||||||
with lib;
|
|
||||||
|
|
||||||
let
|
|
||||||
cfg = config.services.xserver.windowManager.bspwm-unstable;
|
|
||||||
in
|
|
||||||
|
|
||||||
{
|
|
||||||
options = {
|
|
||||||
services.xserver.windowManager.bspwm-unstable = {
|
|
||||||
enable = mkEnableOption "bspwm-unstable";
|
|
||||||
startThroughSession = mkOption {
|
|
||||||
type = with types; bool;
|
|
||||||
default = false;
|
|
||||||
description = "
|
|
||||||
Start the window manager through the script defined in
|
|
||||||
sessionScript. Defaults to the the bspwm-session script
|
|
||||||
provided by bspwm
|
|
||||||
";
|
|
||||||
};
|
|
||||||
sessionScript = mkOption {
|
|
||||||
default = "${pkgs.bspwm-unstable}/bin/bspwm-session";
|
|
||||||
defaultText = "(pkgs.bspwm-unstable)/bin/bspwm-session";
|
|
||||||
description = "
|
|
||||||
The start-session script to use. Defaults to the
|
|
||||||
provided bspwm-session script from the bspwm package.
|
|
||||||
|
|
||||||
Does nothing unless `bspwm.startThroughSession` is enabled
|
|
||||||
";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
services.xserver.windowManager.session = singleton {
|
|
||||||
name = "bspwm-unstable";
|
|
||||||
start = if cfg.startThroughSession
|
|
||||||
then cfg.sessionScript
|
|
||||||
else ''
|
|
||||||
export _JAVA_AWT_WM_NONREPARENTING=1
|
|
||||||
SXHKD_SHELL=/bin/sh ${pkgs.sxhkd-unstable}/bin/sxhkd -f 100 &
|
|
||||||
${pkgs.bspwm-unstable}/bin/bspwm
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
environment.systemPackages = [ pkgs.bspwm-unstable ];
|
|
||||||
};
|
|
||||||
}
|
|
@ -10,24 +10,45 @@ in
|
|||||||
options = {
|
options = {
|
||||||
services.xserver.windowManager.bspwm = {
|
services.xserver.windowManager.bspwm = {
|
||||||
enable = mkEnableOption "bspwm";
|
enable = mkEnableOption "bspwm";
|
||||||
startThroughSession = mkOption {
|
|
||||||
type = with types; bool;
|
|
||||||
default = false;
|
|
||||||
description = "
|
|
||||||
Start the window manager through the script defined in
|
|
||||||
sessionScript. Defaults to the the bspwm-session script
|
|
||||||
provided by bspwm
|
|
||||||
";
|
|
||||||
};
|
|
||||||
sessionScript = mkOption {
|
|
||||||
default = "${pkgs.bspwm}/bin/bspwm-session";
|
|
||||||
defaultText = "(pkgs.bspwm)/bin/bspwm-session";
|
|
||||||
description = "
|
|
||||||
The start-session script to use. Defaults to the
|
|
||||||
provided bspwm-session script from the bspwm package.
|
|
||||||
|
|
||||||
Does nothing unless `bspwm.startThroughSession` is enabled
|
package = mkOption {
|
||||||
";
|
type = types.package;
|
||||||
|
default = pkgs.bspwm;
|
||||||
|
defaultText = "pkgs.bspwm";
|
||||||
|
example = "pkgs.bspwm-unstable";
|
||||||
|
description = ''
|
||||||
|
bspwm package to use.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
configFile = mkOption {
|
||||||
|
type = with types; nullOr path;
|
||||||
|
example = "${pkgs.bspwm}/share/doc/bspwm/examples/bspwmrc";
|
||||||
|
default = null;
|
||||||
|
description = ''
|
||||||
|
Path to the bspwm configuration file.
|
||||||
|
If null, $HOME/.config/bspwm/bspwmrc will be used.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
sxhkd = {
|
||||||
|
package = mkOption {
|
||||||
|
type = types.package;
|
||||||
|
default = pkgs.sxhkd;
|
||||||
|
defaultText = "pkgs.sxhkd";
|
||||||
|
example = "pkgs.sxhkd-unstable";
|
||||||
|
description = ''
|
||||||
|
sxhkd package to use.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
configFile = mkOption {
|
||||||
|
type = with types; nullOr path;
|
||||||
|
example = "${pkgs.bspwm}/share/doc/bspwm/examples/sxhkdrc";
|
||||||
|
default = null;
|
||||||
|
description = ''
|
||||||
|
Path to the sxhkd configuration file.
|
||||||
|
If null, $HOME/.config/sxhkd/sxhkdrc will be used.
|
||||||
|
'';
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
@ -35,14 +56,22 @@ in
|
|||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
services.xserver.windowManager.session = singleton {
|
services.xserver.windowManager.session = singleton {
|
||||||
name = "bspwm";
|
name = "bspwm";
|
||||||
start = if cfg.startThroughSession
|
start = ''
|
||||||
then cfg.sessionScript
|
|
||||||
else ''
|
|
||||||
export _JAVA_AWT_WM_NONREPARENTING=1
|
export _JAVA_AWT_WM_NONREPARENTING=1
|
||||||
SXHKD_SHELL=/bin/sh ${pkgs.sxhkd}/bin/sxhkd -f 100 &
|
SXHKD_SHELL=/bin/sh ${cfg.sxhkd.package}/bin/sxhkd ${optionalString (cfg.sxhkd.configFile != null) "-c \"${cfg.sxhkd.configFile}\""} &
|
||||||
${pkgs.bspwm}/bin/bspwm
|
${cfg.package}/bin/bspwm ${optionalString (cfg.configFile != null) "-c \"${cfg.configFile}\""}
|
||||||
|
waitPID=$!
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
environment.systemPackages = [ pkgs.bspwm ];
|
environment.systemPackages = [ cfg.package ];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
imports = [
|
||||||
|
(mkRemovedOptionModule [ "services" "xserver" "windowManager" "bspwm-unstable" "enable" ]
|
||||||
|
"Use services.xserver.windowManager.bspwm.enable and set services.xserver.windowManager.bspwm.package to pkgs.bspwm-unstable to use the unstable version of bspwm.")
|
||||||
|
(mkRemovedOptionModule [ "services" "xserver" "windowManager" "bspwm" "startThroughSession" ]
|
||||||
|
"bspwm package does not provide bspwm-session anymore.")
|
||||||
|
(mkRemovedOptionModule [ "services" "xserver" "windowManager" "bspwm" "sessionScript" ]
|
||||||
|
"bspwm package does not provide bspwm-session anymore.")
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
@ -10,7 +10,6 @@ in
|
|||||||
imports = [
|
imports = [
|
||||||
./afterstep.nix
|
./afterstep.nix
|
||||||
./bspwm.nix
|
./bspwm.nix
|
||||||
./bspwm-unstable.nix
|
|
||||||
./compiz.nix
|
./compiz.nix
|
||||||
./dwm.nix
|
./dwm.nix
|
||||||
./exwm.nix
|
./exwm.nix
|
||||||
|
@ -122,7 +122,7 @@ in
|
|||||||
|
|
||||||
mkdir -p /root/.ssh
|
mkdir -p /root/.ssh
|
||||||
${concatStrings (map (key: ''
|
${concatStrings (map (key: ''
|
||||||
echo -n ${escapeShellArg key} >> /root/.ssh/authorized_keys
|
echo ${escapeShellArg key} >> /root/.ssh/authorized_keys
|
||||||
'') cfg.authorizedKeys)}
|
'') cfg.authorizedKeys)}
|
||||||
|
|
||||||
dropbear -s -j -k -E -m -p ${toString cfg.port}
|
dropbear -s -j -k -E -m -p ${toString cfg.port}
|
||||||
|
@ -53,7 +53,7 @@ let
|
|||||||
inherit (args) devices;
|
inherit (args) devices;
|
||||||
inherit (efi) canTouchEfiVariables;
|
inherit (efi) canTouchEfiVariables;
|
||||||
inherit (cfg)
|
inherit (cfg)
|
||||||
version extraConfig extraPerEntryConfig extraEntries
|
version extraConfig extraPerEntryConfig extraEntries forceInstall
|
||||||
extraEntriesBeforeNixOS extraPrepareConfig configurationLimit copyKernels
|
extraEntriesBeforeNixOS extraPrepareConfig configurationLimit copyKernels
|
||||||
default fsIdentifier efiSupport efiInstallAsRemovable gfxmodeEfi gfxmodeBios;
|
default fsIdentifier efiSupport efiInstallAsRemovable gfxmodeEfi gfxmodeBios;
|
||||||
path = (makeBinPath ([
|
path = (makeBinPath ([
|
||||||
@ -403,6 +403,16 @@ in
|
|||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
forceInstall = mkOption {
|
||||||
|
default = false;
|
||||||
|
type = types.bool;
|
||||||
|
description = ''
|
||||||
|
Whether to try and forcibly install GRUB even if problems are
|
||||||
|
detected. It is not recommended to enable this unless you know what
|
||||||
|
you are doing.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
trustedBoot = {
|
trustedBoot = {
|
||||||
|
|
||||||
enable = mkOption {
|
enable = mkOption {
|
||||||
|
@ -65,6 +65,7 @@ my $efiSysMountPoint = get("efiSysMountPoint");
|
|||||||
my $gfxmodeEfi = get("gfxmodeEfi");
|
my $gfxmodeEfi = get("gfxmodeEfi");
|
||||||
my $gfxmodeBios = get("gfxmodeBios");
|
my $gfxmodeBios = get("gfxmodeBios");
|
||||||
my $bootloaderId = get("bootloaderId");
|
my $bootloaderId = get("bootloaderId");
|
||||||
|
my $forceInstall = get("forceInstall");
|
||||||
$ENV{'PATH'} = get("path");
|
$ENV{'PATH'} = get("path");
|
||||||
|
|
||||||
die "unsupported GRUB version\n" if $grubVersion != 1 && $grubVersion != 2;
|
die "unsupported GRUB version\n" if $grubVersion != 1 && $grubVersion != 2;
|
||||||
@ -531,13 +532,14 @@ if (($requireNewInstall != 0) && ($efiTarget eq "no" || $efiTarget eq "both")) {
|
|||||||
foreach my $dev (@deviceTargets) {
|
foreach my $dev (@deviceTargets) {
|
||||||
next if $dev eq "nodev";
|
next if $dev eq "nodev";
|
||||||
print STDERR "installing the GRUB $grubVersion boot loader on $dev...\n";
|
print STDERR "installing the GRUB $grubVersion boot loader on $dev...\n";
|
||||||
if ($grubTarget eq "") {
|
my @command = ("$grub/sbin/grub-install", "--recheck", "--root-directory=$tmpDir", Cwd::abs_path($dev));
|
||||||
system("$grub/sbin/grub-install", "--recheck", "--root-directory=$tmpDir", Cwd::abs_path($dev)) == 0
|
if ($forceInstall eq "true") {
|
||||||
or die "$0: installation of GRUB on $dev failed\n";
|
push @command, "--force";
|
||||||
} else {
|
|
||||||
system("$grub/sbin/grub-install", "--recheck", "--root-directory=$tmpDir", "--target=$grubTarget", Cwd::abs_path($dev)) == 0
|
|
||||||
or die "$0: installation of GRUB on $dev failed\n";
|
|
||||||
}
|
}
|
||||||
|
if ($grubTarget ne "") {
|
||||||
|
push @command, "--target=$grubTarget";
|
||||||
|
}
|
||||||
|
(system @command) == 0 or die "$0: installation of GRUB on $dev failed\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -546,6 +548,9 @@ if (($requireNewInstall != 0) && ($efiTarget eq "no" || $efiTarget eq "both")) {
|
|||||||
if (($requireNewInstall != 0) && ($efiTarget eq "only" || $efiTarget eq "both")) {
|
if (($requireNewInstall != 0) && ($efiTarget eq "only" || $efiTarget eq "both")) {
|
||||||
print STDERR "installing the GRUB $grubVersion EFI boot loader into $efiSysMountPoint...\n";
|
print STDERR "installing the GRUB $grubVersion EFI boot loader into $efiSysMountPoint...\n";
|
||||||
my @command = ("$grubEfi/sbin/grub-install", "--recheck", "--target=$grubTargetEfi", "--boot-directory=$bootPath", "--efi-directory=$efiSysMountPoint");
|
my @command = ("$grubEfi/sbin/grub-install", "--recheck", "--target=$grubTargetEfi", "--boot-directory=$bootPath", "--efi-directory=$efiSysMountPoint");
|
||||||
|
if ($forceInstall eq "true") {
|
||||||
|
push @command, "--force";
|
||||||
|
}
|
||||||
if ($canTouchEfiVariables eq "true") {
|
if ($canTouchEfiVariables eq "true") {
|
||||||
push @command, "--bootloader-id=$bootloaderId";
|
push @command, "--bootloader-id=$bootloaderId";
|
||||||
} else {
|
} else {
|
||||||
|
@ -33,7 +33,7 @@ in
|
|||||||
|
|
||||||
boot.loader.raspberryPi.version = mkOption {
|
boot.loader.raspberryPi.version = mkOption {
|
||||||
default = 2;
|
default = 2;
|
||||||
type = types.int;
|
type = types.enum [ 1 2 ];
|
||||||
description = ''
|
description = ''
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
@ -44,10 +44,5 @@ in
|
|||||||
system.build.installBootLoader = builder;
|
system.build.installBootLoader = builder;
|
||||||
system.boot.loader.id = "raspberrypi";
|
system.boot.loader.id = "raspberrypi";
|
||||||
system.boot.loader.kernelFile = platform.kernelTarget;
|
system.boot.loader.kernelFile = platform.kernelTarget;
|
||||||
assertions = [
|
|
||||||
{ assertion = (cfg.version == 1 || cfg.version == 2);
|
|
||||||
message = "loader.raspberryPi.version should be 1 or 2";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -51,6 +51,10 @@ in
|
|||||||
url = "https://nixos.org/logo/nixos-hires.png";
|
url = "https://nixos.org/logo/nixos-hires.png";
|
||||||
sha256 = "1ivzgd7iz0i06y36p8m5w48fd8pjqwxhdaavc0pxs7w1g7mcy5si";
|
sha256 = "1ivzgd7iz0i06y36p8m5w48fd8pjqwxhdaavc0pxs7w1g7mcy5si";
|
||||||
};
|
};
|
||||||
|
defaultText = ''pkgs.fetchurl {
|
||||||
|
url = "https://nixos.org/logo/nixos-hires.png";
|
||||||
|
sha256 = "1ivzgd7iz0i06y36p8m5w48fd8pjqwxhdaavc0pxs7w1g7mcy5si";
|
||||||
|
}'';
|
||||||
description = ''
|
description = ''
|
||||||
Logo which is displayed on the splash screen.
|
Logo which is displayed on the splash screen.
|
||||||
'';
|
'';
|
||||||
|
@ -782,13 +782,12 @@ in
|
|||||||
};
|
};
|
||||||
|
|
||||||
type = mkOption {
|
type = mkOption {
|
||||||
type = types.string;
|
type = types.enum [ "managed" "ibss" "monitor" "mesh" "wds" ];
|
||||||
default = "managed";
|
default = "managed";
|
||||||
example = "ibss";
|
example = "ibss";
|
||||||
description = ''
|
description = ''
|
||||||
The type of the WLAN interface. The type has to be either <literal>managed</literal>,
|
The type of the WLAN interface.
|
||||||
<literal>ibss</literal>, <literal>monitor</literal>, <literal>mesh</literal> or <literal>wds</literal>.
|
The type has to be supported by the underlying hardware of the device.
|
||||||
Also, the type has to be supported by the underlying hardware of the device.
|
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -799,17 +798,11 @@ in
|
|||||||
};
|
};
|
||||||
|
|
||||||
flags = mkOption {
|
flags = mkOption {
|
||||||
type = types.nullOr types.string;
|
type = with types; nullOr (enum [ "none" "fcsfail" "control" "otherbss" "cook" "active" ]);
|
||||||
default = null;
|
default = null;
|
||||||
example = "control";
|
example = "control";
|
||||||
description = ''
|
description = ''
|
||||||
Flags for interface of type <literal>monitor</literal>. The valid flags are:
|
Flags for interface of type <literal>monitor</literal>.
|
||||||
none: no special flags
|
|
||||||
fcsfail: show frames with FCS errors
|
|
||||||
control: show control frames
|
|
||||||
otherbss: show frames from other BSSes
|
|
||||||
cook: use cooked mode
|
|
||||||
active: use active mode (ACK incoming unicast packets)
|
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -129,9 +129,12 @@ let
|
|||||||
--setenv HOST_ADDRESS6="$HOST_ADDRESS6" \
|
--setenv HOST_ADDRESS6="$HOST_ADDRESS6" \
|
||||||
--setenv LOCAL_ADDRESS6="$LOCAL_ADDRESS6" \
|
--setenv LOCAL_ADDRESS6="$LOCAL_ADDRESS6" \
|
||||||
--setenv PATH="$PATH" \
|
--setenv PATH="$PATH" \
|
||||||
${if cfg.additionalCapabilities != null then
|
${if cfg.additionalCapabilities != null && cfg.additionalCapabilities != [] then
|
||||||
''--capability="${concatStringsSep " " cfg.additionalCapabilities}"'' else ""
|
''--capability="${concatStringsSep " " cfg.additionalCapabilities}"'' else ""
|
||||||
} \
|
} \
|
||||||
|
${if cfg.tmpfs != null && cfg.tmpfs != [] then
|
||||||
|
''--tmpfs=${concatStringsSep " --tmpfs=" cfg.tmpfs}'' else ""
|
||||||
|
} \
|
||||||
${containerInit cfg} "''${SYSTEM_PATH:-/nix/var/nix/profiles/system}/init"
|
${containerInit cfg} "''${SYSTEM_PATH:-/nix/var/nix/profiles/system}/init"
|
||||||
'';
|
'';
|
||||||
|
|
||||||
@ -367,6 +370,7 @@ let
|
|||||||
hostAddress6 = null;
|
hostAddress6 = null;
|
||||||
localAddress = null;
|
localAddress = null;
|
||||||
localAddress6 = null;
|
localAddress6 = null;
|
||||||
|
tmpfs = null;
|
||||||
};
|
};
|
||||||
|
|
||||||
in
|
in
|
||||||
@ -510,6 +514,18 @@ in
|
|||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
tmpfs = mkOption {
|
||||||
|
type = types.listOf types.str;
|
||||||
|
default = [];
|
||||||
|
example = [ "/var" ];
|
||||||
|
description = ''
|
||||||
|
Mounts a set of tmpfs file systems into the container.
|
||||||
|
Multiple paths can be specified.
|
||||||
|
Valid items must conform to the --tmpfs argument
|
||||||
|
of systemd-nspawn. See systemd-nspawn(1) for details.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
} // networkOptions;
|
} // networkOptions;
|
||||||
|
|
||||||
config = mkMerge
|
config = mkMerge
|
||||||
|
@ -24,7 +24,7 @@ with lib;
|
|||||||
copy_bin_and_libs ${pkgs.gnused}/bin/sed
|
copy_bin_and_libs ${pkgs.gnused}/bin/sed
|
||||||
copy_bin_and_libs ${pkgs.utillinux}/sbin/sfdisk
|
copy_bin_and_libs ${pkgs.utillinux}/sbin/sfdisk
|
||||||
copy_bin_and_libs ${pkgs.utillinux}/sbin/lsblk
|
copy_bin_and_libs ${pkgs.utillinux}/sbin/lsblk
|
||||||
cp -v ${pkgs.cloud-utils}/bin/growpart $out/bin/growpart
|
cp -v ${pkgs.cloud-utils}/bin/.growpart-wrapped $out/bin/growpart
|
||||||
ln -s sed $out/bin/gnused
|
ln -s sed $out/bin/gnused
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
@ -5,6 +5,7 @@ with lib;
|
|||||||
let
|
let
|
||||||
cfg = config.services.vmwareGuest;
|
cfg = config.services.vmwareGuest;
|
||||||
open-vm-tools = pkgs.open-vm-tools;
|
open-vm-tools = pkgs.open-vm-tools;
|
||||||
|
xf86inputvmmouse = pkgs.xorg.xf86inputvmmouse;
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
options = {
|
options = {
|
||||||
@ -29,18 +30,17 @@ in
|
|||||||
|
|
||||||
services.xserver = {
|
services.xserver = {
|
||||||
videoDrivers = mkOverride 50 [ "vmware" ];
|
videoDrivers = mkOverride 50 [ "vmware" ];
|
||||||
|
modules = [ xf86inputvmmouse ];
|
||||||
|
|
||||||
config = ''
|
config = ''
|
||||||
Section "InputDevice"
|
Section "InputClass"
|
||||||
Identifier "VMMouse"
|
Identifier "VMMouse"
|
||||||
|
MatchDevicePath "/dev/input/event*"
|
||||||
|
MatchProduct "ImPS/2 Generic Wheel Mouse"
|
||||||
Driver "vmmouse"
|
Driver "vmmouse"
|
||||||
EndSection
|
EndSection
|
||||||
'';
|
'';
|
||||||
|
|
||||||
serverLayoutSection = ''
|
|
||||||
InputDevice "VMMouse"
|
|
||||||
'';
|
|
||||||
|
|
||||||
displayManager.sessionCommands = ''
|
displayManager.sessionCommands = ''
|
||||||
${open-vm-tools}/bin/vmware-user-suid-wrapper
|
${open-vm-tools}/bin/vmware-user-suid-wrapper
|
||||||
'';
|
'';
|
||||||
|
@ -228,6 +228,7 @@ in rec {
|
|||||||
tests.containers-imperative = callTest tests/containers-imperative.nix {};
|
tests.containers-imperative = callTest tests/containers-imperative.nix {};
|
||||||
tests.containers-extra_veth = callTest tests/containers-extra_veth.nix {};
|
tests.containers-extra_veth = callTest tests/containers-extra_veth.nix {};
|
||||||
tests.containers-physical_interfaces = callTest tests/containers-physical_interfaces.nix {};
|
tests.containers-physical_interfaces = callTest tests/containers-physical_interfaces.nix {};
|
||||||
|
tests.containers-tmpfs = callTest tests/containers-tmpfs.nix {};
|
||||||
tests.docker = hydraJob (import tests/docker.nix { system = "x86_64-linux"; });
|
tests.docker = hydraJob (import tests/docker.nix { system = "x86_64-linux"; });
|
||||||
tests.dnscrypt-proxy = callTest tests/dnscrypt-proxy.nix { system = "x86_64-linux"; };
|
tests.dnscrypt-proxy = callTest tests/dnscrypt-proxy.nix { system = "x86_64-linux"; };
|
||||||
tests.ecryptfs = callTest tests/ecryptfs.nix {};
|
tests.ecryptfs = callTest tests/ecryptfs.nix {};
|
||||||
|
79
nixos/tests/containers-tmpfs.nix
Normal file
79
nixos/tests/containers-tmpfs.nix
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
# Test for NixOS' container support.
|
||||||
|
|
||||||
|
import ./make-test.nix ({ pkgs, ...} : {
|
||||||
|
name = "containers-bridge";
|
||||||
|
meta = with pkgs.stdenv.lib.maintainers; {
|
||||||
|
maintainers = [ ckampka ];
|
||||||
|
};
|
||||||
|
|
||||||
|
machine =
|
||||||
|
{ config, pkgs, ... }:
|
||||||
|
{ imports = [ ../modules/installer/cd-dvd/channel.nix ];
|
||||||
|
virtualisation.writableStore = true;
|
||||||
|
virtualisation.memorySize = 768;
|
||||||
|
|
||||||
|
containers.tmpfs =
|
||||||
|
{
|
||||||
|
autoStart = true;
|
||||||
|
tmpfs = [
|
||||||
|
# Mount var as a tmpfs
|
||||||
|
"/var"
|
||||||
|
|
||||||
|
# Add a nested mount inside a tmpfs
|
||||||
|
"/var/log"
|
||||||
|
|
||||||
|
# Add a tmpfs on a path that does not exist
|
||||||
|
"/some/random/path"
|
||||||
|
];
|
||||||
|
config = { };
|
||||||
|
};
|
||||||
|
|
||||||
|
virtualisation.pathsInNixDB = [ pkgs.stdenv ];
|
||||||
|
};
|
||||||
|
|
||||||
|
testScript =
|
||||||
|
''
|
||||||
|
$machine->waitForUnit("default.target");
|
||||||
|
$machine->succeed("nixos-container list") =~ /tmpfs/ or die;
|
||||||
|
|
||||||
|
# Start the tmpfs container.
|
||||||
|
#$machine->succeed("nixos-container status tmpfs") =~ /up/ or die;
|
||||||
|
|
||||||
|
# Verify that /var is mounted as a tmpfs
|
||||||
|
#$machine->succeed("nixos-container run tmpfs -- systemctl status var.mount --no-pager 2>/dev/null") =~ /What: tmpfs/ or die;
|
||||||
|
$machine->succeed("nixos-container run tmpfs -- mountpoint -q /var 2>/dev/null");
|
||||||
|
|
||||||
|
# Verify that /var/log is mounted as a tmpfs
|
||||||
|
$machine->succeed("nixos-container run tmpfs -- systemctl status var-log.mount --no-pager 2>/dev/null") =~ /What: tmpfs/ or die;
|
||||||
|
$machine->succeed("nixos-container run tmpfs -- mountpoint -q /var/log 2>/dev/null");
|
||||||
|
|
||||||
|
# Verify that /some/random/path is mounted as a tmpfs
|
||||||
|
$machine->succeed("nixos-container run tmpfs -- systemctl status some-random-path.mount --no-pager 2>/dev/null") =~ /What: tmpfs/ or die;
|
||||||
|
$machine->succeed("nixos-container run tmpfs -- mountpoint -q /some/random/path 2>/dev/null");
|
||||||
|
|
||||||
|
# Verify that files created in the container in a non-tmpfs directory are visible on the host.
|
||||||
|
# This establishes legitimacy for the following tests
|
||||||
|
$machine->succeed("nixos-container run tmpfs -- touch /root/test.file 2>/dev/null");
|
||||||
|
$machine->succeed("nixos-container run tmpfs -- ls -l /root | grep -q test.file 2>/dev/null");
|
||||||
|
$machine->succeed("test -e /var/lib/containers/tmpfs/root/test.file");
|
||||||
|
|
||||||
|
|
||||||
|
# Verify that /some/random/path is writable and that files created there
|
||||||
|
# are not in the hosts container dir but in the tmpfs
|
||||||
|
$machine->succeed("nixos-container run tmpfs -- touch /some/random/path/test.file 2>/dev/null");
|
||||||
|
$machine->succeed("nixos-container run tmpfs -- test -e /some/random/path/test.file 2>/dev/null");
|
||||||
|
|
||||||
|
$machine->fail("test -e /var/lib/containers/tmpfs/some/random/path/test.file");
|
||||||
|
|
||||||
|
# Verify that files created in the hosts container dir in a path where a tmpfs file system has been mounted
|
||||||
|
# are not visible to the container as the do not exist in the tmpfs
|
||||||
|
$machine->succeed("touch /var/lib/containers/tmpfs/var/test.file");
|
||||||
|
|
||||||
|
$machine->succeed("test -e /var/lib/containers/tmpfs/var/test.file");
|
||||||
|
$machine->succeed("ls -l /var/lib/containers/tmpfs/var/ | grep -q test.file 2>/dev/null");
|
||||||
|
|
||||||
|
$machine->fail("nixos-container run tmpfs -- ls -l /var | grep -q test.file 2>/dev/null");
|
||||||
|
|
||||||
|
'';
|
||||||
|
|
||||||
|
})
|
12
pkgs/applications/audio/faust/faust2ladspa.nix
Normal file
12
pkgs/applications/audio/faust/faust2ladspa.nix
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
{ boost
|
||||||
|
, faust
|
||||||
|
, ladspaH
|
||||||
|
}:
|
||||||
|
|
||||||
|
faust.wrapWithBuildEnv {
|
||||||
|
|
||||||
|
baseName = "faust2ladspa";
|
||||||
|
|
||||||
|
propagatedBuildInputs = [ boost ladspaH ];
|
||||||
|
|
||||||
|
}
|
@ -5,16 +5,18 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
name = "moc-${version}";
|
name = "moc-${version}";
|
||||||
version = "2.5.0";
|
version = "2.5.1";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "http://ftp.daper.net/pub/soft/moc/stable/moc-${version}.tar.bz2";
|
url = "http://ftp.daper.net/pub/soft/moc/stable/moc-${version}.tar.bz2";
|
||||||
sha256 = "14b0g9jn12jzxsf292g64dc6frlxv99kaagsasmc8xmg80iab7nj";
|
sha256 = "1wn4za08z64bhsgfhr9c0crfyvy8c3b6a337wx7gz19am5srqh8v";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = [ pkgconfig ];
|
||||||
|
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
ncurses pkgconfig alsaLib flac libmad speex ffmpeg libvorbis
|
ncurses alsaLib flac libmad speex ffmpeg libvorbis libmpc libsndfile libjack2
|
||||||
libmpc libsndfile libjack2 db libmodplug timidity libid3tag libtool
|
db libmodplug timidity libid3tag libtool
|
||||||
];
|
];
|
||||||
|
|
||||||
meta = with stdenv.lib; {
|
meta = with stdenv.lib; {
|
||||||
|
@ -2,11 +2,11 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
name = "atom-${version}";
|
name = "atom-${version}";
|
||||||
version = "1.12.2";
|
version = "1.12.5";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://github.com/atom/atom/releases/download/v${version}/atom-amd64.deb";
|
url = "https://github.com/atom/atom/releases/download/v${version}/atom-amd64.deb";
|
||||||
sha256 = "03kznbxfxyjq9fqq1jvq3gvvy50dz3wqvn098n9k9gv8x3595mw4";
|
sha256 = "0bxv9j6v77g9sjlg6vjcxjdsgbh10v3c8f0qp5fpzr7dzk7k9w41";
|
||||||
name = "${name}.deb";
|
name = "${name}.deb";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -171,12 +171,12 @@ rec {
|
|||||||
|
|
||||||
checkstyle = buildEclipseUpdateSite rec {
|
checkstyle = buildEclipseUpdateSite rec {
|
||||||
name = "checkstyle-${version}";
|
name = "checkstyle-${version}";
|
||||||
version = "6.19.1.201607051943";
|
version = "7.2.0.201611082205";
|
||||||
|
|
||||||
src = fetchzip {
|
src = fetchzip {
|
||||||
stripRoot = false;
|
stripRoot = false;
|
||||||
url = "mirror://sourceforge/project/eclipse-cs/Eclipse%20Checkstyle%20Plug-in/6.19.1/net.sf.eclipsecs-updatesite_${version}.zip";
|
url = "mirror://sourceforge/project/eclipse-cs/Eclipse%20Checkstyle%20Plug-in/7.2.0/net.sf.eclipsecs-updatesite_${version}.zip";
|
||||||
sha256 = "03aah57g0cgxym95p1wcj2h69xy3r9c0vv7js3gpmw1hx8w9sjsf";
|
sha256 = "1zngyrh5ckgli0xxm52vm6mzbbvrjslwqcymggfqjhzplpcgwqk1";
|
||||||
};
|
};
|
||||||
|
|
||||||
meta = with stdenv.lib; {
|
meta = with stdenv.lib; {
|
||||||
|
@ -24,12 +24,11 @@ stdenv.mkDerivation rec {
|
|||||||
install *.el* $out/share/emacs/site-lisp
|
install *.el* $out/share/emacs/site-lisp
|
||||||
'';
|
'';
|
||||||
|
|
||||||
meta = {
|
meta = with stdenv.lib; {
|
||||||
description = "Precision colors for machines and people";
|
description = "Precision colors for machines and people";
|
||||||
homepage = http://ethanschoonover.com/solarized;
|
homepage = http://ethanschoonover.com/solarized;
|
||||||
maintainers = "Samuel Rivas <samuelrivas@gmail.com>";
|
maintainers = [ maintainers.samuelrivas ];
|
||||||
license = stdenv.lib.licenses.mit;
|
license = licenses.mit;
|
||||||
|
platforms = platforms.all;
|
||||||
platforms = stdenv.lib.platforms.all;
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -156,12 +156,12 @@ in
|
|||||||
|
|
||||||
idea-community = buildIdea rec {
|
idea-community = buildIdea rec {
|
||||||
name = "idea-community-${version}";
|
name = "idea-community-${version}";
|
||||||
version = "2016.2.5";
|
version = "2016.3";
|
||||||
description = "Integrated Development Environment (IDE) by Jetbrains, community edition";
|
description = "Integrated Development Environment (IDE) by Jetbrains, community edition";
|
||||||
license = stdenv.lib.licenses.asl20;
|
license = stdenv.lib.licenses.asl20;
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://download.jetbrains.com/idea/ideaIC-${version}.tar.gz";
|
url = "https://download.jetbrains.com/idea/ideaIC-${version}.tar.gz";
|
||||||
sha256 = "0d1pssnrn36fibwsyjh30fsd5hn7qw3nljdnwg40q52skilcdk0v";
|
sha256 = "1bp2a1x8nl5flklf160n7ka5clnb0xx9gwv5zd9li2bsf04zlzf3";
|
||||||
};
|
};
|
||||||
wmClass = "jetbrains-idea-ce";
|
wmClass = "jetbrains-idea-ce";
|
||||||
};
|
};
|
||||||
@ -192,12 +192,12 @@ in
|
|||||||
|
|
||||||
idea-ultimate = buildIdea rec {
|
idea-ultimate = buildIdea rec {
|
||||||
name = "idea-ultimate-${version}";
|
name = "idea-ultimate-${version}";
|
||||||
version = "2016.2.5";
|
version = "2016.3";
|
||||||
description = "Integrated Development Environment (IDE) by Jetbrains, requires paid license";
|
description = "Integrated Development Environment (IDE) by Jetbrains, requires paid license";
|
||||||
license = stdenv.lib.licenses.unfree;
|
license = stdenv.lib.licenses.unfree;
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://download.jetbrains.com/idea/ideaIU-${version}.tar.gz";
|
url = "https://download.jetbrains.com/idea/ideaIU-${version}.tar.gz";
|
||||||
sha256 = "0g8v3fw3610gyi25x489vlb72200rgb3b4rwh0igr4w35gwdv91h";
|
sha256 = "1sax3sjhsyvb9qfnn0gc74p3ym6j5f30mmapd4irq9fk4bsl8c31";
|
||||||
};
|
};
|
||||||
wmClass = "jetbrains-idea";
|
wmClass = "jetbrains-idea";
|
||||||
};
|
};
|
||||||
@ -288,12 +288,12 @@ in
|
|||||||
|
|
||||||
webstorm = buildWebStorm rec {
|
webstorm = buildWebStorm rec {
|
||||||
name = "webstorm-${version}";
|
name = "webstorm-${version}";
|
||||||
version = "2016.2.4";
|
version = "2016.3";
|
||||||
description = "Professional IDE for Web and JavaScript development";
|
description = "Professional IDE for Web and JavaScript development";
|
||||||
license = stdenv.lib.licenses.unfree;
|
license = stdenv.lib.licenses.unfree;
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://download.jetbrains.com/webstorm/WebStorm-${version}.tar.gz";
|
url = "https://download.jetbrains.com/webstorm/WebStorm-${version}.tar.gz";
|
||||||
sha256 = "1h61l44xnbcdb26q8ylb25sj3rs43nxki203i2jra2i6j5jzxrvg";
|
sha256 = "12jv8x7rq0cpvrbrb2l2x1p7is8511fx6ia79z5v3fnwxf17i3w5";
|
||||||
};
|
};
|
||||||
wmClass = "jetbrains-webstorm";
|
wmClass = "jetbrains-webstorm";
|
||||||
};
|
};
|
||||||
|
@ -233,21 +233,20 @@ rec {
|
|||||||
};
|
};
|
||||||
|
|
||||||
gimplensfun = pluginDerivation rec {
|
gimplensfun = pluginDerivation rec {
|
||||||
name = "gimplensfun-0.1.1";
|
version = "0.2.4";
|
||||||
|
name = "gimplensfun-${version}";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchFromGitHub {
|
||||||
url = "http://lensfun.sebastiankraft.net/${name}.tar.gz";
|
owner = "seebk";
|
||||||
sha256 = "0kr296n4k7gsjqg1abmvpysxi88iq5wrzdpcg7vm7l1ifvbs972q";
|
repo = "GIMP-Lensfun";
|
||||||
|
rev = version;
|
||||||
|
sha256 = "0zlmp9v732qmzj083mnk5z421s57mnckmpjhiw890wmmwzj2lhxz";
|
||||||
};
|
};
|
||||||
|
|
||||||
patchPhase = '' sed -i Makefile -e's|/usr/bin/g++|g++|' '';
|
|
||||||
|
|
||||||
buildInputs = [ gimp pkgconfig glib gimp.gtk pkgs.lensfun pkgs.exiv2 ];
|
buildInputs = [ gimp pkgconfig glib gimp.gtk pkgs.lensfun pkgs.exiv2 ];
|
||||||
|
|
||||||
installPhase = "
|
installPhase = "
|
||||||
installPlugins gimplensfun
|
installPlugins gimp-lensfun
|
||||||
mkdir -p $out/bin
|
|
||||||
cp gimplensfun $out/bin
|
|
||||||
";
|
";
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
|
@ -4,25 +4,26 @@
|
|||||||
|
|
||||||
with stdenv.lib;
|
with stdenv.lib;
|
||||||
let installSanePath = path: ''
|
let installSanePath = path: ''
|
||||||
if test -e "${path}/lib/sane"; then
|
if [ -e "${path}/lib/sane" ]; then
|
||||||
find "${path}/lib/sane" -maxdepth 1 -not -type d | while read backend; do
|
find "${path}/lib/sane" -maxdepth 1 -not -type d | while read backend; do
|
||||||
ln -s $backend $out/lib/sane/$(basename $backend)
|
ln -s "$backend" "$out/lib/sane/$(basename "$backend")"
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test -e "${path}/etc/sane.d"; then
|
if [ -e "${path}/etc/sane.d" ]; then
|
||||||
find "${path}/etc/sane.d" -maxdepth 1 -not -type d | while read conf; do
|
find "${path}/etc/sane.d" -maxdepth 1 -not -type d | while read conf; do
|
||||||
if test $(basename $conf) = "dll.conf"; then
|
name="$(basename $conf)"
|
||||||
cat $conf >> $out/etc/sane.d/dll.conf
|
if [ "$name" = "dll.conf" ] || [ "$name" = "saned.conf" ] || [ "$name" = "net.conf" ]; then
|
||||||
|
cat "$conf" >> "$out/etc/sane.d/$name"
|
||||||
else
|
else
|
||||||
ln -s $conf $out/etc/sane.d/$(basename $conf)
|
ln -s "$conf" "$out/etc/sane.d/$name"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if test -e "${path}/etc/sane.d/dll.d"; then
|
if [ -e "${path}/etc/sane.d/dll.d" ]; then
|
||||||
find "${path}/etc/sane.d/dll.d" -maxdepth 1 -not -type d | while read conf; do
|
find "${path}/etc/sane.d/dll.d" -maxdepth 1 -not -type d | while read conf; do
|
||||||
ln -s $conf $out/etc/sane.d/dll.d/$(basename $conf)
|
ln -s "$conf" "$out/etc/sane.d/dll.d/$(basename $conf)"
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
'';
|
'';
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
{ stdenv, fetchurl
|
{ stdenv, fetchurl, makeDesktopItem
|
||||||
, ghostscript, atk, gtk2, glib, fontconfig, freetype
|
, ghostscript, atk, gtk2, glib, fontconfig, freetype
|
||||||
, libgnomecanvas, libgnomeprint, libgnomeprintui
|
, libgnomecanvas, libgnomeprint, libgnomeprintui
|
||||||
, pango, libX11, xproto, zlib, poppler
|
, pango, libX11, xproto, zlib, poppler
|
||||||
@ -21,6 +21,32 @@ stdenv.mkDerivation rec {
|
|||||||
|
|
||||||
NIX_LDFLAGS = [ "-lX11" "-lz" ];
|
NIX_LDFLAGS = [ "-lX11" "-lz" ];
|
||||||
|
|
||||||
|
desktopItem = makeDesktopItem {
|
||||||
|
name = name;
|
||||||
|
exec = "xournal";
|
||||||
|
icon = "xournal";
|
||||||
|
desktopName = "Xournal";
|
||||||
|
comment = meta.description;
|
||||||
|
categories = "Office;Graphics;";
|
||||||
|
mimeType = "application/pdf;application/x-xoj";
|
||||||
|
genericName = "PDF Editor";
|
||||||
|
};
|
||||||
|
|
||||||
|
postInstall=''
|
||||||
|
mkdir --parents $out/share/mime/packages
|
||||||
|
cat << EOF > $out/share/mime/packages/xournal.xml
|
||||||
|
<mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'>
|
||||||
|
<mime-type type="application/x-xoj">
|
||||||
|
<comment>Xournal Document</comment>
|
||||||
|
<glob pattern="*.xoj"/>
|
||||||
|
</mime-type>
|
||||||
|
</mime-info>
|
||||||
|
EOF
|
||||||
|
cp --recursive ${desktopItem}/share/applications $out/share
|
||||||
|
mkdir --parents $out/share/icons
|
||||||
|
cp $out/share/xournal/pixmaps/xournal.png $out/share/icons
|
||||||
|
'';
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
homepage = http://xournal.sourceforge.net/;
|
homepage = http://xournal.sourceforge.net/;
|
||||||
description = "Note-taking application (supposes stylus)";
|
description = "Note-taking application (supposes stylus)";
|
||||||
|
@ -1,20 +1,20 @@
|
|||||||
{ stdenv, fetchFromGitHub, cmake, makeWrapper, pkgconfig, vala_0_26, gtk3, libgee
|
{ stdenv, fetchFromGitHub, cmake, makeWrapper, pkgconfig, vala, gtk3, libgee
|
||||||
, poppler, libpthreadstubs, gstreamer, gst-plugins-base, librsvg }:
|
, poppler, libpthreadstubs, gstreamer, gst-plugins-base, librsvg }:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
name = "${product}-${version}";
|
name = "${product}-${version}";
|
||||||
product = "pdfpc";
|
product = "pdfpc";
|
||||||
version = "4.0.2";
|
version = "4.0.3";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
repo = "pdfpc";
|
repo = "pdfpc";
|
||||||
owner = "pdfpc";
|
owner = "pdfpc";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "0151i9msagcqcfaddgd1vkmman0qgqy6s3714sqas568r4r9ngdk";
|
sha256 = "1fcwxvik3nnn0g37xvb30vxaxwrd881fw07fyfb9c6ami9bnva3p";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ cmake pkgconfig ];
|
nativeBuildInputs = [ cmake pkgconfig ];
|
||||||
buildInputs = [ gstreamer gst-plugins-base vala_0_26 gtk3 libgee poppler
|
buildInputs = [ gstreamer gst-plugins-base vala gtk3 libgee poppler
|
||||||
libpthreadstubs makeWrapper librsvg ];
|
libpthreadstubs makeWrapper librsvg ];
|
||||||
|
|
||||||
postInstall = ''
|
postInstall = ''
|
||||||
|
@ -1,28 +1,30 @@
|
|||||||
{ stdenv, fetchurl, docbook_xsl, dbus_libs, dbus_glib, expat, gettext
|
{ stdenv, fetchurl, docbook_xsl, dbus_libs, dbus_glib, expat, gettext
|
||||||
, gsettings_desktop_schemas, gdk_pixbuf, gtk2, gtk3, hicolor_icon_theme
|
, gsettings_desktop_schemas, gdk_pixbuf, gtk2, gtk3, hicolor_icon_theme
|
||||||
, imagemagick, itstool, librsvg, libtool, libxslt, lockfile, makeWrapper
|
, imagemagick, itstool, librsvg, libtool, libxslt, lockfile, makeWrapper
|
||||||
, pkgconfig, python, pythonPackages, vte }:
|
, pkgconfig, python, pythonPackages, vte
|
||||||
|
, wrapGAppsHook}:
|
||||||
|
|
||||||
# TODO: Still getting following warning.
|
# TODO: Still getting following warning.
|
||||||
# WARNING **: Error retrieving accessibility bus address: org.freedesktop.DBus.Error.ServiceUnknown: The name org.a11y.Bus was not provided by any .service files
|
# WARNING **: Error retrieving accessibility bus address: org.freedesktop.DBus.Error.ServiceUnknown: The name org.a11y.Bus was not provided by any .service files
|
||||||
# Seems related to this:
|
# Seems related to this:
|
||||||
# https://forums.gentoo.org/viewtopic-t-947210-start-0.html
|
# https://forums.gentoo.org/viewtopic-t-947210-start-0.html
|
||||||
|
|
||||||
let version = "2.9.4";
|
let version = "3.3.2";
|
||||||
in stdenv.mkDerivation rec {
|
in stdenv.mkDerivation rec {
|
||||||
name = "roxterm-${version}";
|
name = "roxterm-${version}";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "mirror://sourceforge/roxterm/${name}.tar.bz2";
|
url = "mirror://sourceforge/roxterm/${name}.tar.xz";
|
||||||
sha256 = "0djfiwfmnqqp6930kswzr2rss0mh40vglcdybwpxrijcw4n8j21x";
|
sha256 = "0vjh7k4jm4bd01j88w9bmvq27zqsajjzy131fpi81zkii5lisl1k";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = [ pkgconfig wrapGAppsHook ];
|
||||||
|
|
||||||
buildInputs =
|
buildInputs =
|
||||||
[ docbook_xsl expat imagemagick itstool librsvg libtool libxslt
|
[ docbook_xsl expat imagemagick itstool librsvg libtool libxslt
|
||||||
makeWrapper pkgconfig python pythonPackages.lockfile ];
|
makeWrapper python pythonPackages.lockfile dbus_libs dbus_glib
|
||||||
|
gdk_pixbuf gsettings_desktop_schemas gtk3
|
||||||
propagatedBuildInputs =
|
hicolor_icon_theme vte ];
|
||||||
[ dbus_libs dbus_glib gdk_pixbuf gettext gsettings_desktop_schemas gtk2 gtk3 hicolor_icon_theme vte ];
|
|
||||||
|
|
||||||
NIX_CFLAGS_COMPILE = [ "-I${dbus_glib.dev}/include/dbus-1.0"
|
NIX_CFLAGS_COMPILE = [ "-I${dbus_glib.dev}/include/dbus-1.0"
|
||||||
"-I${dbus_libs.dev}/include/dbus-1.0"
|
"-I${dbus_libs.dev}/include/dbus-1.0"
|
||||||
@ -37,16 +39,12 @@ in stdenv.mkDerivation rec {
|
|||||||
# Fix up the LD_LIBRARY_PATH so that expat is on it
|
# Fix up the LD_LIBRARY_PATH so that expat is on it
|
||||||
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${expat.out}/lib"
|
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${expat.out}/lib"
|
||||||
|
|
||||||
python mscript.py configure --prefix="$out"
|
python mscript.py configure --prefix="$out" --disable-nls --disable-translations
|
||||||
python mscript.py build
|
python mscript.py build
|
||||||
'';
|
'';
|
||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
python mscript.py install
|
python mscript.py install
|
||||||
|
|
||||||
wrapProgram "$out/bin/roxterm" \
|
|
||||||
--prefix XDG_DATA_DIRS : "$GSETTINGS_SCHEMAS_PATH" \
|
|
||||||
--set GDK_PIXBUF_MODULE_FILE "$GDK_PIXBUF_MODULE_FILE"
|
|
||||||
'';
|
'';
|
||||||
|
|
||||||
meta = with stdenv.lib; {
|
meta = with stdenv.lib; {
|
||||||
@ -54,10 +52,10 @@ in stdenv.mkDerivation rec {
|
|||||||
license = licenses.gpl3;
|
license = licenses.gpl3;
|
||||||
description = "Tabbed, VTE-based terminal emulator";
|
description = "Tabbed, VTE-based terminal emulator";
|
||||||
longDescription = ''
|
longDescription = ''
|
||||||
Tabbed, VTE-based terminal emulator. Similar to gnome-terminal without the dependencies on Gnome.
|
Tabbed, VTE-based terminal emulator. Similar to gnome-terminal without
|
||||||
|
the dependencies on Gnome.
|
||||||
'';
|
'';
|
||||||
maintainers = with maintainers; [ cdepillabout ];
|
maintainers = with maintainers; [ cdepillabout ];
|
||||||
platforms = platforms.linux;
|
platforms = platforms.linux;
|
||||||
broken = true; # https://github.com/NixOS/nixpkgs/issues/19579
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
63
pkgs/applications/misc/simplenote/default.nix
Normal file
63
pkgs/applications/misc/simplenote/default.nix
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
{ fetchurl, stdenv, lib, zlib, glib, alsaLib, dbus, gtk2, atk, pango, freetype, fontconfig
|
||||||
|
, libgnome_keyring3, gdk_pixbuf, gvfs, cairo, cups, expat, libgpgerror, nspr
|
||||||
|
, nss, xorg, libcap, systemd, libnotify ,libXScrnSaver, gnome3 }:
|
||||||
|
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
|
||||||
|
name = "simplenote-${pkgver}";
|
||||||
|
pkgver = "1.0.6";
|
||||||
|
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://github.com/Automattic/simplenote-electron/releases/download/v${pkgver}/Simplenote-linux-x64.${pkgver}.tar.gz";
|
||||||
|
sha256 = "18wj880iw92yd57w781dqaj7iv9j3bqhyh2cbikqrl4m5w9xkla8";
|
||||||
|
};
|
||||||
|
|
||||||
|
buildCommand = let
|
||||||
|
|
||||||
|
packages = [
|
||||||
|
stdenv.cc.cc zlib glib dbus gtk2 atk pango freetype libgnome_keyring3
|
||||||
|
fontconfig gdk_pixbuf cairo cups expat libgpgerror alsaLib nspr nss
|
||||||
|
xorg.libXrender xorg.libX11 xorg.libXext xorg.libXdamage xorg.libXtst
|
||||||
|
xorg.libXcomposite xorg.libXi xorg.libXfixes xorg.libXrandr
|
||||||
|
xorg.libXcursor libcap systemd libnotify libXScrnSaver gnome3.gconf
|
||||||
|
];
|
||||||
|
|
||||||
|
libPathNative = lib.makeLibraryPath packages;
|
||||||
|
libPath64 = lib.makeSearchPathOutput "lib" "lib64" packages;
|
||||||
|
libPath = "${libPathNative}:${libPath64}";
|
||||||
|
|
||||||
|
in ''
|
||||||
|
mkdir -p $out/share/
|
||||||
|
mkdir -p $out/bin
|
||||||
|
tar xvzf $src -C $out/share/
|
||||||
|
mv $out/share/Simplenote-linux-x64 $out/share/simplenote
|
||||||
|
mv $out/share/simplenote/Simplenote $out/share/simplenote/simplenote
|
||||||
|
mkdir -p $out/share/applications
|
||||||
|
|
||||||
|
cat > $out/share/applications/simplenote.desktop << EOF
|
||||||
|
[Desktop Entry]
|
||||||
|
Name=Simplenote
|
||||||
|
Comment=Simplenote for Linux
|
||||||
|
Exec=$out/bin/simplenote
|
||||||
|
Icon=$out/share/simplenote/Simplenote.png
|
||||||
|
Type=Application
|
||||||
|
StartupNotify=true
|
||||||
|
Categories=Development;
|
||||||
|
EOF
|
||||||
|
|
||||||
|
fixupPhase
|
||||||
|
|
||||||
|
patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
|
||||||
|
--set-rpath "${libPath}:$out/share/simplenote" \
|
||||||
|
$out/share/simplenote/simplenote
|
||||||
|
|
||||||
|
ln -s $out/share/simplenote/simplenote $out/bin/simplenote
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = with stdenv.lib; {
|
||||||
|
description = "The simplest way to keep notes";
|
||||||
|
homepage = https://github.com/Automattic/simplenote-electron;
|
||||||
|
license = licenses.lgpl2;
|
||||||
|
platforms = [ "x86_64-linux" ];
|
||||||
|
};
|
||||||
|
}
|
@ -6,11 +6,11 @@
|
|||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
|
|
||||||
name = "tilda-${version}";
|
name = "tilda-${version}";
|
||||||
version = "1.2.4";
|
version = "1.3.3";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://github.com/lanoxx/tilda/archive/${name}.tar.gz";
|
url = "https://github.com/lanoxx/tilda/archive/${name}.tar.gz";
|
||||||
sha256 = "1f7b52c5d8cfd9038ad2e41fc633fce935f420fa657ed15e3942722c8570751e";
|
sha256 = "1cc4qbg1m3i04lj5p6i6xbd0zvy1320pxdgmjhz5p3j95ibsbfki";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = [ pkgconfig autoreconfHook gettext confuse vte gtk makeWrapper ];
|
buildInputs = [ pkgconfig autoreconfHook gettext confuse vte gtk makeWrapper ];
|
||||||
|
@ -3,11 +3,11 @@
|
|||||||
}:
|
}:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
name = "xterm-325";
|
name = "xterm-327";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "ftp://invisible-island.net/xterm/${name}.tgz";
|
url = "ftp://invisible-island.net/xterm/${name}.tgz";
|
||||||
sha256 = "06sz66z4hvjjkvm3r5a5z442iis8lz8yjfzc629pwhj01ixb0c9v";
|
sha256 = "02qmfr1y24y5vq6kddksw84b8gxalc96n9wwaj7i8hmk6mn2zyv6";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs =
|
buildInputs =
|
||||||
|
@ -94,12 +94,12 @@ let
|
|||||||
|
|
||||||
flash = stdenv.mkDerivation rec {
|
flash = stdenv.mkDerivation rec {
|
||||||
name = "flashplayer-ppapi-${version}";
|
name = "flashplayer-ppapi-${version}";
|
||||||
version = "23.0.0.205";
|
version = "23.0.0.207";
|
||||||
|
|
||||||
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 = "0gj5d8475qcplm3iqs3hkq0i6qkmbhci1zp3ljnhafc6xz0avyhj";
|
sha256 = "1spwv06rynaw45pdll6hzsq6zbz1q10bf7dx4zz25gh8x3sl9l6a";
|
||||||
stripRoot = false;
|
stripRoot = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
{ stdenv, fetchurl, perl, ncurses, xlibsWrapper, bzip2, zlib, openssl
|
{ stdenv, fetchurl, perl, ncurses, xlibsWrapper, bzip2, zlib, openssl
|
||||||
, spidermonkey, gpm
|
, spidermonkey_1_8_5, gpm
|
||||||
, enableGuile ? false, guile ? null # Incompatible licenses, LGPLv3 - GPLv2
|
, enableGuile ? false, guile ? null # Incompatible licenses, LGPLv3 - GPLv2
|
||||||
, enablePython ? false, python ? null
|
, enablePython ? false, python ? null
|
||||||
}:
|
}:
|
||||||
@ -17,7 +17,7 @@ stdenv.mkDerivation rec {
|
|||||||
|
|
||||||
patches = [ ./gc-init.patch ];
|
patches = [ ./gc-init.patch ];
|
||||||
|
|
||||||
buildInputs = [ perl ncurses xlibsWrapper bzip2 zlib openssl spidermonkey gpm ]
|
buildInputs = [ perl ncurses xlibsWrapper bzip2 zlib openssl spidermonkey_1_8_5 gpm ]
|
||||||
++ stdenv.lib.optional enableGuile guile
|
++ stdenv.lib.optional enableGuile guile
|
||||||
++ stdenv.lib.optional enablePython python;
|
++ stdenv.lib.optional enablePython python;
|
||||||
|
|
||||||
@ -25,7 +25,7 @@ stdenv.mkDerivation rec {
|
|||||||
''
|
''
|
||||||
--enable-finger --enable-html-highlight
|
--enable-finger --enable-html-highlight
|
||||||
--with-perl --enable-gopher --enable-cgi --enable-bittorrent
|
--with-perl --enable-gopher --enable-cgi --enable-bittorrent
|
||||||
--with-spidermonkey=${spidermonkey}
|
--with-spidermonkey=${spidermonkey_1_8_5}
|
||||||
--enable-nntp --with-openssl=${openssl.dev}
|
--enable-nntp --with-openssl=${openssl.dev}
|
||||||
'' + stdenv.lib.optionalString enableGuile " --with-guile"
|
'' + stdenv.lib.optionalString enableGuile " --with-guile"
|
||||||
+ stdenv.lib.optionalString enablePython " --with-python";
|
+ stdenv.lib.optionalString enablePython " --with-python";
|
||||||
|
@ -70,6 +70,7 @@ common = { pname, version, sha512 }: stdenv.mkDerivation rec {
|
|||||||
"--enable-jemalloc"
|
"--enable-jemalloc"
|
||||||
"--disable-gconf"
|
"--disable-gconf"
|
||||||
"--enable-default-toolkit=cairo-gtk2"
|
"--enable-default-toolkit=cairo-gtk2"
|
||||||
|
"--with-google-api-keyfile=ga"
|
||||||
]
|
]
|
||||||
++ lib.optional enableGTK3 "--enable-default-toolkit=cairo-gtk3"
|
++ lib.optional enableGTK3 "--enable-default-toolkit=cairo-gtk3"
|
||||||
++ (if debugBuild then [ "--enable-debug" "--enable-profiling" ]
|
++ (if debugBuild then [ "--enable-debug" "--enable-profiling" ]
|
||||||
@ -85,6 +86,11 @@ common = { pname, version, sha512 }: stdenv.mkDerivation rec {
|
|||||||
configureScript="$(realpath ./configure)"
|
configureScript="$(realpath ./configure)"
|
||||||
mkdir ../objdir
|
mkdir ../objdir
|
||||||
cd ../objdir
|
cd ../objdir
|
||||||
|
|
||||||
|
# Google API key used by Chromium and Firefox.
|
||||||
|
# Note: These are for NixOS/nixpkgs use ONLY. For your own distribution,
|
||||||
|
# please get your own set of keys.
|
||||||
|
echo "AIzaSyDGi15Zwl11UNe6Y-5XW_upsfyw31qwZPI" >ga
|
||||||
'';
|
'';
|
||||||
|
|
||||||
preInstall =
|
preInstall =
|
||||||
|
@ -23,11 +23,11 @@
|
|||||||
let
|
let
|
||||||
# NOTE: When updating, please also update in current stable,
|
# NOTE: When updating, please also update in current stable,
|
||||||
# as older versions stop working
|
# as older versions stop working
|
||||||
version = "13.4.21";
|
version = "14.4.19";
|
||||||
sha256 =
|
sha256 =
|
||||||
{
|
{
|
||||||
"x86_64-linux" = "0ckinjrnnijs2wx80c0bqdlcsw5zhx64rsh3bylcjfbpvyli96q4";
|
"x86_64-linux" = "06ln88dx6k1d2b2wwj66gj1gyy0s3xvs7m50v8i2ycdw3d9kimkw";
|
||||||
"i686-linux" = "08lhj4hlhvxm4zp9jai01f8cydfgfkl91l4ydd85yccl9ii4flh5";
|
"i686-linux" = "0mil1h86r8fmzxb6d7ycwz9yqkmj66k37zxxb2x8mw15l9qndrwf";
|
||||||
}."${stdenv.system}" or (throw "system ${stdenv.system} not supported");
|
}."${stdenv.system}" or (throw "system ${stdenv.system} not supported");
|
||||||
|
|
||||||
arch =
|
arch =
|
||||||
|
@ -1,21 +1,22 @@
|
|||||||
{ 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.22.1"; in
|
let version = "3.22.2.2"; 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 = "0pr8wj2dk5s5xxrsl0pb8y1bna0k1s3c18dh056c6qp02gba1a1f";
|
sha256 = "1h02k13x88f04gkf433cxx1xvbr7kkl2aygb4i6581gzhzjifwdv";
|
||||||
};
|
};
|
||||||
|
|
||||||
configureFlags = [
|
configureFlags = [
|
||||||
"--disable-manualupdatecheck"
|
"--disable-manualupdatecheck"
|
||||||
];
|
];
|
||||||
|
|
||||||
|
nativeBuildInputs = [ pkgconfig ];
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
dbus gnutls wxGTK30 libidn tinyxml gettext pkgconfig xdg_utils gtk2 sqlite
|
dbus gnutls wxGTK30 libidn tinyxml gettext xdg_utils gtk2 sqlite
|
||||||
pugixml libfilezilla nettle ];
|
pugixml libfilezilla nettle ];
|
||||||
|
|
||||||
meta = with stdenv.lib; {
|
meta = with stdenv.lib; {
|
||||||
|
@ -1,15 +1,15 @@
|
|||||||
{stdenv, fetchurl, cmake, flex, bison, openssl, libpcap, perl, zlib, file, curl
|
{stdenv, fetchurl, cmake, flex, bison, openssl, libpcap, perl, zlib, file, curl
|
||||||
, geoip, gperftools }:
|
, geoip, gperftools, python }:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
name = "bro-2.4.1";
|
name = "bro-2.5";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "http://www.bro.org/downloads/release/${name}.tar.gz";
|
url = "http://www.bro.org/downloads/${name}.tar.gz";
|
||||||
sha256 = "1xn8qwgnxihlr4lmg7kz2vqjk46aqgwc8878pbv30ih2lmrrdffq";
|
sha256 = "10603lwhwsmh08m5rgknbspbhd4lis71qv7z8ixacgv6sf8a40hm";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = [ cmake flex bison openssl libpcap perl zlib file curl geoip gperftools ];
|
buildInputs = [ cmake flex bison openssl libpcap perl zlib file curl geoip gperftools python ];
|
||||||
|
|
||||||
enableParallelBuilding = true;
|
enableParallelBuilding = true;
|
||||||
|
|
||||||
|
@ -25,7 +25,7 @@ in stdenv.mkDerivation rec {
|
|||||||
"16l9jma2hiwzl9l41yhrwribcgmxca271rq0cfbbm9701mmmciyy";
|
"16l9jma2hiwzl9l41yhrwribcgmxca271rq0cfbbm9701mmmciyy";
|
||||||
};
|
};
|
||||||
|
|
||||||
phases = [ "unpackPhase" "installPhase" ];
|
phases = [ "unpackPhase" "installPhase" "postFixup" ];
|
||||||
|
|
||||||
deps = with xorg; [
|
deps = with xorg; [
|
||||||
gtk2 atk glib pango gdk_pixbuf cairo freetype fontconfig dbus
|
gtk2 atk glib pango gdk_pixbuf cairo freetype fontconfig dbus
|
||||||
@ -53,6 +53,10 @@ in stdenv.mkDerivation rec {
|
|||||||
ln -s $out/share/franz/resources/app.asar.unpacked/assets/franz.png $out/share/pixmaps
|
ln -s $out/share/franz/resources/app.asar.unpacked/assets/franz.png $out/share/pixmaps
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
postFixup = ''
|
||||||
|
paxmark m $out/share/franz/Franz
|
||||||
|
'';
|
||||||
|
|
||||||
meta = with stdenv.lib; {
|
meta = with stdenv.lib; {
|
||||||
description = "A free messaging app that combines chat & messaging services into one application";
|
description = "A free messaging app that combines chat & messaging services into one application";
|
||||||
homepage = http://meetfranz.com;
|
homepage = http://meetfranz.com;
|
||||||
|
@ -0,0 +1,33 @@
|
|||||||
|
{stdenv, fetchFromGitHub, ocamlPackages, opam}:
|
||||||
|
|
||||||
|
assert stdenv.lib.versionAtLeast ocamlPackages.ocaml.version "4.02.2";
|
||||||
|
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
version = "2016-11-18";
|
||||||
|
name = "jackline-${version}";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "hannesm";
|
||||||
|
repo = "jackline";
|
||||||
|
rev = "cab34acab004023911997ec9aee8b00a976af7e4";
|
||||||
|
sha256 = "0h7wdsic4v6ys130w61zvxm5s2vc7y574hn7zby12rq88lhhrjh7";
|
||||||
|
};
|
||||||
|
|
||||||
|
buildInputs = with ocamlPackages; [
|
||||||
|
ocaml ocamlbuild findlib topkg ppx_sexp_conv
|
||||||
|
erm_xmpp_0_3 tls nocrypto x509 ocaml_lwt otr astring
|
||||||
|
ptime notty sexplib_p4 hex uutf opam
|
||||||
|
];
|
||||||
|
|
||||||
|
buildPhase = with ocamlPackages;
|
||||||
|
"ocaml -I ${findlib}/lib/ocaml/${ocaml.version}/site-lib pkg/pkg.ml build --pinned true";
|
||||||
|
|
||||||
|
installPhase = "opam-installer --prefix=$out --script | sh";
|
||||||
|
|
||||||
|
meta = with stdenv.lib; {
|
||||||
|
homepage = https://github.com/hannesm/jackline;
|
||||||
|
description = "Terminal-based XMPP client in OCaml";
|
||||||
|
license = licenses.bsd2;
|
||||||
|
maintainers = with maintainers; [ sternenseemann ];
|
||||||
|
};
|
||||||
|
}
|
@ -2,13 +2,13 @@
|
|||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
name = "pidgin-skypeweb-${version}";
|
name = "pidgin-skypeweb-${version}";
|
||||||
version = "1.2.1";
|
version = "1.2.2";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "EionRobb";
|
owner = "EionRobb";
|
||||||
repo = "skype4pidgin";
|
repo = "skype4pidgin";
|
||||||
rev = "${version}";
|
rev = "${version}";
|
||||||
sha256 = "0qmqf1r9kc7r6rgzz0byyq7yf5spsl2iima0cvxafs43gn4hnc2z";
|
sha256 = "1lxpz316jmns6i143v4j6sd6k0a4a54alw08rvwjckf2rig57lj2";
|
||||||
};
|
};
|
||||||
|
|
||||||
sourceRoot = "skype4pidgin-${version}-src/skypeweb";
|
sourceRoot = "skype4pidgin-${version}-src/skypeweb";
|
||||||
|
@ -21,7 +21,7 @@ stdenv.mkDerivation rec {
|
|||||||
|
|
||||||
installPhase = ''
|
installPhase = ''
|
||||||
mkdir -p $out/lib/pidgin/
|
mkdir -p $out/lib/pidgin/
|
||||||
cp bin/*.so $out/lib/pidgin/
|
cp bin/*.so $out/lib/pidgin/ #*/
|
||||||
cp tg-server.tglpub $out/lib/pidgin/server.tglpub
|
cp tg-server.tglpub $out/lib/pidgin/server.tglpub
|
||||||
mkdir -p $out/pixmaps/pidgin/protocols/{16,22,48}
|
mkdir -p $out/pixmaps/pidgin/protocols/{16,22,48}
|
||||||
cp imgs/telegram16.png $out/pixmaps/pidgin/protocols/16
|
cp imgs/telegram16.png $out/pixmaps/pidgin/protocols/16
|
||||||
@ -29,11 +29,11 @@ stdenv.mkDerivation rec {
|
|||||||
cp imgs/telegram48.png $out/pixmaps/pidgin/protocols/48
|
cp imgs/telegram48.png $out/pixmaps/pidgin/protocols/48
|
||||||
'';
|
'';
|
||||||
|
|
||||||
meta = {
|
meta = with stdenv.lib; {
|
||||||
homepage = https://github.com/majn/telegram-purple;
|
homepage = https://github.com/majn/telegram-purple;
|
||||||
description = "Telegram for Pidgin / libpurple";
|
description = "Telegram for Pidgin / libpurple";
|
||||||
license = stdenv.lib.licenses.gpl2;
|
license = licenses.gpl2;
|
||||||
maintainers = stdenv.lib.maintainers.jagajaga;
|
maintainers = [ maintainers.jagajaga ];
|
||||||
platforms = stdenv.lib.platforms.linux;
|
platforms = platforms.linux;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -6,7 +6,7 @@ let
|
|||||||
bits = if stdenv.system == "x86_64-linux" then "x64"
|
bits = if stdenv.system == "x86_64-linux" then "x64"
|
||||||
else "ia32";
|
else "ia32";
|
||||||
|
|
||||||
version = "0.4.4";
|
version = "0.4.5";
|
||||||
|
|
||||||
myIcon = fetchurl {
|
myIcon = fetchurl {
|
||||||
url = "https://raw.githubusercontent.com/saenzramiro/rambox/9e4444e6297dd35743b79fe23f8d451a104028d5/resources/Icon.png";
|
url = "https://raw.githubusercontent.com/saenzramiro/rambox/9e4444e6297dd35743b79fe23f8d451a104028d5/resources/Icon.png";
|
||||||
@ -26,11 +26,11 @@ in stdenv.mkDerivation rec {
|
|||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://github.com/saenzramiro/rambox/releases/download/${version}/Rambox-${version}-${bits}.tar.gz";
|
url = "https://github.com/saenzramiro/rambox/releases/download/${version}/Rambox-${version}-${bits}.tar.gz";
|
||||||
sha256 = if bits == "x64" then
|
sha256 = if bits == "x64" then
|
||||||
"05xwabwij7fyifrypahcplymz46k01rzrwgp5gn79hh023w259i0" else
|
"0z2rmfiwhb6v2hkzgrbkd4nhdvm1rssh0mbfbdmdwxq91qzp6558" else
|
||||||
"16j17rc8mld96mq1rxnwmxwfa2q5b44s40c56mwh34plqyn546l2";
|
"0gq0ywk1jr0apl39dnm0vwdwg1inr7fari3cmfz3fvaym7gc8fki";
|
||||||
};
|
};
|
||||||
|
|
||||||
phases = [ "unpackPhase" "installPhase" ];
|
phases = [ "unpackPhase" "installPhase" "postFixup" ];
|
||||||
|
|
||||||
deps = with xorg; [
|
deps = with xorg; [
|
||||||
gtk2 atk glib pango gdk_pixbuf cairo freetype fontconfig dbus
|
gtk2 atk glib pango gdk_pixbuf cairo freetype fontconfig dbus
|
||||||
@ -53,6 +53,10 @@ in stdenv.mkDerivation rec {
|
|||||||
ln -s ${desktopItem}/share/applications/* $out/share/applications
|
ln -s ${desktopItem}/share/applications/* $out/share/applications
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
postFixup = ''
|
||||||
|
paxmark m $out/share/rambox/Rambox
|
||||||
|
'';
|
||||||
|
|
||||||
meta = with stdenv.lib; {
|
meta = with stdenv.lib; {
|
||||||
description = "Free and Open Source messaging and emailing app that combines common web applications into one";
|
description = "Free and Open Source messaging and emailing app that combines common web applications into one";
|
||||||
homepage = http://rambox.pro;
|
homepage = http://rambox.pro;
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{ stdenv, fetchurl, makeWrapper }:
|
{ stdenv, fetchurl, makeWrapper }:
|
||||||
|
|
||||||
let
|
let
|
||||||
version = "3.0.12.4";
|
version = "3.0.13.5";
|
||||||
arch = if stdenv.is64bit then "amd64" else "x86";
|
arch = if stdenv.is64bit then "amd64" else "x86";
|
||||||
libDir = if stdenv.is64bit then "lib64" else "lib";
|
libDir = if stdenv.is64bit then "lib64" else "lib";
|
||||||
in
|
in
|
||||||
@ -15,8 +15,8 @@ stdenv.mkDerivation {
|
|||||||
"http://teamspeak.gameserver.gamed.de/ts3/releases/${version}/teamspeak3-server_linux_${arch}-${version}.tar.bz2"
|
"http://teamspeak.gameserver.gamed.de/ts3/releases/${version}/teamspeak3-server_linux_${arch}-${version}.tar.bz2"
|
||||||
];
|
];
|
||||||
sha256 = if stdenv.is64bit
|
sha256 = if stdenv.is64bit
|
||||||
then "1n8vgbgnfbllfvsl82ai6smv6hl32a3nd071j2dp79agjz4fic3b"
|
then "bd5933dd17d17f93d56f69332927cd1ce6f34439ec464a0ce2ca73102d85080c"
|
||||||
else "19vkcgb0h71amixry8r72qqwaxwplzyz9nrxg5bdjjg8r2mkh4bc";
|
else "848e1a44af3c2b00840a280ba558a13407f4844432ddfd262ee8a7800365386b";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = [ makeWrapper ];
|
buildInputs = [ makeWrapper ];
|
||||||
@ -60,7 +60,7 @@ stdenv.mkDerivation {
|
|||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
description = "TeamSpeak voice communication server";
|
description = "TeamSpeak voice communication server";
|
||||||
homepage = http://teamspeak.com/;
|
homepage = https://teamspeak.com/;
|
||||||
license = stdenv.lib.licenses.unfreeRedistributable;
|
license = stdenv.lib.licenses.unfreeRedistributable;
|
||||||
platforms = stdenv.lib.platforms.linux;
|
platforms = stdenv.lib.platforms.linux;
|
||||||
maintainers = [ stdenv.lib.maintainers.arobyn ];
|
maintainers = [ stdenv.lib.maintainers.arobyn ];
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
{ stdenv, fetchurl, pidgin, telepathy_glib, glib, dbus_glib, pkgconfig, libxslt }:
|
{ stdenv, fetchurl, fetchpatch, pidgin, telepathy_glib, glib, dbus_glib, pkgconfig, libxslt }:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "telepathy-haze";
|
pname = "telepathy-haze";
|
||||||
@ -13,6 +13,15 @@ stdenv.mkDerivation rec {
|
|||||||
|
|
||||||
nativeBuildInputs = [ pkgconfig libxslt ];
|
nativeBuildInputs = [ pkgconfig libxslt ];
|
||||||
|
|
||||||
|
patches = [
|
||||||
|
# Patch from Gentoo that helps telepathy-haze build with more
|
||||||
|
# recent versions of pidgin.
|
||||||
|
(fetchpatch {
|
||||||
|
url = https://raw.githubusercontent.com/gentoo/gentoo/master/net-voip/telepathy-haze/files/telepathy-haze-0.8.0-pidgin-2.10.12-compat.patch;
|
||||||
|
sha256 = "0fa1p4n1559qd096w7ya4kvfnc1c98ykarkxzlpkwvzbczwzng3c";
|
||||||
|
})
|
||||||
|
];
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
description = "A Telepathy connection manager based on libpurple";
|
description = "A Telepathy connection manager based on libpurple";
|
||||||
platforms = stdenv.lib.platforms.gnu; # Random choice
|
platforms = stdenv.lib.platforms.gnu; # Random choice
|
||||||
|
@ -4,123 +4,123 @@
|
|||||||
# ruby generate_sources.rb 45.1.1 > sources.nix
|
# ruby generate_sources.rb 45.1.1 > sources.nix
|
||||||
|
|
||||||
{
|
{
|
||||||
version = "45.4.0";
|
version = "45.5.0";
|
||||||
sources = [
|
sources = [
|
||||||
{ locale = "ar"; arch = "linux-i686"; sha512 = "8db134f67ea813c12d97b0a44fb6169f42b45b8f9e7e151cb6389ee6628e301c95b5ca7492ec5c803cd44225b1929539e81c4df840bb533ef12740c4b9b82f28"; }
|
{ locale = "ar"; arch = "linux-i686"; sha512 = "bd6c633bd3ac5fc26f98ba1183f51b4380826d40762b1a28aa2fb6cda2ae776e3dc7909024d7f66b771323d489510c5237977e1380f33e5ac6ece933336e75c5"; }
|
||||||
{ locale = "ar"; arch = "linux-x86_64"; sha512 = "b3da97b15b71aa536d0acdf08e9e980ddd1917113579db8c9058068bd104b3029c721bf1bac1c9ed56c39540bdb7fd667605259b1c2a8d910401259d2cb0e3e5"; }
|
{ locale = "ar"; arch = "linux-x86_64"; sha512 = "bfe82d658ce9950bde473836f2cfcc1319d22939a5fad3804808258faee4e96b0cb208ba386c102e41633137c19d071da3868868ccda8155d2ee02d71c05b132"; }
|
||||||
{ locale = "ast"; arch = "linux-i686"; sha512 = "2e83efd53b191d7bee999fa45f09583c818377443b9bbf3203b7f11a31b67d371e34980267cc509c47a57b4a6540b1f7f4293252f02138b24869c29bfc64423d"; }
|
{ locale = "ast"; arch = "linux-i686"; sha512 = "99870cc67812e321dd2338f68612b63a31803065021fcec02b205f45f9cf263ef535421c249ba4a6a7205979679436a746300902b5c716ec333de0b9769d4f47"; }
|
||||||
{ locale = "ast"; arch = "linux-x86_64"; sha512 = "9d9ef1a1bcbb32cf04e26ad499bf1f8122b3b1a964e6c4eb6726d2271fba28c78f0d7bc60641d8cc6c2a0e1153a25483a6f8eb12568128045f7d6cf5ed6746d3"; }
|
{ locale = "ast"; arch = "linux-x86_64"; sha512 = "911ea7a1852bd61695058f68ae2ad991fd10107d876cf95b95f7df4b42ffe45a787aeee9241e1824281dbd3b1e32d8d815369f674bcaa21ad9268fc2f104a646"; }
|
||||||
{ locale = "be"; arch = "linux-i686"; sha512 = "21cf44b0eb90d3662ef690c56a393bd4453809631209c8953156a1b59b6011fce407c4b3d54d956e5c376f36dac663cd874b4c917f41b9132e445968fd7bc439"; }
|
{ locale = "be"; arch = "linux-i686"; sha512 = "3faa1393235b24a73e04be481601552acd28620807a64129061a4fee18d42022e7765a510b61d17193066feeb99a8f3ca2fac405056f66a401c35f23791c8f83"; }
|
||||||
{ locale = "be"; arch = "linux-x86_64"; sha512 = "ce33a0750430a462aa07ad8995656dbf2689077746de8ee42ec361c544ccd53e182192f95f6ac755ee739035b5f2a2c8233ac1c37c0d156c4a2aabb39806039d"; }
|
{ locale = "be"; arch = "linux-x86_64"; sha512 = "d2118deecf5ff12d6e9b2807ff3129bd33e3d8d24ef0db067b031894c266636c103efe8e1d0103f41eaf2e1ae6edfa51bbac11973c082a1ad2339c992e7fd856"; }
|
||||||
{ locale = "bg"; arch = "linux-i686"; sha512 = "fe763ecd1a572ed6e3864aa9d934b821fae2f91f02d959e22e96314e26271a9f5695930a0388fadd6bd34e0f7ab6938a48bfd346901e139128e0e24483c36d90"; }
|
{ locale = "bg"; arch = "linux-i686"; sha512 = "2123fc69d26ed28c6f4a2a8e6ffa3294e594e87608f9c7da3f4a811e39e58e59e1a50af616a6df810f3c8e0872eabcfc4708c4590530d780a52a2200e4a321c3"; }
|
||||||
{ locale = "bg"; arch = "linux-x86_64"; sha512 = "935bc0f19a45314341f76cb53dc4c617a5104a0a17c56f60679974eaec9fc8d9ee609d543a5a310bf4d1e8db6cdc54b660db5b2b85af7838dc5711e10ecff77c"; }
|
{ locale = "bg"; arch = "linux-x86_64"; sha512 = "bf11f9106525f5e02ee26b89560136a07e142aced7abb3b7d9d7578e413ce24abc20995afe054ce32d3d9b6e4fb68a254bbf6a268658c908b33e2da26efdec03"; }
|
||||||
{ locale = "bn-BD"; arch = "linux-i686"; sha512 = "d9bdc81c10d1ef370275d3f152669ca50a7fb2b126cdd396d63aa8b7c97a46d815b1fa77b8135887b0f6c825ba87617c81e1f3698e455d75b2bc9862e47fe761"; }
|
{ locale = "bn-BD"; arch = "linux-i686"; sha512 = "1823ada3babc79e5d38f1012723c3c7eab2f885a7159d3b6b9d54573fb8c8d849799aebf60a66914cb545095894402cae6acf4b49e99d77e3b1a49b5418c04c7"; }
|
||||||
{ locale = "bn-BD"; arch = "linux-x86_64"; sha512 = "0b420e4168df1a0b7ff8e4983892de9b08cf644a6e7b28c090477b3efe557a7a34a17ac90a722b497298759d98c1a3346ff84789598359e4052a35b44b3bbba2"; }
|
{ locale = "bn-BD"; arch = "linux-x86_64"; sha512 = "737d2557dade96501f4442001a803eafb5c872967850cc875b902acb17b1133fdf0d0248271ff225babb29b937d744ed3294e4e73e82fef96d07a63fab80ba92"; }
|
||||||
{ locale = "br"; arch = "linux-i686"; sha512 = "5e0726512ff28ee00498a4a8493d4f00e8375950fe8489c3e5906b37bf057c76eca66ccea8aaf7e165ca56b02ed14041efcab8b75170ae4daa2b2df2bf2ddc8f"; }
|
{ locale = "br"; arch = "linux-i686"; sha512 = "8e4377c42db9535a708a18d0b4d251d0bc14da24bf8cbf5fcb318d77f4a90e26f535f46642c9b940b3ee8887fdfeb218aaa9f846dd3b9cf89ce9d4e6035518af"; }
|
||||||
{ locale = "br"; arch = "linux-x86_64"; sha512 = "1240f62d8a0530ead4b19983a36bdd894b5f812c82b68c49a4f7d9a961e0ff2542244ef405e03bb281ec65f070e815246487347a99bec76dd3509ec4512c1d47"; }
|
{ locale = "br"; arch = "linux-x86_64"; sha512 = "4720d43ca4bdb2d809b4ed36352c03f05c823485951aee8943c24952aa493ed570c4eaecd83920c6ebc112d71e6afddb7b2851ee5a72faf3b4536fd23b35678e"; }
|
||||||
{ locale = "ca"; arch = "linux-i686"; sha512 = "ce79eebfe0a93a9e15237317fa3dcca6fd6f20c90adf431366e5d30ce026da0f4af4e1be0745cfa6620b2a75838fbed93a85ed0695c486eb46b58cfb3cea3571"; }
|
{ locale = "ca"; arch = "linux-i686"; sha512 = "94132e06f04bdd7928090944d3ae65440e15d15ec1f690d157809d5c524b071ea3c0f3f12b6b6987becdbcb33324d7471fd23feffd3f4f136e9f485b5dfc964d"; }
|
||||||
{ locale = "ca"; arch = "linux-x86_64"; sha512 = "f290ac184b7086349a173b1597341731b6c696c8806b3b5adb8e7f0121f298ae9971f8f96981662bac72079f03d7d2ce17f0c385662d06657a1519d7bf32ef64"; }
|
{ locale = "ca"; arch = "linux-x86_64"; sha512 = "84e4e65bdab737a8f5663dbcc1116b55a8ef88d9401f30a6a8acbff156913aade12d7b0aa61d9678811032b2e3a905d50ecaf0c9a9653500034e2f90f8ccc510"; }
|
||||||
{ locale = "cs"; arch = "linux-i686"; sha512 = "a06b8a0db00b35ba16541a72623fc764c87c45e15e69079b757449e9c67988764f65bf6ae214ac4a0c0c541549fb6fb48bd1dbb2efe02541e3bda12938e2d787"; }
|
{ locale = "cs"; arch = "linux-i686"; sha512 = "a51b94013fe020edc5b3f75f950fd6bb626c8ad18c73e8884ced1d74feaa97d899482e213639bb26496cada97cfbf4024380c49a45547b9e65c033f8ec09c2f2"; }
|
||||||
{ locale = "cs"; arch = "linux-x86_64"; sha512 = "b96dca42026adb793ab5d37544d42ff8d5668adbff6a94f6c37a33ea63eb87622a7eeee8c02976b16c1d8c38b3348387aa46daa2bf5ccfd66f2a176ba4c113ff"; }
|
{ locale = "cs"; arch = "linux-x86_64"; sha512 = "50214c46072d17c30f19f0ce8a15a68a20839b5f985ce3a4c995c9739fc1290ca2d40601b7349c2af2214aef3207fcfda2a9115dfcef9ee1b005523b23a22317"; }
|
||||||
{ locale = "cy"; arch = "linux-i686"; sha512 = "dee0395f80b3e0db7b6cedf3d7e22b574f3f2734da518db684ab8ddfb502a127d2e0c75849819638ea61fd8604b84f8b1118c036d8ffd5f444ebd8adce19fa2e"; }
|
{ locale = "cy"; arch = "linux-i686"; sha512 = "a528980e1ca863c47d8b8a8e5b5891916d3de78bd20c1236b9d1954d0f057fb2c247b303eeb8643b6be0fac46a1c665da487c9a5b57f974066a5e3007df92123"; }
|
||||||
{ locale = "cy"; arch = "linux-x86_64"; sha512 = "8162ba8abda1906ce0fa78455faf823ce4bf6eaab9ecafa50b5669f2485861f59fe2be3820d75d7f168432ede5e9ced170928e883ebd06f8ab3145065f31e610"; }
|
{ locale = "cy"; arch = "linux-x86_64"; sha512 = "fb3b1f14d55d32afcd22f3fa57736fcd820dbf06e6a92b72b8b1ca2f33df9156a0ffd8d0ada11bc86e11359add9d5c225aa07f4b1321464486cd75ca276594dd"; }
|
||||||
{ locale = "da"; arch = "linux-i686"; sha512 = "f5bee461d1e0ba0ffc1de1fee05d41d0aa9db904061a7e4947d2a22ce8e3eb9ab40e15ace81a9cb248f72b5c08b699b39b46031f5673045eefe2e3346e7ae18a"; }
|
{ locale = "da"; arch = "linux-i686"; sha512 = "1519def46f7b154a517344fff1ec076b5288cde722aeffa683dc3f990434fab4558b63d8062306c5a68d1efd3e30c983f3deced50043fac24c256f7b58542498"; }
|
||||||
{ locale = "da"; arch = "linux-x86_64"; sha512 = "dab187762c44a7092136d5b12be43bb3675c37dbaa1ffb36171e9cc76ffd94fd0f80872008bd686515f0a84c3adc9c36d5eff9240e871dff457145bc21981777"; }
|
{ locale = "da"; arch = "linux-x86_64"; sha512 = "c5c0e24a0359a0ab178c369d3fcc7bfdf15411088033646d4e699f6e2e3ca8bc8a4719f8c214442661dcdc34e5e1f577dddbda40363cb9824fc9e378ff2444e6"; }
|
||||||
{ locale = "de"; arch = "linux-i686"; sha512 = "35994979446f4bcf5a6b79875e84999188d8ee58143b741e583302b29c0619566b5d4d65e640156168974e4c59c7d454ffeac47a8aaf35c344bcf2ec44520334"; }
|
{ locale = "de"; arch = "linux-i686"; sha512 = "83f7bc92338a30ed183dc9ee67d94e02dd8c659b8a711adad023f79a6253530cb6f530a4f31ad90796cb78566f2e280cf4ee19060b59323c22ed9bc678bee85f"; }
|
||||||
{ locale = "de"; arch = "linux-x86_64"; sha512 = "ae7169f84c945cd7886ef0ee84a1e57cb3017ad89b991c0f8dfb36d5537c2d9253345e111916a234c228a99e153c9d8c2f5bbb61e3d4d5fcbe95f507d863b735"; }
|
{ locale = "de"; arch = "linux-x86_64"; sha512 = "6163afd45c2730e8970eddd8f5c159d4a0b4c48684fd6900a0b61eff1ba683a320a6ead6cd0052f0b9cb04f7a54f8e6b633c2bf6a594ed9c94afd7fa742e9061"; }
|
||||||
{ locale = "dsb"; arch = "linux-i686"; sha512 = "1b10d6c4da26452c89089c2938db3559cc46c098baf917ebbcfc1d107bd9591630749aeae87a5b9e8819ebb5e4ad2b7d5321531bbdc3045df604e3929d2d6d93"; }
|
{ locale = "dsb"; arch = "linux-i686"; sha512 = "9772c7bbcb2ffd475aba6c00dd527defcc7d2618e6537029abb49a47038c0c16b32f1c35ca4acad2ec53a7e5265598b0a32bad615281cc96afec819eaac32d9c"; }
|
||||||
{ locale = "dsb"; arch = "linux-x86_64"; sha512 = "c6195bdf00e05921a19eb37a74c34794cb08d8b8cd43609eed9f64bbe89788d9c87a45df449cc400e6cee31b7ac6f02ce57083581c85885acd620931c657a833"; }
|
{ locale = "dsb"; arch = "linux-x86_64"; sha512 = "99a29d265454eeeac1f80e91913fdf4c6ec850532dea4a3891d0c0ab0a68e5391b9fb42640269c95214131c63e37e4ff7a2b6ea93c609e7b1ea02a04cabb0749"; }
|
||||||
{ locale = "el"; arch = "linux-i686"; sha512 = "e7d7f38fecea77d93bb99656a6dd566c6f396e108910152917cd1c908f09d1f276385ed771d5500feac572356e688e43ab3a91651d64bd7d522db9daaa4f32ef"; }
|
{ locale = "el"; arch = "linux-i686"; sha512 = "b6878a4ef1b32ac0390feffe6da0dc2c5c88e0bb6c88505e653a630eaa47432be1bd2903d97bed855c41dbbd5f5babf7b0b747b8afdc0675ed670c6bf5a69649"; }
|
||||||
{ locale = "el"; arch = "linux-x86_64"; sha512 = "bec617a64ce06f7aacfd936cb85f29684d1afc4246c05f1de6bf1e11819a44eec0e395a446e64676fe6453ce41f173f938a845fb50a625e3f5bb325098e09d11"; }
|
{ locale = "el"; arch = "linux-x86_64"; sha512 = "a11f653ef20c76187c9a794b70d876f9b2244c5bf9a10a9f7b41969bf35d36b1d75b319bab6cb9b29616546d68be4b587c47e9f54e8cb93f861f1bbfb9c2c1bd"; }
|
||||||
{ locale = "en-GB"; arch = "linux-i686"; sha512 = "c06fcb56eafbe894e15a0380f49ce5455c95b2b6c9520ef3b15f699778a575e5c643db5797e72441a68e063bce0bd4c0003cd0b58c78c7d1a744223598ab3549"; }
|
{ locale = "en-GB"; arch = "linux-i686"; sha512 = "88f1754d40cabbd473dcd5a24a7a91f7bd625b83b91223eafe78271409720ac9d4cfcf32711f36f72cb8b3269275d950ec55d2f11377880b8fddedd2cb04348b"; }
|
||||||
{ locale = "en-GB"; arch = "linux-x86_64"; sha512 = "1b095d5e254c2eef894b9954f42031b6e7eedbf0c753ac3e9f7b51b152dfb9c21d90ace238fe5bd58c63292587e477d23121dd0f96f7489b7564ae1bca27eef7"; }
|
{ locale = "en-GB"; arch = "linux-x86_64"; sha512 = "b754899626a8bc0fa7e491e6d18b84e8900266cbd39ab619e8a9821825614a46c6bf42ea490e56a8d25b5467e5e9280936f5a5034e055bfe736140f4bb9c1ce3"; }
|
||||||
{ locale = "en-US"; arch = "linux-i686"; sha512 = "7561111abeda21de3c4c9f585528ea9fc76409b15c0679b22743180f3b987aefac19ff45a682519511e347b0881e0f924f4efe35a782ceb4da9c6af05132fb78"; }
|
{ locale = "en-US"; arch = "linux-i686"; sha512 = "a66a92dbc8c2093d7498934c5f8d5a0e68ec3649b74d60d98775e33832902796667f2c06b2001faf07a535de18b6a2cca6f61dac4f8e8173040cdc9eeebbac88"; }
|
||||||
{ locale = "en-US"; arch = "linux-x86_64"; sha512 = "2beacec69acea8bdc98b5a7df5111318c6b47bbe1bb4356d3f9a2ce3b783ce6fad01a3ef11658c9d24d89e5c3f3e5c71de6b6623e93187d1221c25d415dac3c4"; }
|
{ locale = "en-US"; arch = "linux-x86_64"; sha512 = "4d5c6ce9f3e2a6fa9c44d6b8bc2cc50a2c129037f9a16833cc767efa379c2c2db27b2576c7a8cf93e87646244839614577230161f1bc813755f8fc43ffbafc7b"; }
|
||||||
{ locale = "es-AR"; arch = "linux-i686"; sha512 = "c6d1fc35bb89ed23b5f4e3be2fa6c28c3e29a7e821be1ae79345bb26a6db1ecae67b27f7ac9d3bd5bd803b6c7613aba3f0ad35cb07b607c1030f84a365da2b2c"; }
|
{ locale = "es-AR"; arch = "linux-i686"; sha512 = "317865e753dcf03cbb0acaf67e0a34843e6f3264322e2fe63a1eec916bec07678026e6be4f7ce49626bef945a6f34125f28077ab367f954d11ba6f082014b4e5"; }
|
||||||
{ locale = "es-AR"; arch = "linux-x86_64"; sha512 = "e3c95879782c17963e9f17dfde11a416502bb89d5c712ae445bd476e1bc1fb76bb0716764150b2b1f92ab8487d736c39f29ceb023f226b92f8c07bfb7da8e76e"; }
|
{ locale = "es-AR"; arch = "linux-x86_64"; sha512 = "cfd16a5ec21a1ca13fb5e882a75a767da1387c5f4adbeb3a9f608f0035ba60003650e6d3be57b2af8efba2d0bb8ed94ac879ad5f5e2039fddc6d9228f8ae0336"; }
|
||||||
{ locale = "es-ES"; arch = "linux-i686"; sha512 = "3f8f3263650fd4722da121566cd9afe8e671005eafee26f550a940dd76b1ed02c3f34f32f886c2cb2e2b1ed029f9997f2686a2494f4b24b6f32a7bcb8226f6aa"; }
|
{ locale = "es-ES"; arch = "linux-i686"; sha512 = "7017c9da2dbeb468c2ff3ebba91c2e83a6a233940296fd5bb03b4d1e5531fae189240f630055ab2d6324a0dcece5d2e80d32d7d9ab17a81709985325d5fe505a"; }
|
||||||
{ locale = "es-ES"; arch = "linux-x86_64"; sha512 = "587ca874ed5e035291099db107cf29f19562c0adb785c33ad92bab9d5eac2f2615143b5587bf7da7df61c071995eaf7894e5733d2fb311ffa14671c14aed54d3"; }
|
{ locale = "es-ES"; arch = "linux-x86_64"; sha512 = "920dd641893de2e7b7692af104402e9898c3b8e3311960b5f3072cba07e0f8f918932be591cec92ca3a3aa9be6f17d605c55be5d2445864cc8ae025cef83dac2"; }
|
||||||
{ locale = "et"; arch = "linux-i686"; sha512 = "a08b99a3e444135d538f3b53669a2f4e900f86406e74076a2ca986c7d9bf55661aac248fa564eda3b6bd491cd284690da9c61a56a43f2884167998a10b666785"; }
|
{ locale = "et"; arch = "linux-i686"; sha512 = "0a24d1680b27a1e79985b9f124bc3742f2d4ecaaf2d4742db9ee1f9841d1d4b7d08ba60e71baf50ec6c593bd1a8f51d768a22b364e681b8c8a3651e37735f5f5"; }
|
||||||
{ locale = "et"; arch = "linux-x86_64"; sha512 = "97043053f1512e6ac7298208e219bd2cd8dd1abd403ecbae90e365aa69b098becdef3f6cec9998fc71b237d78e3b7693fa93cf9452317bf1f4793425f23c0b5d"; }
|
{ locale = "et"; arch = "linux-x86_64"; sha512 = "5c56cff2cd868985800c95eecffce5fc8d18def49b2c553b5c26decb364ce087d74220b2db78bb4c88c18a06eee4c5d0f3e49f17e54b67bce81083da465b53f7"; }
|
||||||
{ locale = "eu"; arch = "linux-i686"; sha512 = "2de3d5915801e62196339e6acaa7f601740212a59f4ec6c684cb40c830bc6fdab843b3497a168bc6b2889f80449900406c05cabb3ba656d7d6b0be5750a31aab"; }
|
{ locale = "eu"; arch = "linux-i686"; sha512 = "c903ccbcadb68d951442051e558ab657c337713207887c32383902cf82a32cfb04a60ce03a5cc02fc2cd9542ded108beb433eb32270fceb25e8dc29135d2f4ba"; }
|
||||||
{ locale = "eu"; arch = "linux-x86_64"; sha512 = "834f9e712183f14af927ccb719325dad1a7f778d7d3beeec87cbb559d039b8764efb9447b8a0e40eb0ad55c88b525e5bbc2e2f5729c11b173ef86f63e4f92974"; }
|
{ locale = "eu"; arch = "linux-x86_64"; sha512 = "9b782390d45dea01944c1ae29350cf01ee4bbab6ee94d00549aea195e4731b0c410b96f5101c44013352e8323f0baf27bd076a017456f6cc7a221c505fc7883f"; }
|
||||||
{ locale = "fi"; arch = "linux-i686"; sha512 = "b8b1c42b3ab0a365c9a478fea0e83ac49b709dd2d117c1d8ed6fd7946b5dd32a1d3907b653c5aa0fada4ba8cc365ee9fc723fbbed76219a7c5d4b70eb68dbf65"; }
|
{ locale = "fi"; arch = "linux-i686"; sha512 = "5b33f4d58604138ffc098e9f3e4284f11ec97e58d0586cfcfb89c0114c61b07c2e1ba0051c5751101838d3a1125fd0dd81ca818d59e967dcc7a6cb166c01b27e"; }
|
||||||
{ locale = "fi"; arch = "linux-x86_64"; sha512 = "64b5bc313fa64abc56961b0c6abdcc6fa72cd321f422857fece9bfb3673747d5992d96dc9d98a76c71148b6261ea9a750147c94f171c548170c0681d597d8402"; }
|
{ locale = "fi"; arch = "linux-x86_64"; sha512 = "41ffde0d385bb3f7d271b11e470614e63f3e25e718f5f0eaca383794543c45a067989f7e153c4d48ec59199d2209e1394f89a14f4b776a0a8d1dc58466f91a80"; }
|
||||||
{ locale = "fr"; arch = "linux-i686"; sha512 = "45e7a37ac6c18d31e834b88789d6039bed489bc1cb4601399b3cf76feef52c3c36249e297750d39e3e3071c2d90a1ff6f0bcfef8bec89997ac552cceff88e78f"; }
|
{ locale = "fr"; arch = "linux-i686"; sha512 = "2c1e6151f256b4e7b934830c84edd0faa942ad49ee7ee29b767bb75182f296a6a24bc5cd00e9649c78ec649c879fc4c0030d1a73a68b215e72132d0149361b89"; }
|
||||||
{ locale = "fr"; arch = "linux-x86_64"; sha512 = "02a31ae95b6a6dac76eabd8e1de27ff50f29725be221841a738f60e41306d39ea050b73f78105561344d042ed988955e1801b5379bcecadccc89481c3bfcc13e"; }
|
{ locale = "fr"; arch = "linux-x86_64"; sha512 = "ba12fc325112ac1076a9dbb56db5c9b7c03ba67e196d90529cabc3499ea5f479c5ad4cf3360bc891dad8c76a9cf846e1bc99f775d7ad83c45215261731530e13"; }
|
||||||
{ locale = "fy-NL"; arch = "linux-i686"; sha512 = "bc14d4d16f0b196eaf92d551df6b565bfdf56806dc97714e97db7fd201c6e4e80df0485f77ff4bc5218b8c2f96a01a39f87c6c3e156c5c0cd72a8b932248370e"; }
|
{ locale = "fy-NL"; arch = "linux-i686"; sha512 = "0588462a5b0777f77dfde87be365beb5864e4a89b11cb869b18b47d2a600fb25287ac01a9e0b74156c0d35cf9e05e14815b3395a9fcb19030300ec74c3697931"; }
|
||||||
{ locale = "fy-NL"; arch = "linux-x86_64"; sha512 = "025411d23fae36123a86b72818b486412aad0f532631e4c48da5dea9b41d7b2875aba463a4a721e422cc4b141c8cce155dab01fd7056dfbadd435cd3e3061f08"; }
|
{ locale = "fy-NL"; arch = "linux-x86_64"; sha512 = "2333728d503d8d171009258f6b59f41c20175e3ffde9ab65da3199825901e1c10adbab7d83eed5485608203d8e985ba9fae392971a11070b9fa3ab8a257cc28c"; }
|
||||||
{ locale = "ga-IE"; arch = "linux-i686"; sha512 = "56d20e9bd013dea41f8686f7ab4da48b1c96e0d93c7639e990daf174cf7c9313ab659eb9256f8ee52adc9659d6ce766921eab1a24a0f963a8a8dc1d614ed34e9"; }
|
{ locale = "ga-IE"; arch = "linux-i686"; sha512 = "f43b95950532e23d1ed3a45c309d1e6dd5d79b56ef4b06a44a02485a58aa306a810360349ff2dbb617709785c4633ec3c79ab930752d112e9f971ba2244882b6"; }
|
||||||
{ locale = "ga-IE"; arch = "linux-x86_64"; sha512 = "1bd36aababa4fa8e47bb62d9a49b2a5303b5b0404f5ea370fd4b6b152327766a42bc6c15a85c693aaf532b9c3aa8598911e313a861d3eb946bb4ac8d0642de6f"; }
|
{ locale = "ga-IE"; arch = "linux-x86_64"; sha512 = "4fc095fe246ca02ddba8f005ab95dc77b41ed766fff1b0d947f78db1e3fb09a1454d1f3f83b3160127e985a3256d630176f7e6076b4eb936d2529b5f86d1018b"; }
|
||||||
{ locale = "gd"; arch = "linux-i686"; sha512 = "bc0f98937cb2c2ef98ebf6625179f77d36d12f6c95eb413cd570f4b3a9fbe733888b57ef946fcde2daf59183291a8bd1258e8c7f80b260e6af3138c8b83117f9"; }
|
{ locale = "gd"; arch = "linux-i686"; sha512 = "72e6c4b9e7afd114690f5416d4018eb72ccdd4f2e71e60328e4df92a4043c19bb1ef917661abb8476fe68068754b17b18f7b8178494ad7f7278568919123f495"; }
|
||||||
{ locale = "gd"; arch = "linux-x86_64"; sha512 = "d2729fddbd4db455b1f2b738d9bbd6d155db664c01ba6617128728caffe8f96aada8b02d49fb1b90695c4bf37db6960f51d6c074b5df94ab4e74996370679d2a"; }
|
{ locale = "gd"; arch = "linux-x86_64"; sha512 = "dcd069d8c4b2d096a01b2f24dd4acd60dbedc1b8511d1fa4346be9342b99b81b6252032470733385e70dfadf9cc755c1f4878542d275a17740290a35dabf6285"; }
|
||||||
{ locale = "gl"; arch = "linux-i686"; sha512 = "6306be1026b9127e455a3b0c720f7de495811c3bfb578090ee33d8b4200bec3390c006767d45ce165b57325f1c41e98ce078cf78bdf0a2e9d0bf5fd704cf8374"; }
|
{ locale = "gl"; arch = "linux-i686"; sha512 = "f1e9d759fe8fe2d613bc640d519a73ce843776ab6f7511734522a8728bae07762705b1698a0526accdf9c0c3a9bd233649a01931af2a653d17ae368399df0a1a"; }
|
||||||
{ locale = "gl"; arch = "linux-x86_64"; sha512 = "cb977c4f60041ccba81ae9708b381d8e073c2041104549973f33695d6f08663d23fc9dccc112d6fd9e4c61847211ecd2b762b81d842853ff80a7b813955295c9"; }
|
{ locale = "gl"; arch = "linux-x86_64"; sha512 = "16953e45d9c3618c394e4150c58ca7fca45d90beab9a2253ee6cfe58a85e66aa2c5788fc4988c38b1c70470dc3fb9bb96a09daa354c88160d53739ce95ea25c7"; }
|
||||||
{ locale = "he"; arch = "linux-i686"; sha512 = "e39c70ed7711a4c7c5baf0594917e2727bf0d081f9d38d2f0d539e557fa9c20e639c3e98ef8926cdc9f57ffee2c4b8896b044bd1fe9aeca39e64af2b56e35dfd"; }
|
{ locale = "he"; arch = "linux-i686"; sha512 = "89a6e7a06694e55128fa584cb6fac0c459d21c6f795caf581532b7ce69e0ba1954029667d5d3afb5835ffad1bc0d7444ab0c59cff2873870aad6bb232ede542a"; }
|
||||||
{ locale = "he"; arch = "linux-x86_64"; sha512 = "86ad9d155916dbf7318fe054286b8808bd6072735b6264db61d51745abaa975311776d9a15da13b9f6c536e78714501f1855291bcf59b49cebc047da112fcc91"; }
|
{ locale = "he"; arch = "linux-x86_64"; sha512 = "183ce0c71d7852490f1f78d8a6380c7909f4462d238ecb342e35a8fe5b369161b9399c704011a0741bf0694b67713f93ec187331c414a72e0d77202382a99c7f"; }
|
||||||
{ locale = "hr"; arch = "linux-i686"; sha512 = "e82a125725373a5fcadb4ad010809fd307f5caea4bbdb428cce3c267da197bc73355f655397283fc6bf93838ce41896b7d6dd1174fc56526a04b61559babf42d"; }
|
{ locale = "hr"; arch = "linux-i686"; sha512 = "03c6d917c230cb9075958a6317599efcdecba5d8623a2664342bdc3c450662be64d69c7136c4f7ee6c10b4c7cdad8ea5a19cff2862f1e8aed9e3df3687abe182"; }
|
||||||
{ locale = "hr"; arch = "linux-x86_64"; sha512 = "ba8928e57b1eeeaa2b1e1b95ef87908247695b09d3f7220113820cc13a07223088a1c0468e362488b303a60456e2d63c631150025715d3a4b66b6a6204e31c9b"; }
|
{ locale = "hr"; arch = "linux-x86_64"; sha512 = "b26d084369b30bd33011b9761b16769795e529575174f5533174bf7fd71ac387708942cb3e709398bd401341c7ca59486e203865adea58e89743520f0557d94a"; }
|
||||||
{ locale = "hsb"; arch = "linux-i686"; sha512 = "276a97640f24aade9d0658529e13d4e50b70bd5e98d30c43d7af6e0cdb368d3a54ed9365aea9cc03bef6938bb3c7dc0649ca09543278538fea5dc24a15ab5072"; }
|
{ locale = "hsb"; arch = "linux-i686"; sha512 = "06dfe62b99b8a52d0d2835c83e9becdd3af3b278e1fc8f7985f2d3883c25ff2e65d55a841c1040816d64faf4115f867c1c18a771e6139ea40fe770cc4dc137f5"; }
|
||||||
{ locale = "hsb"; arch = "linux-x86_64"; sha512 = "ab527b02bc792b2fe2a939a82b5ef4797f7ae94144a5161e11722d46d38da75203139faa85655248e4aba12090d79a46a0db0310b32ec0db02c4e68e932f0d2f"; }
|
{ locale = "hsb"; arch = "linux-x86_64"; sha512 = "e303bfc9ce30479d1d79611d29dc95cbdd3ea4a6abdd1df6961cc7e4d832c6b44f6010f5a7e74485b4648e781aae2cfd2da78bbae6ef09e0cac6e5b980abfdc4"; }
|
||||||
{ locale = "hu"; arch = "linux-i686"; sha512 = "34e1f7e790deb7d4594f2edcf6ba1641730bdb6ceb72fb08071daed02713de8ff6931e3986fb3125646ecb3d2f299e5bf5028fc0425ac9790d57d4aace9e81f0"; }
|
{ locale = "hu"; arch = "linux-i686"; sha512 = "f454805664f2aa7262449acb74d78fba411e5de175076a50758f149fc4c1b4f5c76f2a36b253acc18bcc809172db3fea17c6cba524918dd80f2b17bad97e237a"; }
|
||||||
{ locale = "hu"; arch = "linux-x86_64"; sha512 = "e7df1f64c41110d56959237555ff3a066b8d503f28c6d504c7080f3af2548d5ee66a60771872065222db57624b40d1a647aa278f89c04fa3c520730147227c83"; }
|
{ locale = "hu"; arch = "linux-x86_64"; sha512 = "0e8a0a2eefacd575fc52e6a761be481b1a4fe29eab0aaf8d51e2aa624f4cf1f5fae2cc9dfa1f68af83b82813cb8cdb8da3e454711f611a621cc22b33acc44e98"; }
|
||||||
{ locale = "hy-AM"; arch = "linux-i686"; sha512 = "356ac76891199061fd4698c51903ddc7e92858252a6ca502543b0403790b9b80ba8799e847a00331f19b6ab56d2e3d02fac79ec7b5502ed8227c5abd82ad3fc3"; }
|
{ locale = "hy-AM"; arch = "linux-i686"; sha512 = "3ed1482d68759f143f403c935af3412ab819b6801e13bcaf123ef910db0bbe2c7523b52f1dc5c4a93b1a087f3d78162f2b8c04930abe89abf9536abcea374dc8"; }
|
||||||
{ locale = "hy-AM"; arch = "linux-x86_64"; sha512 = "410ca6dbd22d870ec4d74e0dc19b65009d860e93b905dc43ae0d5086f83ad1dbae81d2213b0f39afbd5e428287d0f35e5c7b923df594494e66fcf08d4663cf82"; }
|
{ locale = "hy-AM"; arch = "linux-x86_64"; sha512 = "bb43898b0953dbde2837906da9edeb0924a65488715d8e3cf22698ddf665a8037ec758ed6df4ca04ff2f04df437eb8c71d98496147bd5f92b22246bf967be769"; }
|
||||||
{ locale = "id"; arch = "linux-i686"; sha512 = "ddab3b64afba2862a18879845cea3945fd3a34295ab07e5c7f53435ef8af005fdaa3beb5fedbee27818917a320fa5e1d1cdc618ac1767db9ceb1bf3c912720b0"; }
|
{ locale = "id"; arch = "linux-i686"; sha512 = "c2800b997e412cfabd39d7c8412c02817121383ae477cade3db1d75f7be47091b84179e54e3bd968ca79c41199fbc1f5ece63cb2b9eef038e9af6e4034326db0"; }
|
||||||
{ locale = "id"; arch = "linux-x86_64"; sha512 = "4b26928f579b56c965992b4425a9af6d85fd7a288d699942448ff8f331833e53625f0d48e62794356ed7056ce75d0efa3fcce3f3be9acee099060b4c5a20e281"; }
|
{ locale = "id"; arch = "linux-x86_64"; sha512 = "b5cddfb6c6e8a6fccf6ef4ccd78734e766c081ae5fe3d2a3ad73852d453fdd71eda917eb29ec3bbd2398c7c810c0e61195680de1cded8f4394322a12ce84e0f7"; }
|
||||||
{ locale = "is"; arch = "linux-i686"; sha512 = "8ad9065d628cddc34fad8afb5477edc2ecbac7add4162c87e6790bbee58e8d40e40b087f879fd09a44f180b30e3929bcfe2ed268fe5bd549c0d5c011be7d974a"; }
|
{ locale = "is"; arch = "linux-i686"; sha512 = "9ab50f7d7ea5450bfd984ef180eeef8672e21e5d1610def3f3725589740ce57486985706713bb292a1a577dae1f9b6106c568fb2acc11f4bb92c1801af444c8f"; }
|
||||||
{ locale = "is"; arch = "linux-x86_64"; sha512 = "f2a14977d98e0e7575dbe1f3f068472bb90d25a9c333ed191ee17fbf647b1c47143136ef7fc1871bcdbf3b55c2d414a05a119a7a2337b9cd05f039d74915c727"; }
|
{ locale = "is"; arch = "linux-x86_64"; sha512 = "39b6c5ae33b191334d0867d031b59b06a86311527f19b1fa8f0bbe0dfbf90f4f2cf952b8d6ed22851828b16aa3019a8208e6f7b603a6d94741ba66111af00955"; }
|
||||||
{ locale = "it"; arch = "linux-i686"; sha512 = "18a3951092f38dded053b25658da79188aff3a3dd6e008f269b0b4c32151f7d2d2483932145ccc50c6c9d199af94b43abde65b61e8b1093d9b4c52692382d8ca"; }
|
{ locale = "it"; arch = "linux-i686"; sha512 = "13899d6940dd4840566def16ad5d36b6c992349d68bc4d9dbb9c9b73bf53310401e687bf9a4b9837205f5a527f3b7ba1270bb4e4ebb46c129496d49b0b19f2e5"; }
|
||||||
{ locale = "it"; arch = "linux-x86_64"; sha512 = "f834a9ba6f6cc2745d4e54eb73ef174e913009e82e989d1386e8598f9f83c32fa65de6902de641b62ebbf183a25f0037d119bb61884f3548d8f425fa63c9f5d0"; }
|
{ locale = "it"; arch = "linux-x86_64"; sha512 = "c1434939ff690a4036271c013f926230c7e612a64e41aad6e0885109eb5767fa0639286fd44e370f24cae1d4e70a72be8bb04f5533c66c7fb52ac0d1986a767e"; }
|
||||||
{ locale = "ja"; arch = "linux-i686"; sha512 = "f91904e585e30ac18e4065046ec184607705bce423ea79aadbecf32fa0f9f598a439ae8f955e79389c411f0836dd6bcf9a74e1e78cb70471a3c523a807e43c41"; }
|
{ locale = "ja"; arch = "linux-i686"; sha512 = "7b6464fd5fc2b0c0a54f760df62c9f08c94662d00e98d9d7a58844d189c765d780798a64079507aa84532e91b28a92e4d6f21c51bd9abf8263e8c4267ba2f9b2"; }
|
||||||
{ locale = "ja"; arch = "linux-x86_64"; sha512 = "3052946955110d0f1df66df9933079bbe0b0247f9eef0a07c02c43f6463055bcde33e27b7ec1beb511e70f3b524d55ab404a0be755599f9e15f1902b4eb457c4"; }
|
{ locale = "ja"; arch = "linux-x86_64"; sha512 = "3545594699f209bc78353b3f4b17df5b31f1283e826937cbbd83f34a32aee658c67dffe4cc77a7ea055f09e6d966768715deb7037372d29796a1fddab89383ca"; }
|
||||||
{ locale = "ko"; arch = "linux-i686"; sha512 = "e0f79d30960bff54ee064ae381dd89b877c2f5055424eaf017382f6b2d1d0b34544cf3d88fefce8f2e294e84477e5109a17fca83083b0c5602ea5d0eec7b9c0c"; }
|
{ locale = "ko"; arch = "linux-i686"; sha512 = "df238479c6d58be8986a1ea581e63dd7e42a0c6d4a8fe2b3ef66ceeee34c68a4b02f689844e0a19d59d65abb175cbd95387a4e2d0041e7b126cf7728badaa0df"; }
|
||||||
{ locale = "ko"; arch = "linux-x86_64"; sha512 = "ce515c74e7d69394f79ff7adf6ffe2118b0dc76f49672f19cbc299b21705ba18a88c6780f88bf28bcbf208ad33914da13031617a20494160d771ec09c10a798d"; }
|
{ locale = "ko"; arch = "linux-x86_64"; sha512 = "e05d44fc6a66c79ca50cc2bfd88d39112783ed636370ea2927cc2202c8b5829f05aa1e6fd9083c4c5a37c8bb873aadc5aa81d0522abed5742fe78ea3258f8e15"; }
|
||||||
{ locale = "lt"; arch = "linux-i686"; sha512 = "f9d00ec17abd13d575d651caad02e1a46adef760ca6b706df31708375b7c721f3cfd1d99964cc2e16615f5fc422855dba8fa722d57b355782dba1541cf32e1e1"; }
|
{ locale = "lt"; arch = "linux-i686"; sha512 = "219d2030e11fdfe5f68f703e6141038177257025b5f1039776cc9093c35b9ac03d197488ceb960d1b2b5c9abc12ac2b4895990afbd430170499d3639476eff5d"; }
|
||||||
{ locale = "lt"; arch = "linux-x86_64"; sha512 = "2572ee32695dd0abf10a486453a3ca9d7fc26e88993a374677fb5f96edb319a5ba2892d8f9a236195ecd8199a7936d3969830571411ea35a8dc1f229089595e2"; }
|
{ locale = "lt"; arch = "linux-x86_64"; sha512 = "6221204aad7b62fd540a5776ac67ca968c5f7f436d260664184c871f8ecdccac6542f306c2d34ba8b74c17b15caf549ad30852fd003b711572ea3eba0c2a32bc"; }
|
||||||
{ locale = "nb-NO"; arch = "linux-i686"; sha512 = "26db6cf82400b4a1bff5747d4e301c46f3391b97e28b64716e2b2dcfb2ab2da583142b487f90fe0798bee3cdf49d5965b9d9b124e95f1d65b32c9f84c42a7ebc"; }
|
{ locale = "nb-NO"; arch = "linux-i686"; sha512 = "54b3db811b3573cf0084cd5a5df45e33c6540b1d6df301023853b1fb023f786e70b9f6d2b827273504e70809096d392b0fb91ff89ad363c051ddbfbb6dcf8099"; }
|
||||||
{ locale = "nb-NO"; arch = "linux-x86_64"; sha512 = "9b83eed9b3e93a5ddf463aa631bb4905abb8e02574e1be8a4cc9fe5cea7f3aee743b0f570a748fba67adbf6096a8443378ddfeedaa9cb0aa8f072dadf906929d"; }
|
{ locale = "nb-NO"; arch = "linux-x86_64"; sha512 = "8ccafab65ece0dbc9d7ea7067846d3a45df6b4a78d543d54f87a52f359a759dd4d3f0272ca3ce8c792feb643c5d3871ed411d0b8719527969acc1cde39577768"; }
|
||||||
{ locale = "nl"; arch = "linux-i686"; sha512 = "ff00b25886df3a9ff0eb9c4c9a1b34be21edc69ac20f0d994b9dd9b0618037c92c15ead664b071d09766a0e764acb5e118185dc3f08c42f2cca62c4c70fc8ffe"; }
|
{ locale = "nl"; arch = "linux-i686"; sha512 = "4ac1dddb4f65c05306738fdfff6b939e4678a59282519a053ae3b919e2c9d0cd4f72f93f6c5925efad101c64a32ec10187fce6734dbdb8002ed05bb1690d8cc0"; }
|
||||||
{ locale = "nl"; arch = "linux-x86_64"; sha512 = "6796f4f3d1525a3b617c99eacec76c1cdc5c8fcadc39120d1da052518cb663093c695060b37120ea6337e21b9fcc20c5a5119878ba1068553772f2d8ed89db32"; }
|
{ locale = "nl"; arch = "linux-x86_64"; sha512 = "58555fc9e43b9599486b25fdf8b0e4e27a0592f52db730123ea0513be255f026a35a2d9ac9be84be158e94c3f95fa5ce9dc531dc94bc839e36092ce6ad560b6e"; }
|
||||||
{ locale = "nn-NO"; arch = "linux-i686"; sha512 = "ab236204028e79bb98e78b2900b434f1237e407e864d346fae975d123fa87e727710e41e19625b6c69548497cd9d7716467dc01002e4ff6025301a141125c723"; }
|
{ locale = "nn-NO"; arch = "linux-i686"; sha512 = "102ff8f498c9acd7fec58973bde3807f2821723a223ac7646985faf1342eeba15b438b57a6c1e64005ebd86b97cd37555ab568ed96c228ca825651e9133c2696"; }
|
||||||
{ locale = "nn-NO"; arch = "linux-x86_64"; sha512 = "0544c952ae8fddf43b784bab00aa9d4fd05566e06b9df15990ea91cc65aace6066855a8bdc3f6e6eb01e2a7030a49df67962de4af8d9d84d003cb2553af71006"; }
|
{ locale = "nn-NO"; arch = "linux-x86_64"; sha512 = "eeda11d9e76e713a287130e1c0cfbc8507c0a148061dab878891af0c7751fb517a0f9d3d49c31ae69514e5caafb212c5e23b6254dc310b63c2f241741c8edf29"; }
|
||||||
{ locale = "pa-IN"; arch = "linux-i686"; sha512 = "618d3e621bed807521f4b933a44e8e87b38b2843a5f85f59a83a60a3df6e13a96d1b3c250a9d77200b03be69116cbdeb33c7e2e2b4d02b8672ab90f0e303dfe3"; }
|
{ locale = "pa-IN"; arch = "linux-i686"; sha512 = "94dcd33d5a992ffd7a47114555d1a12d31e235eec60fa6792fe041154c27dd0d97bf55d0c8bff763502d07a9b458402322a54b0b1943ef7a55457d32360135f7"; }
|
||||||
{ locale = "pa-IN"; arch = "linux-x86_64"; sha512 = "226844283b3aa5dd4f224a85101529099c8fde81aed5d354b685953019b27d445ac3347f642ea93145be4dce328c4f1711e0bd21bd9f5a2b97e6b822130546cd"; }
|
{ locale = "pa-IN"; arch = "linux-x86_64"; sha512 = "e7a5fd70e80c34c12650fc85af282dffce6fdcaa95c177e18930212605510858d4f71fe0600bccde80aa59bd81f22b4425830fc4c0c689c636105512fb55b0fe"; }
|
||||||
{ locale = "pl"; arch = "linux-i686"; sha512 = "4ba51ed645292165343bd104dc36ba0126435fdc06764e587379ed4de6a89a9f7711890f5f12f6176851ffcfbcd267cc1927b6e8c2a710d505cb3bbc7120209c"; }
|
{ locale = "pl"; arch = "linux-i686"; sha512 = "a056b9ddf6a2a04adf786bad7cecf4d4c02c0ddf8584ef602e390a2157073a654473f2262a4e418fb31ac0a198fd212ac67a2c9e9e52490b3d4236fc6c73edb6"; }
|
||||||
{ locale = "pl"; arch = "linux-x86_64"; sha512 = "2702db95f2e166dd5097ae7c2c83fea39f666a0a9e811e7876042e6b5ee0dcad6061fb6b6950a2f8fd8f97c434476155b8e2a306e1fee5cc54100e2d2ec7d619"; }
|
{ locale = "pl"; arch = "linux-x86_64"; sha512 = "081cbbc49b12223e9a9f860fc6072ceb855634419bbb4d1e2923342c7f4f0b634443a0c1f9f60bf8622b9176412c4216d555d7d075bdc120d0c4bd2d809201db"; }
|
||||||
{ locale = "pt-BR"; arch = "linux-i686"; sha512 = "ec7bb46f323030f180bb7e83b40e421a245ca4a1aec5f548a2bde1796db00fec415889cca836394b172b1923638e61eba4b71f56bf8aaa55b902deaa7f57842e"; }
|
{ locale = "pt-BR"; arch = "linux-i686"; sha512 = "22b4194129af89e81e1fa7ab38c2905169ca73c8656c6a7b718cf4013dbc0bcc4336ef68303506894e871487092f8ae7b2a05f914242dd2ea61109e3f969476a"; }
|
||||||
{ locale = "pt-BR"; arch = "linux-x86_64"; sha512 = "48406e53ba5276f3721cc5a9af825aa48215862134addefdb136ccc013dc63ca664baa820c2f34f4dd02e79e747bcd4ab73b59ab71773f05c5fede7bfc005745"; }
|
{ locale = "pt-BR"; arch = "linux-x86_64"; sha512 = "c6a5556ceb64c4559e1ce92019312a9b862efe6e5c93380859f8e2787b54cc5e12796446d7effd3bf8c47704e6fadfd80da9261d30c1ab666ebb7a34ac15c525"; }
|
||||||
{ locale = "pt-PT"; arch = "linux-i686"; sha512 = "27f8bfc56044d000c8c43c759c16c3eb891a0d3b6aa4d62a18477a3dd816f0b67e899a1ec375376ee83fa97d0d2d836fcb5b1eb3407b09b194600206072d6c49"; }
|
{ locale = "pt-PT"; arch = "linux-i686"; sha512 = "46c292e1daa7755332f29e2e6e785013badb3bd869d497cd8fd85c107e9412bfac9ffe1e14f99addaac3d413e9ac7dcb2ee4ba4dc5dddaeee0fefddf0256e281"; }
|
||||||
{ locale = "pt-PT"; arch = "linux-x86_64"; sha512 = "7fa5298de1e5128b4895491d99ab5222f23c1e36e2f07582b6e970de95f45b6ae89a8e4a03b394d0910129ca16be593a47217124b1619ec567ec9d470fe78100"; }
|
{ locale = "pt-PT"; arch = "linux-x86_64"; sha512 = "8c1e72eea7b4d30ffc6e5915d51289abce564674231f80ac0e5e03a45cc971683232ba08893672e424fa1bca75ebcc2847d18f044e2762c16f0d955f56895140"; }
|
||||||
{ locale = "rm"; arch = "linux-i686"; sha512 = "2e25f6ed8e9c92a888c9b2fc0105d5912a9b85fe438c8889728d5522aebf23e86655af2066046e9ed0ea232a59d19b4affe73fa14d4e15af7cb337fef4438b49"; }
|
{ locale = "rm"; arch = "linux-i686"; sha512 = "0b3305f2c7d2626d2fe57484c694e5400f6d60dcfb62e65ca925501dc1c1ba3a9ab3f71f2d5584a5d6b49567aedd7188582967f0ad6e7a461034e50cfb577d32"; }
|
||||||
{ locale = "rm"; arch = "linux-x86_64"; sha512 = "c2adc7519b2a6670e7c0e7190c6788a5c5c8882b86bbd58c3472de51e958a22126c575413b6a604eca737d120b1da1863f35702f65220bb0e7f81e4deaa21587"; }
|
{ locale = "rm"; arch = "linux-x86_64"; sha512 = "6c875b6806dda0ef2b140ae3a3bb47ae6f5b93a0b6d7b9b2d0e2182b6f3f356c85cbe60c9c79bac51f46a2c1adb59f240f7d1c45be203b38a25832be178cc0a9"; }
|
||||||
{ locale = "ro"; arch = "linux-i686"; sha512 = "ac7c8df9f06cf03c4b91e22668697bc74fff7dfa2edbf6873786e98acd5bf79535d8ad9a913811ed3567cb7e4427a8b3751a7adb011bd0567e433064e712be43"; }
|
{ locale = "ro"; arch = "linux-i686"; sha512 = "6043a890614495cf28a1271716e6add0229f8d5ed911fe04152503a20a26e7b4da03475e4a1c08b93cf512bde19916ca1a53d41094ffa8a2d48e4cbc71fcbc33"; }
|
||||||
{ locale = "ro"; arch = "linux-x86_64"; sha512 = "f4f80a8b25410b2a48c95dad316fc98b9f5391f08d3df699628b4bf9e343d00ded9cd1ff71b0d5e441ffe6c6a2edae29790a93b5e2117d7343a537d6cbd0738b"; }
|
{ locale = "ro"; arch = "linux-x86_64"; sha512 = "9a5a81fd713ffde8e38aa9ed7557a9a8b6b902e8ba316e5bcd5c4af2f73a1fe67a226a9401ddabdf76086af6c8432d00d02cbafc250f03190878deca1bd69588"; }
|
||||||
{ locale = "ru"; arch = "linux-i686"; sha512 = "73009743b635761c1ac5d588837084cfb7041f639fc81646d2b6ad7bd92be5d7f742562c8c5522248f20dbca7fd430826617ae706821f107911303d416cb5f4c"; }
|
{ locale = "ru"; arch = "linux-i686"; sha512 = "aa205e2f3bc4a4e22520a41c9ba516f6360e062da74a180221b5236cf10d0a30e1ce3b5eec1081a8a9b4de3331fa3f289dfccc0b6785363b3411f77d8832f7c0"; }
|
||||||
{ locale = "ru"; arch = "linux-x86_64"; sha512 = "cd2dbc81d761077f4fcff759dcb2ff02ae0e61b0b91007e7514081926e9f3cb2bcd2e65fc3ca44ad5d07caa4e4bd9e450feb25bc184f8c136ea3aa6cc4d05968"; }
|
{ locale = "ru"; arch = "linux-x86_64"; sha512 = "7c8d7402949f34cbf9ba3eb32fe1fa1c225296bd179854a199968f012c64fa3a016dcaa922d0dc0abbe1fb0bae438030f7096aaf79be2c7822df2f529e1fa46a"; }
|
||||||
{ locale = "si"; arch = "linux-i686"; sha512 = "d5a416aff2e5fd3b294d8028ee6008c9086b9c5fdb15b52b8810e9e623865b946d46e1b812849ecd7331923f7e7ba01711a909396c8676db917b2a36f7370504"; }
|
{ locale = "si"; arch = "linux-i686"; sha512 = "841897e3a07a0a6dbb4e912e424ea52b17631549176995e3c8ab1581bbc4e565be084ffd686ae6a4596224a642213477d40a5b2aa702ac6679e1ae71bdd88516"; }
|
||||||
{ locale = "si"; arch = "linux-x86_64"; sha512 = "8284411d705c804fb0e90f7358e79e0687ef892342ed06c2030803d07b1a901e7f1a6ac2acb375eac10566b1885826c4fa187d3517a2bea35222bd2604d3992a"; }
|
{ locale = "si"; arch = "linux-x86_64"; sha512 = "618b49c54e2057c10e3ea5441e2e960e4581589fc2685ca2f42cb1cfb5defd9f26e60d3f7af603757aaf73021133a0bab94ddf3c0cded1442523a55661395720"; }
|
||||||
{ locale = "sk"; arch = "linux-i686"; sha512 = "c905adaeca4c3daa57cd54d9a7ce49762e4ab4d32594dffcbf5b9d581409a9f7a0eea1abb51ffa94c35433d20cfd0be3baa914d9821e8f754cdcdb80de7a82fc"; }
|
{ locale = "sk"; arch = "linux-i686"; sha512 = "e00c42e2adf10e9d19d434bf67be2ff75f47ba11fb2a5d00d62f9946c3c274795fe2fa83b718cf21cc4ac396f10212ab459c81fa7d866ff6a9af8754b0663db0"; }
|
||||||
{ locale = "sk"; arch = "linux-x86_64"; sha512 = "2741ea21d5714836116595529f4e240accf95ae1e549ac4cb083669beb20d40e7fdeb7805a836ada5d4310e31d74c8bebb1cb5c8f48b3fa585edfd880109b2a1"; }
|
{ locale = "sk"; arch = "linux-x86_64"; sha512 = "48a0277c6082e84dc51df64c9e726843d1361edee39e27e625f09cecd56c7b82e31d31e121799f34da4e85177506af680dc893b8f305d24ae7f6276146842120"; }
|
||||||
{ locale = "sl"; arch = "linux-i686"; sha512 = "b61cb4971cfd9701dc8aad80848e41bdd399a53fc3282d72e7a866b782cebce928bbc163d2557c24dd0fa3f51f2d2cc40e27fc578d39392d00c15ad08d0df3ad"; }
|
{ locale = "sl"; arch = "linux-i686"; sha512 = "585fbe3e399d857ff21307a0ed53c5ea9aabb68232da44febd3c52297e7f9636f6aab6c8f698e2714a83632c48b4b60933568d6dcead5a614fbdc4b90be416c6"; }
|
||||||
{ locale = "sl"; arch = "linux-x86_64"; sha512 = "47491dfb70268c3ef00d4599e487fc2af35277de2746a106f59eb1b0813a4201c1e3ff735b0d7b48ea23bf3aac18fa1bb8e0c7948651e421f2677b988633e3ca"; }
|
{ locale = "sl"; arch = "linux-x86_64"; sha512 = "e84ff51b3feb54408e6abaddaf23bddab85d6a3cf78286dcc13da43e743306addcd2dd6fd58419d2e5dfe2e5d63c0ba51810fdd9ec080427d26ab8ec7535eba6"; }
|
||||||
{ locale = "sq"; arch = "linux-i686"; sha512 = "7773088708cc1ca1c115acaafc2d1456b854a413daf9622c2d267dc33e8a4727b6836743c9cfaf8c5694c729241e317a53b8411e37b8d4f94b67bc02c2878e41"; }
|
{ locale = "sq"; arch = "linux-i686"; sha512 = "9ca817ada82c6f2199b0c357164fc28b98351c69a8cbfd98048eee407ddc05dc90714e7dfca4059a55ce2bcbc133ae22c8f26a8bd632d60b7bb561221d4fcc81"; }
|
||||||
{ locale = "sq"; arch = "linux-x86_64"; sha512 = "db776cedad7842e02a87347e2f97aa5e583e2d1e2859659032e338b5c855f24241a4a1950fdb3a13b6dec643a73a7cb5f7e527ecdf50deafa5138c9f273d3408"; }
|
{ locale = "sq"; arch = "linux-x86_64"; sha512 = "707088e8fd72c8bf598108f57d684369ff5b1c996e39c88a002f724324b111b2d7c00cfb649eddedbd70dd0df22d10f2f83f9114a71031f33e9adc250a193402"; }
|
||||||
{ locale = "sr"; arch = "linux-i686"; sha512 = "e9eb4827e12db0173643bab8ffca55d50238a1184a2e2ae3543248400f39685b999a068ddab523e429c2667f2966e4a0a09c432837f5e852065459cda67e96b4"; }
|
{ locale = "sr"; arch = "linux-i686"; sha512 = "243baec5e5daca6cc7410bc3079db3e5201b49f7ea1b76bfdc84fcdfc50c3327e886ce7e008c9350c7bf5128f61c34ae543200bc11ae0d3cfa9166a3000b243d"; }
|
||||||
{ locale = "sr"; arch = "linux-x86_64"; sha512 = "a38c5f80c0e6a442d035f7b4c18a350421948e9246ac65389959978cfe51f317644c06ecc567bb09739bee0303e4e2b8920bc7903900eabe92ad244e20370345"; }
|
{ locale = "sr"; arch = "linux-x86_64"; sha512 = "212ce66af4689db19b234b463b0f29b01c7ceebf1d4c67a10351f06f2e71b32d050e5232fe0e61e15fa30a852107ca7a1fd80475fac7d2b877074de3b40e6bdc"; }
|
||||||
{ locale = "sv-SE"; arch = "linux-i686"; sha512 = "d7692def00b3a47e86fc01ad192a610352a6c958e53d1b2e4ac6d27a017643e2c0e9887a173268278b9ee7d2e3116368a8dde4d2fce6ea9b56a2bb3963a31ba7"; }
|
{ locale = "sv-SE"; arch = "linux-i686"; sha512 = "31637fef31f0e1d08ea528bd7b917c6d67ab047c3d1856fd60b8a1de20afec567aed093e27c938aee4c8b1b4269cda5f43a127cc3284deb3db4f0d98a8d23a8a"; }
|
||||||
{ locale = "sv-SE"; arch = "linux-x86_64"; sha512 = "4656a0d46d358476fcba3be275740a289d79159fa346f4903cac0830341f9a630f1eb0c007d8429cde47821c441d01e792634d32d6e7b94f1bb2c94f18a56563"; }
|
{ locale = "sv-SE"; arch = "linux-x86_64"; sha512 = "81b745a763fcf3b60b84ddae56cf59e363269986734f26275ad3e32320b8d5ac1a4a714a03861ccd0fdae499767a93b53f5717ca78074c79ca2c9b303406a5ec"; }
|
||||||
{ locale = "ta-LK"; arch = "linux-i686"; sha512 = "d6ed8ef83f1d4af62a5c2f92c791822d1b711ed4a51d9656c0e73dbe20510efe017f615537c892b43e43a5503ace92652faa5fa5f2d9956349386fe784fe0dc5"; }
|
{ locale = "ta-LK"; arch = "linux-i686"; sha512 = "c35956a5aacdbb2eec20feb41fac23349c621624ccc792c9f6e711935c45afaced43e8c75d00c4c59d0279d62d5092798c3200d25730a1fa15ad03682b5f0d86"; }
|
||||||
{ locale = "ta-LK"; arch = "linux-x86_64"; sha512 = "7a994549f4f8c33b185d094e5d207942b62bdf983546aec357404b46e74ec0b790c9b83ffd3cf3687b5bf09457cdbc14593af30ea425718baeb5ecc5703ec15b"; }
|
{ locale = "ta-LK"; arch = "linux-x86_64"; sha512 = "5bfeaf3ec0ad5ae56b540337b72795e11fe66846df72ec849b51db32091df8ea8a9ba4b2e6c46f2cca2f672419c6ca6fe23de8c7668edce53c38c5587b83c075"; }
|
||||||
{ locale = "tr"; arch = "linux-i686"; sha512 = "c5833f7c43919a842f7b840a35ec8752401c24c559d620cdbdc83e70d77e5fbb5a364e44ac3c5f1f1339d9752b9a9825ac0e00d314aa9025760800fc4fc3ce18"; }
|
{ locale = "tr"; arch = "linux-i686"; sha512 = "b617860d43de6c1f191ec0a021b86e49217310fb8aaf1ce5d8be11eb27e77f6cf7338f8e675dd25a53c298b4fc7e5228c289aff86b23b81c8176ac55953ddc03"; }
|
||||||
{ locale = "tr"; arch = "linux-x86_64"; sha512 = "f1338235583f5888fb7bd30c4c66341bf7ebc4a771e76571e22a5ef445398c9d2ced0f2f93d99bb2f180fa73a4a1f3560616570c8711e54d40a9b931e5eeb4d1"; }
|
{ locale = "tr"; arch = "linux-x86_64"; sha512 = "f421c0889af9229e7081bb9f4f5a6cced6647bb230b7dd5d14f46bc5a0ba4c36f7a711e9b9df446ee69e165953d1405c1b11c9912447194518bf9c9b58a5da53"; }
|
||||||
{ locale = "uk"; arch = "linux-i686"; sha512 = "a40710948603a427c098619be1f203f2e7182eeb697de2b1dfdf824e556353b133839f0e5ce929fa9e31e70b1f248053bddeeba394dfb74e6c747aaa537d1df0"; }
|
{ locale = "uk"; arch = "linux-i686"; sha512 = "f33c519ea5fb12e5f98cab4d3de4bc23e8277db9534b765820f8cbe1c24d6d33a033b0ec357f8b13d9d16915f6d677b5b206cdceac86b9f8a09aa1d9e016a510"; }
|
||||||
{ locale = "uk"; arch = "linux-x86_64"; sha512 = "5dc6979da2242e45c5ca8a4ca50dd2858c1781256e5b2a9b8bed84e1b2af9f98e5ddea285e49549b3afc1a98df2ab89d74c99a6082309f0150ff426c1d9449c0"; }
|
{ locale = "uk"; arch = "linux-x86_64"; sha512 = "1964f6597ba11f10010275f7ff256f8fb86bcafc426c81c4f2d55f5202b0d19bc978a1be24e2b204612bf19097afb0709f00de263fc34dbd43eb6b331f85b9ef"; }
|
||||||
{ locale = "vi"; arch = "linux-i686"; sha512 = "fa795ede70edb6c6237502cde8acdb7d5573db1d995d5e96f274b83f8ea0b827c37a5bcfc74b4aa99f1e15bf8dd68e30d756a0bcecc9e5946c2c5e275dad29bd"; }
|
{ locale = "vi"; arch = "linux-i686"; sha512 = "4ca3d166fdfa02bdf8581bbe29b1d067011d4922b5308af369407da7e7a00239b75da739f4be88a158e29b939516095101cc03602545900f87d91455ad716c0e"; }
|
||||||
{ locale = "vi"; arch = "linux-x86_64"; sha512 = "de8a0e22cfc727ccbc460a26a0cb80985c1957da99b050f6f00e4b20b050ba605d815577d392504d0a5e53ba4e12045f3a9a36626ed21682c493259fe0400ecf"; }
|
{ locale = "vi"; arch = "linux-x86_64"; sha512 = "5e335a87ee0d5ec63e45c2570f628d0ca1cd5577b39f7469aef2367632c10df16525bfffe2a4f80f473d7faacf9e96986130e6548978d9b4f606de3a25a12cc0"; }
|
||||||
{ locale = "zh-CN"; arch = "linux-i686"; sha512 = "381d66fc71d3f03f979ccd76aef75fdcf8eb2e182b4a0fa81c08976d195bd696d0213482d40ab365f2dad594587ba8359df4db2cf8febd8d724d5c50f3ba72ed"; }
|
{ locale = "zh-CN"; arch = "linux-i686"; sha512 = "de86ee26774483a31e74a9f89e144d5bb4eb5493f27cb1b5a21902b8e8cdc0322f15d38498b8d6005b59296715b9d9125676b26661433e280a2f1807fedc3df3"; }
|
||||||
{ locale = "zh-CN"; arch = "linux-x86_64"; sha512 = "d988114967c4656a13fa3fd562166e7444811ce16c5fc2af06619a47b941b8e07de0993a5593f2e5bad22ff6e856e969dc4cedb9c8df0f532a807e4a30b0c2ef"; }
|
{ locale = "zh-CN"; arch = "linux-x86_64"; sha512 = "291074caef4a1a1162d0c3f90e630985978ddd731fde7d9d1d576c065ee8b89af5cd10196c4b05c537996ab99d00d78119af00bd1cd77e85b567303c38d1e792"; }
|
||||||
{ locale = "zh-TW"; arch = "linux-i686"; sha512 = "097a53d990af79e54e445e05c35fc08c86c0d003a04c48daadebb8dc0bd13f57072a82da01c3ae293f4a6766b3e2082bebe12bbb2a8c2f1c7d8eab23eecc2262"; }
|
{ locale = "zh-TW"; arch = "linux-i686"; sha512 = "6873ff342439247d5bda3e3065998b33bdf03f1d80d15a2f733a79eb7ede188a71e628ec3af6a67354f9adab9f67d79a86310060b20de09c623c342e3b894f2b"; }
|
||||||
{ locale = "zh-TW"; arch = "linux-x86_64"; sha512 = "9d4dd9e429623009e21b41383776864804803affc9837068bbafd7507bbc5ed70362582da0adb5c811d21c068a96bb4725c4581bf81ac0acb3d57b19fdb4fff6"; }
|
{ locale = "zh-TW"; arch = "linux-x86_64"; sha512 = "c60f4ef8b1dd22db617e8d6381f2e0ebd37fd8503c363548b5affda704d483432369138943f84ca07c89a15dcf72b9a081f8db6f1c202558050ec997b9389ecd"; }
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
enableOfficialBranding ? false
|
enableOfficialBranding ? false
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let version = "45.4.0"; in
|
let version = "45.5.0"; in
|
||||||
let verName = "${version}"; in
|
let verName = "${version}"; in
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
@ -21,7 +21,7 @@ stdenv.mkDerivation rec {
|
|||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "mirror://mozilla/thunderbird/releases/${verName}/source/thunderbird-${verName}.source.tar.xz";
|
url = "mirror://mozilla/thunderbird/releases/${verName}/source/thunderbird-${verName}.source.tar.xz";
|
||||||
sha512 = "9c601d9625b43103b64e111da3a88fccdc30d4a52aa8a66ee02120bc13f3c5600d24fa1cfd3817975a0e58be9078d192334dd3099aa462468d8ab0cd05a3bcd5";
|
sha512 = "719469c4f66a9e4b09c360056c63ef2e1803334901dd4a23f12e455fe8ae4d0aba0a6273b3cf2796c925dc93f0add3df011ffe40148ef0b3f226d0b1a1c37b6a";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = # from firefox30Pkgs.xulrunner, without gstreamer and libvpx
|
buildInputs = # from firefox30Pkgs.xulrunner, without gstreamer and libvpx
|
||||||
|
41
pkgs/applications/networking/p2p/ktorrent/5.nix
Normal file
41
pkgs/applications/networking/p2p/ktorrent/5.nix
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
{ stdenv, fetchurl, cmake
|
||||||
|
, ecm, qtbase, qtscript
|
||||||
|
, ki18n, kio, knotifications, knotifyconfig, kdoctools, kross, kcmutils, kdelibs4support
|
||||||
|
, libktorrent, boost, taglib
|
||||||
|
}:
|
||||||
|
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
|
name = pname + "-" + version;
|
||||||
|
|
||||||
|
pname = "ktorrent";
|
||||||
|
version = "5.0.1";
|
||||||
|
|
||||||
|
src = fetchurl {
|
||||||
|
url = http://download.kde.org/stable/ktorrent/5.0/ktorrent-5.0.1.tar.xz;
|
||||||
|
sha256 = "1rbr932djmn1la6vs2sy1zdf39fmla8vwzfn76h7csncbp5fw3yh";
|
||||||
|
};
|
||||||
|
|
||||||
|
patches =
|
||||||
|
[ (fetchurl {
|
||||||
|
url = https://cgit.kde.org/ktorrent.git/patch/?id=f48acc22f0105ce6bac63294d248873ae231c6cc;
|
||||||
|
sha256 = "0jm4y35w2ypbjzf165rnjr224nq4w651ydnpd9zdn3inxh8r4s0v";
|
||||||
|
})
|
||||||
|
];
|
||||||
|
|
||||||
|
nativeBuildInputs = [ kdoctools ecm ];
|
||||||
|
|
||||||
|
buildInputs =
|
||||||
|
[ cmake qtbase qtscript
|
||||||
|
ki18n kio knotifications knotifyconfig kross kcmutils kdelibs4support
|
||||||
|
libktorrent taglib
|
||||||
|
];
|
||||||
|
|
||||||
|
enableParallelBuilding = true;
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
description = "KDE integrated BtTorrent client";
|
||||||
|
homepage = https://www.kde.org/applications/internet/ktorrent/;
|
||||||
|
maintainers = [ stdenv.lib.maintainers.eelco ];
|
||||||
|
platforms = stdenv.lib.platforms.linux;
|
||||||
|
};
|
||||||
|
}
|
@ -3,6 +3,7 @@
|
|||||||
, zlib
|
, zlib
|
||||||
, withGtk ? false, gtk2 ? null, pango ? null, cairo ? null, gdk_pixbuf ? null
|
, withGtk ? false, gtk2 ? null, pango ? null, cairo ? null, gdk_pixbuf ? null
|
||||||
, withQt ? false, qt4 ? null
|
, withQt ? false, qt4 ? null
|
||||||
|
, ApplicationServices, SystemConfiguration, gmp
|
||||||
}:
|
}:
|
||||||
|
|
||||||
assert withGtk -> !withQt && gtk2 != null;
|
assert withGtk -> !withQt && gtk2 != null;
|
||||||
@ -11,7 +12,7 @@ assert withQt -> !withGtk && qt4 != null;
|
|||||||
with stdenv.lib;
|
with stdenv.lib;
|
||||||
|
|
||||||
let
|
let
|
||||||
version = "2.2.0";
|
version = "2.2.2";
|
||||||
variant = if withGtk then "gtk" else if withQt then "qt" else "cli";
|
variant = if withGtk then "gtk" else if withQt then "qt" else "cli";
|
||||||
in
|
in
|
||||||
|
|
||||||
@ -20,14 +21,16 @@ stdenv.mkDerivation {
|
|||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "http://www.wireshark.org/download/src/all-versions/wireshark-${version}.tar.bz2";
|
url = "http://www.wireshark.org/download/src/all-versions/wireshark-${version}.tar.bz2";
|
||||||
sha256 = "010i7wpsv2231pwb1xdqs0xfwywi3514siidv6wnrfpw3rs7x156";
|
sha256 = "1csm035ayfzn1xzzsmzcjk2ixx39d70aykr4nh0a88chk9gfzb7r";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
bison flex perl pkgconfig libpcap lua5 openssl libgcrypt gnutls
|
bison flex perl pkgconfig libpcap lua5 openssl libgcrypt gnutls
|
||||||
geoip libnl c-ares python libcap glib zlib
|
geoip c-ares python glib zlib
|
||||||
] ++ optional withQt qt4
|
] ++ optional withQt qt4
|
||||||
++ (optionals withGtk [gtk2 pango cairo gdk_pixbuf]);
|
++ (optionals withGtk [gtk2 pango cairo gdk_pixbuf])
|
||||||
|
++ optionals stdenv.isLinux [ libcap libnl ]
|
||||||
|
++ optionals stdenv.isDarwin [ SystemConfiguration ApplicationServices gmp ];
|
||||||
|
|
||||||
patches = [ ./wireshark-lookup-dumpcap-in-path.patch ];
|
patches = [ ./wireshark-lookup-dumpcap-in-path.patch ];
|
||||||
|
|
||||||
@ -68,7 +71,7 @@ stdenv.mkDerivation {
|
|||||||
experts. It runs on UNIX, OS X and Windows.
|
experts. It runs on UNIX, OS X and Windows.
|
||||||
'';
|
'';
|
||||||
|
|
||||||
platforms = stdenv.lib.platforms.linux;
|
platforms = stdenv.lib.platforms.unix;
|
||||||
maintainers = with stdenv.lib.maintainers; [ bjornfor fpletz ];
|
maintainers = with stdenv.lib.maintainers; [ bjornfor fpletz ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
41
pkgs/applications/networking/sync/acd_cli/default.nix
Normal file
41
pkgs/applications/networking/sync/acd_cli/default.nix
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
{ stdenv, fetchFromGitHub, buildPythonApplication, fuse
|
||||||
|
, appdirs, colorama, dateutil, requests2, requests_toolbelt
|
||||||
|
, fusepy, sqlalchemy }:
|
||||||
|
|
||||||
|
buildPythonApplication rec {
|
||||||
|
name = pname + "-" + version;
|
||||||
|
pname = "acd_cli";
|
||||||
|
version = "0.3.2";
|
||||||
|
|
||||||
|
doCheck = false;
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "yadayada";
|
||||||
|
repo = pname;
|
||||||
|
rev = version;
|
||||||
|
sha256 = "0a0fr632l24a3jmgla3b1vcm50ayfa9hdbp677ch1chwj5dq4zfp";
|
||||||
|
};
|
||||||
|
|
||||||
|
propagatedBuildInputs = [ appdirs colorama dateutil fusepy requests2
|
||||||
|
requests_toolbelt sqlalchemy ];
|
||||||
|
|
||||||
|
makeWrapperArgs = [ "--prefix LIBFUSE_PATH : ${fuse}/lib/libfuse.so" ];
|
||||||
|
|
||||||
|
postFixup = ''
|
||||||
|
function lnOverBin() {
|
||||||
|
rm -f $out/bin/{$2,.$2-wrapped}
|
||||||
|
ln -s $out/bin/$1 $out/bin/$2
|
||||||
|
}
|
||||||
|
lnOverBin acd_cli.py acd-cli
|
||||||
|
lnOverBin acd_cli.py acd_cli
|
||||||
|
lnOverBin acd_cli.py acdcli
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = with stdenv.lib; {
|
||||||
|
description = "A command line interface and FUSE filesystem for Amazon Cloud Drive";
|
||||||
|
homepage = https://github.com/yadayada/acd_cli;
|
||||||
|
license = licenses.gpl2;
|
||||||
|
platforms = platforms.linux;
|
||||||
|
maintainers = with maintainers; [ edwtjo ];
|
||||||
|
};
|
||||||
|
}
|
@ -1,14 +1,14 @@
|
|||||||
{ stdenv, lib, fetchFromGitHub, go, pkgs }:
|
{ stdenv, lib, fetchFromGitHub, go, pkgs }:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
version = "0.14.8";
|
version = "0.14.11";
|
||||||
name = "syncthing-${version}";
|
name = "syncthing-${version}";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "syncthing";
|
owner = "syncthing";
|
||||||
repo = "syncthing";
|
repo = "syncthing";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "0zhxgl6pgf60x99cappdfzk7h23g37hlanh72bwypx7pwbvhc91l";
|
sha256 = "12b8284mya5z1q7ighbzk8rqxj0kcv5n0l39dygikfcbl1krr6sg";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = [ go ];
|
buildInputs = [ go ];
|
||||||
|
@ -3,8 +3,8 @@
|
|||||||
rec {
|
rec {
|
||||||
major = "5";
|
major = "5";
|
||||||
minor = "2";
|
minor = "2";
|
||||||
patch = "2";
|
patch = "3";
|
||||||
tweak = "2";
|
tweak = "3";
|
||||||
|
|
||||||
subdir = "${major}.${minor}.${patch}";
|
subdir = "${major}.${minor}.${patch}";
|
||||||
|
|
||||||
@ -12,6 +12,6 @@ rec {
|
|||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "http://download.documentfoundation.org/libreoffice/src/${subdir}/libreoffice-${version}.tar.xz";
|
url = "http://download.documentfoundation.org/libreoffice/src/${subdir}/libreoffice-${version}.tar.xz";
|
||||||
sha256 = "1q6rv935g633ngg10hzi23sg0wqfq2apyffagk7mj1kan2hflljr";
|
sha256 = "1h9j3j7drhr49nw2p6by5vvrr8nc8rpldn3yp724mwkb2rfkdwd8";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -42,14 +42,14 @@ let
|
|||||||
|
|
||||||
translations = fetchSrc {
|
translations = fetchSrc {
|
||||||
name = "translations";
|
name = "translations";
|
||||||
sha256 = "0nxwf3b63gzb04svb6z1hi3qf95i90pwda5gpmlrfrq6250n3bpi";
|
sha256 = "0j0ajli1cbfwbgzrcqkx3db174jv1fgm22ds0gqlgkci9cffa0c4";
|
||||||
};
|
};
|
||||||
|
|
||||||
# TODO: dictionaries
|
# TODO: dictionaries
|
||||||
|
|
||||||
help = fetchSrc {
|
help = fetchSrc {
|
||||||
name = "help";
|
name = "help";
|
||||||
sha256 = "1gm23i0snhcm4svciypm0qiviiqv9zpiyplkh22baccs7li3kih1";
|
sha256 = "0fndi6cv8rw426c3l071z130ks9sqf6ca5yas7am9d666mmy4fs4";
|
||||||
};
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user