Merge branch 'master' into patch-3
This commit is contained in:
commit
b6fd071027
@ -47,27 +47,17 @@ indent_style = space
|
||||
insert_final_newline = unset
|
||||
trim_trailing_whitespace = unset
|
||||
|
||||
[*.{key,ovpn}]
|
||||
[*.{asc,key,ovpn}]
|
||||
insert_final_newline = unset
|
||||
end_of_line = unset
|
||||
trim_trailing_whitespace = unset
|
||||
|
||||
[*.lock]
|
||||
indent_size = unset
|
||||
|
||||
[deps.nix]
|
||||
insert_final_newline = unset
|
||||
[pkgs/tools/networking/dd-agent/*-deps.nix]
|
||||
insert_final_newline = unset
|
||||
|
||||
[eggs.nix]
|
||||
trim_trailing_whitespace = unset
|
||||
|
||||
[gemset.nix]
|
||||
insert_final_newline = unset
|
||||
|
||||
[node-{composition,packages,packages-generated}.nix]
|
||||
insert_final_newline = unset
|
||||
|
||||
[nixos/modules/services/networking/ircd-hybrid/*.{conf,in}]
|
||||
trim_trailing_whitespace = unset
|
||||
|
||||
@ -92,15 +82,6 @@ insert_final_newline = unset
|
||||
indent_style = unset
|
||||
trim_trailing_whitespace = unset
|
||||
|
||||
[pkgs/development/mobile/androidenv/generated/{addons,packages}.nix]
|
||||
trim_trailing_whitespace = unset
|
||||
|
||||
[pkgs/development/node-packages/composition.nix]
|
||||
insert_final_newline = unset
|
||||
|
||||
[pkgs/development/{perl-modules,ocaml-modules,tools/ocaml}/**]
|
||||
indent_style = unset
|
||||
|
||||
[pkgs/servers/dict/wordnet_structures.py]
|
||||
trim_trailing_whitespace = unset
|
||||
|
||||
|
2
.github/CONTRIBUTING.md
vendored
2
.github/CONTRIBUTING.md
vendored
@ -37,7 +37,7 @@ under the terms of [COPYING](../COPYING), which is an MIT-like license.
|
||||
* Not start with the package name.
|
||||
* Not have a period at the end.
|
||||
* `meta.license` must be set and fit the upstream license.
|
||||
* If there is no upstream license, `meta.license` should default to `stdenv.lib.licenses.unfree`.
|
||||
* If there is no upstream license, `meta.license` should default to `lib.licenses.unfree`.
|
||||
* `meta.maintainers` must be set.
|
||||
|
||||
See the nixpkgs manual for more details on [standard meta-attributes](https://nixos.org/nixpkgs/manual/#sec-standard-meta-attributes) and on how to [submit changes to nixpkgs](https://nixos.org/nixpkgs/manual/#chap-submitting-changes).
|
||||
|
@ -178,6 +178,12 @@ args.stdenv.mkDerivation (args // {
|
||||
</programlisting>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Arguments should be listed in the order they are used, with the
|
||||
exception of <varname>lib</varname>, which always goes first.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Prefer using the top-level <varname>lib</varname> over its alias
|
||||
|
@ -42,8 +42,8 @@ It also takes other standard `mkDerivation` attributes, they are added as such,
|
||||
Here is a simple package example. It is a pure Coq library, thus it depends on Coq. It builds on the Mathematical Components library, thus it also takes some `mathcomp` derivations as `extraBuildInputs`.
|
||||
|
||||
```nix
|
||||
{ coq, mkCoqDerivation, mathcomp, mathcomp-finmap, mathcomp-bigenough,
|
||||
lib, version ? null }:
|
||||
{ lib, mkCoqDerivation, version ? null
|
||||
, coq, mathcomp, mathcomp-finmap, mathcomp-bigenough }:
|
||||
with lib; mkCoqDerivation {
|
||||
/* namePrefix leads to e.g. `name = coq8.11-mathcomp1.11-multinomials-1.5.2` */
|
||||
namePrefix = [ "coq" "mathcomp" ];
|
||||
|
@ -69,11 +69,11 @@ prelude
|
||||
As an example of how a Nix expression for an Idris package can be created, here is the one for `idrisPackages.yaml`:
|
||||
|
||||
```nix
|
||||
{ build-idris-package
|
||||
{ lib
|
||||
, build-idris-package
|
||||
, fetchFromGitHub
|
||||
, contrib
|
||||
, lightyear
|
||||
, lib
|
||||
}:
|
||||
build-idris-package {
|
||||
name = "yaml";
|
||||
@ -94,11 +94,11 @@ build-idris-package {
|
||||
sha256 = "1g4pi0swmg214kndj85hj50ccmckni7piprsxfdzdfhg87s0avw7";
|
||||
};
|
||||
|
||||
meta = {
|
||||
meta = with lib; {
|
||||
description = "Idris YAML lib";
|
||||
homepage = "https://github.com/Heather/Idris.Yaml";
|
||||
license = lib.licenses.mit;
|
||||
maintainers = [ lib.maintainers.brainrape ];
|
||||
license = licenses.mit;
|
||||
maintainers = [ maintainers.brainrape ];
|
||||
};
|
||||
}
|
||||
```
|
||||
|
@ -116,7 +116,7 @@ The first step will be to build the Maven project as a fixed-output derivation i
|
||||
> Traditionally the Maven repository is at `~/.m2/repository`. We will override this to be the `$out` directory.
|
||||
|
||||
```nix
|
||||
{ stdenv, lib, maven }:
|
||||
{ lib, stdenv, maven }:
|
||||
stdenv.mkDerivation {
|
||||
name = "maven-repository";
|
||||
buildInputs = [ maven ];
|
||||
@ -168,7 +168,7 @@ If your package uses _SNAPSHOT_ dependencies or _version ranges_; there is a str
|
||||
Regardless of which strategy is chosen above, the step to build the derivation is the same.
|
||||
|
||||
```nix
|
||||
{ stdenv, lib, maven, callPackage }:
|
||||
{ stdenv, maven, callPackage }:
|
||||
# pick a repository derivation, here we will use buildMaven
|
||||
let repository = callPackage ./build-maven-repository.nix { };
|
||||
in stdenv.mkDerivation rec {
|
||||
@ -222,7 +222,7 @@ We will read the Maven repository and flatten it to a single list. This list wil
|
||||
We make sure to provide this classpath to the `makeWrapper`.
|
||||
|
||||
```nix
|
||||
{ stdenv, lib, maven, callPackage, makeWrapper, jre }:
|
||||
{ stdenv, maven, callPackage, makeWrapper, jre }:
|
||||
let
|
||||
repository = callPackage ./build-maven-repository.nix { };
|
||||
in stdenv.mkDerivation rec {
|
||||
@ -298,7 +298,7 @@ Main-Class: Main
|
||||
We will modify the derivation above to add a symlink to our repository so that it's accessible to our JAR during the `installPhase`.
|
||||
|
||||
```nix
|
||||
{ stdenv, lib, maven, callPackage, makeWrapper, jre }:
|
||||
{ stdenv, maven, callPackage, makeWrapper, jre }:
|
||||
# pick a repository derivation, here we will use buildMaven
|
||||
let repository = callPackage ./build-maven-repository.nix { };
|
||||
in stdenv.mkDerivation rec {
|
||||
|
@ -32,11 +32,11 @@ buildDunePackage rec {
|
||||
propagatedBuildInputs = [ bigstringaf result ];
|
||||
doCheck = true;
|
||||
|
||||
meta = {
|
||||
meta = with lib; {
|
||||
homepage = "https://github.com/inhabitedtype/angstrom";
|
||||
description = "OCaml parser combinators built for speed and memory efficiency";
|
||||
license = lib.licenses.bsd3;
|
||||
maintainers = with lib.maintainers; [ sternenseemann ];
|
||||
license = licenses.bsd3;
|
||||
maintainers = with maintainers; [ sternenseemann ];
|
||||
};
|
||||
}
|
||||
```
|
||||
|
@ -110,7 +110,7 @@ ClassC3Componentised = buildPerlPackage rec {
|
||||
On Darwin, if a script has too many `-Idir` flags in its first line (its “shebang line”), it will not run. This can be worked around by calling the `shortenPerlShebang` function from the `postInstall` phase:
|
||||
|
||||
```nix
|
||||
{ stdenv, lib, buildPerlPackage, fetchurl, shortenPerlShebang }:
|
||||
{ lib, stdenv, buildPerlPackage, fetchurl, shortenPerlShebang }:
|
||||
|
||||
ImageExifTool = buildPerlPackage {
|
||||
pname = "Image-ExifTool";
|
||||
|
@ -8,7 +8,7 @@ There are primarily two problems which the Qt infrastructure is designed to addr
|
||||
|
||||
```{=docbook}
|
||||
<programlisting>
|
||||
{ mkDerivation, lib, qtbase }: <co xml:id='qt-default-nix-co-1' />
|
||||
{ mkDerivation, qtbase }: <co xml:id='qt-default-nix-co-1' />
|
||||
|
||||
mkDerivation { <co xml:id='qt-default-nix-co-2' />
|
||||
pname = "myapp";
|
||||
|
@ -32,14 +32,12 @@ However, if you'd like to add a file to your project source to make the
|
||||
environment available for other contributors, you can create a `default.nix`
|
||||
file like so:
|
||||
```nix
|
||||
let
|
||||
pkgs = import <nixpkgs> {};
|
||||
stdenv = pkgs.stdenv;
|
||||
in with pkgs; {
|
||||
with import <nixpkgs> {};
|
||||
{
|
||||
myProject = stdenv.mkDerivation {
|
||||
name = "myProject";
|
||||
version = "1";
|
||||
src = if pkgs.lib.inNixShell then null else nix;
|
||||
src = if lib.inNixShell then null else nix;
|
||||
|
||||
buildInputs = with rPackages; [
|
||||
R
|
||||
|
@ -232,7 +232,7 @@ If you want to package a specific version, you can use the standard Gemfile synt
|
||||
Now you can also also make a `default.nix` that looks like this:
|
||||
|
||||
```nix
|
||||
{ lib, bundlerApp }:
|
||||
{ bundlerApp }:
|
||||
|
||||
bundlerApp {
|
||||
pname = "mdl";
|
||||
|
@ -19,6 +19,8 @@ or use Mozilla's [Rust nightlies overlay](#using-the-rust-nightlies-overlay).
|
||||
Rust applications are packaged by using the `buildRustPackage` helper from `rustPlatform`:
|
||||
|
||||
```
|
||||
{ lib, rustPlatform }:
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "ripgrep";
|
||||
version = "12.1.1";
|
||||
@ -226,8 +228,6 @@ source code in a reproducible way. If it is missing or out-of-date one can use
|
||||
the `cargoPatches` attribute to update or add it.
|
||||
|
||||
```
|
||||
{ lib, rustPlatform, fetchFromGitHub }:
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
(...)
|
||||
cargoPatches = [
|
||||
@ -263,7 +263,7 @@ Now, the file produced by the call to `carnix`, called `hello.nix`, looks like:
|
||||
|
||||
```
|
||||
# Generated by carnix 0.6.5: carnix -o hello.nix --src ./. Cargo.lock --standalone
|
||||
{ lib, stdenv, buildRustCrate, fetchgit }:
|
||||
{ stdenv, buildRustCrate, fetchgit }:
|
||||
let kernel = stdenv.buildPlatform.parsed.kernel.name;
|
||||
# ... (content skipped)
|
||||
in
|
||||
@ -292,7 +292,7 @@ following nix file:
|
||||
|
||||
```
|
||||
# Generated by carnix 0.6.5: carnix -o hello.nix --src ./. Cargo.lock --standalone
|
||||
{ lib, stdenv, buildRustCrate, fetchgit }:
|
||||
{ stdenv, buildRustCrate, fetchgit }:
|
||||
let kernel = stdenv.buildPlatform.parsed.kernel.name;
|
||||
# ... (content skipped)
|
||||
in
|
||||
|
@ -1,5 +1,3 @@
|
||||
{ pkgs ? import ../. {} }:
|
||||
(import ./default.nix {}).overrideAttrs (x: {
|
||||
buildInputs = x.buildInputs ++ [ pkgs.xmloscopy pkgs.ruby ];
|
||||
|
||||
})
|
||||
{ pkgs ? import ../. { } }:
|
||||
(import ./default.nix { }).overrideAttrs
|
||||
(x: { buildInputs = (x.buildInputs or [ ]) ++ [ pkgs.xmloscopy pkgs.ruby ]; })
|
||||
|
@ -291,5 +291,40 @@ stdenv.mkDerivation {
|
||||
}
|
||||
</programlisting>
|
||||
</section>
|
||||
<section xml:id="sec-overlays-alternatives-mpi">
|
||||
<title>Switching the MPI implementation</title>
|
||||
<para>
|
||||
All programs that are built with
|
||||
<link xlink:href="https://en.wikipedia.org/wiki/Message_Passing_Interface">MPI</link>
|
||||
support use the generic attribute <varname>mpi</varname>
|
||||
as an input. At the moment Nixpkgs natively provides two different
|
||||
MPI implementations:
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>
|
||||
<link xlink:href="https://www.open-mpi.org/">Open MPI</link>
|
||||
(default), attribute name <varname>openmpi</varname>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<link xlink:href="https://www.mpich.org/">MPICH</link>,
|
||||
attribute name <varname>mpich</varname>
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
<para>
|
||||
To provide MPI enabled applications that use <literal>MPICH</literal>, instead
|
||||
of the default <literal>Open MPI</literal>, simply use the following overlay:
|
||||
</para>
|
||||
<programlisting>
|
||||
self: super:
|
||||
|
||||
{
|
||||
mpi = self.mpich;
|
||||
}
|
||||
</programlisting>
|
||||
</section>
|
||||
</section>
|
||||
</chapter>
|
||||
|
@ -148,6 +148,28 @@ rec {
|
||||
/* A combination of `traceVal` and `traceSeqN`. */
|
||||
traceValSeqN = traceValSeqNFn id;
|
||||
|
||||
/* Trace the input and output of a function `f` named `name`,
|
||||
both down to `depth`.
|
||||
|
||||
This is useful for adding around a function call,
|
||||
to see the before/after of values as they are transformed.
|
||||
|
||||
Example:
|
||||
traceFnSeqN 2 "id" (x: x) { a.b.c = 3; }
|
||||
trace: { fn = "id"; from = { a.b = {…}; }; to = { a.b = {…}; }; }
|
||||
=> { a.b.c = 3; }
|
||||
*/
|
||||
traceFnSeqN = depth: name: f: v:
|
||||
let res = f v;
|
||||
in lib.traceSeqN
|
||||
(depth + 1)
|
||||
{
|
||||
fn = name;
|
||||
from = v;
|
||||
to = res;
|
||||
}
|
||||
res;
|
||||
|
||||
|
||||
# -- TESTING --
|
||||
|
||||
|
@ -130,7 +130,7 @@ let
|
||||
assertMsg assertOneOf;
|
||||
inherit (self.debug) addErrorContextToAttrs traceIf traceVal traceValFn
|
||||
traceXMLVal traceXMLValMarked traceSeq traceSeqN traceValSeq
|
||||
traceValSeqFn traceValSeqN traceValSeqNFn traceShowVal
|
||||
traceValSeqFn traceValSeqN traceValSeqNFn traceFnSeqN traceShowVal
|
||||
traceShowValMarked showVal traceCall traceCall2 traceCall3
|
||||
traceValIfNot runTests testAllTrue traceCallXml attrNamesToStr;
|
||||
inherit (self.misc) maybeEnv defaultMergeArg defaultMerge foldArgs
|
||||
|
@ -87,7 +87,7 @@ lib.mapAttrs (n: v: v // { shortName = n; }) {
|
||||
|
||||
beerware = spdx {
|
||||
spdxId = "Beerware";
|
||||
fullName = ''Beerware License'';
|
||||
fullName = "Beerware License";
|
||||
};
|
||||
|
||||
blueOak100 = spdx {
|
||||
@ -107,7 +107,7 @@ lib.mapAttrs (n: v: v // { shortName = n; }) {
|
||||
|
||||
bsd2Patent = spdx {
|
||||
spdxId = "BSD-2-Clause-Patent";
|
||||
fullName = ''BSD-2-Clause Plus Patent License'';
|
||||
fullName = "BSD-2-Clause Plus Patent License";
|
||||
};
|
||||
|
||||
bsd3 = spdx {
|
||||
|
@ -895,7 +895,7 @@ rec {
|
||||
fromOpt = getAttrFromPath from options;
|
||||
toOf = attrByPath to
|
||||
(abort "Renaming error: option `${showOption to}' does not exist.");
|
||||
toType = let opt = attrByPath to {} options; in opt.type or null;
|
||||
toType = let opt = attrByPath to {} options; in opt.type or (types.submodule {});
|
||||
in
|
||||
{
|
||||
options = setAttrByPath from (mkOption {
|
||||
|
@ -1,7 +1,7 @@
|
||||
{ lib }:
|
||||
|
||||
rec {
|
||||
# platform.gcc.arch to its features (as in /proc/cpuinfo)
|
||||
# gcc.arch to its features (as in /proc/cpuinfo)
|
||||
features = {
|
||||
default = [ ];
|
||||
# x86_64 Intel
|
||||
|
@ -24,8 +24,6 @@ rec {
|
||||
# Either of these can be losslessly-extracted from `parsed` iff parsing succeeds.
|
||||
system = parse.doubleFromSystem final.parsed;
|
||||
config = parse.tripleFromSystem final.parsed;
|
||||
# Just a guess, based on `system`
|
||||
platform = platforms.select final;
|
||||
# Determine whether we are compatible with the provided CPU
|
||||
isCompatible = platform: parse.isCompatible final.parsed.cpu platform.parsed.cpu;
|
||||
# Derived meta-data
|
||||
@ -79,12 +77,23 @@ rec {
|
||||
};
|
||||
isStatic = final.isWasm || final.isRedox;
|
||||
|
||||
kernelArch =
|
||||
# Just a guess, based on `system`
|
||||
inherit
|
||||
({
|
||||
linux-kernel = args.linux-kernel or {};
|
||||
gcc = args.gcc or {};
|
||||
rustc = args.rust or {};
|
||||
} // platforms.select final)
|
||||
linux-kernel gcc rustc;
|
||||
|
||||
linuxArch =
|
||||
if final.isAarch32 then "arm"
|
||||
else if final.isAarch64 then "arm64"
|
||||
else if final.isx86_32 then "x86"
|
||||
else if final.isx86_64 then "x86"
|
||||
else if final.isx86_32 then "i386"
|
||||
else if final.isx86_64 then "x86_64"
|
||||
else if final.isMips then "mips"
|
||||
else if final.isPower then "powerpc"
|
||||
else if final.isRiscV then "riscv"
|
||||
else final.parsed.cpu.name;
|
||||
|
||||
qemuArch =
|
||||
@ -129,7 +138,7 @@ rec {
|
||||
else throw "Don't know how to run ${final.config} executables.";
|
||||
|
||||
} // mapAttrs (n: v: v final.parsed) inspect.predicates
|
||||
// mapAttrs (n: v: v final.platform.gcc.arch or "default") architectures.predicates
|
||||
// mapAttrs (n: v: v final.gcc.arch or "default") architectures.predicates
|
||||
// args;
|
||||
in assert final.useAndroidPrebuilt -> final.isAndroid;
|
||||
assert lib.foldl
|
||||
|
@ -7,7 +7,6 @@ let
|
||||
|
||||
riscv = bits: {
|
||||
config = "riscv${bits}-unknown-linux-gnu";
|
||||
platform = platforms.riscv-multiplatform;
|
||||
};
|
||||
in
|
||||
|
||||
@ -17,84 +16,68 @@ rec {
|
||||
#
|
||||
powernv = {
|
||||
config = "powerpc64le-unknown-linux-gnu";
|
||||
platform = platforms.powernv;
|
||||
};
|
||||
musl-power = {
|
||||
config = "powerpc64le-unknown-linux-musl";
|
||||
platform = platforms.powernv;
|
||||
};
|
||||
|
||||
sheevaplug = {
|
||||
config = "armv5tel-unknown-linux-gnueabi";
|
||||
platform = platforms.sheevaplug;
|
||||
};
|
||||
} // platforms.sheevaplug;
|
||||
|
||||
raspberryPi = {
|
||||
config = "armv6l-unknown-linux-gnueabihf";
|
||||
platform = platforms.raspberrypi;
|
||||
};
|
||||
} // platforms.raspberrypi;
|
||||
|
||||
remarkable1 = {
|
||||
config = "armv7l-unknown-linux-gnueabihf";
|
||||
platform = platforms.zero-gravitas;
|
||||
};
|
||||
} // platforms.zero-gravitas;
|
||||
|
||||
remarkable2 = {
|
||||
config = "armv7l-unknown-linux-gnueabihf";
|
||||
platform = platforms.zero-sugar;
|
||||
};
|
||||
} // platforms.zero-sugar;
|
||||
|
||||
armv7l-hf-multiplatform = {
|
||||
config = "armv7l-unknown-linux-gnueabihf";
|
||||
platform = platforms.armv7l-hf-multiplatform;
|
||||
};
|
||||
|
||||
aarch64-multiplatform = {
|
||||
config = "aarch64-unknown-linux-gnu";
|
||||
platform = platforms.aarch64-multiplatform;
|
||||
};
|
||||
|
||||
armv7a-android-prebuilt = {
|
||||
config = "armv7a-unknown-linux-androideabi";
|
||||
sdkVer = "29";
|
||||
ndkVer = "21";
|
||||
platform = platforms.armv7a-android;
|
||||
useAndroidPrebuilt = true;
|
||||
};
|
||||
} // platforms.armv7a-android;
|
||||
|
||||
aarch64-android-prebuilt = {
|
||||
config = "aarch64-unknown-linux-android";
|
||||
sdkVer = "29";
|
||||
ndkVer = "21";
|
||||
platform = platforms.aarch64-multiplatform;
|
||||
useAndroidPrebuilt = true;
|
||||
};
|
||||
|
||||
scaleway-c1 = armv7l-hf-multiplatform // rec {
|
||||
platform = platforms.scaleway-c1;
|
||||
inherit (platform.gcc) fpu;
|
||||
};
|
||||
scaleway-c1 = armv7l-hf-multiplatform // platforms.scaleway-c1;
|
||||
|
||||
pogoplug4 = {
|
||||
config = "armv5tel-unknown-linux-gnueabi";
|
||||
platform = platforms.pogoplug4;
|
||||
};
|
||||
} // platforms.pogoplug4;
|
||||
|
||||
ben-nanonote = {
|
||||
config = "mipsel-unknown-linux-uclibc";
|
||||
platform = platforms.ben_nanonote;
|
||||
};
|
||||
} // platforms.ben_nanonote;
|
||||
|
||||
fuloongminipc = {
|
||||
config = "mipsel-unknown-linux-gnu";
|
||||
platform = platforms.fuloong2f_n32;
|
||||
};
|
||||
} // platforms.fuloong2f_n32;
|
||||
|
||||
muslpi = raspberryPi // {
|
||||
config = "armv6l-unknown-linux-musleabihf";
|
||||
};
|
||||
|
||||
aarch64-multiplatform-musl = aarch64-multiplatform // {
|
||||
aarch64-multiplatform-musl = {
|
||||
config = "aarch64-unknown-linux-musl";
|
||||
};
|
||||
|
||||
@ -110,13 +93,11 @@ rec {
|
||||
riscv64-embedded = {
|
||||
config = "riscv64-none-elf";
|
||||
libc = "newlib";
|
||||
platform = platforms.riscv-multiplatform;
|
||||
};
|
||||
|
||||
riscv32-embedded = {
|
||||
config = "riscv32-none-elf";
|
||||
libc = "newlib";
|
||||
platform = platforms.riscv-multiplatform;
|
||||
};
|
||||
|
||||
mmix = {
|
||||
@ -136,13 +117,11 @@ rec {
|
||||
vc4 = {
|
||||
config = "vc4-elf";
|
||||
libc = "newlib";
|
||||
platform = {};
|
||||
};
|
||||
|
||||
or1k = {
|
||||
config = "or1k-elf";
|
||||
libc = "newlib";
|
||||
platform = {};
|
||||
};
|
||||
|
||||
arm-embedded = {
|
||||
@ -200,41 +179,37 @@ rec {
|
||||
iphone64 = {
|
||||
config = "aarch64-apple-ios";
|
||||
# config = "aarch64-apple-darwin14";
|
||||
sdkVer = "13.2";
|
||||
xcodeVer = "11.3.1";
|
||||
sdkVer = "14.3";
|
||||
xcodeVer = "12.3";
|
||||
xcodePlatform = "iPhoneOS";
|
||||
useiOSPrebuilt = true;
|
||||
platform = {};
|
||||
};
|
||||
|
||||
iphone32 = {
|
||||
config = "armv7a-apple-ios";
|
||||
# config = "arm-apple-darwin10";
|
||||
sdkVer = "13.2";
|
||||
xcodeVer = "11.3.1";
|
||||
sdkVer = "14.3";
|
||||
xcodeVer = "12.3";
|
||||
xcodePlatform = "iPhoneOS";
|
||||
useiOSPrebuilt = true;
|
||||
platform = {};
|
||||
};
|
||||
|
||||
iphone64-simulator = {
|
||||
config = "x86_64-apple-ios";
|
||||
# config = "x86_64-apple-darwin14";
|
||||
sdkVer = "13.2";
|
||||
xcodeVer = "11.3.1";
|
||||
sdkVer = "14.3";
|
||||
xcodeVer = "12.3";
|
||||
xcodePlatform = "iPhoneSimulator";
|
||||
useiOSPrebuilt = true;
|
||||
platform = {};
|
||||
};
|
||||
|
||||
iphone32-simulator = {
|
||||
config = "i686-apple-ios";
|
||||
# config = "i386-apple-darwin11";
|
||||
sdkVer = "13.2";
|
||||
xcodeVer = "11.3.1";
|
||||
sdkVer = "14.3";
|
||||
xcodeVer = "12.3";
|
||||
xcodePlatform = "iPhoneSimulator";
|
||||
useiOSPrebuilt = true;
|
||||
platform = {};
|
||||
};
|
||||
|
||||
#
|
||||
@ -245,7 +220,6 @@ rec {
|
||||
mingw32 = {
|
||||
config = "i686-w64-mingw32";
|
||||
libc = "msvcrt"; # This distinguishes the mingw (non posix) toolchain
|
||||
platform = {};
|
||||
};
|
||||
|
||||
# 64 bit mingw-w64
|
||||
@ -253,7 +227,6 @@ rec {
|
||||
# That's the triplet they use in the mingw-w64 docs.
|
||||
config = "x86_64-w64-mingw32";
|
||||
libc = "msvcrt"; # This distinguishes the mingw (non posix) toolchain
|
||||
platform = {};
|
||||
};
|
||||
|
||||
# BSDs
|
||||
@ -275,6 +248,5 @@ rec {
|
||||
# Ghcjs
|
||||
ghcjs = {
|
||||
config = "js-unknown-ghcjs";
|
||||
platform = {};
|
||||
};
|
||||
}
|
||||
|
@ -1,39 +1,36 @@
|
||||
{ lib }:
|
||||
rec {
|
||||
pcBase = {
|
||||
name = "pc";
|
||||
kernelBaseConfig = "defconfig";
|
||||
# Build whatever possible as a module, if not stated in the extra config.
|
||||
kernelAutoModules = true;
|
||||
kernelTarget = "bzImage";
|
||||
pc = {
|
||||
linux-kernel = {
|
||||
name = "pc";
|
||||
|
||||
baseConfig = "defconfig";
|
||||
# Build whatever possible as a module, if not stated in the extra config.
|
||||
autoModules = true;
|
||||
target = "bzImage";
|
||||
};
|
||||
};
|
||||
|
||||
pc64 = pcBase // { kernelArch = "x86_64"; };
|
||||
|
||||
pc32 = pcBase // { kernelArch = "i386"; };
|
||||
|
||||
pc32_simplekernel = pc32 // {
|
||||
kernelAutoModules = false;
|
||||
};
|
||||
|
||||
pc64_simplekernel = pc64 // {
|
||||
kernelAutoModules = false;
|
||||
pc_simplekernel = lib.recursiveUpdate pc {
|
||||
linux-kernel.autoModules = false;
|
||||
};
|
||||
|
||||
powernv = {
|
||||
name = "PowerNV";
|
||||
kernelArch = "powerpc";
|
||||
kernelBaseConfig = "powernv_defconfig";
|
||||
kernelTarget = "zImage";
|
||||
kernelInstallTarget = "install";
|
||||
kernelFile = "vmlinux";
|
||||
kernelAutoModules = true;
|
||||
# avoid driver/FS trouble arising from unusual page size
|
||||
kernelExtraConfig = ''
|
||||
PPC_64K_PAGES n
|
||||
PPC_4K_PAGES y
|
||||
IPV6 y
|
||||
'';
|
||||
linux-kernel = {
|
||||
name = "PowerNV";
|
||||
|
||||
baseConfig = "powernv_defconfig";
|
||||
target = "zImage";
|
||||
installTarget = "install";
|
||||
file = "vmlinux";
|
||||
autoModules = true;
|
||||
# avoid driver/FS trouble arising from unusual page size
|
||||
extraConfig = ''
|
||||
PPC_64K_PAGES n
|
||||
PPC_4K_PAGES y
|
||||
IPV6 y
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
##
|
||||
@ -41,17 +38,12 @@ rec {
|
||||
##
|
||||
|
||||
pogoplug4 = {
|
||||
name = "pogoplug4";
|
||||
linux-kernel = {
|
||||
name = "pogoplug4";
|
||||
|
||||
gcc = {
|
||||
arch = "armv5te";
|
||||
};
|
||||
|
||||
kernelBaseConfig = "multi_v5_defconfig";
|
||||
kernelArch = "arm";
|
||||
kernelAutoModules = false;
|
||||
kernelExtraConfig =
|
||||
''
|
||||
baseConfig = "multi_v5_defconfig";
|
||||
autoModules = false;
|
||||
extraConfig = ''
|
||||
# Ubi for the mtd
|
||||
MTD_UBI y
|
||||
UBIFS_FS y
|
||||
@ -61,136 +53,144 @@ rec {
|
||||
UBIFS_FS_ZLIB y
|
||||
UBIFS_FS_DEBUG n
|
||||
'';
|
||||
kernelMakeFlags = [ "LOADADDR=0x8000" ];
|
||||
kernelTarget = "uImage";
|
||||
# TODO reenable once manual-config's config actually builds a .dtb and this is checked to be working
|
||||
#kernelDTB = true;
|
||||
makeFlags = [ "LOADADDR=0x8000" ];
|
||||
target = "uImage";
|
||||
# TODO reenable once manual-config's config actually builds a .dtb and this is checked to be working
|
||||
#DTB = true;
|
||||
};
|
||||
gcc = {
|
||||
arch = "armv5te";
|
||||
};
|
||||
};
|
||||
|
||||
sheevaplug = {
|
||||
name = "sheevaplug";
|
||||
kernelBaseConfig = "multi_v5_defconfig";
|
||||
kernelArch = "arm";
|
||||
kernelAutoModules = false;
|
||||
kernelExtraConfig = ''
|
||||
BLK_DEV_RAM y
|
||||
BLK_DEV_INITRD y
|
||||
BLK_DEV_CRYPTOLOOP m
|
||||
BLK_DEV_DM m
|
||||
DM_CRYPT m
|
||||
MD y
|
||||
REISERFS_FS m
|
||||
BTRFS_FS m
|
||||
XFS_FS m
|
||||
JFS_FS m
|
||||
EXT4_FS m
|
||||
USB_STORAGE_CYPRESS_ATACB m
|
||||
linux-kernel = {
|
||||
name = "sheevaplug";
|
||||
|
||||
# mv cesa requires this sw fallback, for mv-sha1
|
||||
CRYPTO_SHA1 y
|
||||
# Fast crypto
|
||||
CRYPTO_TWOFISH y
|
||||
CRYPTO_TWOFISH_COMMON y
|
||||
CRYPTO_BLOWFISH y
|
||||
CRYPTO_BLOWFISH_COMMON y
|
||||
baseConfig = "multi_v5_defconfig";
|
||||
autoModules = false;
|
||||
extraConfig = ''
|
||||
BLK_DEV_RAM y
|
||||
BLK_DEV_INITRD y
|
||||
BLK_DEV_CRYPTOLOOP m
|
||||
BLK_DEV_DM m
|
||||
DM_CRYPT m
|
||||
MD y
|
||||
REISERFS_FS m
|
||||
BTRFS_FS m
|
||||
XFS_FS m
|
||||
JFS_FS m
|
||||
EXT4_FS m
|
||||
USB_STORAGE_CYPRESS_ATACB m
|
||||
|
||||
IP_PNP y
|
||||
IP_PNP_DHCP y
|
||||
NFS_FS y
|
||||
ROOT_NFS y
|
||||
TUN m
|
||||
NFS_V4 y
|
||||
NFS_V4_1 y
|
||||
NFS_FSCACHE y
|
||||
NFSD m
|
||||
NFSD_V2_ACL y
|
||||
NFSD_V3 y
|
||||
NFSD_V3_ACL y
|
||||
NFSD_V4 y
|
||||
NETFILTER y
|
||||
IP_NF_IPTABLES y
|
||||
IP_NF_FILTER y
|
||||
IP_NF_MATCH_ADDRTYPE y
|
||||
IP_NF_TARGET_LOG y
|
||||
IP_NF_MANGLE y
|
||||
IPV6 m
|
||||
VLAN_8021Q m
|
||||
# mv cesa requires this sw fallback, for mv-sha1
|
||||
CRYPTO_SHA1 y
|
||||
# Fast crypto
|
||||
CRYPTO_TWOFISH y
|
||||
CRYPTO_TWOFISH_COMMON y
|
||||
CRYPTO_BLOWFISH y
|
||||
CRYPTO_BLOWFISH_COMMON y
|
||||
|
||||
CIFS y
|
||||
CIFS_XATTR y
|
||||
CIFS_POSIX y
|
||||
CIFS_FSCACHE y
|
||||
CIFS_ACL y
|
||||
IP_PNP y
|
||||
IP_PNP_DHCP y
|
||||
NFS_FS y
|
||||
ROOT_NFS y
|
||||
TUN m
|
||||
NFS_V4 y
|
||||
NFS_V4_1 y
|
||||
NFS_FSCACHE y
|
||||
NFSD m
|
||||
NFSD_V2_ACL y
|
||||
NFSD_V3 y
|
||||
NFSD_V3_ACL y
|
||||
NFSD_V4 y
|
||||
NETFILTER y
|
||||
IP_NF_IPTABLES y
|
||||
IP_NF_FILTER y
|
||||
IP_NF_MATCH_ADDRTYPE y
|
||||
IP_NF_TARGET_LOG y
|
||||
IP_NF_MANGLE y
|
||||
IPV6 m
|
||||
VLAN_8021Q m
|
||||
|
||||
WATCHDOG y
|
||||
WATCHDOG_CORE y
|
||||
ORION_WATCHDOG m
|
||||
CIFS y
|
||||
CIFS_XATTR y
|
||||
CIFS_POSIX y
|
||||
CIFS_FSCACHE y
|
||||
CIFS_ACL y
|
||||
|
||||
ZRAM m
|
||||
NETCONSOLE m
|
||||
WATCHDOG y
|
||||
WATCHDOG_CORE y
|
||||
ORION_WATCHDOG m
|
||||
|
||||
# Disable OABI to have seccomp_filter (required for systemd)
|
||||
# https://github.com/raspberrypi/firmware/issues/651
|
||||
OABI_COMPAT n
|
||||
ZRAM m
|
||||
NETCONSOLE m
|
||||
|
||||
# Fail to build
|
||||
DRM n
|
||||
SCSI_ADVANSYS n
|
||||
USB_ISP1362_HCD n
|
||||
SND_SOC n
|
||||
SND_ALI5451 n
|
||||
FB_SAVAGE n
|
||||
SCSI_NSP32 n
|
||||
ATA_SFF n
|
||||
SUNGEM n
|
||||
IRDA n
|
||||
ATM_HE n
|
||||
SCSI_ACARD n
|
||||
BLK_DEV_CMD640_ENHANCED n
|
||||
# Disable OABI to have seccomp_filter (required for systemd)
|
||||
# https://github.com/raspberrypi/firmware/issues/651
|
||||
OABI_COMPAT n
|
||||
|
||||
FUSE_FS m
|
||||
# Fail to build
|
||||
DRM n
|
||||
SCSI_ADVANSYS n
|
||||
USB_ISP1362_HCD n
|
||||
SND_SOC n
|
||||
SND_ALI5451 n
|
||||
FB_SAVAGE n
|
||||
SCSI_NSP32 n
|
||||
ATA_SFF n
|
||||
SUNGEM n
|
||||
IRDA n
|
||||
ATM_HE n
|
||||
SCSI_ACARD n
|
||||
BLK_DEV_CMD640_ENHANCED n
|
||||
|
||||
# systemd uses cgroups
|
||||
CGROUPS y
|
||||
FUSE_FS m
|
||||
|
||||
# Latencytop
|
||||
LATENCYTOP y
|
||||
# systemd uses cgroups
|
||||
CGROUPS y
|
||||
|
||||
# Ubi for the mtd
|
||||
MTD_UBI y
|
||||
UBIFS_FS y
|
||||
UBIFS_FS_XATTR y
|
||||
UBIFS_FS_ADVANCED_COMPR y
|
||||
UBIFS_FS_LZO y
|
||||
UBIFS_FS_ZLIB y
|
||||
UBIFS_FS_DEBUG n
|
||||
# Latencytop
|
||||
LATENCYTOP y
|
||||
|
||||
# Kdb, for kernel troubles
|
||||
KGDB y
|
||||
KGDB_SERIAL_CONSOLE y
|
||||
KGDB_KDB y
|
||||
'';
|
||||
kernelMakeFlags = [ "LOADADDR=0x0200000" ];
|
||||
kernelTarget = "uImage";
|
||||
kernelDTB = true; # Beyond 3.10
|
||||
# Ubi for the mtd
|
||||
MTD_UBI y
|
||||
UBIFS_FS y
|
||||
UBIFS_FS_XATTR y
|
||||
UBIFS_FS_ADVANCED_COMPR y
|
||||
UBIFS_FS_LZO y
|
||||
UBIFS_FS_ZLIB y
|
||||
UBIFS_FS_DEBUG n
|
||||
|
||||
# Kdb, for kernel troubles
|
||||
KGDB y
|
||||
KGDB_SERIAL_CONSOLE y
|
||||
KGDB_KDB y
|
||||
'';
|
||||
makeFlags = [ "LOADADDR=0x0200000" ];
|
||||
target = "uImage";
|
||||
DTB = true; # Beyond 3.10
|
||||
};
|
||||
gcc = {
|
||||
arch = "armv5te";
|
||||
};
|
||||
};
|
||||
|
||||
raspberrypi = {
|
||||
name = "raspberrypi";
|
||||
kernelBaseConfig = "bcm2835_defconfig";
|
||||
kernelDTB = true;
|
||||
kernelArch = "arm";
|
||||
kernelAutoModules = true;
|
||||
kernelPreferBuiltin = true;
|
||||
kernelExtraConfig = ''
|
||||
# Disable OABI to have seccomp_filter (required for systemd)
|
||||
# https://github.com/raspberrypi/firmware/issues/651
|
||||
OABI_COMPAT n
|
||||
'';
|
||||
kernelTarget = "zImage";
|
||||
linux-kernel = {
|
||||
name = "raspberrypi";
|
||||
|
||||
baseConfig = "bcm2835_defconfig";
|
||||
DTB = true;
|
||||
autoModules = true;
|
||||
preferBuiltin = true;
|
||||
extraConfig = ''
|
||||
# Disable OABI to have seccomp_filter (required for systemd)
|
||||
# https://github.com/raspberrypi/firmware/issues/651
|
||||
OABI_COMPAT n
|
||||
'';
|
||||
target = "zImage";
|
||||
};
|
||||
gcc = {
|
||||
arch = "armv6";
|
||||
fpu = "vfp";
|
||||
@ -201,13 +201,15 @@ rec {
|
||||
raspberrypi2 = armv7l-hf-multiplatform;
|
||||
|
||||
zero-gravitas = {
|
||||
name = "zero-gravitas";
|
||||
kernelBaseConfig = "zero-gravitas_defconfig";
|
||||
kernelArch = "arm";
|
||||
# kernelTarget verified by checking /boot on reMarkable 1 device
|
||||
kernelTarget = "zImage";
|
||||
kernelAutoModules = false;
|
||||
kernelDTB = true;
|
||||
linux-kernel = {
|
||||
name = "zero-gravitas";
|
||||
|
||||
baseConfig = "zero-gravitas_defconfig";
|
||||
# Target verified by checking /boot on reMarkable 1 device
|
||||
target = "zImage";
|
||||
autoModules = false;
|
||||
DTB = true;
|
||||
};
|
||||
gcc = {
|
||||
fpu = "neon";
|
||||
cpu = "cortex-a9";
|
||||
@ -215,13 +217,15 @@ rec {
|
||||
};
|
||||
|
||||
zero-sugar = {
|
||||
name = "zero-sugar";
|
||||
kernelBaseConfig = "zero-sugar_defconfig";
|
||||
kernelArch = "arm";
|
||||
kernelDTB = true;
|
||||
kernelAutoModules = false;
|
||||
kernelPreferBuiltin = true;
|
||||
kernelTarget = "zImage";
|
||||
linux-kernel = {
|
||||
name = "zero-sugar";
|
||||
|
||||
baseConfig = "zero-sugar_defconfig";
|
||||
DTB = true;
|
||||
autoModules = false;
|
||||
preferBuiltin = true;
|
||||
target = "zImage";
|
||||
};
|
||||
gcc = {
|
||||
cpu = "cortex-a7";
|
||||
fpu = "neon-vfpv4";
|
||||
@ -229,7 +233,7 @@ rec {
|
||||
};
|
||||
};
|
||||
|
||||
scaleway-c1 = armv7l-hf-multiplatform // {
|
||||
scaleway-c1 = lib.recursiveUpdate armv7l-hf-multiplatform {
|
||||
gcc = {
|
||||
cpu = "cortex-a9";
|
||||
fpu = "vfpv3";
|
||||
@ -237,12 +241,11 @@ rec {
|
||||
};
|
||||
|
||||
utilite = {
|
||||
name = "utilite";
|
||||
kernelBaseConfig = "multi_v7_defconfig";
|
||||
kernelArch = "arm";
|
||||
kernelAutoModules = false;
|
||||
kernelExtraConfig =
|
||||
''
|
||||
linux-kernel = {
|
||||
name = "utilite";
|
||||
maseConfig = "multi_v7_defconfig";
|
||||
autoModules = false;
|
||||
extraConfig = ''
|
||||
# Ubi for the mtd
|
||||
MTD_UBI y
|
||||
UBIFS_FS y
|
||||
@ -252,35 +255,37 @@ rec {
|
||||
UBIFS_FS_ZLIB y
|
||||
UBIFS_FS_DEBUG n
|
||||
'';
|
||||
kernelMakeFlags = [ "LOADADDR=0x10800000" ];
|
||||
kernelTarget = "uImage";
|
||||
kernelDTB = true;
|
||||
makeFlags = [ "LOADADDR=0x10800000" ];
|
||||
target = "uImage";
|
||||
DTB = true;
|
||||
};
|
||||
gcc = {
|
||||
cpu = "cortex-a9";
|
||||
fpu = "neon";
|
||||
};
|
||||
};
|
||||
|
||||
guruplug = sheevaplug // {
|
||||
guruplug = lib.recursiveUpdate sheevaplug {
|
||||
# Define `CONFIG_MACH_GURUPLUG' (see
|
||||
# <http://kerneltrap.org/mailarchive/git-commits-head/2010/5/19/33618>)
|
||||
# and other GuruPlug-specific things. Requires the `guruplug-defconfig'
|
||||
# patch.
|
||||
|
||||
kernelBaseConfig = "guruplug_defconfig";
|
||||
linux-kernel.baseConfig = "guruplug_defconfig";
|
||||
};
|
||||
|
||||
beaglebone = armv7l-hf-multiplatform // {
|
||||
name = "beaglebone";
|
||||
kernelBaseConfig = "bb.org_defconfig";
|
||||
kernelAutoModules = false;
|
||||
kernelExtraConfig = ""; # TBD kernel config
|
||||
kernelTarget = "zImage";
|
||||
beaglebone = lib.recursiveUpdate armv7l-hf-multiplatform {
|
||||
linux-kernel = {
|
||||
name = "beaglebone";
|
||||
baseConfig = "bb.org_defconfig";
|
||||
autoModules = false;
|
||||
extraConfig = ""; # TBD kernel config
|
||||
target = "zImage";
|
||||
};
|
||||
};
|
||||
|
||||
# https://developer.android.com/ndk/guides/abis#v7a
|
||||
armv7a-android = {
|
||||
name = "armeabi-v7a";
|
||||
armv7a-android = {
|
||||
linux-kernel.name = "armeabi-v7a";
|
||||
gcc = {
|
||||
arch = "armv7-a";
|
||||
float-abi = "softfp";
|
||||
@ -289,29 +294,31 @@ rec {
|
||||
};
|
||||
|
||||
armv7l-hf-multiplatform = {
|
||||
name = "armv7l-hf-multiplatform";
|
||||
kernelBaseConfig = "multi_v7_defconfig";
|
||||
kernelArch = "arm";
|
||||
kernelDTB = true;
|
||||
kernelAutoModules = true;
|
||||
kernelPreferBuiltin = true;
|
||||
kernelTarget = "zImage";
|
||||
kernelExtraConfig = ''
|
||||
# Serial port for Raspberry Pi 3. Upstream forgot to add it to the ARMv7 defconfig.
|
||||
SERIAL_8250_BCM2835AUX y
|
||||
SERIAL_8250_EXTENDED y
|
||||
SERIAL_8250_SHARE_IRQ y
|
||||
linux-kernel = {
|
||||
name = "armv7l-hf-multiplatform";
|
||||
Major = "2.6"; # Using "2.6" enables 2.6 kernel syscalls in glibc.
|
||||
baseConfig = "multi_v7_defconfig";
|
||||
DTB = true;
|
||||
autoModules = true;
|
||||
PreferBuiltin = true;
|
||||
target = "zImage";
|
||||
extraConfig = ''
|
||||
# Serial port for Raspberry Pi 3. Upstream forgot to add it to the ARMv7 defconfig.
|
||||
SERIAL_8250_BCM2835AUX y
|
||||
SERIAL_8250_EXTENDED y
|
||||
SERIAL_8250_SHARE_IRQ y
|
||||
|
||||
# Fix broken sunxi-sid nvmem driver.
|
||||
TI_CPTS y
|
||||
# Fix broken sunxi-sid nvmem driver.
|
||||
TI_CPTS y
|
||||
|
||||
# Hangs ODROID-XU4
|
||||
ARM_BIG_LITTLE_CPUIDLE n
|
||||
# Hangs ODROID-XU4
|
||||
ARM_BIG_LITTLE_CPUIDLE n
|
||||
|
||||
# Disable OABI to have seccomp_filter (required for systemd)
|
||||
# https://github.com/raspberrypi/firmware/issues/651
|
||||
OABI_COMPAT n
|
||||
'';
|
||||
# Disable OABI to have seccomp_filter (required for systemd)
|
||||
# https://github.com/raspberrypi/firmware/issues/651
|
||||
OABI_COMPAT n
|
||||
'';
|
||||
};
|
||||
gcc = {
|
||||
# Some table about fpu flags:
|
||||
# http://community.arm.com/servlet/JiveServlet/showImage/38-1981-3827/blogentry-103749-004812900+1365712953_thumb.png
|
||||
@ -336,34 +343,35 @@ rec {
|
||||
};
|
||||
|
||||
aarch64-multiplatform = {
|
||||
name = "aarch64-multiplatform";
|
||||
kernelBaseConfig = "defconfig";
|
||||
kernelArch = "arm64";
|
||||
kernelDTB = true;
|
||||
kernelAutoModules = true;
|
||||
kernelPreferBuiltin = true;
|
||||
kernelExtraConfig = ''
|
||||
# Raspberry Pi 3 stuff. Not needed for kernels >= 4.10.
|
||||
ARCH_BCM2835 y
|
||||
BCM2835_MBOX y
|
||||
BCM2835_WDT y
|
||||
RASPBERRYPI_FIRMWARE y
|
||||
RASPBERRYPI_POWER y
|
||||
SERIAL_8250_BCM2835AUX y
|
||||
SERIAL_8250_EXTENDED y
|
||||
SERIAL_8250_SHARE_IRQ y
|
||||
linux-kernel = {
|
||||
name = "aarch64-multiplatform";
|
||||
baseConfig = "defconfig";
|
||||
DTB = true;
|
||||
autoModules = true;
|
||||
preferBuiltin = true;
|
||||
extraConfig = ''
|
||||
# Raspberry Pi 3 stuff. Not needed for s >= 4.10.
|
||||
ARCH_BCM2835 y
|
||||
BCM2835_MBOX y
|
||||
BCM2835_WDT y
|
||||
RASPBERRYPI_FIRMWARE y
|
||||
RASPBERRYPI_POWER y
|
||||
SERIAL_8250_BCM2835AUX y
|
||||
SERIAL_8250_EXTENDED y
|
||||
SERIAL_8250_SHARE_IRQ y
|
||||
|
||||
# Cavium ThunderX stuff.
|
||||
PCI_HOST_THUNDER_ECAM y
|
||||
# Cavium ThunderX stuff.
|
||||
PCI_HOST_THUNDER_ECAM y
|
||||
|
||||
# Nvidia Tegra stuff.
|
||||
PCI_TEGRA y
|
||||
# Nvidia Tegra stuff.
|
||||
PCI_TEGRA y
|
||||
|
||||
# The default (=y) forces us to have the XHCI firmware available in initrd,
|
||||
# which our initrd builder can't currently do easily.
|
||||
USB_XHCI_TEGRA m
|
||||
'';
|
||||
kernelTarget = "Image";
|
||||
# The default (=y) forces us to have the XHCI firmware available in initrd,
|
||||
# which our initrd builder can't currently do easily.
|
||||
USB_XHCI_TEGRA m
|
||||
'';
|
||||
target = "Image";
|
||||
};
|
||||
gcc = {
|
||||
arch = "armv8-a";
|
||||
};
|
||||
@ -374,8 +382,9 @@ rec {
|
||||
##
|
||||
|
||||
ben_nanonote = {
|
||||
name = "ben_nanonote";
|
||||
kernelArch = "mips";
|
||||
linux-kernel = {
|
||||
name = "ben_nanonote";
|
||||
};
|
||||
gcc = {
|
||||
arch = "mips32";
|
||||
float = "soft";
|
||||
@ -383,75 +392,76 @@ rec {
|
||||
};
|
||||
|
||||
fuloong2f_n32 = {
|
||||
name = "fuloong2f_n32";
|
||||
kernelBaseConfig = "lemote2f_defconfig";
|
||||
kernelArch = "mips";
|
||||
kernelAutoModules = false;
|
||||
kernelExtraConfig = ''
|
||||
MIGRATION n
|
||||
COMPACTION n
|
||||
linux-kernel = {
|
||||
name = "fuloong2f_n32";
|
||||
baseConfig = "lemote2f_defconfig";
|
||||
autoModules = false;
|
||||
extraConfig = ''
|
||||
MIGRATION n
|
||||
COMPACTION n
|
||||
|
||||
# nixos mounts some cgroup
|
||||
CGROUPS y
|
||||
# nixos mounts some cgroup
|
||||
CGROUPS y
|
||||
|
||||
BLK_DEV_RAM y
|
||||
BLK_DEV_INITRD y
|
||||
BLK_DEV_CRYPTOLOOP m
|
||||
BLK_DEV_DM m
|
||||
DM_CRYPT m
|
||||
MD y
|
||||
REISERFS_FS m
|
||||
EXT4_FS m
|
||||
USB_STORAGE_CYPRESS_ATACB m
|
||||
BLK_DEV_RAM y
|
||||
BLK_DEV_INITRD y
|
||||
BLK_DEV_CRYPTOLOOP m
|
||||
BLK_DEV_DM m
|
||||
DM_CRYPT m
|
||||
MD y
|
||||
REISERFS_FS m
|
||||
EXT4_FS m
|
||||
USB_STORAGE_CYPRESS_ATACB m
|
||||
|
||||
IP_PNP y
|
||||
IP_PNP_DHCP y
|
||||
IP_PNP_BOOTP y
|
||||
NFS_FS y
|
||||
ROOT_NFS y
|
||||
TUN m
|
||||
NFS_V4 y
|
||||
NFS_V4_1 y
|
||||
NFS_FSCACHE y
|
||||
NFSD m
|
||||
NFSD_V2_ACL y
|
||||
NFSD_V3 y
|
||||
NFSD_V3_ACL y
|
||||
NFSD_V4 y
|
||||
IP_PNP y
|
||||
IP_PNP_DHCP y
|
||||
IP_PNP_BOOTP y
|
||||
NFS_FS y
|
||||
ROOT_NFS y
|
||||
TUN m
|
||||
NFS_V4 y
|
||||
NFS_V4_1 y
|
||||
NFS_FSCACHE y
|
||||
NFSD m
|
||||
NFSD_V2_ACL y
|
||||
NFSD_V3 y
|
||||
NFSD_V3_ACL y
|
||||
NFSD_V4 y
|
||||
|
||||
# Fail to build
|
||||
DRM n
|
||||
SCSI_ADVANSYS n
|
||||
USB_ISP1362_HCD n
|
||||
SND_SOC n
|
||||
SND_ALI5451 n
|
||||
FB_SAVAGE n
|
||||
SCSI_NSP32 n
|
||||
ATA_SFF n
|
||||
SUNGEM n
|
||||
IRDA n
|
||||
ATM_HE n
|
||||
SCSI_ACARD n
|
||||
BLK_DEV_CMD640_ENHANCED n
|
||||
# Fail to build
|
||||
DRM n
|
||||
SCSI_ADVANSYS n
|
||||
USB_ISP1362_HCD n
|
||||
SND_SOC n
|
||||
SND_ALI5451 n
|
||||
FB_SAVAGE n
|
||||
SCSI_NSP32 n
|
||||
ATA_SFF n
|
||||
SUNGEM n
|
||||
IRDA n
|
||||
ATM_HE n
|
||||
SCSI_ACARD n
|
||||
BLK_DEV_CMD640_ENHANCED n
|
||||
|
||||
FUSE_FS m
|
||||
FUSE_FS m
|
||||
|
||||
# Needed for udev >= 150
|
||||
SYSFS_DEPRECATED_V2 n
|
||||
# Needed for udev >= 150
|
||||
SYSFS_DEPRECATED_V2 n
|
||||
|
||||
VGA_CONSOLE n
|
||||
VT_HW_CONSOLE_BINDING y
|
||||
SERIAL_8250_CONSOLE y
|
||||
FRAMEBUFFER_CONSOLE y
|
||||
EXT2_FS y
|
||||
EXT3_FS y
|
||||
REISERFS_FS y
|
||||
MAGIC_SYSRQ y
|
||||
VGA_CONSOLE n
|
||||
VT_HW_CONSOLE_BINDING y
|
||||
SERIAL_8250_CONSOLE y
|
||||
FRAMEBUFFER_CONSOLE y
|
||||
EXT2_FS y
|
||||
EXT3_FS y
|
||||
REISERFS_FS y
|
||||
MAGIC_SYSRQ y
|
||||
|
||||
# The kernel doesn't boot at all, with FTRACE
|
||||
FTRACE n
|
||||
'';
|
||||
kernelTarget = "vmlinux";
|
||||
# The kernel doesn't boot at all, with FTRACE
|
||||
FTRACE n
|
||||
'';
|
||||
target = "vmlinux";
|
||||
};
|
||||
gcc = {
|
||||
arch = "loongson2f";
|
||||
float = "hard";
|
||||
@ -464,34 +474,36 @@ rec {
|
||||
##
|
||||
|
||||
riscv-multiplatform = {
|
||||
name = "riscv-multiplatform";
|
||||
kernelArch = "riscv";
|
||||
kernelTarget = "vmlinux";
|
||||
kernelAutoModules = true;
|
||||
kernelBaseConfig = "defconfig";
|
||||
kernelExtraConfig = ''
|
||||
FTRACE n
|
||||
SERIAL_OF_PLATFORM y
|
||||
'';
|
||||
linux-kernel = {
|
||||
name = "riscv-multiplatform";
|
||||
target = "vmlinux";
|
||||
autoModules = true;
|
||||
baseConfig = "defconfig";
|
||||
extraConfig = ''
|
||||
FTRACE n
|
||||
SERIAL_OF_PLATFORM y
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
select = platform:
|
||||
# x86
|
||||
/**/ if platform.isx86_32 then pc32
|
||||
else if platform.isx86_64 then pc64
|
||||
/**/ if platform.isx86 then pc
|
||||
|
||||
# ARM
|
||||
else if platform.isAarch32 then let
|
||||
version = platform.parsed.cpu.version or null;
|
||||
in if version == null then pcBase
|
||||
in if version == null then pc
|
||||
else if lib.versionOlder version "6" then sheevaplug
|
||||
else if lib.versionOlder version "7" then raspberrypi
|
||||
else armv7l-hf-multiplatform
|
||||
else if platform.isAarch64 then aarch64-multiplatform
|
||||
|
||||
else if platform.isRiscV then riscv-multiplatform
|
||||
|
||||
else if platform.parsed.cpu == lib.systems.parse.cpuTypes.mipsel then fuloong2f_n32
|
||||
|
||||
else if platform.parsed.cpu == lib.systems.parse.cpuTypes.powerpc64le then powernv
|
||||
|
||||
else pcBase;
|
||||
else pc;
|
||||
}
|
||||
|
@ -1084,6 +1084,12 @@
|
||||
githubId = 75972;
|
||||
name = "Ben Booth";
|
||||
};
|
||||
berberman = {
|
||||
email = "berberman@yandex.com";
|
||||
github = "berberman";
|
||||
githubId = 26041945;
|
||||
name = "Potato Hatsue";
|
||||
};
|
||||
berce = {
|
||||
email = "bert.moens@gmail.com";
|
||||
github = "berce";
|
||||
@ -2583,6 +2589,12 @@
|
||||
githubId = 119483;
|
||||
name = "Matthew Brown";
|
||||
};
|
||||
eduardosm = {
|
||||
email = "esm@eduardosm.net";
|
||||
github = "eduardosm";
|
||||
githubId = 761151;
|
||||
name = "Eduardo Sánchez Muñoz";
|
||||
};
|
||||
eduarrrd = {
|
||||
email = "e.bachmakov@gmail.com";
|
||||
github = "eduarrrd";
|
||||
@ -3693,12 +3705,24 @@
|
||||
githubId = 896431;
|
||||
name = "Chris Hodapp";
|
||||
};
|
||||
holymonson = {
|
||||
email = "holymonson@gmail.com";
|
||||
github = "holymonson";
|
||||
githubId = 902012;
|
||||
name = "Monson Shao";
|
||||
};
|
||||
hongchangwu = {
|
||||
email = "wuhc85@gmail.com";
|
||||
github = "hongchangwu";
|
||||
githubId = 362833;
|
||||
name = "Hongchang Wu";
|
||||
};
|
||||
hoverbear = {
|
||||
email = "operator+nix@hoverbear.org";
|
||||
github = "hoverbear";
|
||||
githubId = 130903;
|
||||
name = "Ana Hobden";
|
||||
};
|
||||
hrdinka = {
|
||||
email = "c.nix@hrdinka.at";
|
||||
github = "hrdinka";
|
||||
@ -3887,6 +3911,12 @@
|
||||
githubId = 4458;
|
||||
name = "Ivan Kozik";
|
||||
};
|
||||
ivan-babrou = {
|
||||
email = "nixpkgs@ivan.computer";
|
||||
name = "Ivan Babrou";
|
||||
github = "bobrik";
|
||||
githubId = 89186;
|
||||
};
|
||||
ivan-timokhin = {
|
||||
email = "nixpkgs@ivan.timokhin.name";
|
||||
name = "Ivan Timokhin";
|
||||
@ -5128,12 +5158,24 @@
|
||||
githubId = 42153076;
|
||||
name = "Alexey Nikashkin";
|
||||
};
|
||||
lesuisse = {
|
||||
email = "thomas@gerbet.me";
|
||||
github = "LeSuisse";
|
||||
githubId = 737767;
|
||||
name = "Thomas Gerbet";
|
||||
};
|
||||
lethalman = {
|
||||
email = "lucabru@src.gnome.org";
|
||||
github = "lethalman";
|
||||
githubId = 480920;
|
||||
name = "Luca Bruno";
|
||||
};
|
||||
leungbk = {
|
||||
email = "leungbk@mailfence.com";
|
||||
github = "leungbk";
|
||||
githubId = 29217594;
|
||||
name = "Brian Leung";
|
||||
};
|
||||
lewo = {
|
||||
email = "lewo@abesis.fr";
|
||||
github = "nlewo";
|
||||
@ -6687,6 +6729,12 @@
|
||||
githubId = 7677321;
|
||||
name = "Paul Trehiou";
|
||||
};
|
||||
nyanotech = {
|
||||
name = "nyanotech";
|
||||
email = "nyanotechnology@gmail.com";
|
||||
github = "nyanotech";
|
||||
githubId = 33802077;
|
||||
};
|
||||
nyarly = {
|
||||
email = "nyarly@gmail.com";
|
||||
github = "nyarly";
|
||||
@ -7181,6 +7229,12 @@
|
||||
githubId = 13000278;
|
||||
name = "Maksim Bronsky";
|
||||
};
|
||||
PlushBeaver = {
|
||||
name = "Dmitry Kozlyuk";
|
||||
email = "dmitry.kozliuk+nixpkgs@gmail.com";
|
||||
github = "PlushBeaver";
|
||||
githubId = 8988269;
|
||||
};
|
||||
pmahoney = {
|
||||
email = "pat@polycrystal.org";
|
||||
github = "pmahoney";
|
||||
@ -8703,6 +8757,12 @@
|
||||
githubId = 1315818;
|
||||
name = "Felix Bühler";
|
||||
};
|
||||
stupremee = {
|
||||
email = "jutus.k@protonmail.com";
|
||||
github = "Stupremee";
|
||||
githubId = 39732259;
|
||||
name = "Justus K";
|
||||
};
|
||||
suhr = {
|
||||
email = "suhr@i2pmail.org";
|
||||
github = "suhr";
|
||||
@ -8745,6 +8805,12 @@
|
||||
githubId = 1040871;
|
||||
name = "Mathis Antony";
|
||||
};
|
||||
svend = {
|
||||
email = "svend@svends.net";
|
||||
github = "svend";
|
||||
githubId = 306190;
|
||||
name = "Svend Sorensen";
|
||||
};
|
||||
svrana = {
|
||||
email = "shaw@vranix.com";
|
||||
github = "svrana";
|
||||
@ -10448,4 +10514,10 @@
|
||||
github = "zupo";
|
||||
githubId = 311580;
|
||||
};
|
||||
jbcrail = {
|
||||
name = "Joseph Crail";
|
||||
email = "jbcrail@gmail.com";
|
||||
github = "jbcrail";
|
||||
githubId = 6038;
|
||||
};
|
||||
}
|
||||
|
@ -6,7 +6,7 @@ basexx,,,,,
|
||||
binaryheap,,,,,vcunat
|
||||
bit32,,,,lua5_1,lblasc
|
||||
busted,,,,,
|
||||
cassowary,,,,,marsam
|
||||
cassowary,,,,,marsam alerque
|
||||
cjson,lua-cjson,,,,
|
||||
compat53,,,,,vcunat
|
||||
cosmo,,,,,marsam
|
||||
|
|
@ -1,4 +1,4 @@
|
||||
{ stdenv, makeWrapper, perl, perlPackages }:
|
||||
{ stdenv, lib, makeWrapper, perl, perlPackages }:
|
||||
|
||||
stdenv.mkDerivation {
|
||||
name = "nixpkgs-lint-1";
|
||||
@ -15,9 +15,9 @@ stdenv.mkDerivation {
|
||||
wrapProgram $out/bin/nixpkgs-lint --set PERL5LIB $PERL5LIB
|
||||
'';
|
||||
|
||||
meta = {
|
||||
maintainers = [ stdenv.lib.maintainers.eelco ];
|
||||
meta = with lib; {
|
||||
maintainers = [ maintainers.eelco ];
|
||||
description = "A utility for Nixpkgs contributors to check Nixpkgs for common errors";
|
||||
platforms = stdenv.lib.platforms.unix;
|
||||
platforms = platforms.unix;
|
||||
};
|
||||
}
|
||||
|
@ -66,7 +66,7 @@ nixpkgs$ ${0} ${GENERATED_NIXFILE}
|
||||
|
||||
These packages are manually refined in lua-overrides.nix
|
||||
*/
|
||||
{ self, stdenv, fetchurl, fetchgit, pkgs, ... } @ args:
|
||||
{ self, stdenv, lib, fetchurl, fetchgit, pkgs, ... } @ args:
|
||||
self: super:
|
||||
with self;
|
||||
{
|
||||
|
@ -186,7 +186,7 @@
|
||||
The driver has many options (see <xref linkend="ch-options"/>). For
|
||||
instance, the following disables tap-to-click behavior:
|
||||
<programlisting>
|
||||
<xref linkend="opt-services.xserver.libinput.tapping"/> = false;
|
||||
<xref linkend="opt-services.xserver.libinput.touchpad.tapping"/> = false;
|
||||
</programlisting>
|
||||
Note: the use of <literal>services.xserver.synaptics</literal> is deprecated
|
||||
since NixOS 17.09.
|
||||
|
@ -1,7 +1,7 @@
|
||||
<chapter xmlns="http://docbook.org/ns/docbook"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xml:id="chap-contributing">
|
||||
<title>Contributing to this documentation</title>
|
||||
<title>Contributing to this manual</title>
|
||||
<para>
|
||||
The DocBook sources of NixOS' manual are in the <filename
|
||||
xlink:href="https://github.com/NixOS/nixpkgs/tree/master/nixos/doc/manual">
|
||||
|
@ -21,7 +21,11 @@
|
||||
xlink:href="https://discourse.nixos.org">Discourse</literal> or
|
||||
on the <link
|
||||
xlink:href="irc://irc.freenode.net/#nixos">
|
||||
<literal>#nixos</literal> channel on Freenode</link>. Bugs should be
|
||||
<literal>#nixos</literal> channel on Freenode</link>, or
|
||||
consider
|
||||
<link
|
||||
xlink:href="#chap-contributing">
|
||||
contributing to this manual</link>. Bugs should be
|
||||
reported in
|
||||
<link
|
||||
xlink:href="https://github.com/NixOS/nixpkgs/issues">NixOS’
|
||||
|
@ -418,6 +418,26 @@ http://some.json-exporter.host:7979/probe?target=https://example.com/some/json/e
|
||||
SDK licenses if your project requires it. See the androidenv documentation for more details.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
The attribute <varname>mpi</varname> is now consistently used to
|
||||
provide a default, system-wide MPI implementation.
|
||||
The default implementation is openmpi, which has been used before by
|
||||
all derivations affects by this change.
|
||||
Note that all packages that have used <varname>mpi ? null</varname> in the input
|
||||
for optional MPI builds, have been changed to the boolean input paramater
|
||||
<varname>useMpi</varname> to enable building with MPI.
|
||||
|
||||
Building all packages with <varname>mpich</varname> instead
|
||||
of the default <varname>openmpi</varname> can now be achived like this:
|
||||
<programlisting>
|
||||
self: super:
|
||||
{
|
||||
mpi = super.mpich;
|
||||
}
|
||||
</programlisting>
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
The Searx module has been updated with the ability to configure the
|
||||
@ -430,6 +450,17 @@ http://some.json-exporter.host:7979/probe?target=https://example.com/some/json/e
|
||||
dynamically allocated uid.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
The libinput module has been updated with the ability to configure mouse and touchpad settings separately.
|
||||
The options in <literal>services.xserver.libinput</literal> have been renamed to <literal>services.xserver.libinput.touchpad</literal>,
|
||||
while there is a new <literal>services.xserver.libinput.mouse</literal> for mouse related configuration.
|
||||
</para>
|
||||
<para>
|
||||
Since touchpad options no longer apply to all devices, you may want to replicate your touchpad configuration in
|
||||
mouse section.
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</section>
|
||||
|
||||
@ -592,6 +623,22 @@ http://some.json-exporter.host:7979/probe?target=https://example.com/some/json/e
|
||||
<literal>/etc/netgroup</literal> defines network-wide groups and may affect to setups using NIS.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
Platforms, like <varname>stdenv.hostPlatform</varname>, no longer have a <varname>platform</varname> attribute.
|
||||
It has been (mostly) flattoned away:
|
||||
</para>
|
||||
<itemizedlist>
|
||||
<listitem><para><varname>platform.gcc</varname> is now <varname>gcc</varname></para></listitem>
|
||||
<listitem><para><literal>platform.kernel*</literal> is now <literal>linux-kernel.*</literal></para></listitem>
|
||||
</itemizedlist>
|
||||
<para>
|
||||
Additionally, <varname>platform.kernelArch</varname> moved to the top level as <varname>linuxArch</varname> to match the other <literal>*Arch</literal> variables.
|
||||
</para>
|
||||
<para>
|
||||
The <varname>platform</varname> grouping of these things never meant anything, and was just a historial/implementation artifact that was overdue removal.
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</section>
|
||||
</section>
|
||||
|
@ -83,7 +83,7 @@ in
|
||||
packages = mkOption {
|
||||
type = types.listOf types.package;
|
||||
default = with pkgs.kbdKeymaps; [ dvp neo ];
|
||||
defaultText = ''with pkgs.kbdKeymaps; [ dvp neo ]'';
|
||||
defaultText = "with pkgs.kbdKeymaps; [ dvp neo ]";
|
||||
description = ''
|
||||
List of additional packages that provide console fonts, keymaps and
|
||||
other resources for virtual consoles use.
|
||||
|
@ -436,7 +436,7 @@ in
|
||||
useEmbeddedBitmaps = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = ''Use embedded bitmaps in fonts like Calibri.'';
|
||||
description = "Use embedded bitmaps in fonts like Calibri.";
|
||||
};
|
||||
|
||||
};
|
||||
|
@ -1,11 +1,9 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
{
|
||||
options = {
|
||||
gnu = mkOption {
|
||||
type = types.bool;
|
||||
gnu = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
When enabled, GNU software is chosen by default whenever a there is
|
||||
@ -15,7 +13,7 @@ with lib;
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf config.gnu {
|
||||
config = lib.mkIf config.gnu {
|
||||
|
||||
environment.systemPackages = with pkgs;
|
||||
# TODO: Adjust `requiredPackages' from `system-path.nix'.
|
||||
@ -26,7 +24,7 @@ with lib;
|
||||
nano zile
|
||||
texinfo # for the stand-alone Info reader
|
||||
]
|
||||
++ stdenv.lib.optional (!stdenv.isAarch32) grub2;
|
||||
++ lib.optional (!stdenv.isAarch32) grub2;
|
||||
|
||||
|
||||
# GNU GRUB, where available.
|
||||
|
@ -84,7 +84,7 @@ with lib;
|
||||
environment.etc."locale.conf".source = pkgs.writeText "locale.conf"
|
||||
''
|
||||
LANG=${config.i18n.defaultLocale}
|
||||
${concatStringsSep "\n" (mapAttrsToList (n: v: ''${n}=${v}'') config.i18n.extraLocaleSettings)}
|
||||
${concatStringsSep "\n" (mapAttrsToList (n: v: "${n}=${v}") config.i18n.extraLocaleSettings)}
|
||||
'';
|
||||
|
||||
};
|
||||
|
@ -58,6 +58,7 @@ in
|
||||
"2.nixos.pool.ntp.org"
|
||||
"3.nixos.pool.ntp.org"
|
||||
];
|
||||
type = types.listOf types.str;
|
||||
description = ''
|
||||
The set of NTP servers from which to synchronise.
|
||||
'';
|
||||
@ -194,8 +195,7 @@ in
|
||||
'';
|
||||
|
||||
# /etc/netgroup: Network-wide groups.
|
||||
netgroup.text = mkDefault ''
|
||||
'';
|
||||
netgroup.text = mkDefault "";
|
||||
|
||||
# /etc/host.conf: resolver configuration file
|
||||
"host.conf".text = ''
|
||||
|
@ -183,7 +183,7 @@ in {
|
||||
config = mkOption {
|
||||
type = types.attrsOf types.unspecified;
|
||||
default = {};
|
||||
description = ''Config of the pulse daemon. See <literal>man pulse-daemon.conf</literal>.'';
|
||||
description = "Config of the pulse daemon. See <literal>man pulse-daemon.conf</literal>.";
|
||||
example = literalExample ''{ realtime-scheduling = "yes"; }'';
|
||||
};
|
||||
};
|
||||
|
@ -364,7 +364,7 @@ let
|
||||
count = mkOption {
|
||||
type = types.int;
|
||||
default = 1;
|
||||
description = ''Count of subordinate user ids'';
|
||||
description = "Count of subordinate user ids";
|
||||
};
|
||||
};
|
||||
};
|
||||
@ -381,7 +381,7 @@ let
|
||||
count = mkOption {
|
||||
type = types.int;
|
||||
default = 1;
|
||||
description = ''Count of subordinate group ids'';
|
||||
description = "Count of subordinate group ids";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -62,7 +62,7 @@ with lib;
|
||||
services.dbus.packages = packages;
|
||||
systemd.packages = packages;
|
||||
|
||||
environment.variables = {
|
||||
environment.sessionVariables = {
|
||||
GTK_USE_PORTAL = mkIf cfg.gtkUsePortal "1";
|
||||
XDG_DESKTOP_PORTAL_DIR = "${joinedPortals}/share/xdg-desktop-portal/portals";
|
||||
};
|
||||
|
@ -68,11 +68,11 @@ let
|
||||
patchShebangs scripts/*
|
||||
substituteInPlace scripts/Makefile.lib \
|
||||
--replace 'DTC_FLAGS += $(DTC_FLAGS_$(basetarget))' 'DTC_FLAGS += $(DTC_FLAGS_$(basetarget)) -@'
|
||||
make ${pkgs.stdenv.hostPlatform.platform.kernelBaseConfig} ARCH="${pkgs.stdenv.hostPlatform.platform.kernelArch}"
|
||||
make dtbs ARCH="${pkgs.stdenv.hostPlatform.platform.kernelArch}"
|
||||
make ${pkgs.stdenv.hostPlatform.linux-kernel.baseConfig} ARCH="${pkgs.stdenv.hostPlatform.linuxArch}"
|
||||
make dtbs ARCH="${pkgs.stdenv.hostPlatform.linuxArch}"
|
||||
'';
|
||||
installPhase = ''
|
||||
make dtbs_install INSTALL_DTBS_PATH=$out/dtbs ARCH="${pkgs.stdenv.hostPlatform.platform.kernelArch}"
|
||||
make dtbs_install INSTALL_DTBS_PATH=$out/dtbs ARCH="${pkgs.stdenv.hostPlatform.linuxArch}"
|
||||
'';
|
||||
};
|
||||
|
||||
@ -115,7 +115,7 @@ in
|
||||
options = {
|
||||
hardware.deviceTree = {
|
||||
enable = mkOption {
|
||||
default = pkgs.stdenv.hostPlatform.platform.kernelDTB or false;
|
||||
default = pkgs.stdenv.hostPlatform.linux-kernel.DTB or false;
|
||||
type = types.bool;
|
||||
description = ''
|
||||
Build device tree files. These are used to describe the
|
||||
|
@ -19,23 +19,9 @@ in
|
||||
nitrokey-app package, depending on your device and needs.
|
||||
'';
|
||||
};
|
||||
|
||||
group = mkOption {
|
||||
type = types.str;
|
||||
default = "nitrokey";
|
||||
example = "wheel";
|
||||
description = ''
|
||||
Grant access to Nitrokey devices to users in this group.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
services.udev.packages = [
|
||||
(pkgs.nitrokey-udev-rules.override (attrs:
|
||||
{ inherit (cfg) group; }
|
||||
))
|
||||
];
|
||||
users.groups.${cfg.group} = {};
|
||||
services.udev.packages = [ pkgs.nitrokey-udev-rules ];
|
||||
};
|
||||
}
|
||||
|
@ -40,7 +40,7 @@ in
|
||||
default = "wheel";
|
||||
example = "video";
|
||||
type = types.str;
|
||||
description = ''Group for bumblebee socket'';
|
||||
description = "Group for bumblebee socket";
|
||||
};
|
||||
|
||||
connectDisplay = mkOption {
|
||||
|
@ -42,6 +42,7 @@ in
|
||||
<itemizedlist>
|
||||
<listitem><para>ibus: The intelligent input bus, extra input engines can be added using <literal>i18n.inputMethod.ibus.engines</literal>.</para></listitem>
|
||||
<listitem><para>fcitx: A customizable lightweight input method, extra input engines can be added using <literal>i18n.inputMethod.fcitx.engines</literal>.</para></listitem>
|
||||
<listitem><para>fcitx5: The next generation of fcitx, addons (including engines, dictionaries, skins) can be added using <literal>i18n.inputMethod.fcitx5.addons</literal>.</para></listitem>
|
||||
<listitem><para>nabi: A Korean input method based on XIM. Nabi doesn't support Qt 5.</para></listitem>
|
||||
<listitem><para>uim: The universal input method, is a library with a XIM bridge. uim mainly support Chinese, Japanese and Korean.</para></listitem>
|
||||
<listitem><para>hime: An extremely easy-to-use input method framework.</para></listitem>
|
||||
|
@ -88,7 +88,7 @@ with lib;
|
||||
|
||||
system.build.netbootIpxeScript = pkgs.writeTextDir "netboot.ipxe" ''
|
||||
#!ipxe
|
||||
kernel ${pkgs.stdenv.hostPlatform.platform.kernelTarget} init=${config.system.build.toplevel}/init initrd=initrd ${toString config.boot.kernelParams}
|
||||
kernel ${pkgs.stdenv.hostPlatform.linux-kernel.target} init=${config.system.build.toplevel}/init initrd=initrd ${toString config.boot.kernelParams}
|
||||
initrd initrd
|
||||
boot
|
||||
'';
|
||||
|
@ -4,8 +4,8 @@ stdenv.mkDerivation rec {
|
||||
src = ./.;
|
||||
nativeBuildInputs = [ cmake pkg-config ];
|
||||
buildInputs = [ boost nix ];
|
||||
meta = {
|
||||
license = stdenv.lib.licenses.lgpl2Plus;
|
||||
maintainers = with lib.maintainers; [ chkno ];
|
||||
meta = with lib; {
|
||||
license = licenses.lgpl2Plus;
|
||||
maintainers = with maintainers; [ chkno ];
|
||||
};
|
||||
}
|
||||
|
@ -26,6 +26,7 @@ in
|
||||
};
|
||||
reservedMemory = mkOption {
|
||||
default = "128M";
|
||||
type = types.str;
|
||||
description = ''
|
||||
The amount of memory reserved for the crashdump kernel.
|
||||
If you choose a too high value, dmesg will mention
|
||||
|
@ -215,7 +215,7 @@ in {
|
||||
''
|
||||
else ''
|
||||
exec ${cfg.locate}/bin/updatedb \
|
||||
${optionalString (cfg.localuser != null && ! isMLocate) ''--localuser=${cfg.localuser}''} \
|
||||
${optionalString (cfg.localuser != null && ! isMLocate) "--localuser=${cfg.localuser}"} \
|
||||
--output=${toString cfg.output} ${concatStringsSep " " cfg.extraFlags}
|
||||
'';
|
||||
environment = optionalAttrs (!isMLocate) {
|
||||
|
@ -73,7 +73,7 @@ in
|
||||
}
|
||||
'';
|
||||
type = pkgsType;
|
||||
example = literalExample ''import <nixpkgs> {}'';
|
||||
example = literalExample "import <nixpkgs> {}";
|
||||
description = ''
|
||||
If set, the pkgs argument to all NixOS modules is the value of
|
||||
this option, extended with <code>nixpkgs.overlays</code>, if
|
||||
|
@ -169,6 +169,7 @@
|
||||
./programs/sway.nix
|
||||
./programs/system-config-printer.nix
|
||||
./programs/thefuck.nix
|
||||
./programs/tilp2.nix
|
||||
./programs/tmux.nix
|
||||
./programs/traceroute.nix
|
||||
./programs/tsm-client.nix
|
||||
|
@ -27,14 +27,14 @@ in
|
||||
# the options below are the same as in "captive-browser.toml"
|
||||
browser = mkOption {
|
||||
type = types.str;
|
||||
default = concatStringsSep " " [ ''${pkgs.chromium}/bin/chromium''
|
||||
''--user-data-dir=''${XDG_DATA_HOME:-$HOME/.local/share}/chromium-captive''
|
||||
default = concatStringsSep " " [ "${pkgs.chromium}/bin/chromium"
|
||||
"--user-data-dir=\${XDG_DATA_HOME:-$HOME/.local/share}/chromium-captive"
|
||||
''--proxy-server="socks5://$PROXY"''
|
||||
''--host-resolver-rules="MAP * ~NOTFOUND , EXCLUDE localhost"''
|
||||
''--no-first-run''
|
||||
''--new-window''
|
||||
''--incognito''
|
||||
''http://cache.nixos.org/''
|
||||
"--no-first-run"
|
||||
"--new-window"
|
||||
"--incognito"
|
||||
"http://cache.nixos.org/"
|
||||
];
|
||||
description = ''
|
||||
The shell (/bin/sh) command executed once the proxy starts.
|
||||
@ -62,7 +62,7 @@ in
|
||||
socks5-addr = mkOption {
|
||||
type = types.str;
|
||||
default = "localhost:1666";
|
||||
description = ''the listen address for the SOCKS5 proxy server'';
|
||||
description = "the listen address for the SOCKS5 proxy server";
|
||||
};
|
||||
|
||||
bindInterface = mkOption {
|
||||
|
@ -80,6 +80,8 @@ in
|
||||
# Retry the command if we just installed it.
|
||||
if [ $? = 126 ]; then
|
||||
"$@"
|
||||
else
|
||||
return 127
|
||||
fi
|
||||
else
|
||||
# Indicate than there was an error so ZSH falls back to its default handler
|
||||
|
@ -13,6 +13,27 @@ let
|
||||
(filterAttrs (k: v: v != null) cfg.shellAliases)
|
||||
);
|
||||
|
||||
envShellInit = pkgs.writeText "shellInit" cfge.shellInit;
|
||||
|
||||
envLoginShellInit = pkgs.writeText "loginShellInit" cfge.loginShellInit;
|
||||
|
||||
envInteractiveShellInit = pkgs.writeText "interactiveShellInit" cfge.interactiveShellInit;
|
||||
|
||||
sourceEnv = file:
|
||||
if cfg.useBabelfish then
|
||||
"source /etc/fish/${file}.fish"
|
||||
else
|
||||
''
|
||||
set fish_function_path ${pkgs.fishPlugins.foreign-env}/share/fish/vendor_functions.d $fish_function_path
|
||||
fenv source /etc/fish/foreign-env/${file} > /dev/null
|
||||
set -e fish_function_path[1]
|
||||
'';
|
||||
|
||||
babelfishTranslate = path: name:
|
||||
pkgs.runCommand "${name}.fish" {
|
||||
nativeBuildInputs = [ pkgs.babelfish ];
|
||||
} "${pkgs.babelfish}/bin/babelfish < ${path} > $out;";
|
||||
|
||||
in
|
||||
|
||||
{
|
||||
@ -29,6 +50,15 @@ in
|
||||
type = types.bool;
|
||||
};
|
||||
|
||||
useBabelfish = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
If enabled, the configured environment will be translated to native fish using <link xlink:href="https://github.com/bouk/babelfish">babelfish</link>.
|
||||
Otherwise, <link xlink:href="https://github.com/oh-my-fish/plugin-foreign-env">foreign-env</link> will be used.
|
||||
'';
|
||||
};
|
||||
|
||||
vendor.config.enable = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
@ -105,72 +135,152 @@ in
|
||||
# Required for man completions
|
||||
documentation.man.generateCaches = lib.mkDefault true;
|
||||
|
||||
environment.etc."fish/foreign-env/shellInit".text = cfge.shellInit;
|
||||
environment.etc."fish/foreign-env/loginShellInit".text = cfge.loginShellInit;
|
||||
environment.etc."fish/foreign-env/interactiveShellInit".text = cfge.interactiveShellInit;
|
||||
environment = mkMerge [
|
||||
(mkIf cfg.useBabelfish
|
||||
{
|
||||
etc."fish/setEnvironment.fish".source = babelfishTranslate config.system.build.setEnvironment "setEnvironment";
|
||||
etc."fish/shellInit.fish".source = babelfishTranslate envShellInit "shellInit";
|
||||
etc."fish/loginShellInit.fish".source = babelfishTranslate envLoginShellInit "loginShellInit";
|
||||
etc."fish/interactiveShellInit.fish".source = babelfishTranslate envInteractiveShellInit "interactiveShellInit";
|
||||
})
|
||||
|
||||
environment.etc."fish/nixos-env-preinit.fish".text = ''
|
||||
# This happens before $__fish_datadir/config.fish sets fish_function_path, so it is currently
|
||||
# unset. We set it and then completely erase it, leaving its configuration to $__fish_datadir/config.fish
|
||||
set fish_function_path ${pkgs.fishPlugins.foreign-env}/share/fish/vendor_functions.d $__fish_datadir/functions
|
||||
(mkIf (!cfg.useBabelfish)
|
||||
{
|
||||
etc."fish/foreign-env/shellInit".source = envShellInit;
|
||||
etc."fish/foreign-env/loginShellInit".source = envLoginShellInit;
|
||||
etc."fish/foreign-env/interactiveShellInit".source = envInteractiveShellInit;
|
||||
})
|
||||
|
||||
# source the NixOS environment config
|
||||
if [ -z "$__NIXOS_SET_ENVIRONMENT_DONE" ]
|
||||
fenv source ${config.system.build.setEnvironment}
|
||||
end
|
||||
{
|
||||
etc."fish/nixos-env-preinit.fish".text =
|
||||
if cfg.useBabelfish
|
||||
then ''
|
||||
# source the NixOS environment config
|
||||
if [ -z "$__NIXOS_SET_ENVIRONMENT_DONE" ]
|
||||
source /etc/fish/setEnvironment.fish
|
||||
end
|
||||
''
|
||||
else ''
|
||||
# This happens before $__fish_datadir/config.fish sets fish_function_path, so it is currently
|
||||
# unset. We set it and then completely erase it, leaving its configuration to $__fish_datadir/config.fish
|
||||
set fish_function_path ${pkgs.fishPlugins.foreign-env}/share/fish/vendor_functions.d $__fish_datadir/functions
|
||||
|
||||
# clear fish_function_path so that it will be correctly set when we return to $__fish_datadir/config.fish
|
||||
set -e fish_function_path
|
||||
'';
|
||||
# source the NixOS environment config
|
||||
if [ -z "$__NIXOS_SET_ENVIRONMENT_DONE" ]
|
||||
fenv source ${config.system.build.setEnvironment}
|
||||
end
|
||||
|
||||
environment.etc."fish/config.fish".text = ''
|
||||
# /etc/fish/config.fish: DO NOT EDIT -- this file has been generated automatically.
|
||||
# clear fish_function_path so that it will be correctly set when we return to $__fish_datadir/config.fish
|
||||
set -e fish_function_path
|
||||
'';
|
||||
}
|
||||
|
||||
# if we haven't sourced the general config, do it
|
||||
if not set -q __fish_nixos_general_config_sourced
|
||||
set --prepend fish_function_path ${pkgs.fishPlugins.foreign-env}/share/fish/vendor_functions.d
|
||||
fenv source /etc/fish/foreign-env/shellInit > /dev/null
|
||||
set -e fish_function_path[1]
|
||||
{
|
||||
etc."fish/config.fish".text = ''
|
||||
# /etc/fish/config.fish: DO NOT EDIT -- this file has been generated automatically.
|
||||
|
||||
${cfg.shellInit}
|
||||
# if we haven't sourced the general config, do it
|
||||
if not set -q __fish_nixos_general_config_sourced
|
||||
${sourceEnv "shellInit"}
|
||||
|
||||
# and leave a note so we don't source this config section again from
|
||||
# this very shell (children will source the general config anew)
|
||||
set -g __fish_nixos_general_config_sourced 1
|
||||
end
|
||||
${cfg.shellInit}
|
||||
|
||||
# if we haven't sourced the login config, do it
|
||||
status --is-login; and not set -q __fish_nixos_login_config_sourced
|
||||
and begin
|
||||
set --prepend fish_function_path ${pkgs.fishPlugins.foreign-env}/share/fish/vendor_functions.d
|
||||
fenv source /etc/fish/foreign-env/loginShellInit > /dev/null
|
||||
set -e fish_function_path[1]
|
||||
# and leave a note so we don't source this config section again from
|
||||
# this very shell (children will source the general config anew)
|
||||
set -g __fish_nixos_general_config_sourced 1
|
||||
end
|
||||
|
||||
${cfg.loginShellInit}
|
||||
# if we haven't sourced the login config, do it
|
||||
status --is-login; and not set -q __fish_nixos_login_config_sourced
|
||||
and begin
|
||||
${sourceEnv "loginShellInit"}
|
||||
|
||||
# and leave a note so we don't source this config section again from
|
||||
# this very shell (children will source the general config anew)
|
||||
set -g __fish_nixos_login_config_sourced 1
|
||||
end
|
||||
${cfg.loginShellInit}
|
||||
|
||||
# if we haven't sourced the interactive config, do it
|
||||
status --is-interactive; and not set -q __fish_nixos_interactive_config_sourced
|
||||
and begin
|
||||
${fishAliases}
|
||||
# and leave a note so we don't source this config section again from
|
||||
# this very shell (children will source the general config anew)
|
||||
set -g __fish_nixos_login_config_sourced 1
|
||||
end
|
||||
|
||||
set --prepend fish_function_path ${pkgs.fishPlugins.foreign-env}/share/fish/vendor_functions.d
|
||||
fenv source /etc/fish/foreign-env/interactiveShellInit > /dev/null
|
||||
set -e fish_function_path[1]
|
||||
# if we haven't sourced the interactive config, do it
|
||||
status --is-interactive; and not set -q __fish_nixos_interactive_config_sourced
|
||||
and begin
|
||||
${fishAliases}
|
||||
|
||||
${cfg.promptInit}
|
||||
${cfg.interactiveShellInit}
|
||||
${sourceEnv "interactiveShellInit"}
|
||||
|
||||
# and leave a note so we don't source this config section again from
|
||||
# this very shell (children will source the general config anew,
|
||||
# allowing configuration changes in, e.g, aliases, to propagate)
|
||||
set -g __fish_nixos_interactive_config_sourced 1
|
||||
end
|
||||
'';
|
||||
${cfg.promptInit}
|
||||
${cfg.interactiveShellInit}
|
||||
|
||||
# and leave a note so we don't source this config section again from
|
||||
# this very shell (children will source the general config anew,
|
||||
# allowing configuration changes in, e.g, aliases, to propagate)
|
||||
set -g __fish_nixos_interactive_config_sourced 1
|
||||
end
|
||||
'';
|
||||
}
|
||||
|
||||
{
|
||||
etc."fish/generated_completions".source =
|
||||
let
|
||||
patchedGenerator = pkgs.stdenv.mkDerivation {
|
||||
name = "fish_patched-completion-generator";
|
||||
srcs = [
|
||||
"${pkgs.fish}/share/fish/tools/create_manpage_completions.py"
|
||||
"${pkgs.fish}/share/fish/tools/deroff.py"
|
||||
];
|
||||
unpackCmd = "cp $curSrc $(basename $curSrc)";
|
||||
sourceRoot = ".";
|
||||
patches = [ ./fish_completion-generator.patch ]; # to prevent collisions of identical completion files
|
||||
dontBuild = true;
|
||||
installPhase = ''
|
||||
mkdir -p $out
|
||||
cp * $out/
|
||||
'';
|
||||
preferLocalBuild = true;
|
||||
allowSubstitutes = false;
|
||||
};
|
||||
generateCompletions = package: pkgs.runCommand
|
||||
"${package.name}_fish-completions"
|
||||
(
|
||||
{
|
||||
inherit package;
|
||||
preferLocalBuild = true;
|
||||
allowSubstitutes = false;
|
||||
}
|
||||
// optionalAttrs (package ? meta.priority) { meta.priority = package.meta.priority; }
|
||||
)
|
||||
''
|
||||
mkdir -p $out
|
||||
if [ -d $package/share/man ]; then
|
||||
find $package/share/man -type f | xargs ${pkgs.python3.interpreter} ${patchedGenerator}/create_manpage_completions.py --directory $out >/dev/null
|
||||
fi
|
||||
'';
|
||||
in
|
||||
pkgs.buildEnv {
|
||||
name = "system_fish-completions";
|
||||
ignoreCollisions = true;
|
||||
paths = map generateCompletions config.environment.systemPackages;
|
||||
};
|
||||
}
|
||||
|
||||
# include programs that bring their own completions
|
||||
{
|
||||
pathsToLink = []
|
||||
++ optional cfg.vendor.config.enable "/share/fish/vendor_conf.d"
|
||||
++ optional cfg.vendor.completions.enable "/share/fish/vendor_completions.d"
|
||||
++ optional cfg.vendor.functions.enable "/share/fish/vendor_functions.d";
|
||||
}
|
||||
|
||||
{ systemPackages = [ pkgs.fish ]; }
|
||||
|
||||
{
|
||||
shells = [
|
||||
"/run/current-system/sw/bin/fish"
|
||||
"${pkgs.fish}/bin/fish"
|
||||
];
|
||||
}
|
||||
];
|
||||
|
||||
programs.fish.interactiveShellInit = ''
|
||||
# add completions generated by NixOS to $fish_complete_path
|
||||
@ -187,61 +297,6 @@ in
|
||||
end
|
||||
'';
|
||||
|
||||
environment.etc."fish/generated_completions".source =
|
||||
let
|
||||
patchedGenerator = pkgs.stdenv.mkDerivation {
|
||||
name = "fish_patched-completion-generator";
|
||||
srcs = [
|
||||
"${pkgs.fish}/share/fish/tools/create_manpage_completions.py"
|
||||
"${pkgs.fish}/share/fish/tools/deroff.py"
|
||||
];
|
||||
unpackCmd = "cp $curSrc $(basename $curSrc)";
|
||||
sourceRoot = ".";
|
||||
patches = [ ./fish_completion-generator.patch ]; # to prevent collisions of identical completion files
|
||||
dontBuild = true;
|
||||
installPhase = ''
|
||||
mkdir -p $out
|
||||
cp * $out/
|
||||
'';
|
||||
preferLocalBuild = true;
|
||||
allowSubstitutes = false;
|
||||
};
|
||||
generateCompletions = package: pkgs.runCommand
|
||||
"${package.name}_fish-completions"
|
||||
(
|
||||
{
|
||||
inherit package;
|
||||
preferLocalBuild = true;
|
||||
allowSubstitutes = false;
|
||||
}
|
||||
// optionalAttrs (package ? meta.priority) { meta.priority = package.meta.priority; }
|
||||
)
|
||||
''
|
||||
mkdir -p $out
|
||||
if [ -d $package/share/man ]; then
|
||||
find $package/share/man -type f | xargs ${pkgs.python3.interpreter} ${patchedGenerator}/create_manpage_completions.py --directory $out >/dev/null
|
||||
fi
|
||||
'';
|
||||
in
|
||||
pkgs.buildEnv {
|
||||
name = "system_fish-completions";
|
||||
ignoreCollisions = true;
|
||||
paths = map generateCompletions config.environment.systemPackages;
|
||||
};
|
||||
|
||||
# include programs that bring their own completions
|
||||
environment.pathsToLink = []
|
||||
++ optional cfg.vendor.config.enable "/share/fish/vendor_conf.d"
|
||||
++ optional cfg.vendor.completions.enable "/share/fish/vendor_completions.d"
|
||||
++ optional cfg.vendor.functions.enable "/share/fish/vendor_functions.d";
|
||||
|
||||
environment.systemPackages = [ pkgs.fish ];
|
||||
|
||||
environment.shells = [
|
||||
"/run/current-system/sw/bin/fish"
|
||||
"${pkgs.fish}/bin/fish"
|
||||
];
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -36,7 +36,7 @@ in
|
||||
askPassword = mkOption {
|
||||
type = types.str;
|
||||
default = "${pkgs.x11_ssh_askpass}/libexec/x11-ssh-askpass";
|
||||
description = ''Program used by SSH to ask for passwords.'';
|
||||
description = "Program used by SSH to ask for passwords.";
|
||||
};
|
||||
|
||||
forwardX11 = mkOption {
|
||||
|
28
nixos/modules/programs/tilp2.nix
Normal file
28
nixos/modules/programs/tilp2.nix
Normal file
@ -0,0 +1,28 @@
|
||||
{ config, pkgs, lib, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.programs.tilp2;
|
||||
|
||||
in {
|
||||
options.programs.tilp2 = {
|
||||
enable = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Enable tilp2 and udev rules for supported calculators.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
services.udev.packages = [
|
||||
pkgs.libticables2
|
||||
];
|
||||
|
||||
environment.systemPackages = [
|
||||
pkgs.tilp2
|
||||
];
|
||||
};
|
||||
}
|
@ -11,7 +11,7 @@ in
|
||||
|
||||
lockerCommand = mkOption {
|
||||
default = "${pkgs.i3lock}/bin/i3lock";
|
||||
example = literalExample ''''${pkgs.i3lock-fancy}/bin/i3lock-fancy'';
|
||||
example = literalExample "\${pkgs.i3lock-fancy}/bin/i3lock-fancy";
|
||||
type = types.separatedString " ";
|
||||
description = "Locker to be used with xsslock";
|
||||
};
|
||||
|
@ -33,6 +33,7 @@ in {
|
||||
};
|
||||
configurationDir = mkOption {
|
||||
default = "${activemq}/conf";
|
||||
type = types.str;
|
||||
description = ''
|
||||
The base directory for ActiveMQ's configuration.
|
||||
By default, this directory is searched for a file named activemq.xml,
|
||||
|
@ -74,7 +74,7 @@ in {
|
||||
musicDirectory = mkOption {
|
||||
type = with types; either path (strMatching "(http|https|nfs|smb)://.+");
|
||||
default = "${cfg.dataDir}/music";
|
||||
defaultText = ''''${dataDir}/music'';
|
||||
defaultText = "\${dataDir}/music";
|
||||
description = ''
|
||||
The directory or NFS/SMB network share where MPD reads music from. If left
|
||||
as the default value this directory will automatically be created before
|
||||
@ -86,7 +86,7 @@ in {
|
||||
playlistDirectory = mkOption {
|
||||
type = types.path;
|
||||
default = "${cfg.dataDir}/playlists";
|
||||
defaultText = ''''${dataDir}/playlists'';
|
||||
defaultText = "\${dataDir}/playlists";
|
||||
description = ''
|
||||
The directory where MPD stores playlists. If left as the default value
|
||||
this directory will automatically be created before the MPD server starts,
|
||||
@ -155,7 +155,7 @@ in {
|
||||
dbFile = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
default = "${cfg.dataDir}/tag_cache";
|
||||
defaultText = ''''${dataDir}/tag_cache'';
|
||||
defaultText = "\${dataDir}/tag_cache";
|
||||
description = ''
|
||||
The path to MPD's database. If set to <literal>null</literal> the
|
||||
parameter is omitted from the configuration.
|
||||
|
@ -1,5 +1,6 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
|
||||
# TODO: test configuration when building nixexpr (use -t parameter)
|
||||
# TODO: support sqlite3 (it's deprecate?) and mysql
|
||||
|
||||
@ -111,6 +112,7 @@ let
|
||||
{
|
||||
options = {
|
||||
password = mkOption {
|
||||
type = types.str;
|
||||
# TODO: required?
|
||||
description = ''
|
||||
Specifies the password that must be supplied for the default Bacula
|
||||
@ -130,6 +132,7 @@ let
|
||||
};
|
||||
|
||||
monitor = mkOption {
|
||||
type = types.enum [ "no" "yes" ];
|
||||
default = "no";
|
||||
example = "yes";
|
||||
description = ''
|
||||
@ -150,6 +153,7 @@ let
|
||||
{
|
||||
options = {
|
||||
changerDevice = mkOption {
|
||||
type = types.str;
|
||||
description = ''
|
||||
The specified name-string must be the generic SCSI device name of the
|
||||
autochanger that corresponds to the normal read/write Archive Device
|
||||
@ -168,6 +172,7 @@ let
|
||||
};
|
||||
|
||||
changerCommand = mkOption {
|
||||
type = types.str;
|
||||
description = ''
|
||||
The name-string specifies an external program to be called that will
|
||||
automatically change volumes as required by Bacula. Normally, this
|
||||
@ -190,12 +195,13 @@ let
|
||||
};
|
||||
|
||||
devices = mkOption {
|
||||
description = ''
|
||||
'';
|
||||
description = "";
|
||||
type = types.listOf types.str;
|
||||
};
|
||||
|
||||
extraAutochangerConfig = mkOption {
|
||||
default = "";
|
||||
type = types.lines;
|
||||
description = ''
|
||||
Extra configuration to be passed in Autochanger directive.
|
||||
'';
|
||||
@ -212,6 +218,7 @@ let
|
||||
options = {
|
||||
archiveDevice = mkOption {
|
||||
# TODO: required?
|
||||
type = types.str;
|
||||
description = ''
|
||||
The specified name-string gives the system file name of the storage
|
||||
device managed by this storage daemon. This will usually be the
|
||||
@ -228,6 +235,7 @@ let
|
||||
|
||||
mediaType = mkOption {
|
||||
# TODO: required?
|
||||
type = types.str;
|
||||
description = ''
|
||||
The specified name-string names the type of media supported by this
|
||||
device, for example, <literal>DLT7000</literal>. Media type names are
|
||||
@ -265,6 +273,7 @@ let
|
||||
|
||||
extraDeviceConfig = mkOption {
|
||||
default = "";
|
||||
type = types.lines;
|
||||
description = ''
|
||||
Extra configuration to be passed in Device directive.
|
||||
'';
|
||||
@ -293,6 +302,7 @@ in {
|
||||
|
||||
name = mkOption {
|
||||
default = "${config.networking.hostName}-fd";
|
||||
type = types.str;
|
||||
description = ''
|
||||
The client name that must be used by the Director when connecting.
|
||||
Generally, it is a good idea to use a name related to the machine so
|
||||
@ -321,6 +331,7 @@ in {
|
||||
|
||||
extraClientConfig = mkOption {
|
||||
default = "";
|
||||
type = types.lines;
|
||||
description = ''
|
||||
Extra configuration to be passed in Client directive.
|
||||
'';
|
||||
@ -332,6 +343,7 @@ in {
|
||||
|
||||
extraMessagesConfig = mkOption {
|
||||
default = "";
|
||||
type = types.lines;
|
||||
description = ''
|
||||
Extra configuration to be passed in Messages directive.
|
||||
'';
|
||||
@ -352,6 +364,7 @@ in {
|
||||
|
||||
name = mkOption {
|
||||
default = "${config.networking.hostName}-sd";
|
||||
type = types.str;
|
||||
description = ''
|
||||
Specifies the Name of the Storage daemon.
|
||||
'';
|
||||
@ -392,6 +405,7 @@ in {
|
||||
|
||||
extraStorageConfig = mkOption {
|
||||
default = "";
|
||||
type = types.lines;
|
||||
description = ''
|
||||
Extra configuration to be passed in Storage directive.
|
||||
'';
|
||||
@ -403,6 +417,7 @@ in {
|
||||
|
||||
extraMessagesConfig = mkOption {
|
||||
default = "";
|
||||
type = types.lines;
|
||||
description = ''
|
||||
Extra configuration to be passed in Messages directive.
|
||||
'';
|
||||
@ -424,6 +439,7 @@ in {
|
||||
|
||||
name = mkOption {
|
||||
default = "${config.networking.hostName}-dir";
|
||||
type = types.str;
|
||||
description = ''
|
||||
The director name used by the system administrator. This directive is
|
||||
required.
|
||||
@ -445,6 +461,7 @@ in {
|
||||
|
||||
password = mkOption {
|
||||
# TODO: required?
|
||||
type = types.str;
|
||||
description = ''
|
||||
Specifies the password that must be supplied for a Director.
|
||||
'';
|
||||
@ -452,6 +469,7 @@ in {
|
||||
|
||||
extraMessagesConfig = mkOption {
|
||||
default = "";
|
||||
type = types.lines;
|
||||
description = ''
|
||||
Extra configuration to be passed in Messages directive.
|
||||
'';
|
||||
@ -462,6 +480,7 @@ in {
|
||||
|
||||
extraDirectorConfig = mkOption {
|
||||
default = "";
|
||||
type = types.lines;
|
||||
description = ''
|
||||
Extra configuration to be passed in Director directive.
|
||||
'';
|
||||
|
@ -354,7 +354,7 @@ in
|
||||
|
||||
script = let
|
||||
tarsnap = ''tarsnap --configfile "/etc/tarsnap/${name}.conf"'';
|
||||
lastArchive = ''$(${tarsnap} --list-archives | sort | tail -1)'';
|
||||
lastArchive = "$(${tarsnap} --list-archives | sort | tail -1)";
|
||||
run = ''${tarsnap} -x -f "${lastArchive}" ${optionalString cfg.verbose "-v"}'';
|
||||
|
||||
in if (cfg.cachedir != null) then ''
|
||||
|
@ -50,8 +50,7 @@ with lib;
|
||||
default = pkgs.hadoop;
|
||||
defaultText = "pkgs.hadoop";
|
||||
example = literalExample "pkgs.hadoop";
|
||||
description = ''
|
||||
'';
|
||||
description = "";
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -14,8 +14,8 @@ let
|
||||
ClusterName=${cfg.clusterName}
|
||||
StateSaveLocation=${cfg.stateSaveLocation}
|
||||
SlurmUser=${cfg.user}
|
||||
${optionalString (cfg.controlMachine != null) ''controlMachine=${cfg.controlMachine}''}
|
||||
${optionalString (cfg.controlAddr != null) ''controlAddr=${cfg.controlAddr}''}
|
||||
${optionalString (cfg.controlMachine != null) "controlMachine=${cfg.controlMachine}"}
|
||||
${optionalString (cfg.controlAddr != null) "controlAddr=${cfg.controlAddr}"}
|
||||
${toString (map (x: "NodeName=${x}\n") cfg.nodeName)}
|
||||
${toString (map (x: "PartitionName=${x}\n") cfg.partitionName)}
|
||||
PlugStackConfig=${plugStackConfig}/plugstack.conf
|
||||
@ -25,7 +25,7 @@ let
|
||||
|
||||
plugStackConfig = pkgs.writeTextDir "plugstack.conf"
|
||||
''
|
||||
${optionalString cfg.enableSrunX11 ''optional ${pkgs.slurm-spank-x11}/lib/x11.so''}
|
||||
${optionalString cfg.enableSrunX11 "optional ${pkgs.slurm-spank-x11}/lib/x11.so"}
|
||||
${cfg.extraPlugstackConfig}
|
||||
'';
|
||||
|
||||
|
@ -223,6 +223,7 @@ in {
|
||||
};
|
||||
|
||||
pythonPackages = mkOption {
|
||||
type = types.listOf types.package;
|
||||
default = pythonPackages: with pythonPackages; [ ];
|
||||
defaultText = "pythonPackages: with pythonPackages; [ ]";
|
||||
description = "Packages to add the to the PYTHONPATH of the buildbot process.";
|
||||
|
@ -66,10 +66,10 @@ let
|
||||
++ optional service.debugTraceDisabled
|
||||
"--debug-trace-disabled"
|
||||
++ map (e: "--env ${escapeShellArg e}") (mapAttrsToList (name: value: "${name}=${value}") service.environmentVariables)
|
||||
++ optionals (service.executor == "docker") (
|
||||
++ optionals (hasPrefix "docker" service.executor) (
|
||||
assert (
|
||||
assertMsg (service.dockerImage != null)
|
||||
"dockerImage option is required for docker executor (${name})");
|
||||
"dockerImage option is required for ${service.executor} executor (${name})");
|
||||
[ "--docker-image ${service.dockerImage}" ]
|
||||
++ optional service.dockerDisableCache
|
||||
"--docker-disable-cache"
|
||||
|
@ -16,8 +16,7 @@ let
|
||||
[admins]
|
||||
${cfg.adminUser} = ${cfg.adminPass}
|
||||
'' else
|
||||
''
|
||||
'') + (if useVersion2 then
|
||||
"") + (if useVersion2 then
|
||||
''
|
||||
[chttpd]
|
||||
'' else
|
||||
|
@ -117,7 +117,7 @@ in
|
||||
serviceConfig.User = cfg.user;
|
||||
serviceConfig.LogsDirectory = "firebird";
|
||||
serviceConfig.LogsDirectoryMode = "0700";
|
||||
serviceConfig.ExecStart = ''${firebird}/bin/fbserver -d'';
|
||||
serviceConfig.ExecStart = "${firebird}/bin/fbserver -d";
|
||||
|
||||
# TODO think about shutdown
|
||||
};
|
||||
|
@ -16,14 +16,14 @@ let
|
||||
''}
|
||||
dbms.ssl.policy.${name}.client_auth=${conf.clientAuth}
|
||||
${if length (splitString "/" conf.privateKey) > 1 then
|
||||
''dbms.ssl.policy.${name}.private_key=${conf.privateKey}''
|
||||
"dbms.ssl.policy.${name}.private_key=${conf.privateKey}"
|
||||
else
|
||||
''dbms.ssl.policy.${name}.private_key=${conf.baseDirectory}/${conf.privateKey}''
|
||||
"dbms.ssl.policy.${name}.private_key=${conf.baseDirectory}/${conf.privateKey}"
|
||||
}
|
||||
${if length (splitString "/" conf.privateKey) > 1 then
|
||||
''dbms.ssl.policy.${name}.public_certificate=${conf.publicCertificate}''
|
||||
"dbms.ssl.policy.${name}.public_certificate=${conf.publicCertificate}"
|
||||
else
|
||||
''dbms.ssl.policy.${name}.public_certificate=${conf.baseDirectory}/${conf.publicCertificate}''
|
||||
"dbms.ssl.policy.${name}.public_certificate=${conf.baseDirectory}/${conf.publicCertificate}"
|
||||
}
|
||||
dbms.ssl.policy.${name}.revoked_dir=${conf.revokedDir}
|
||||
dbms.ssl.policy.${name}.tls_versions=${concatStringsSep "," conf.tlsVersions}
|
||||
|
@ -15,31 +15,45 @@ with lib;
|
||||
options = {
|
||||
|
||||
services.gnome3.evolution-data-server = {
|
||||
|
||||
enable = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Whether to enable Evolution Data Server, a collection of services for
|
||||
storing addressbooks and calendars.
|
||||
'';
|
||||
enable = mkEnableOption "Evolution Data Server, a collection of services for storing addressbooks and calendars.";
|
||||
plugins = mkOption {
|
||||
type = types.listOf types.package;
|
||||
default = [ ];
|
||||
description = "Plugins for Evolution Data Server.";
|
||||
};
|
||||
};
|
||||
programs.evolution = {
|
||||
enable = mkEnableOption "Evolution, a Personal information management application that provides integrated mail, calendaring and address book functionality.";
|
||||
plugins = mkOption {
|
||||
type = types.listOf types.package;
|
||||
default = [ ];
|
||||
example = literalExample "[ pkgs.evolution-ews ]";
|
||||
description = "Plugins for Evolution.";
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
|
||||
###### implementation
|
||||
|
||||
config = mkIf config.services.gnome3.evolution-data-server.enable {
|
||||
config =
|
||||
let
|
||||
bundle = pkgs.evolutionWithPlugins.override { inherit (config.services.gnome3.evolution-data-server) plugins; };
|
||||
in
|
||||
mkMerge [
|
||||
(mkIf config.services.gnome3.evolution-data-server.enable {
|
||||
environment.systemPackages = [ bundle ];
|
||||
|
||||
environment.systemPackages = [ pkgs.gnome3.evolution-data-server ];
|
||||
|
||||
services.dbus.packages = [ pkgs.gnome3.evolution-data-server ];
|
||||
|
||||
systemd.packages = [ pkgs.gnome3.evolution-data-server ];
|
||||
|
||||
};
|
||||
services.dbus.packages = [ bundle ];
|
||||
|
||||
systemd.packages = [ bundle ];
|
||||
})
|
||||
(mkIf config.programs.evolution.enable {
|
||||
services.gnome3.evolution-data-server = {
|
||||
enable = true;
|
||||
plugins = [ pkgs.evolution ] ++ config.programs.evolution.plugins;
|
||||
};
|
||||
services.gnome3.gnome-keyring.enable = true;
|
||||
})
|
||||
];
|
||||
}
|
||||
|
@ -44,7 +44,7 @@ in {
|
||||
};
|
||||
serviceConfig = {
|
||||
Type = "simple";
|
||||
ExecStart = ''${pkgs.bloop}/bin/bloop server'';
|
||||
ExecStart = "${pkgs.bloop}/bin/bloop server";
|
||||
Restart = "always";
|
||||
};
|
||||
};
|
||||
|
@ -141,14 +141,14 @@ in {
|
||||
install -o ${cfg.user} -g ${cfg.group} -m 0600 /dev/null /var/lib/infinoted/infinoted.conf
|
||||
cat >>/var/lib/infinoted/infinoted.conf <<EOF
|
||||
[infinoted]
|
||||
${optionalString (cfg.keyFile != null) ''key-file=${cfg.keyFile}''}
|
||||
${optionalString (cfg.certificateFile != null) ''certificate-file=${cfg.certificateFile}''}
|
||||
${optionalString (cfg.certificateChain != null) ''certificate-chain=${cfg.certificateChain}''}
|
||||
${optionalString (cfg.keyFile != null) "key-file=${cfg.keyFile}"}
|
||||
${optionalString (cfg.certificateFile != null) "certificate-file=${cfg.certificateFile}"}
|
||||
${optionalString (cfg.certificateChain != null) "certificate-chain=${cfg.certificateChain}"}
|
||||
port=${toString cfg.port}
|
||||
security-policy=${cfg.securityPolicy}
|
||||
root-directory=${cfg.rootDirectory}
|
||||
plugins=${concatStringsSep ";" cfg.plugins}
|
||||
${optionalString (cfg.passwordFile != null) ''password=$(head -n 1 ${cfg.passwordFile})''}
|
||||
${optionalString (cfg.passwordFile != null) "password=$(head -n 1 ${cfg.passwordFile})"}
|
||||
|
||||
${cfg.extraConfig}
|
||||
EOF
|
||||
|
@ -19,7 +19,7 @@ in
|
||||
extraFlags = mkOption {
|
||||
type = types.listOf types.str;
|
||||
default = [];
|
||||
description = ''Extra flags to pass to <command>oa_ded</command>'';
|
||||
description = "Extra flags to pass to <command>oa_ded</command>";
|
||||
example = [
|
||||
"+set dedicated 2"
|
||||
"+set sv_hostname 'My NixOS OpenArena Server'"
|
||||
|
@ -19,18 +19,16 @@ nix-shell -E 'with import <nixpkgs> { }; brscan4-etc-files.override{netDevices=[
|
||||
|
||||
*/
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
|
||||
addNetDev = nd: ''
|
||||
brsaneconfig4 -a \
|
||||
name="${nd.name}" \
|
||||
model="${nd.model}" \
|
||||
${if (hasAttr "nodename" nd && nd.nodename != null) then
|
||||
${if (lib.hasAttr "nodename" nd && nd.nodename != null) then
|
||||
''nodename="${nd.nodename}"'' else
|
||||
''ip="${nd.ip}"''}'';
|
||||
addAllNetDev = xs: concatStringsSep "\n" (map addNetDev xs);
|
||||
addAllNetDev = xs: lib.concatStringsSep "\n" (map addNetDev xs);
|
||||
in
|
||||
|
||||
stdenv.mkDerivation {
|
||||
@ -61,11 +59,11 @@ stdenv.mkDerivation {
|
||||
dontStrip = true;
|
||||
dontPatchELF = true;
|
||||
|
||||
meta = {
|
||||
meta = with lib; {
|
||||
description = "Brother brscan4 sane backend driver etc files";
|
||||
homepage = "http://www.brother.com";
|
||||
platforms = stdenv.lib.platforms.linux;
|
||||
license = stdenv.lib.licenses.unfree;
|
||||
maintainers = with stdenv.lib.maintainers; [ jraygauthier ];
|
||||
platforms = platforms.linux;
|
||||
license = licenses.unfree;
|
||||
maintainers = with maintainers; [ jraygauthier ];
|
||||
};
|
||||
}
|
||||
|
@ -100,7 +100,7 @@ in
|
||||
|
||||
inputConfig = mkOption {
|
||||
type = types.lines;
|
||||
default = ''generator { }'';
|
||||
default = "generator { }";
|
||||
description = "Logstash input configuration.";
|
||||
example = ''
|
||||
# Read from journal
|
||||
@ -131,7 +131,7 @@ in
|
||||
|
||||
outputConfig = mkOption {
|
||||
type = types.lines;
|
||||
default = ''stdout { codec => rubydebug }'';
|
||||
default = "stdout { codec => rubydebug }";
|
||||
description = "Logstash output configuration.";
|
||||
example = ''
|
||||
redis { host => ["localhost"] data_type => "list" key => "logstash" codec => json }
|
||||
|
@ -163,7 +163,7 @@ in {
|
||||
|
||||
systemd.services.postgrey = let
|
||||
bind-flag = if cfg.socket ? path then
|
||||
''--unix=${cfg.socket.path} --socketmode=${cfg.socket.mode}''
|
||||
"--unix=${cfg.socket.path} --socketmode=${cfg.socket.mode}"
|
||||
else
|
||||
''--inet=${optionalString (cfg.socket.addr != null) (cfg.socket.addr + ":")}${toString cfg.socket.port}'';
|
||||
in {
|
||||
|
@ -52,6 +52,7 @@ in
|
||||
};
|
||||
|
||||
timeout = mkOption {
|
||||
type = types.int;
|
||||
default = 600;
|
||||
description = "Set the global minimum timeout, in seconds, until directories are unmounted";
|
||||
};
|
||||
|
@ -120,7 +120,7 @@ in
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
|
||||
environment = {
|
||||
LD_LIBRARY_PATH = ''/run/opengl-driver/lib:/run/opengl-driver-32/lib'';
|
||||
LD_LIBRARY_PATH = "/run/opengl-driver/lib:/run/opengl-driver-32/lib";
|
||||
DISPLAY = ":${toString config.services.xserver.display}";
|
||||
GPU_MAX_ALLOC_PERCENT = "100";
|
||||
GPU_USE_SYNC_OBJECTS = "1";
|
||||
|
@ -27,7 +27,7 @@ in
|
||||
default = with pkgs.dictdDBs; [ wiktionary wordnet ];
|
||||
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.";
|
||||
};
|
||||
|
||||
};
|
||||
|
@ -185,7 +185,7 @@ in
|
||||
};
|
||||
zkExtraCfg = mkOption {
|
||||
type = types.str;
|
||||
default = ''initLimit=5&syncLimit=2&tickTime=2000'';
|
||||
default = "initLimit=5&syncLimit=2&tickTime=2000";
|
||||
description = ''
|
||||
Extra options to pass into Zookeeper
|
||||
'';
|
||||
|
@ -597,8 +597,7 @@ in
|
||||
users.groups.gitea = {};
|
||||
|
||||
warnings =
|
||||
optional (cfg.database.password != "") ''
|
||||
config.services.gitea.database.password will be stored as plaintext in the Nix store. Use database.passwordFile instead.'' ++
|
||||
optional (cfg.database.password != "") "config.services.gitea.database.password will be stored as plaintext in the Nix store. Use database.passwordFile instead." ++
|
||||
optional (cfg.extraConfig != null) ''
|
||||
services.gitea.`extraConfig` is deprecated, please use services.gitea.`settings`.
|
||||
'';
|
||||
|
@ -504,8 +504,7 @@ in {
|
||||
report_stats = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
'';
|
||||
description = "";
|
||||
};
|
||||
servers = mkOption {
|
||||
type = types.attrsOf (types.attrsOf types.str);
|
||||
|
@ -587,10 +587,10 @@ in
|
||||
|
||||
nix.systemFeatures = mkDefault (
|
||||
[ "nixos-test" "benchmark" "big-parallel" "kvm" ] ++
|
||||
optionals (pkgs.hostPlatform.platform ? gcc.arch) (
|
||||
# a builder can run code for `platform.gcc.arch` and inferior architectures
|
||||
[ "gccarch-${pkgs.hostPlatform.platform.gcc.arch}" ] ++
|
||||
map (x: "gccarch-${x}") lib.systems.architectures.inferiors.${pkgs.hostPlatform.platform.gcc.arch}
|
||||
optionals (pkgs.hostPlatform ? gcc.arch) (
|
||||
# a builder can run code for `gcc.arch` and inferior architectures
|
||||
[ "gccarch-${pkgs.hostPlatform.gcc.arch}" ] ++
|
||||
map (x: "gccarch-${x}") lib.systems.architectures.inferiors.${pkgs.hostPlatform.gcc.arch}
|
||||
)
|
||||
);
|
||||
|
||||
|
@ -104,7 +104,7 @@ in
|
||||
hooks = mkOption {
|
||||
default = {};
|
||||
example = {
|
||||
doshutdown = ''# shell commands to notify that the computer is shutting down'';
|
||||
doshutdown = "# shell commands to notify that the computer is shutting down";
|
||||
};
|
||||
type = types.attrsOf types.lines;
|
||||
description = ''
|
||||
|
@ -25,10 +25,10 @@ let
|
||||
|
||||
graphiteApiConfig = pkgs.writeText "graphite-api.yaml" ''
|
||||
search_index: ${dataDir}/index
|
||||
${optionalString (config.time.timeZone != null) ''time_zone: ${config.time.timeZone}''}
|
||||
${optionalString (cfg.api.finders != []) ''finders:''}
|
||||
${optionalString (config.time.timeZone != null) "time_zone: ${config.time.timeZone}"}
|
||||
${optionalString (cfg.api.finders != []) "finders:"}
|
||||
${concatMapStringsSep "\n" (f: " - " + f.moduleName) cfg.api.finders}
|
||||
${optionalString (cfg.api.functions != []) ''functions:''}
|
||||
${optionalString (cfg.api.functions != []) "functions:"}
|
||||
${concatMapStringsSep "\n" (f: " - " + f) cfg.api.functions}
|
||||
${cfg.api.extraConfig}
|
||||
'';
|
||||
|
@ -67,7 +67,7 @@ in
|
||||
config = mkIf cfg.enable {
|
||||
|
||||
warnings = optional (cfg.allow != null && cfg.deny != null)
|
||||
''If `services.incron.allow` is set then `services.incron.deny` will be ignored.'';
|
||||
"If `services.incron.allow` is set then `services.incron.deny` will be ignored.";
|
||||
|
||||
environment.systemPackages = [ pkgs.incron ];
|
||||
|
||||
|
@ -20,7 +20,7 @@ in
|
||||
port = mkOption {
|
||||
type = types.int;
|
||||
default = 25826;
|
||||
description = ''Network address on which to accept collectd binary network packets.'';
|
||||
description = "Network address on which to accept collectd binary network packets.";
|
||||
};
|
||||
|
||||
listenAddress = mkOption {
|
||||
|
@ -69,7 +69,7 @@ in {
|
||||
umask 077
|
||||
${pkgs.envsubst}/bin/envsubst -i "${configFile}" > /var/run/telegraf/config.toml
|
||||
'');
|
||||
ExecStart=''${cfg.package}/bin/telegraf -config ${finalConfigFile}'';
|
||||
ExecStart="${cfg.package}/bin/telegraf -config ${finalConfigFile}";
|
||||
ExecReload="${pkgs.coreutils}/bin/kill -HUP $MAINPID";
|
||||
RuntimeDirectory = "telegraf";
|
||||
User = "telegraf";
|
||||
|
@ -12,7 +12,7 @@ let
|
||||
};
|
||||
|
||||
optionToArgs = opt: v : optional (v != null) ''--${opt}="${toString v}"'';
|
||||
flagToArgs = opt: v : optional v ''--${opt}'';
|
||||
flagToArgs = opt: v : optional v "--${opt}";
|
||||
listToArgs = opt: vs : map (v: ''--${opt}="${v}"'') vs;
|
||||
attrsToArgs = opt: kvs: mapAttrsToList (k: v: ''--${opt}=${k}=\"${v}\"'') kvs;
|
||||
|
||||
@ -67,7 +67,7 @@ let
|
||||
preferLocalBuild = true;
|
||||
json = builtins.toFile "${name}.json" (builtins.toJSON attrs);
|
||||
nativeBuildInputs = [ pkgs.remarshal ];
|
||||
} ''json2yaml -i $json -o $out'';
|
||||
} "json2yaml -i $json -o $out";
|
||||
|
||||
thanos = cmd: "${cfg.package}/bin/thanos ${cmd}" +
|
||||
(let args = cfg.${cmd}.arguments;
|
||||
|
@ -205,7 +205,7 @@ in
|
||||
after = [ "upsd.service" ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
# TODO: replace 'root' by another username.
|
||||
script = ''${pkgs.nut}/bin/upsdrvctl -u root start'';
|
||||
script = "${pkgs.nut}/bin/upsdrvctl -u root start";
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
RemainAfterExit = true;
|
||||
|
@ -48,7 +48,7 @@ let
|
||||
ExecStart = ''${ceph.out}/bin/${if daemonType == "rgw" then "radosgw" else "ceph-${daemonType}"} \
|
||||
-f --cluster ${clusterName} --id ${daemonId}'';
|
||||
} // optionalAttrs (daemonType == "osd") {
|
||||
ExecStartPre = ''${ceph.lib}/libexec/ceph/ceph-osd-prestart.sh --id ${daemonId} --cluster ${clusterName}'';
|
||||
ExecStartPre = "${ceph.lib}/libexec/ceph/ceph-osd-prestart.sh --id ${daemonId} --cluster ${clusterName}";
|
||||
RestartSec = "20s";
|
||||
PrivateDevices = "no"; # osd needs disk access
|
||||
} // optionalAttrs ( daemonType == "mon") {
|
||||
@ -353,7 +353,7 @@ in
|
||||
];
|
||||
|
||||
warnings = optional (cfg.global.monInitialMembers == null)
|
||||
''Not setting up a list of members in monInitialMembers requires that you set the host variable for each mon daemon or else the cluster won't function'';
|
||||
"Not setting up a list of members in monInitialMembers requires that you set the host variable for each mon daemon or else the cluster won't function";
|
||||
|
||||
environment.etc."ceph/ceph.conf".text = let
|
||||
# Merge the extraConfig set for mgr daemons, as mgr don't have their own section
|
||||
|
@ -24,13 +24,15 @@ in
|
||||
};
|
||||
|
||||
dataDir = mkOption {
|
||||
default = ''/home/${user}/'';
|
||||
type = types.str;
|
||||
default = "/home/${user}/";
|
||||
description = ''
|
||||
The directory holding configuration, incoming and temporary files.
|
||||
'';
|
||||
};
|
||||
|
||||
user = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
default = null;
|
||||
description = ''
|
||||
The user the AMule daemon should run as.
|
||||
|
@ -58,6 +58,7 @@ in
|
||||
};
|
||||
|
||||
interface = mkOption {
|
||||
type = types.str;
|
||||
default = "127.0.0.1";
|
||||
description = ''
|
||||
The interface the BitlBee deamon will be listening to. If `127.0.0.1',
|
||||
@ -68,6 +69,7 @@ in
|
||||
|
||||
portNumber = mkOption {
|
||||
default = 6667;
|
||||
type = types.int;
|
||||
description = ''
|
||||
Number of the port BitlBee will be listening to.
|
||||
'';
|
||||
@ -142,6 +144,7 @@ in
|
||||
|
||||
extraSettings = mkOption {
|
||||
default = "";
|
||||
type = types.lines;
|
||||
description = ''
|
||||
Will be inserted in the Settings section of the config file.
|
||||
'';
|
||||
@ -149,6 +152,7 @@ in
|
||||
|
||||
extraDefaults = mkOption {
|
||||
default = "";
|
||||
type = types.lines;
|
||||
description = ''
|
||||
Will be inserted in the Default section of the config file.
|
||||
'';
|
||||
|
@ -42,13 +42,13 @@ in
|
||||
};
|
||||
|
||||
domain = mkOption {
|
||||
description = ''Proxy account domain/workgroup name.'';
|
||||
description = "Proxy account domain/workgroup name.";
|
||||
};
|
||||
|
||||
password = mkOption {
|
||||
default = "/etc/cntlm.password";
|
||||
type = types.str;
|
||||
description = ''Proxy account password. Note: use chmod 0600 on /etc/cntlm.password for security.'';
|
||||
description = "Proxy account password. Note: use chmod 0600 on /etc/cntlm.password for security.";
|
||||
};
|
||||
|
||||
netbios_hostname = mkOption {
|
||||
|
@ -42,8 +42,7 @@ in {
|
||||
|
||||
extraConfig = mkOption {
|
||||
type = types.lines;
|
||||
default = ''
|
||||
'';
|
||||
default = "";
|
||||
description = ''
|
||||
Configuration lines appended to the generated connman configuration file.
|
||||
'';
|
||||
|
@ -26,8 +26,7 @@ in {
|
||||
|
||||
extraConfig = mkOption {
|
||||
type = types.lines;
|
||||
default = ''
|
||||
'';
|
||||
default = "";
|
||||
description = ''
|
||||
Extra lines to be added verbatim to dnsdist.conf.
|
||||
'';
|
||||
|
@ -10,12 +10,12 @@ options = {
|
||||
pidDir = mkOption {
|
||||
default = "/run/gateone";
|
||||
type = types.path;
|
||||
description = ''Path of pid files for GateOne.'';
|
||||
description = "Path of pid files for GateOne.";
|
||||
};
|
||||
settingsDir = mkOption {
|
||||
default = "/var/lib/gateone";
|
||||
type = types.path;
|
||||
description = ''Path of configuration files for GateOne.'';
|
||||
description = "Path of configuration files for GateOne.";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -20,8 +20,8 @@ let
|
||||
ssid=${cfg.ssid}
|
||||
hw_mode=${cfg.hwMode}
|
||||
channel=${toString cfg.channel}
|
||||
${optionalString (cfg.countryCode != null) ''country_code=${cfg.countryCode}''}
|
||||
${optionalString (cfg.countryCode != null) ''ieee80211d=1''}
|
||||
${optionalString (cfg.countryCode != null) "country_code=${cfg.countryCode}"}
|
||||
${optionalString (cfg.countryCode != null) "ieee80211d=1"}
|
||||
|
||||
# logging (debug level)
|
||||
logger_syslog=-1
|
||||
|
@ -5,7 +5,7 @@
|
||||
{
|
||||
|
||||
TagLineFont = "etc/LiberationSans-25.pcf";
|
||||
TagLineLocale = ''en_US.UTF-8'';
|
||||
TagLineLocale = "en_US.UTF-8";
|
||||
|
||||
AdminGroup = "root"; # groups that can change server config
|
||||
AnswerRotary = "fax"; # don't accept anything else but faxes
|
||||
@ -16,7 +16,7 @@
|
||||
SessionTracing = "0x78701";
|
||||
UUCPLockDir = "/var/lock";
|
||||
|
||||
SendPageCmd = ''${pkgs.coreutils}/bin/false''; # prevent pager transmit
|
||||
SendUUCPCmd = ''${pkgs.coreutils}/bin/false''; # prevent UUCP transmit
|
||||
SendPageCmd = "${pkgs.coreutils}/bin/false"; # prevent pager transmit
|
||||
SendUUCPCmd = "${pkgs.coreutils}/bin/false"; # prevent UUCP transmit
|
||||
|
||||
}
|
||||
|
@ -85,8 +85,8 @@ let
|
||||
# Otherwise, we use `false` to provoke
|
||||
# an error if hylafax tries to use it.
|
||||
c.sendmailPath = mkMerge [
|
||||
(mkIfDefault noWrapper ''${pkgs.coreutils}/bin/false'')
|
||||
(mkIfDefault (!noWrapper) ''${wrapperDir}/${program}'')
|
||||
(mkIfDefault noWrapper "${pkgs.coreutils}/bin/false")
|
||||
(mkIfDefault (!noWrapper) "${wrapperDir}/${program}")
|
||||
];
|
||||
importDefaultConfig = file:
|
||||
lib.attrsets.mapAttrs
|
||||
@ -121,7 +121,7 @@ in
|
||||
|
||||
options.services.hylafax = {
|
||||
|
||||
enable = mkEnableOption ''HylaFAX server'';
|
||||
enable = mkEnableOption "HylaFAX server";
|
||||
|
||||
autostart = mkOption {
|
||||
type = bool;
|
||||
@ -139,28 +139,28 @@ in
|
||||
type = nullOr str1;
|
||||
default = null;
|
||||
example = "49";
|
||||
description = ''Country code for server and all modems.'';
|
||||
description = "Country code for server and all modems.";
|
||||
};
|
||||
|
||||
areaCode = mkOption {
|
||||
type = nullOr str1;
|
||||
default = null;
|
||||
example = "30";
|
||||
description = ''Area code for server and all modems.'';
|
||||
description = "Area code for server and all modems.";
|
||||
};
|
||||
|
||||
longDistancePrefix = mkOption {
|
||||
type = nullOr str;
|
||||
default = null;
|
||||
example = "0";
|
||||
description = ''Long distance prefix for server and all modems.'';
|
||||
description = "Long distance prefix for server and all modems.";
|
||||
};
|
||||
|
||||
internationalPrefix = mkOption {
|
||||
type = nullOr str;
|
||||
default = null;
|
||||
example = "00";
|
||||
description = ''International prefix for server and all modems.'';
|
||||
description = "International prefix for server and all modems.";
|
||||
};
|
||||
|
||||
spoolAreaPath = mkOption {
|
||||
@ -267,7 +267,7 @@ in
|
||||
spoolExtraInit = mkOption {
|
||||
type = lines;
|
||||
default = "";
|
||||
example = ''chmod 0755 . # everyone may read my faxes'';
|
||||
example = "chmod 0755 . # everyone may read my faxes";
|
||||
description = ''
|
||||
Additional shell code that is executed within the
|
||||
spooling area directory right after its setup.
|
||||
@ -345,7 +345,7 @@ in
|
||||
faxqclean.doneqMinutes = mkOption {
|
||||
type = int1;
|
||||
default = 15;
|
||||
example = literalExample ''24*60'';
|
||||
example = literalExample "24*60";
|
||||
description = ''
|
||||
Set the job
|
||||
age threshold (in minutes) that controls how long
|
||||
@ -355,7 +355,7 @@ in
|
||||
faxqclean.docqMinutes = mkOption {
|
||||
type = int1;
|
||||
default = 60;
|
||||
example = literalExample ''24*60'';
|
||||
example = literalExample "24*60";
|
||||
description = ''
|
||||
Set the document
|
||||
age threshold (in minutes) that controls how long
|
||||
|
@ -16,12 +16,12 @@ let
|
||||
mkLines = conf:
|
||||
(lib.concatLists
|
||||
(lib.flip lib.mapAttrsToList conf
|
||||
(k: map (v: ''${k}: ${v}'')
|
||||
(k: map (v: "${k}: ${v}")
|
||||
)));
|
||||
include = mkLines { Include = conf.Include or []; };
|
||||
other = mkLines ( conf // { Include = []; } );
|
||||
in
|
||||
pkgs.writeText ''hylafax-config${name}''
|
||||
pkgs.writeText "hylafax-config${name}"
|
||||
(concatStringsSep "\n" (include ++ other));
|
||||
|
||||
globalConfigPath = mkConfigFile "" cfg.faxqConfig;
|
||||
@ -29,7 +29,7 @@ let
|
||||
modemConfigPath =
|
||||
let
|
||||
mkModemConfigFile = { config, name, ... }:
|
||||
mkConfigFile ''.${name}''
|
||||
mkConfigFile ".${name}"
|
||||
(cfg.commonModemConfig // config);
|
||||
mkLine = { name, type, ... }@modem: ''
|
||||
# check if modem config file exists:
|
||||
@ -81,7 +81,7 @@ let
|
||||
description = "HylaFAX queue manager sendq watch";
|
||||
documentation = [ "man:faxq(8)" "man:sendq(5)" ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
pathConfig.PathExistsGlob = [ ''${cfg.spoolAreaPath}/sendq/q*'' ];
|
||||
pathConfig.PathExistsGlob = [ "${cfg.spoolAreaPath}/sendq/q*" ];
|
||||
};
|
||||
|
||||
timers = mkMerge [
|
||||
@ -134,7 +134,7 @@ let
|
||||
exit 1
|
||||
fi
|
||||
'';
|
||||
serviceConfig.ExecStop = ''${setupSpoolScript}'';
|
||||
serviceConfig.ExecStop = "${setupSpoolScript}";
|
||||
serviceConfig.RemainAfterExit = true;
|
||||
serviceConfig.Type = "oneshot";
|
||||
unitConfig.RequiresMountsFor = [ cfg.spoolAreaPath ];
|
||||
@ -145,7 +145,7 @@ let
|
||||
documentation = [ "man:faxq(8)" ];
|
||||
requires = [ "hylafax-spool.service" ];
|
||||
after = [ "hylafax-spool.service" ];
|
||||
wants = mapModems ( { name, ... }: ''hylafax-faxgetty@${name}.service'' );
|
||||
wants = mapModems ( { name, ... }: "hylafax-faxgetty@${name}.service" );
|
||||
wantedBy = mkIf cfg.autostart [ "multi-user.target" ];
|
||||
serviceConfig.Type = "forking";
|
||||
serviceConfig.ExecStart = ''${pkgs.hylafaxplus}/spool/bin/faxq -q "${cfg.spoolAreaPath}"'';
|
||||
@ -155,7 +155,7 @@ let
|
||||
# stopped will always yield a failed send attempt:
|
||||
# The fax service is started when the job is created with
|
||||
# `sendfax`, but modems need some time to initialize.
|
||||
serviceConfig.ExecStartPost = [ ''${waitFaxqScript}'' ];
|
||||
serviceConfig.ExecStartPost = [ "${waitFaxqScript}" ];
|
||||
# faxquit fails if the pipe is already gone
|
||||
# (e.g. the service is already stopping)
|
||||
serviceConfig.ExecStop = ''-${pkgs.hylafaxplus}/spool/bin/faxquit -q "${cfg.spoolAreaPath}"'';
|
||||
@ -186,7 +186,7 @@ let
|
||||
wantedBy = mkIf cfg.faxcron.enable.spoolInit requires;
|
||||
startAt = mkIf (cfg.faxcron.enable.frequency!=null) cfg.faxcron.enable.frequency;
|
||||
serviceConfig.ExecStart = concatStringsSep " " [
|
||||
''${pkgs.hylafaxplus}/spool/bin/faxcron''
|
||||
"${pkgs.hylafaxplus}/spool/bin/faxcron"
|
||||
''-q "${cfg.spoolAreaPath}"''
|
||||
''-info ${toString cfg.faxcron.infoDays}''
|
||||
''-log ${toString cfg.faxcron.logDays}''
|
||||
@ -202,18 +202,18 @@ let
|
||||
wantedBy = mkIf cfg.faxqclean.enable.spoolInit requires;
|
||||
startAt = mkIf (cfg.faxqclean.enable.frequency!=null) cfg.faxqclean.enable.frequency;
|
||||
serviceConfig.ExecStart = concatStringsSep " " [
|
||||
''${pkgs.hylafaxplus}/spool/bin/faxqclean''
|
||||
"${pkgs.hylafaxplus}/spool/bin/faxqclean"
|
||||
''-q "${cfg.spoolAreaPath}"''
|
||||
''-v''
|
||||
(optionalString (cfg.faxqclean.archiving!="never") ''-a'')
|
||||
(optionalString (cfg.faxqclean.archiving=="always") ''-A'')
|
||||
"-v"
|
||||
(optionalString (cfg.faxqclean.archiving!="never") "-a")
|
||||
(optionalString (cfg.faxqclean.archiving=="always") "-A")
|
||||
''-j ${toString (cfg.faxqclean.doneqMinutes*60)}''
|
||||
''-d ${toString (cfg.faxqclean.docqMinutes*60)}''
|
||||
];
|
||||
};
|
||||
|
||||
mkFaxgettyService = { name, ... }:
|
||||
lib.nameValuePair ''hylafax-faxgetty@${name}'' rec {
|
||||
lib.nameValuePair "hylafax-faxgetty@${name}" rec {
|
||||
description = "HylaFAX faxgetty for %I";
|
||||
documentation = [ "man:faxgetty(8)" ];
|
||||
bindsTo = [ "dev-%i.device" ];
|
||||
@ -221,7 +221,7 @@ let
|
||||
after = bindsTo ++ requires;
|
||||
before = [ "hylafax-faxq.service" "getty.target" ];
|
||||
unitConfig.StopWhenUnneeded = true;
|
||||
unitConfig.AssertFileNotEmpty = ''${cfg.spoolAreaPath}/etc/config.%I'';
|
||||
unitConfig.AssertFileNotEmpty = "${cfg.spoolAreaPath}/etc/config.%I";
|
||||
serviceConfig.UtmpIdentifier = "%I";
|
||||
serviceConfig.TTYPath = "/dev/%I";
|
||||
serviceConfig.Restart = "always";
|
||||
|
@ -17,37 +17,37 @@ in
|
||||
enable = mkOption {
|
||||
default = false;
|
||||
type = types.bool;
|
||||
description = ''Enable the kippo honeypot ssh server.'';
|
||||
description = "Enable the kippo honeypot ssh server.";
|
||||
};
|
||||
port = mkOption {
|
||||
default = 2222;
|
||||
type = types.int;
|
||||
description = ''TCP port number for kippo to bind to.'';
|
||||
description = "TCP port number for kippo to bind to.";
|
||||
};
|
||||
hostname = mkOption {
|
||||
default = "nas3";
|
||||
type = types.str;
|
||||
description = ''Hostname for kippo to present to SSH login'';
|
||||
description = "Hostname for kippo to present to SSH login";
|
||||
};
|
||||
varPath = mkOption {
|
||||
default = "/var/lib/kippo";
|
||||
type = types.path;
|
||||
description = ''Path of read/write files needed for operation and configuration.'';
|
||||
description = "Path of read/write files needed for operation and configuration.";
|
||||
};
|
||||
logPath = mkOption {
|
||||
default = "/var/log/kippo";
|
||||
type = types.path;
|
||||
description = ''Path of log files needed for operation and configuration.'';
|
||||
description = "Path of log files needed for operation and configuration.";
|
||||
};
|
||||
pidPath = mkOption {
|
||||
default = "/run/kippo";
|
||||
type = types.path;
|
||||
description = ''Path of pid files needed for operation.'';
|
||||
description = "Path of pid files needed for operation.";
|
||||
};
|
||||
extraConfig = mkOption {
|
||||
default = "";
|
||||
type = types.lines;
|
||||
description = ''Extra verbatim configuration added to the end of kippo.cfg.'';
|
||||
description = "Extra verbatim configuration added to the end of kippo.cfg.";
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -49,15 +49,37 @@ in
|
||||
'';
|
||||
};
|
||||
|
||||
extraSettingsPaths = mkOption {
|
||||
type = types.listOf types.path;
|
||||
default = [];
|
||||
description = ''
|
||||
Additional settings paths used to configure nomad. These can be files or directories.
|
||||
'';
|
||||
example = literalExample ''
|
||||
[ "/etc/nomad-mutable.json" "/run/keys/nomad-with-secrets.json" "/etc/nomad/config.d" ]
|
||||
'';
|
||||
};
|
||||
|
||||
settings = mkOption {
|
||||
type = format.type;
|
||||
default = {
|
||||
# Agrees with `StateDirectory = "nomad"` set below.
|
||||
data_dir = "/var/lib/nomad";
|
||||
};
|
||||
default = {};
|
||||
description = ''
|
||||
Configuration for Nomad. See the <link xlink:href="https://www.nomadproject.io/docs/configuration">documentation</link>
|
||||
for supported values.
|
||||
|
||||
Notes about <literal>data_dir</literal>:
|
||||
|
||||
If <literal>data_dir</literal> is set to a value other than the
|
||||
default value of <literal>"/var/lib/nomad"</literal> it is the Nomad
|
||||
cluster manager's responsibility to make sure that this directory
|
||||
exists and has the appropriate permissions.
|
||||
|
||||
Additionally, if <literal>dropPrivileges</literal> is
|
||||
<literal>true</literal> then <literal>data_dir</literal>
|
||||
<emphasis>cannot</emphasis> be customized. Setting
|
||||
<literal>dropPrivileges</literal> to <literal>true</literal> enables
|
||||
the <literal>DynamicUser</literal> feature of systemd which directly
|
||||
manages and operates on <literal>StateDirectory</literal>.
|
||||
'';
|
||||
example = literalExample ''
|
||||
{
|
||||
@ -77,6 +99,11 @@ in
|
||||
|
||||
##### implementation
|
||||
config = mkIf cfg.enable {
|
||||
services.nomad.settings = {
|
||||
# Agrees with `StateDirectory = "nomad"` set below.
|
||||
data_dir = mkDefault "/var/lib/nomad";
|
||||
};
|
||||
|
||||
environment = {
|
||||
etc."nomad.json".source = format.generate "nomad.json" cfg.settings;
|
||||
systemPackages = [ cfg.package ];
|
||||
@ -96,30 +123,42 @@ in
|
||||
iptables
|
||||
]);
|
||||
|
||||
serviceConfig = {
|
||||
DynamicUser = cfg.dropPrivileges;
|
||||
ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID";
|
||||
ExecStart = "${cfg.package}/bin/nomad agent -config=/etc/nomad.json";
|
||||
KillMode = "process";
|
||||
KillSignal = "SIGINT";
|
||||
LimitNOFILE = 65536;
|
||||
LimitNPROC = "infinity";
|
||||
OOMScoreAdjust = -1000;
|
||||
Restart = "on-failure";
|
||||
RestartSec = 2;
|
||||
# Agrees with the default `data_dir = "/var/lib/nomad"` in `settings` above.
|
||||
StateDirectory = "nomad";
|
||||
TasksMax = "infinity";
|
||||
User = optionalString cfg.dropPrivileges "nomad";
|
||||
} // (optionalAttrs cfg.enableDocker {
|
||||
SupplementaryGroups = "docker"; # space-separated string
|
||||
});
|
||||
serviceConfig = mkMerge [
|
||||
{
|
||||
DynamicUser = cfg.dropPrivileges;
|
||||
ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID";
|
||||
ExecStart = "${cfg.package}/bin/nomad agent -config=/etc/nomad.json" +
|
||||
concatMapStrings (path: " -config=${path}") cfg.extraSettingsPaths;
|
||||
KillMode = "process";
|
||||
KillSignal = "SIGINT";
|
||||
LimitNOFILE = 65536;
|
||||
LimitNPROC = "infinity";
|
||||
OOMScoreAdjust = -1000;
|
||||
Restart = "on-failure";
|
||||
RestartSec = 2;
|
||||
TasksMax = "infinity";
|
||||
}
|
||||
(mkIf cfg.enableDocker {
|
||||
SupplementaryGroups = "docker"; # space-separated string
|
||||
})
|
||||
(mkIf (cfg.settings.data_dir == "/var/lib/nomad") {
|
||||
StateDirectory = "nomad";
|
||||
})
|
||||
];
|
||||
|
||||
unitConfig = {
|
||||
StartLimitIntervalSec = 10;
|
||||
StartLimitBurst = 3;
|
||||
};
|
||||
};
|
||||
|
||||
assertions = [
|
||||
{
|
||||
assertion = cfg.dropPrivileges -> cfg.settings.data_dir == "/var/lib/nomad";
|
||||
message = "settings.data_dir must be equal to \"/var/lib/nomad\" if dropPrivileges is true";
|
||||
}
|
||||
];
|
||||
|
||||
# Docker support requires the Docker daemon to be running.
|
||||
virtualisation.docker.enable = mkIf cfg.enableDocker true;
|
||||
};
|
||||
|
@ -4,13 +4,14 @@ with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.chrony;
|
||||
chronyPkg = cfg.package;
|
||||
|
||||
stateDir = "/var/lib/chrony";
|
||||
stateDir = cfg.directory;
|
||||
driftFile = "${stateDir}/chrony.drift";
|
||||
keyFile = "${stateDir}/chrony.keys";
|
||||
|
||||
configFile = pkgs.writeText "chrony.conf" ''
|
||||
${concatMapStringsSep "\n" (server: "server " + server + " iburst") cfg.servers}
|
||||
${concatMapStringsSep "\n" (server: "server " + server + " " + cfg.serverOption + optionalString (cfg.enableNTS) " nts") cfg.servers}
|
||||
|
||||
${optionalString
|
||||
(cfg.initstepslew.enabled && (cfg.servers != []))
|
||||
@ -19,6 +20,7 @@ let
|
||||
|
||||
driftfile ${driftFile}
|
||||
keyfile ${keyFile}
|
||||
${optionalString (cfg.enableNTS) "ntsdumpdir ${stateDir}"}
|
||||
|
||||
${optionalString (!config.time.hardwareClockInLocalTime) "rtconutc"}
|
||||
|
||||
@ -39,14 +41,48 @@ in
|
||||
'';
|
||||
};
|
||||
|
||||
package = mkOption {
|
||||
type = types.package;
|
||||
default = pkgs.chrony;
|
||||
defaultText = "pkgs.chrony";
|
||||
description = ''
|
||||
Which chrony package to use.
|
||||
'';
|
||||
};
|
||||
|
||||
servers = mkOption {
|
||||
default = config.networking.timeServers;
|
||||
type = types.listOf types.str;
|
||||
description = ''
|
||||
The set of NTP servers from which to synchronise.
|
||||
'';
|
||||
};
|
||||
|
||||
serverOption = mkOption {
|
||||
default = "iburst";
|
||||
type = types.enum [ "iburst" "offline" ];
|
||||
description = ''
|
||||
Set option for server directives.
|
||||
|
||||
Use "iburst" to rapidly poll on startup. Recommended if your machine
|
||||
is consistently online.
|
||||
|
||||
Use "offline" to prevent polling on startup. Recommended if your
|
||||
machine boots offline or is otherwise frequently offline.
|
||||
'';
|
||||
};
|
||||
|
||||
enableNTS = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Whether to enable Network Time Security authentication.
|
||||
Make sure it is supported by your selected NTP server(s).
|
||||
'';
|
||||
};
|
||||
|
||||
initstepslew = mkOption {
|
||||
type = types.attrsOf (types.either types.bool types.int);
|
||||
default = {
|
||||
enabled = true;
|
||||
threshold = 1000; # by default, same threshold as 'ntpd -g' (1000s)
|
||||
@ -58,6 +94,12 @@ in
|
||||
'';
|
||||
};
|
||||
|
||||
directory = mkOption {
|
||||
type = types.str;
|
||||
default = "/var/lib/chrony";
|
||||
description = "Directory where chrony state is stored.";
|
||||
};
|
||||
|
||||
extraConfig = mkOption {
|
||||
type = types.lines;
|
||||
default = "";
|
||||
@ -79,7 +121,7 @@ in
|
||||
config = mkIf cfg.enable {
|
||||
meta.maintainers = with lib.maintainers; [ thoughtpolice ];
|
||||
|
||||
environment.systemPackages = [ pkgs.chrony ];
|
||||
environment.systemPackages = [ chronyPkg ];
|
||||
|
||||
users.groups.chrony.gid = config.ids.gids.chrony;
|
||||
|
||||
@ -109,12 +151,12 @@ in
|
||||
after = [ "network.target" ];
|
||||
conflicts = [ "ntpd.service" "systemd-timesyncd.service" ];
|
||||
|
||||
path = [ pkgs.chrony ];
|
||||
path = [ chronyPkg ];
|
||||
|
||||
unitConfig.ConditionCapability = "CAP_SYS_TIME";
|
||||
serviceConfig =
|
||||
{ Type = "simple";
|
||||
ExecStart = "${pkgs.chrony}/bin/chronyd ${chronyFlags}";
|
||||
ExecStart = "${chronyPkg}/bin/chronyd ${chronyFlags}";
|
||||
|
||||
ProtectHome = "yes";
|
||||
ProtectSystem = "full";
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user