Project import generated by Copybara.
GitOrigin-RevId: 598f83ebeb2235435189cf84d844b8b73e858e0f
This commit is contained in:
parent
746c427690
commit
d2947cfef0
1155 changed files with 27575 additions and 12313 deletions
|
@ -15,7 +15,7 @@ assignees: ''
|
||||||
|
|
||||||
<!-- make sure this issue is not redundant or obsolete -->
|
<!-- make sure this issue is not redundant or obsolete -->
|
||||||
|
|
||||||
- [ ] checked [latest Nixpkgs manual] \([source][nixpkgs-source]) and [latest NixOS manual]] \[source][nixos-source])
|
- [ ] checked [latest Nixpkgs manual] \([source][nixpkgs-source]) and [latest NixOS manual] \([source][nixos-source])
|
||||||
- [ ] checked [open documentation issues] for possible duplicates
|
- [ ] checked [open documentation issues] for possible duplicates
|
||||||
- [ ] checked [open documentation pull requests] for possible solutions
|
- [ ] checked [open documentation pull requests] for possible solutions
|
||||||
|
|
||||||
|
|
|
@ -31,7 +31,7 @@ The recommended way of defining a derivation for a Coq library, is to use the `c
|
||||||
* `releaseRev` (optional, defaults to `(v: v)`), provides a default mapping from release names to revision hashes/branch names/tags,
|
* `releaseRev` (optional, defaults to `(v: v)`), provides a default mapping from release names to revision hashes/branch names/tags,
|
||||||
* `displayVersion` (optional), provides a way to alter the computation of `name` from `pname`, by explaining how to display version numbers,
|
* `displayVersion` (optional), provides a way to alter the computation of `name` from `pname`, by explaining how to display version numbers,
|
||||||
* `namePrefix` (optional, defaults to `[ "coq" ]`), provides a way to alter the computation of `name` from `pname`, by explaining which dependencies must occur in `name`,
|
* `namePrefix` (optional, defaults to `[ "coq" ]`), provides a way to alter the computation of `name` from `pname`, by explaining which dependencies must occur in `name`,
|
||||||
* `nativeBuildInputs` (optional), is a list of executables that are required to build the current derivation, in addition to the default ones (namely `which`, `dune` and `ocaml` depending on whether `useDune2`, `useDune2ifVersion` and `mlPlugin` are set).
|
* `nativeBuildInputs` (optional), is a list of executables that are required to build the current derivation, in addition to the default ones (namely `which`, `dune` and `ocaml` depending on whether `useDune`, `useDuneifVersion` and `mlPlugin` are set).
|
||||||
* `extraNativeBuildInputs` (optional, deprecated), an additional list of derivation to add to `nativeBuildInputs`,
|
* `extraNativeBuildInputs` (optional, deprecated), an additional list of derivation to add to `nativeBuildInputs`,
|
||||||
* `overrideNativeBuildInputs` (optional) replaces the default list of derivation to which `nativeBuildInputs` and `extraNativeBuildInputs` adds extra elements,
|
* `overrideNativeBuildInputs` (optional) replaces the default list of derivation to which `nativeBuildInputs` and `extraNativeBuildInputs` adds extra elements,
|
||||||
* `buildInputs` (optional), is a list of libraries and dependencies that are required to build and run the current derivation, in addition to the default one `[ coq ]`,
|
* `buildInputs` (optional), is a list of libraries and dependencies that are required to build and run the current derivation, in addition to the default one `[ coq ]`,
|
||||||
|
@ -39,8 +39,8 @@ The recommended way of defining a derivation for a Coq library, is to use the `c
|
||||||
* `overrideBuildInputs` (optional) replaces the default list of derivation to which `buildInputs` and `extraBuildInputs` adds extras elements,
|
* `overrideBuildInputs` (optional) replaces the default list of derivation to which `buildInputs` and `extraBuildInputs` adds extras elements,
|
||||||
* `propagatedBuildInputs` (optional) is passed as is to `mkDerivation`, we recommend to use this for Coq libraries and Coq plugin dependencies, as this makes sure the paths of the compiled libraries and plugins will always be added to the build environements of subsequent derivation, which is necessary for Coq packages to work correctly,
|
* `propagatedBuildInputs` (optional) is passed as is to `mkDerivation`, we recommend to use this for Coq libraries and Coq plugin dependencies, as this makes sure the paths of the compiled libraries and plugins will always be added to the build environements of subsequent derivation, which is necessary for Coq packages to work correctly,
|
||||||
* `mlPlugin` (optional, defaults to `false`). Some extensions (plugins) might require OCaml and sometimes other OCaml packages. Standard dependencies can be added by setting the current option to `true`. For a finer grain control, the `coq.ocamlPackages` attribute can be used in `nativeBuildInputs`, `buildInputs`, and `propagatedBuildInputs` to depend on the same package set Coq was built against.
|
* `mlPlugin` (optional, defaults to `false`). Some extensions (plugins) might require OCaml and sometimes other OCaml packages. Standard dependencies can be added by setting the current option to `true`. For a finer grain control, the `coq.ocamlPackages` attribute can be used in `nativeBuildInputs`, `buildInputs`, and `propagatedBuildInputs` to depend on the same package set Coq was built against.
|
||||||
* `useDune2ifVersion` (optional, default to `(x: false)` uses Dune2 to build the package if the provided predicate evaluates to true on the version, e.g. `useDune2ifVersion = versions.isGe "1.1"` will use dune if the version of the package is greater or equal to `"1.1"`,
|
* `useDuneifVersion` (optional, default to `(x: false)` uses Dune to build the package if the provided predicate evaluates to true on the version, e.g. `useDuneifVersion = versions.isGe "1.1"` will use dune if the version of the package is greater or equal to `"1.1"`,
|
||||||
* `useDune2` (optional, defaults to `false`) uses Dune2 to build the package if set to true, the presence of this attribute overrides the behavior of the previous one.
|
* `useDune` (optional, defaults to `false`) uses Dune to build the package if set to true, the presence of this attribute overrides the behavior of the previous one.
|
||||||
* `opam-name` (optional, defaults to concatenating with a dash separator the components of `namePrefix` and `pname`), name of the Dune package to build.
|
* `opam-name` (optional, defaults to concatenating with a dash separator the components of `namePrefix` and `pname`), name of the Dune package to build.
|
||||||
* `enableParallelBuilding` (optional, defaults to `true`), since it is activated by default, we provide a way to disable it.
|
* `enableParallelBuilding` (optional, defaults to `true`), since it is activated by default, we provide a way to disable it.
|
||||||
* `extraInstallFlags` (optional), allows to extend `installFlags` which initializes the variable `COQMF_COQLIB` so as to install in the proper subdirectory. Indeed Coq libraries should be installed in `$(out)/lib/coq/${coq.coq-version}/user-contrib/`. Such directories are automatically added to the `$COQPATH` environment variable by the hook defined in the Coq derivation.
|
* `extraInstallFlags` (optional), allows to extend `installFlags` which initializes the variable `COQMF_COQLIB` so as to install in the proper subdirectory. Indeed Coq libraries should be installed in `$(out)/lib/coq/${coq.coq-version}/user-contrib/`. Such directories are automatically added to the `$COQPATH` environment variable by the hook defined in the Coq derivation.
|
||||||
|
|
6
third_party/nixpkgs/lib/generators.nix
vendored
6
third_party/nixpkgs/lib/generators.nix
vendored
|
@ -240,10 +240,10 @@ rec {
|
||||||
* to implicit typing rules, so it should work with older
|
* to implicit typing rules, so it should work with older
|
||||||
* parsers as well.
|
* parsers as well.
|
||||||
*/
|
*/
|
||||||
toYAML = {}@args: toJSON args;
|
toYAML = toJSON;
|
||||||
|
|
||||||
withRecursion =
|
withRecursion =
|
||||||
args@{
|
{
|
||||||
/* If this option is not null, the given value will stop evaluating at a certain depth */
|
/* If this option is not null, the given value will stop evaluating at a certain depth */
|
||||||
depthLimit
|
depthLimit
|
||||||
/* If this option is true, an error will be thrown, if a certain given depth is exceeded */
|
/* If this option is true, an error will be thrown, if a certain given depth is exceeded */
|
||||||
|
@ -287,7 +287,7 @@ rec {
|
||||||
allowPrettyValues ? false,
|
allowPrettyValues ? false,
|
||||||
/* If this option is true, the output is indented with newlines for attribute sets and lists */
|
/* If this option is true, the output is indented with newlines for attribute sets and lists */
|
||||||
multiline ? true
|
multiline ? true
|
||||||
}@args:
|
}:
|
||||||
let
|
let
|
||||||
go = indent: v: with builtins;
|
go = indent: v: with builtins;
|
||||||
let isPath = v: typeOf v == "path";
|
let isPath = v: typeOf v == "path";
|
||||||
|
|
5
third_party/nixpkgs/lib/licenses.nix
vendored
5
third_party/nixpkgs/lib/licenses.nix
vendored
|
@ -174,6 +174,11 @@ in mkLicense lset) ({
|
||||||
free = false;
|
free = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
cal10 = {
|
||||||
|
fullName = "Cryptographic Autonomy License version 1.0 (CAL-1.0)";
|
||||||
|
url = "https://opensource.org/licenses/CAL-1.0";
|
||||||
|
};
|
||||||
|
|
||||||
capec = {
|
capec = {
|
||||||
fullName = "Common Attack Pattern Enumeration and Classification";
|
fullName = "Common Attack Pattern Enumeration and Classification";
|
||||||
url = "https://capec.mitre.org/about/termsofuse.html";
|
url = "https://capec.mitre.org/about/termsofuse.html";
|
||||||
|
|
10
third_party/nixpkgs/lib/modules.nix
vendored
10
third_party/nixpkgs/lib/modules.nix
vendored
|
@ -12,7 +12,6 @@ let
|
||||||
concatStringsSep
|
concatStringsSep
|
||||||
elem
|
elem
|
||||||
filter
|
filter
|
||||||
findFirst
|
|
||||||
foldl'
|
foldl'
|
||||||
getAttrFromPath
|
getAttrFromPath
|
||||||
head
|
head
|
||||||
|
@ -34,7 +33,6 @@ let
|
||||||
recursiveUpdate
|
recursiveUpdate
|
||||||
reverseList sort
|
reverseList sort
|
||||||
setAttrByPath
|
setAttrByPath
|
||||||
toList
|
|
||||||
types
|
types
|
||||||
warnIf
|
warnIf
|
||||||
zipAttrsWith
|
zipAttrsWith
|
||||||
|
@ -46,7 +44,6 @@ let
|
||||||
showFiles
|
showFiles
|
||||||
showOption
|
showOption
|
||||||
unknownModule
|
unknownModule
|
||||||
literalExpression
|
|
||||||
;
|
;
|
||||||
|
|
||||||
showDeclPrefix = loc: decl: prefix:
|
showDeclPrefix = loc: decl: prefix:
|
||||||
|
@ -604,7 +601,6 @@ rec {
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
let
|
let
|
||||||
firstNonOption = findFirst (m: !isOption m.options) "" decls;
|
|
||||||
nonOptions = filter (m: !isOption m.options) decls;
|
nonOptions = filter (m: !isOption m.options) decls;
|
||||||
in
|
in
|
||||||
throw "The option `${showOption loc}' in module `${(lib.head optionDecls)._file}' would be a parent of the following options, but its type `${(lib.head optionDecls).options.type.description or "<no description>"}' does not support nested options.\n${
|
throw "The option `${showOption loc}' in module `${(lib.head optionDecls)._file}' would be a parent of the following options, but its type `${(lib.head optionDecls).options.type.description or "<no description>"}' does not support nested options.\n${
|
||||||
|
@ -652,11 +648,7 @@ rec {
|
||||||
'opts' is a list of modules. Each module has an options attribute which
|
'opts' is a list of modules. Each module has an options attribute which
|
||||||
correspond to the definition of 'loc' in 'opt.file'. */
|
correspond to the definition of 'loc' in 'opt.file'. */
|
||||||
mergeOptionDecls =
|
mergeOptionDecls =
|
||||||
let
|
loc: opts:
|
||||||
coerceOption = file: opt:
|
|
||||||
if isFunction opt then setDefaultModuleLocation file opt
|
|
||||||
else setDefaultModuleLocation file { options = opt; };
|
|
||||||
in loc: opts:
|
|
||||||
foldl' (res: opt:
|
foldl' (res: opt:
|
||||||
let t = res.type;
|
let t = res.type;
|
||||||
t' = opt.options.type;
|
t' = opt.options.type;
|
||||||
|
|
1
third_party/nixpkgs/lib/options.nix
vendored
1
third_party/nixpkgs/lib/options.nix
vendored
|
@ -8,7 +8,6 @@ let
|
||||||
concatLists
|
concatLists
|
||||||
concatMap
|
concatMap
|
||||||
concatMapStringsSep
|
concatMapStringsSep
|
||||||
elemAt
|
|
||||||
filter
|
filter
|
||||||
foldl'
|
foldl'
|
||||||
head
|
head
|
||||||
|
|
1
third_party/nixpkgs/lib/sources.nix
vendored
1
third_party/nixpkgs/lib/sources.nix
vendored
|
@ -4,7 +4,6 @@
|
||||||
# Tested in lib/tests/sources.sh
|
# Tested in lib/tests/sources.sh
|
||||||
let
|
let
|
||||||
inherit (builtins)
|
inherit (builtins)
|
||||||
hasContext
|
|
||||||
match
|
match
|
||||||
readDir
|
readDir
|
||||||
split
|
split
|
||||||
|
|
|
@ -6,7 +6,6 @@
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
inherit (lib) types;
|
|
||||||
checkMaintainer = handle: uncheckedAttrs:
|
checkMaintainer = handle: uncheckedAttrs:
|
||||||
let
|
let
|
||||||
prefix = [ "lib" "maintainers" handle ];
|
prefix = [ "lib" "maintainers" handle ];
|
||||||
|
|
2
third_party/nixpkgs/lib/types.nix
vendored
2
third_party/nixpkgs/lib/types.nix
vendored
|
@ -6,7 +6,6 @@ let
|
||||||
inherit (lib)
|
inherit (lib)
|
||||||
elem
|
elem
|
||||||
flip
|
flip
|
||||||
functionArgs
|
|
||||||
isAttrs
|
isAttrs
|
||||||
isBool
|
isBool
|
||||||
isDerivation
|
isDerivation
|
||||||
|
@ -16,7 +15,6 @@ let
|
||||||
isList
|
isList
|
||||||
isString
|
isString
|
||||||
isStorePath
|
isStorePath
|
||||||
setFunctionArgs
|
|
||||||
toDerivation
|
toDerivation
|
||||||
toList
|
toList
|
||||||
;
|
;
|
||||||
|
|
|
@ -2877,6 +2877,12 @@
|
||||||
githubId = 1382175;
|
githubId = 1382175;
|
||||||
name = "Oliver Matthews";
|
name = "Oliver Matthews";
|
||||||
};
|
};
|
||||||
|
cwyc = {
|
||||||
|
email = "hello@cwyc.page";
|
||||||
|
github = "cwyc";
|
||||||
|
githubId = 16950437;
|
||||||
|
name = "cwyc";
|
||||||
|
};
|
||||||
cyounkins = {
|
cyounkins = {
|
||||||
name = "Craig Younkins";
|
name = "Craig Younkins";
|
||||||
email = "cyounkins@gmail.com";
|
email = "cyounkins@gmail.com";
|
||||||
|
@ -4833,6 +4839,15 @@
|
||||||
fingerprint = "386E D1BF 848A BB4A 6B4A 3C45 FC83 907C 125B C2BC";
|
fingerprint = "386E D1BF 848A BB4A 6B4A 3C45 FC83 907C 125B C2BC";
|
||||||
}];
|
}];
|
||||||
};
|
};
|
||||||
|
georgesalkhouri = {
|
||||||
|
name = "Georges Alkhouri";
|
||||||
|
email = "incense.stitch_0w@icloud.com";
|
||||||
|
github = "GeorgesAlkhouri";
|
||||||
|
githubId = 6077574;
|
||||||
|
keys = [{
|
||||||
|
fingerprint = "1608 9E8D 7C59 54F2 6A7A 7BD0 8BD2 09DC C54F D339";
|
||||||
|
}];
|
||||||
|
};
|
||||||
georgewhewell = {
|
georgewhewell = {
|
||||||
email = "georgerw@gmail.com";
|
email = "georgerw@gmail.com";
|
||||||
github = "georgewhewell";
|
github = "georgewhewell";
|
||||||
|
@ -9381,6 +9396,12 @@
|
||||||
githubId = 1222539;
|
githubId = 1222539;
|
||||||
name = "Roman Naumann";
|
name = "Roman Naumann";
|
||||||
};
|
};
|
||||||
|
naphta = {
|
||||||
|
email = "naphta@noreply.github.com";
|
||||||
|
github = "naphta";
|
||||||
|
githubId = 6709831;
|
||||||
|
name = "Jake Hill";
|
||||||
|
};
|
||||||
nasirhm = {
|
nasirhm = {
|
||||||
email = "nasirhussainm14@gmail.com";
|
email = "nasirhussainm14@gmail.com";
|
||||||
github = "nasirhm";
|
github = "nasirhm";
|
||||||
|
@ -9534,6 +9555,12 @@
|
||||||
github = "nessdoor";
|
github = "nessdoor";
|
||||||
githubId = 25993494;
|
githubId = 25993494;
|
||||||
};
|
};
|
||||||
|
net-mist = {
|
||||||
|
email = "archimist.linux@gmail.com";
|
||||||
|
github = "Net-Mist";
|
||||||
|
githubId = 13920346;
|
||||||
|
name = "Sébastien Iooss";
|
||||||
|
};
|
||||||
netali = {
|
netali = {
|
||||||
name = "Jennifer Graul";
|
name = "Jennifer Graul";
|
||||||
email = "me@netali.de";
|
email = "me@netali.de";
|
||||||
|
@ -12848,13 +12875,6 @@
|
||||||
githubId = 2666479;
|
githubId = 2666479;
|
||||||
name = "Y Nguyen";
|
name = "Y Nguyen";
|
||||||
};
|
};
|
||||||
superherointj = {
|
|
||||||
name = "Sérgio G.";
|
|
||||||
email = "5861043+superherointj@users.noreply.github.com";
|
|
||||||
matrix = "@superherointj:matrix.org";
|
|
||||||
github = "superherointj";
|
|
||||||
githubId = 5861043;
|
|
||||||
};
|
|
||||||
SuperSandro2000 = {
|
SuperSandro2000 = {
|
||||||
email = "sandro.jaeckel@gmail.com";
|
email = "sandro.jaeckel@gmail.com";
|
||||||
matrix = "@sandro:supersandro.de";
|
matrix = "@sandro:supersandro.de";
|
||||||
|
@ -15396,6 +15416,12 @@
|
||||||
github = "jali-clarke";
|
github = "jali-clarke";
|
||||||
githubId = 17733984;
|
githubId = 17733984;
|
||||||
};
|
};
|
||||||
|
wesleyjrz = {
|
||||||
|
email = "wesleyjr2002@gmail.com";
|
||||||
|
name = "Wesley V. Santos Jr.";
|
||||||
|
github = "wesleyjrz";
|
||||||
|
githubId = 60184588;
|
||||||
|
};
|
||||||
npatsakula = {
|
npatsakula = {
|
||||||
email = "nikita.patsakula@gmail.com";
|
email = "nikita.patsakula@gmail.com";
|
||||||
name = "Patsakula Nikita";
|
name = "Patsakula Nikita";
|
||||||
|
|
|
@ -20,6 +20,7 @@ fluent,,,,,,alerque
|
||||||
gitsigns.nvim,https://github.com/lewis6991/gitsigns.nvim.git,,,,5.1,
|
gitsigns.nvim,https://github.com/lewis6991/gitsigns.nvim.git,,,,5.1,
|
||||||
http,,,,0.3-0,,vcunat
|
http,,,,0.3-0,,vcunat
|
||||||
inspect,,,,,,
|
inspect,,,,,,
|
||||||
|
jsregexp,,,,,,
|
||||||
ldbus,,,http://luarocks.org/dev,,,
|
ldbus,,,http://luarocks.org/dev,,,
|
||||||
ldoc,https://github.com/stevedonovan/LDoc.git,,,,,
|
ldoc,https://github.com/stevedonovan/LDoc.git,,,,,
|
||||||
lgi,,,,,,
|
lgi,,,,,,
|
||||||
|
|
|
35
third_party/nixpkgs/maintainers/team-list.nix
vendored
35
third_party/nixpkgs/maintainers/team-list.nix
vendored
|
@ -15,6 +15,8 @@
|
||||||
- `scope` describes the scope of the group.
|
- `scope` describes the scope of the group.
|
||||||
- `shortName` short human-readable name
|
- `shortName` short human-readable name
|
||||||
- `enableFeatureFreezePing` will ping this team during the Feature Freeze announcements on releases
|
- `enableFeatureFreezePing` will ping this team during the Feature Freeze announcements on releases
|
||||||
|
- There is limited mention capacity in a single post, so this should be reserved for critical components
|
||||||
|
or larger ecosystems within nixpkgs.
|
||||||
- `githubTeams` will ping specified GitHub teams as well
|
- `githubTeams` will ping specified GitHub teams as well
|
||||||
|
|
||||||
More fields may be added in the future.
|
More fields may be added in the future.
|
||||||
|
@ -38,6 +40,7 @@ with lib.maintainers; {
|
||||||
];
|
];
|
||||||
scope = "Maintain ACME-related packages and modules.";
|
scope = "Maintain ACME-related packages and modules.";
|
||||||
shortName = "ACME";
|
shortName = "ACME";
|
||||||
|
enableFeatureFreezePing = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
bazel = {
|
bazel = {
|
||||||
|
@ -90,7 +93,6 @@ with lib.maintainers; {
|
||||||
];
|
];
|
||||||
scope = "Maintain Blockchain packages and modules.";
|
scope = "Maintain Blockchain packages and modules.";
|
||||||
shortName = "Blockchains";
|
shortName = "Blockchains";
|
||||||
enableFeatureFreezePing = true;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
c = {
|
c = {
|
||||||
|
@ -111,7 +113,6 @@ with lib.maintainers; {
|
||||||
];
|
];
|
||||||
scope = "Maintain packages used in the C3D2 hackspace";
|
scope = "Maintain packages used in the C3D2 hackspace";
|
||||||
shortName = "c3d2";
|
shortName = "c3d2";
|
||||||
enableFeatureFreezePing = true;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
cinnamon = {
|
cinnamon = {
|
||||||
|
@ -202,7 +203,6 @@ with lib.maintainers; {
|
||||||
];
|
];
|
||||||
scope = "Maintain Docker and related tools.";
|
scope = "Maintain Docker and related tools.";
|
||||||
shortName = "DockerTools";
|
shortName = "DockerTools";
|
||||||
enableFeatureFreezePing = true;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
docs = {
|
docs = {
|
||||||
|
@ -220,7 +220,6 @@ with lib.maintainers; {
|
||||||
];
|
];
|
||||||
scope = "Maintain the Emacs editor and packages.";
|
scope = "Maintain the Emacs editor and packages.";
|
||||||
shortName = "Emacs";
|
shortName = "Emacs";
|
||||||
enableFeatureFreezePing = true;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
enlightenment = {
|
enlightenment = {
|
||||||
|
@ -364,6 +363,17 @@ with lib.maintainers; {
|
||||||
shortName = "Kodi";
|
shortName = "Kodi";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
libretro = {
|
||||||
|
members = [
|
||||||
|
aanderse
|
||||||
|
edwtjo
|
||||||
|
MP2E
|
||||||
|
thiagokokada
|
||||||
|
];
|
||||||
|
scope = "Maintain Libretro, RetroArch and related packages.";
|
||||||
|
shortName = "Libretro";
|
||||||
|
};
|
||||||
|
|
||||||
linux-kernel = {
|
linux-kernel = {
|
||||||
members = [
|
members = [
|
||||||
TredwellGit
|
TredwellGit
|
||||||
|
@ -385,6 +395,15 @@ with lib.maintainers; {
|
||||||
shortName = "Lumiguide employees";
|
shortName = "Lumiguide employees";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
lua = {
|
||||||
|
githubTeams = [
|
||||||
|
"lua"
|
||||||
|
];
|
||||||
|
scope = "Maintain the lua ecosystem.";
|
||||||
|
shortName = "lua";
|
||||||
|
enableFeatureFreezePing = true;
|
||||||
|
};
|
||||||
|
|
||||||
lumina = {
|
lumina = {
|
||||||
members = [
|
members = [
|
||||||
romildo
|
romildo
|
||||||
|
@ -426,6 +445,7 @@ with lib.maintainers; {
|
||||||
];
|
];
|
||||||
scope = "Maintain Mate desktop environment and related packages.";
|
scope = "Maintain Mate desktop environment and related packages.";
|
||||||
shortName = "MATE";
|
shortName = "MATE";
|
||||||
|
enableFeatureFreezePing = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
matrix = {
|
matrix = {
|
||||||
|
@ -448,7 +468,6 @@ with lib.maintainers; {
|
||||||
];
|
];
|
||||||
scope = "Maintain Mobile NixOS.";
|
scope = "Maintain Mobile NixOS.";
|
||||||
shortName = "Mobile";
|
shortName = "Mobile";
|
||||||
enableFeatureFreezePing = true;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
nix = {
|
nix = {
|
||||||
|
@ -483,7 +502,6 @@ with lib.maintainers; {
|
||||||
tazjin
|
tazjin
|
||||||
zimbatm
|
zimbatm
|
||||||
];
|
];
|
||||||
enableFeatureFreezePing = true;
|
|
||||||
scope = "Group registration for Numtide team members who collectively maintain packages.";
|
scope = "Group registration for Numtide team members who collectively maintain packages.";
|
||||||
shortName = "Numtide team";
|
shortName = "Numtide team";
|
||||||
};
|
};
|
||||||
|
@ -548,7 +566,6 @@ with lib.maintainers; {
|
||||||
];
|
];
|
||||||
scope = "Maintain Podman and CRI-O related packages and modules.";
|
scope = "Maintain Podman and CRI-O related packages and modules.";
|
||||||
shortName = "Podman";
|
shortName = "Podman";
|
||||||
enableFeatureFreezePing = true;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
postgres = {
|
postgres = {
|
||||||
|
@ -557,7 +574,6 @@ with lib.maintainers; {
|
||||||
];
|
];
|
||||||
scope = "Maintain the PostgreSQL package and plugins along with the NixOS module.";
|
scope = "Maintain the PostgreSQL package and plugins along with the NixOS module.";
|
||||||
shortName = "PostgreSQL";
|
shortName = "PostgreSQL";
|
||||||
enableFeatureFreezePing = true;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
python = {
|
python = {
|
||||||
|
@ -610,7 +626,6 @@ with lib.maintainers; {
|
||||||
];
|
];
|
||||||
scope = "Manage the current nixpkgs/NixOS release.";
|
scope = "Manage the current nixpkgs/NixOS release.";
|
||||||
shortName = "Release";
|
shortName = "Release";
|
||||||
enableFeatureFreezePing = true;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
ruby = {
|
ruby = {
|
||||||
|
@ -699,7 +714,6 @@ with lib.maintainers; {
|
||||||
];
|
];
|
||||||
scope = "Maintain the vim and neovim text editors and related packages.";
|
scope = "Maintain the vim and neovim text editors and related packages.";
|
||||||
shortName = "Vim/Neovim";
|
shortName = "Vim/Neovim";
|
||||||
enableFeatureFreezePing = true;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
xfce = {
|
xfce = {
|
||||||
|
@ -708,5 +722,6 @@ with lib.maintainers; {
|
||||||
];
|
];
|
||||||
scope = "Maintain Xfce desktop environment and related packages.";
|
scope = "Maintain Xfce desktop environment and related packages.";
|
||||||
shortName = "Xfce";
|
shortName = "Xfce";
|
||||||
|
enableFeatureFreezePing = true;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -63,6 +63,7 @@ let
|
||||||
};
|
};
|
||||||
documentType = "none";
|
documentType = "none";
|
||||||
variablelistId = "test-options-list";
|
variablelistId = "test-options-list";
|
||||||
|
optionIdPrefix = "test-opt-";
|
||||||
};
|
};
|
||||||
|
|
||||||
sources = lib.sourceFilesBySuffices ./. [".xml"];
|
sources = lib.sourceFilesBySuffices ./. [".xml"];
|
||||||
|
|
|
@ -39,11 +39,11 @@ directory.
|
||||||
## Interactive-only test configuration {#sec-nixos-test-interactive-configuration}
|
## Interactive-only test configuration {#sec-nixos-test-interactive-configuration}
|
||||||
|
|
||||||
The `.driverInteractive` attribute combines the regular test configuration with
|
The `.driverInteractive` attribute combines the regular test configuration with
|
||||||
definitions from the [`interactive` submodule](#opt-interactive). This gives you
|
definitions from the [`interactive` submodule](#test-opt-interactive). This gives you
|
||||||
a more usable, graphical, but slightly different configuration.
|
a more usable, graphical, but slightly different configuration.
|
||||||
|
|
||||||
You can add your own interactive-only test configuration by adding extra
|
You can add your own interactive-only test configuration by adding extra
|
||||||
configuration to the [`interactive` submodule](#opt-interactive).
|
configuration to the [`interactive` submodule](#test-opt-interactive).
|
||||||
|
|
||||||
To interactively run only the regular configuration, build the `<test>.driver` attribute
|
To interactively run only the regular configuration, build the `<test>.driver` attribute
|
||||||
instead, and call it with the flag `result/bin/nixos-test-driver --interactive`.
|
instead, and call it with the flag `result/bin/nixos-test-driver --interactive`.
|
||||||
|
|
|
@ -22,12 +22,12 @@ A NixOS test is a module that has the following structure:
|
||||||
```
|
```
|
||||||
|
|
||||||
We refer to the whole test above as a test module, whereas the values
|
We refer to the whole test above as a test module, whereas the values
|
||||||
in [`nodes.<name>`](#opt-nodes) are NixOS modules themselves.
|
in [`nodes.<name>`](#test-opt-nodes) are NixOS modules themselves.
|
||||||
|
|
||||||
The option [`testScript`](#opt-testScript) is a piece of Python code that executes the
|
The option [`testScript`](#test-opt-testScript) is a piece of Python code that executes the
|
||||||
test (described below). During the test, it will start one or more
|
test (described below). During the test, it will start one or more
|
||||||
virtual machines, the configuration of which is described by
|
virtual machines, the configuration of which is described by
|
||||||
the option [`nodes`](#opt-nodes).
|
the option [`nodes`](#test-opt-nodes).
|
||||||
|
|
||||||
An example of a single-node test is
|
An example of a single-node test is
|
||||||
[`login.nix`](https://github.com/NixOS/nixpkgs/blob/master/nixos/tests/login.nix).
|
[`login.nix`](https://github.com/NixOS/nixpkgs/blob/master/nixos/tests/login.nix).
|
||||||
|
@ -171,7 +171,7 @@ The following methods are available on machine objects:
|
||||||
least one will be returned.
|
least one will be returned.
|
||||||
|
|
||||||
::: {.note}
|
::: {.note}
|
||||||
This requires [`enableOCR`](#opt-enableOCR) to be set to `true`.
|
This requires [`enableOCR`](#test-opt-enableOCR) to be set to `true`.
|
||||||
:::
|
:::
|
||||||
|
|
||||||
`get_screen_text`
|
`get_screen_text`
|
||||||
|
@ -180,7 +180,7 @@ The following methods are available on machine objects:
|
||||||
machine\'s screen using optical character recognition.
|
machine\'s screen using optical character recognition.
|
||||||
|
|
||||||
::: {.note}
|
::: {.note}
|
||||||
This requires [`enableOCR`](#opt-enableOCR) to be set to `true`.
|
This requires [`enableOCR`](#test-opt-enableOCR) to be set to `true`.
|
||||||
:::
|
:::
|
||||||
|
|
||||||
`send_monitor_command`
|
`send_monitor_command`
|
||||||
|
@ -291,7 +291,7 @@ The following methods are available on machine objects:
|
||||||
`get_screen_text` and `get_screen_text_variants`).
|
`get_screen_text` and `get_screen_text_variants`).
|
||||||
|
|
||||||
::: {.note}
|
::: {.note}
|
||||||
This requires [`enableOCR`](#opt-enableOCR) to be set to `true`.
|
This requires [`enableOCR`](#test-opt-enableOCR) to be set to `true`.
|
||||||
:::
|
:::
|
||||||
|
|
||||||
`wait_for_console_text`
|
`wait_for_console_text`
|
||||||
|
|
|
@ -44,14 +44,14 @@ $ ./result/bin/nixos-test-driver --keep-vm-state
|
||||||
<para>
|
<para>
|
||||||
The <literal>.driverInteractive</literal> attribute combines the
|
The <literal>.driverInteractive</literal> attribute combines the
|
||||||
regular test configuration with definitions from the
|
regular test configuration with definitions from the
|
||||||
<link linkend="opt-interactive"><literal>interactive</literal>
|
<link linkend="test-opt-interactive"><literal>interactive</literal>
|
||||||
submodule</link>. This gives you a more usable, graphical, but
|
submodule</link>. This gives you a more usable, graphical, but
|
||||||
slightly different configuration.
|
slightly different configuration.
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
You can add your own interactive-only test configuration by adding
|
You can add your own interactive-only test configuration by adding
|
||||||
extra configuration to the
|
extra configuration to the
|
||||||
<link linkend="opt-interactive"><literal>interactive</literal>
|
<link linkend="test-opt-interactive"><literal>interactive</literal>
|
||||||
submodule</link>.
|
submodule</link>.
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
|
|
|
@ -24,16 +24,16 @@
|
||||||
<para>
|
<para>
|
||||||
We refer to the whole test above as a test module, whereas the
|
We refer to the whole test above as a test module, whereas the
|
||||||
values in
|
values in
|
||||||
<link linkend="opt-nodes"><literal>nodes.<name></literal></link>
|
<link linkend="test-opt-nodes"><literal>nodes.<name></literal></link>
|
||||||
are NixOS modules themselves.
|
are NixOS modules themselves.
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
The option
|
The option
|
||||||
<link linkend="opt-testScript"><literal>testScript</literal></link>
|
<link linkend="test-opt-testScript"><literal>testScript</literal></link>
|
||||||
is a piece of Python code that executes the test (described below).
|
is a piece of Python code that executes the test (described below).
|
||||||
During the test, it will start one or more virtual machines, the
|
During the test, it will start one or more virtual machines, the
|
||||||
configuration of which is described by the option
|
configuration of which is described by the option
|
||||||
<link linkend="opt-nodes"><literal>nodes</literal></link>.
|
<link linkend="test-opt-nodes"><literal>nodes</literal></link>.
|
||||||
</para>
|
</para>
|
||||||
<para>
|
<para>
|
||||||
An example of a single-node test is
|
An example of a single-node test is
|
||||||
|
@ -263,7 +263,7 @@ start_all()
|
||||||
<note>
|
<note>
|
||||||
<para>
|
<para>
|
||||||
This requires
|
This requires
|
||||||
<link linkend="opt-enableOCR"><literal>enableOCR</literal></link>
|
<link linkend="test-opt-enableOCR"><literal>enableOCR</literal></link>
|
||||||
to be set to <literal>true</literal>.
|
to be set to <literal>true</literal>.
|
||||||
</para>
|
</para>
|
||||||
</note>
|
</note>
|
||||||
|
@ -281,7 +281,7 @@ start_all()
|
||||||
<note>
|
<note>
|
||||||
<para>
|
<para>
|
||||||
This requires
|
This requires
|
||||||
<link linkend="opt-enableOCR"><literal>enableOCR</literal></link>
|
<link linkend="test-opt-enableOCR"><literal>enableOCR</literal></link>
|
||||||
to be set to <literal>true</literal>.
|
to be set to <literal>true</literal>.
|
||||||
</para>
|
</para>
|
||||||
</note>
|
</note>
|
||||||
|
@ -522,7 +522,7 @@ start_all()
|
||||||
<note>
|
<note>
|
||||||
<para>
|
<para>
|
||||||
This requires
|
This requires
|
||||||
<link linkend="opt-enableOCR"><literal>enableOCR</literal></link>
|
<link linkend="test-opt-enableOCR"><literal>enableOCR</literal></link>
|
||||||
to be set to <literal>true</literal>.
|
to be set to <literal>true</literal>.
|
||||||
</para>
|
</para>
|
||||||
</note>
|
</note>
|
||||||
|
|
|
@ -194,6 +194,13 @@
|
||||||
<link linkend="opt-services.komga.enable">services.komga</link>.
|
<link linkend="opt-services.komga.enable">services.komga</link>.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
<link xlink:href="https://tandoor.dev">Tandoor Recipes</link>,
|
||||||
|
a self-hosted multi-tenant recipe collection. Available as
|
||||||
|
<link xlink:href="options.html#opt-services.tandoor-recipes.enable">services.tandoor-recipes</link>.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
<link xlink:href="https://hbase.apache.org/">HBase
|
<link xlink:href="https://hbase.apache.org/">HBase
|
||||||
|
@ -313,6 +320,15 @@
|
||||||
<link linkend="opt-services.go-autoconfig.enable">services.go-autoconfig</link>.
|
<link linkend="opt-services.go-autoconfig.enable">services.go-autoconfig</link>.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
<link xlink:href="https://github.com/tmate-io/tmate-ssh-server">tmate-ssh-server</link>,
|
||||||
|
server side part of
|
||||||
|
<link xlink:href="https://tmate.io/">tmate</link>. Available
|
||||||
|
as
|
||||||
|
<link linkend="opt-services.tmate-ssh-server.enable">services.tmate-ssh-server</link>.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
<link xlink:href="https://www.grafana.com/oss/tempo/">Grafana
|
<link xlink:href="https://www.grafana.com/oss/tempo/">Grafana
|
||||||
|
@ -503,14 +519,6 @@
|
||||||
maintainer to update the package.
|
maintainer to update the package.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
<listitem>
|
|
||||||
<para>
|
|
||||||
The (previously undocumented) Nixpkgs configuration option
|
|
||||||
<literal>checkMeta</literal> now defaults to
|
|
||||||
<literal>true</literal>. This may cause evaluation failures
|
|
||||||
for packages with incorrect <literal>meta</literal> attribute.
|
|
||||||
</para>
|
|
||||||
</listitem>
|
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
xow package removed along with the
|
xow package removed along with the
|
||||||
|
@ -528,6 +536,16 @@
|
||||||
<literal>services.datadog-agent</literal> module.
|
<literal>services.datadog-agent</literal> module.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
<literal>teleport</literal> has been upgraded to major version
|
||||||
|
10. Please see upstream
|
||||||
|
<link xlink:href="https://goteleport.com/docs/ver/10.0/management/operations/upgrading/">upgrade
|
||||||
|
instructions</link> and
|
||||||
|
<link xlink:href="https://goteleport.com/docs/ver/10.0/changelog/#1000">release
|
||||||
|
notes</link>.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
lemmy module option
|
lemmy module option
|
||||||
|
@ -767,6 +785,13 @@
|
||||||
grants access to the hardware.
|
grants access to the hardware.
|
||||||
</para>
|
</para>
|
||||||
</listitem>
|
</listitem>
|
||||||
|
<listitem>
|
||||||
|
<para>
|
||||||
|
The Wordpress module got support for installing language packs
|
||||||
|
through
|
||||||
|
<literal>services.wordpress.sites.<site>.languages</literal>.
|
||||||
|
</para>
|
||||||
|
</listitem>
|
||||||
<listitem>
|
<listitem>
|
||||||
<para>
|
<para>
|
||||||
There is a new module for the <literal>thunar</literal>
|
There is a new module for the <literal>thunar</literal>
|
||||||
|
|
|
@ -72,6 +72,8 @@ In addition to numerous new and upgraded packages, this release has the followin
|
||||||
|
|
||||||
- [Komga](https://komga.org/), a free and open source comics/mangas media server. Available as [services.komga](#opt-services.komga.enable).
|
- [Komga](https://komga.org/), a free and open source comics/mangas media server. Available as [services.komga](#opt-services.komga.enable).
|
||||||
|
|
||||||
|
- [Tandoor Recipes](https://tandoor.dev), a self-hosted multi-tenant recipe collection. Available as [services.tandoor-recipes](options.html#opt-services.tandoor-recipes.enable).
|
||||||
|
|
||||||
- [HBase cluster](https://hbase.apache.org/), a distributed, scalable, big data store. Available as [services.hadoop.hbase](options.html#opt-services.hadoop.hbase.enable).
|
- [HBase cluster](https://hbase.apache.org/), a distributed, scalable, big data store. Available as [services.hadoop.hbase](options.html#opt-services.hadoop.hbase.enable).
|
||||||
|
|
||||||
- [Sachet](https://github.com/messagebird/sachet/), an SMS alerting tool for the Prometheus Alertmanager. Available as [services.prometheus.sachet](#opt-services.prometheus.sachet.enable).
|
- [Sachet](https://github.com/messagebird/sachet/), an SMS alerting tool for the Prometheus Alertmanager. Available as [services.prometheus.sachet](#opt-services.prometheus.sachet.enable).
|
||||||
|
@ -108,6 +110,8 @@ In addition to numerous new and upgraded packages, this release has the followin
|
||||||
|
|
||||||
- [go-autoconfig](https://github.com/L11R/go-autoconfig), IMAP/SMTP autodiscover server. Available as [services.go-autoconfig](#opt-services.go-autoconfig.enable).
|
- [go-autoconfig](https://github.com/L11R/go-autoconfig), IMAP/SMTP autodiscover server. Available as [services.go-autoconfig](#opt-services.go-autoconfig.enable).
|
||||||
|
|
||||||
|
- [tmate-ssh-server](https://github.com/tmate-io/tmate-ssh-server), server side part of [tmate](https://tmate.io/). Available as [services.tmate-ssh-server](#opt-services.tmate-ssh-server.enable).
|
||||||
|
|
||||||
- [Grafana Tempo](https://www.grafana.com/oss/tempo/), a distributed tracing store. Available as [services.tempo](#opt-services.tempo.enable).
|
- [Grafana Tempo](https://www.grafana.com/oss/tempo/), a distributed tracing store. Available as [services.tempo](#opt-services.tempo.enable).
|
||||||
|
|
||||||
- [AusweisApp2](https://www.ausweisapp.bund.de/), the authentication software for the German ID card. Available as [programs.ausweisapp](#opt-programs.ausweisapp.enable).
|
- [AusweisApp2](https://www.ausweisapp.bund.de/), the authentication software for the German ID card. Available as [programs.ausweisapp](#opt-programs.ausweisapp.enable).
|
||||||
|
@ -172,13 +176,12 @@ Available as [services.patroni](options.html#opt-services.patroni.enable).
|
||||||
|
|
||||||
- riak package removed along with `services.riak` module, due to lack of maintainer to update the package.
|
- riak package removed along with `services.riak` module, due to lack of maintainer to update the package.
|
||||||
|
|
||||||
- The (previously undocumented) Nixpkgs configuration option `checkMeta` now defaults to `true`. This may cause evaluation
|
|
||||||
failures for packages with incorrect `meta` attribute.
|
|
||||||
|
|
||||||
- xow package removed along with the `hardware.xow` module, due to the project being deprecated in favor of `xone`, which is available via the `hardware.xone` module.
|
- xow package removed along with the `hardware.xow` module, due to the project being deprecated in favor of `xone`, which is available via the `hardware.xone` module.
|
||||||
|
|
||||||
- dd-agent package removed along with the `services.dd-agent` module, due to the project being deprecated in favor of `datadog-agent`, which is available via the `services.datadog-agent` module.
|
- dd-agent package removed along with the `services.dd-agent` module, due to the project being deprecated in favor of `datadog-agent`, which is available via the `services.datadog-agent` module.
|
||||||
|
|
||||||
|
- `teleport` has been upgraded to major version 10. Please see upstream [upgrade instructions](https://goteleport.com/docs/ver/10.0/management/operations/upgrading/) and [release notes](https://goteleport.com/docs/ver/10.0/changelog/#1000).
|
||||||
|
|
||||||
- lemmy module option `services.lemmy.settings.database.createLocally`
|
- lemmy module option `services.lemmy.settings.database.createLocally`
|
||||||
moved to `services.lemmy.database.createLocally`.
|
moved to `services.lemmy.database.createLocally`.
|
||||||
|
|
||||||
|
@ -254,6 +257,8 @@ Available as [services.patroni](options.html#opt-services.patroni.enable).
|
||||||
|
|
||||||
- There is a new module for AMD SEV CPU functionality, which grants access to the hardware.
|
- There is a new module for AMD SEV CPU functionality, which grants access to the hardware.
|
||||||
|
|
||||||
|
- The Wordpress module got support for installing language packs through `services.wordpress.sites.<site>.languages`.
|
||||||
|
|
||||||
- There is a new module for the `thunar` program (the Xfce file manager), which depends on the `xfconf` dbus service, and also has a dbus service and a systemd unit. The option `services.xserver.desktopManager.xfce.thunarPlugins` has been renamed to `programs.thunar.plugins`, and in a future release it may be removed.
|
- There is a new module for the `thunar` program (the Xfce file manager), which depends on the `xfconf` dbus service, and also has a dbus service and a systemd unit. The option `services.xserver.desktopManager.xfce.thunarPlugins` has been renamed to `programs.thunar.plugins`, and in a future release it may be removed.
|
||||||
|
|
||||||
- There is a new module for the `xfconf` program (the Xfce configuration storage system), which has a dbus service.
|
- There is a new module for the `xfconf` program (the Xfce configuration storage system), which has a dbus service.
|
||||||
|
|
|
@ -143,13 +143,6 @@ let
|
||||||
properties
|
properties
|
||||||
);
|
);
|
||||||
|
|
||||||
featuresToProperties = features:
|
|
||||||
lib.listToAttrs
|
|
||||||
(builtins.map (feature: {
|
|
||||||
name = "feature@${feature}";
|
|
||||||
value = "enabled";
|
|
||||||
}) features);
|
|
||||||
|
|
||||||
createDatasets =
|
createDatasets =
|
||||||
let
|
let
|
||||||
datasetlist = lib.mapAttrsToList lib.nameValuePair datasets;
|
datasetlist = lib.mapAttrsToList lib.nameValuePair datasets;
|
||||||
|
|
|
@ -26,6 +26,8 @@
|
||||||
# If you include more than one option list into a document, you need to
|
# If you include more than one option list into a document, you need to
|
||||||
# provide different ids.
|
# provide different ids.
|
||||||
, variablelistId ? "configuration-variable-list"
|
, variablelistId ? "configuration-variable-list"
|
||||||
|
# Strig to prefix to the option XML/HTML id attributes.
|
||||||
|
, optionIdPrefix ? "opt-"
|
||||||
, revision ? "" # Specify revision for the options
|
, revision ? "" # Specify revision for the options
|
||||||
# a set of options the docs we are generating will be merged into, as if by recursiveUpdate.
|
# a set of options the docs we are generating will be merged into, as if by recursiveUpdate.
|
||||||
# used to split the options doc build into a static part (nixos/modules) and a dynamic part
|
# used to split the options doc build into a static part (nixos/modules) and a dynamic part
|
||||||
|
@ -183,6 +185,7 @@ in rec {
|
||||||
--stringparam documentType '${documentType}' \
|
--stringparam documentType '${documentType}' \
|
||||||
--stringparam revision '${revision}' \
|
--stringparam revision '${revision}' \
|
||||||
--stringparam variablelistId '${variablelistId}' \
|
--stringparam variablelistId '${variablelistId}' \
|
||||||
|
--stringparam optionIdPrefix '${optionIdPrefix}' \
|
||||||
-o intermediate.xml ${./options-to-docbook.xsl} sorted.xml
|
-o intermediate.xml ${./options-to-docbook.xsl} sorted.xml
|
||||||
${pkgs.libxslt.bin}/bin/xsltproc \
|
${pkgs.libxslt.bin}/bin/xsltproc \
|
||||||
-o "$out" ${./postprocess-option-descriptions.xsl} intermediate.xml
|
-o "$out" ${./postprocess-option-descriptions.xsl} intermediate.xml
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
<xsl:param name="documentType" />
|
<xsl:param name="documentType" />
|
||||||
<xsl:param name="program" />
|
<xsl:param name="program" />
|
||||||
<xsl:param name="variablelistId" />
|
<xsl:param name="variablelistId" />
|
||||||
|
<xsl:param name="optionIdPrefix" />
|
||||||
|
|
||||||
|
|
||||||
<xsl:template match="/expr/list">
|
<xsl:template match="/expr/list">
|
||||||
|
@ -36,7 +37,7 @@
|
||||||
<xsl:attribute name="id" namespace="http://www.w3.org/XML/1998/namespace"><xsl:value-of select="$variablelistId"/></xsl:attribute>
|
<xsl:attribute name="id" namespace="http://www.w3.org/XML/1998/namespace"><xsl:value-of select="$variablelistId"/></xsl:attribute>
|
||||||
<xsl:for-each select="attrs">
|
<xsl:for-each select="attrs">
|
||||||
<xsl:variable name="id" select="
|
<xsl:variable name="id" select="
|
||||||
concat('opt-',
|
concat($optionIdPrefix,
|
||||||
translate(
|
translate(
|
||||||
attr[@name = 'name']/string/@value,
|
attr[@name = 'name']/string/@value,
|
||||||
'*< >[]:',
|
'*< >[]:',
|
||||||
|
|
|
@ -131,15 +131,6 @@ let
|
||||||
properties
|
properties
|
||||||
);
|
);
|
||||||
|
|
||||||
featuresToProperties = features:
|
|
||||||
lib.listToAttrs
|
|
||||||
(builtins.map
|
|
||||||
(feature: {
|
|
||||||
name = "feature@${feature}";
|
|
||||||
value = "enabled";
|
|
||||||
})
|
|
||||||
features);
|
|
||||||
|
|
||||||
createDatasets =
|
createDatasets =
|
||||||
let
|
let
|
||||||
datasetlist = lib.mapAttrsToList lib.nameValuePair datasets;
|
datasetlist = lib.mapAttrsToList lib.nameValuePair datasets;
|
||||||
|
|
|
@ -19,7 +19,7 @@ rec {
|
||||||
];
|
];
|
||||||
|
|
||||||
qemuSerialDevice =
|
qemuSerialDevice =
|
||||||
if pkgs.stdenv.hostPlatform.isx86 || pkgs.stdenv.hostPlatform.isRiscV then "ttyS0"
|
if with pkgs.stdenv.hostPlatform; isx86 || isMips64 || isRiscV then "ttyS0"
|
||||||
else if (with pkgs.stdenv.hostPlatform; isAarch || isPower) then "ttyAMA0"
|
else if (with pkgs.stdenv.hostPlatform; isAarch || isPower) then "ttyAMA0"
|
||||||
else throw "Unknown QEMU serial device for system '${pkgs.stdenv.hostPlatform.system}'";
|
else throw "Unknown QEMU serial device for system '${pkgs.stdenv.hostPlatform.system}'";
|
||||||
|
|
||||||
|
|
|
@ -120,7 +120,7 @@ in
|
||||||
};
|
};
|
||||||
|
|
||||||
qemu.package = mkOption {
|
qemu.package = mkOption {
|
||||||
description = mdDoc "Which qemu package to use for the virtualisation of [{option}`nodes`](#opt-nodes).";
|
description = mdDoc "Which qemu package to use for the virtualisation of [{option}`nodes`](#test-opt-nodes).";
|
||||||
type = types.package;
|
type = types.package;
|
||||||
default = hostPkgs.qemu_test;
|
default = hostPkgs.qemu_test;
|
||||||
defaultText = "hostPkgs.qemu_test";
|
defaultText = "hostPkgs.qemu_test";
|
||||||
|
@ -152,7 +152,7 @@ in
|
||||||
description = mdDoc ''
|
description = mdDoc ''
|
||||||
Extra arguments to pass to the test driver.
|
Extra arguments to pass to the test driver.
|
||||||
|
|
||||||
They become part of [{option}`driver`](#opt-driver) via `wrapProgram`.
|
They become part of [{option}`driver`](#test-opt-driver) via `wrapProgram`.
|
||||||
'';
|
'';
|
||||||
type = types.listOf types.str;
|
type = types.listOf types.str;
|
||||||
default = [];
|
default = [];
|
||||||
|
@ -172,7 +172,7 @@ in
|
||||||
description = mdDoc ''
|
description = mdDoc ''
|
||||||
Disable type checking. This must not be enabled for new NixOS tests.
|
Disable type checking. This must not be enabled for new NixOS tests.
|
||||||
|
|
||||||
This may speed up your iteration cycle, unless you're working on the [{option}`testScript`](#opt-testScript).
|
This may speed up your iteration cycle, unless you're working on the [{option}`testScript`](#test-opt-testScript).
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -24,14 +24,14 @@ in
|
||||||
type = types.nullOr types.int;
|
type = types.nullOr types.int;
|
||||||
default = null; # NOTE: null values are filtered out by `meta`.
|
default = null; # NOTE: null values are filtered out by `meta`.
|
||||||
description = mdDoc ''
|
description = mdDoc ''
|
||||||
The [{option}`test`](#opt-test)'s [`meta.timeout`](https://nixos.org/manual/nixpkgs/stable/#var-meta-timeout) in seconds.
|
The [{option}`test`](#test-opt-test)'s [`meta.timeout`](https://nixos.org/manual/nixpkgs/stable/#var-meta-timeout) in seconds.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
broken = lib.mkOption {
|
broken = lib.mkOption {
|
||||||
type = types.bool;
|
type = types.bool;
|
||||||
default = false;
|
default = false;
|
||||||
description = mdDoc ''
|
description = mdDoc ''
|
||||||
Sets the [`meta.broken`](https://nixos.org/manual/nixpkgs/stable/#var-meta-broken) attribute on the [{option}`test`](#opt-test) derivation.
|
Sets the [`meta.broken`](https://nixos.org/manual/nixpkgs/stable/#var-meta-broken) attribute on the [{option}`test`](#test-opt-test) derivation.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -7,7 +7,7 @@ in
|
||||||
description = mdDoc ''
|
description = mdDoc ''
|
||||||
The name of the test.
|
The name of the test.
|
||||||
|
|
||||||
This is used in the derivation names of the [{option}`driver`](#opt-driver) and [{option}`test`](#opt-test) runner.
|
This is used in the derivation names of the [{option}`driver`](#test-opt-driver) and [{option}`test`](#test-opt-test) runner.
|
||||||
'';
|
'';
|
||||||
type = types.str;
|
type = types.str;
|
||||||
};
|
};
|
||||||
|
|
|
@ -44,7 +44,7 @@ in
|
||||||
description = mdDoc ''
|
description = mdDoc ''
|
||||||
An attribute set of NixOS configuration modules.
|
An attribute set of NixOS configuration modules.
|
||||||
|
|
||||||
The configurations are augmented by the [`defaults`](#opt-defaults) option.
|
The configurations are augmented by the [`defaults`](#test-opt-defaults) option.
|
||||||
|
|
||||||
They are assigned network addresses according to the `nixos/lib/testing/network.nix` module.
|
They are assigned network addresses according to the `nixos/lib/testing/network.nix` module.
|
||||||
|
|
||||||
|
@ -54,7 +54,7 @@ in
|
||||||
|
|
||||||
defaults = mkOption {
|
defaults = mkOption {
|
||||||
description = mdDoc ''
|
description = mdDoc ''
|
||||||
NixOS configuration that is applied to all [{option}`nodes`](#opt-nodes).
|
NixOS configuration that is applied to all [{option}`nodes`](#test-opt-nodes).
|
||||||
'';
|
'';
|
||||||
type = types.deferredModule;
|
type = types.deferredModule;
|
||||||
default = { };
|
default = { };
|
||||||
|
@ -62,7 +62,7 @@ in
|
||||||
|
|
||||||
extraBaseModules = mkOption {
|
extraBaseModules = mkOption {
|
||||||
description = mdDoc ''
|
description = mdDoc ''
|
||||||
NixOS configuration that, like [{option}`defaults`](#opt-defaults), is applied to all [{option}`nodes`](#opt-nodes) and can not be undone with [`specialisation.<name>.inheritParentConfig`](https://search.nixos.org/options?show=specialisation.%3Cname%3E.inheritParentConfig&from=0&size=50&sort=relevance&type=packages&query=specialisation).
|
NixOS configuration that, like [{option}`defaults`](#test-opt-defaults), is applied to all [{option}`nodes`](#test-opt-nodes) and can not be undone with [`specialisation.<name>.inheritParentConfig`](https://search.nixos.org/options?show=specialisation.%3Cname%3E.inheritParentConfig&from=0&size=50&sort=relevance&type=packages&query=specialisation).
|
||||||
'';
|
'';
|
||||||
type = types.deferredModule;
|
type = types.deferredModule;
|
||||||
default = { };
|
default = { };
|
||||||
|
@ -82,7 +82,7 @@ in
|
||||||
type = types.bool;
|
type = types.bool;
|
||||||
default = false;
|
default = false;
|
||||||
description = mdDoc ''
|
description = mdDoc ''
|
||||||
Enable to configure all [{option}`nodes`](#opt-nodes) to run with a minimal kernel.
|
Enable to configure all [{option}`nodes`](#test-opt-nodes) to run with a minimal kernel.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -48,6 +48,6 @@ in
|
||||||
};
|
};
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
maintainers = with lib.maintainers; [ superherointj ];
|
maintainers = with lib.maintainers; [ ];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,7 +16,7 @@ in
|
||||||
extraModprobeConfig =
|
extraModprobeConfig =
|
||||||
mkIf
|
mkIf
|
||||||
(config.hardware.bluetooth.enable &&
|
(config.hardware.bluetooth.enable &&
|
||||||
(lib.versionOlder config.boot.kernelPackages.kernel.version "5.12"))
|
(lib.versionOlder config.boot.kernelPackages.kernel.version "5.12"))
|
||||||
"options bluetooth disable_ertm=1";
|
"options bluetooth disable_ertm=1";
|
||||||
|
|
||||||
extraModulePackages = with config.boot.kernelPackages; [ xpadneo ];
|
extraModulePackages = with config.boot.kernelPackages; [ xpadneo ];
|
||||||
|
|
|
@ -31,6 +31,7 @@ let
|
||||||
in
|
in
|
||||||
|
|
||||||
{
|
{
|
||||||
|
nix.registry.nixpkgs.flake.outPath = builtins.path { name = "source"; path = pkgs.path; };
|
||||||
# Provide the NixOS/Nixpkgs sources in /etc/nixos. This is required
|
# Provide the NixOS/Nixpkgs sources in /etc/nixos. This is required
|
||||||
# for nixos-install.
|
# for nixos-install.
|
||||||
boot.postBootCommands = mkAfter
|
boot.postBootCommands = mkAfter
|
||||||
|
|
|
@ -15,7 +15,7 @@ let
|
||||||
inherit system pkgs;
|
inherit system pkgs;
|
||||||
};
|
};
|
||||||
|
|
||||||
interactiveDriver = (testing.makeTest { inherit nodes; name = "network"; testScript = "start_all(); join_all();"; }).driverInteractive;
|
interactiveDriver = (testing.makeTest { inherit nodes; name = "network"; testScript = "start_all(); join_all();"; }).test.driverInteractive;
|
||||||
in
|
in
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -653,6 +653,7 @@
|
||||||
./services/misc/svnserve.nix
|
./services/misc/svnserve.nix
|
||||||
./services/misc/synergy.nix
|
./services/misc/synergy.nix
|
||||||
./services/misc/sysprof.nix
|
./services/misc/sysprof.nix
|
||||||
|
./services/misc/tandoor-recipes.nix
|
||||||
./services/misc/taskserver
|
./services/misc/taskserver
|
||||||
./services/misc/tiddlywiki.nix
|
./services/misc/tiddlywiki.nix
|
||||||
./services/misc/tp-auto-kbbl.nix
|
./services/misc/tp-auto-kbbl.nix
|
||||||
|
@ -721,7 +722,7 @@
|
||||||
./services/network-filesystems/drbd.nix
|
./services/network-filesystems/drbd.nix
|
||||||
./services/network-filesystems/glusterfs.nix
|
./services/network-filesystems/glusterfs.nix
|
||||||
./services/network-filesystems/kbfs.nix
|
./services/network-filesystems/kbfs.nix
|
||||||
./services/network-filesystems/ipfs.nix
|
./services/network-filesystems/kubo.nix
|
||||||
./services/network-filesystems/litestream/default.nix
|
./services/network-filesystems/litestream/default.nix
|
||||||
./services/network-filesystems/netatalk.nix
|
./services/network-filesystems/netatalk.nix
|
||||||
./services/network-filesystems/nfsd.nix
|
./services/network-filesystems/nfsd.nix
|
||||||
|
@ -959,6 +960,7 @@
|
||||||
./services/networking/tinc.nix
|
./services/networking/tinc.nix
|
||||||
./services/networking/tinydns.nix
|
./services/networking/tinydns.nix
|
||||||
./services/networking/tftpd.nix
|
./services/networking/tftpd.nix
|
||||||
|
./services/networking/tmate-ssh-server.nix
|
||||||
./services/networking/trickster.nix
|
./services/networking/trickster.nix
|
||||||
./services/networking/tox-bootstrapd.nix
|
./services/networking/tox-bootstrapd.nix
|
||||||
./services/networking/tox-node.nix
|
./services/networking/tox-node.nix
|
||||||
|
|
|
@ -69,7 +69,7 @@ in {
|
||||||
ProtectKernelTunables = true;
|
ProtectKernelTunables = true;
|
||||||
ProtectSystem = "full";
|
ProtectSystem = "full";
|
||||||
StateDirectory = "rust-motd";
|
StateDirectory = "rust-motd";
|
||||||
RestrictAddressFamilies = "none";
|
RestrictAddressFamilies = [ "AF_UNIX" ];
|
||||||
RestrictNamespaces = true;
|
RestrictNamespaces = true;
|
||||||
RestrictRealtime = true;
|
RestrictRealtime = true;
|
||||||
RestrictSUIDSGID = true;
|
RestrictSUIDSGID = true;
|
||||||
|
|
|
@ -190,7 +190,7 @@ let
|
||||||
);
|
);
|
||||||
renewOpts = escapeShellArgs (
|
renewOpts = escapeShellArgs (
|
||||||
commonOpts
|
commonOpts
|
||||||
++ [ "renew" ]
|
++ [ "renew" "--no-random-sleep" ]
|
||||||
++ optionals data.ocspMustStaple [ "--must-staple" ]
|
++ optionals data.ocspMustStaple [ "--must-staple" ]
|
||||||
++ data.extraLegoRenewFlags
|
++ data.extraLegoRenewFlags
|
||||||
);
|
);
|
||||||
|
@ -223,9 +223,9 @@ let
|
||||||
# have many certificates, the renewals are distributed over
|
# have many certificates, the renewals are distributed over
|
||||||
# the course of the day to avoid rate limits.
|
# the course of the day to avoid rate limits.
|
||||||
AccuracySec = "${toString (_24hSecs / numCerts)}s";
|
AccuracySec = "${toString (_24hSecs / numCerts)}s";
|
||||||
|
|
||||||
# Skew randomly within the day, per https://letsencrypt.org/docs/integration-guide/.
|
# Skew randomly within the day, per https://letsencrypt.org/docs/integration-guide/.
|
||||||
RandomizedDelaySec = "24h";
|
RandomizedDelaySec = "24h";
|
||||||
|
FixedRandomDelay = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -325,6 +325,7 @@ let
|
||||||
'');
|
'');
|
||||||
} // optionalAttrs (data.listenHTTP != null && toInt (elemAt (splitString ":" data.listenHTTP) 1) < 1024) {
|
} // optionalAttrs (data.listenHTTP != null && toInt (elemAt (splitString ":" data.listenHTTP) 1) < 1024) {
|
||||||
CapabilityBoundingSet = [ "CAP_NET_BIND_SERVICE" ];
|
CapabilityBoundingSet = [ "CAP_NET_BIND_SERVICE" ];
|
||||||
|
AmbientCapabilities = [ "CAP_NET_BIND_SERVICE" ];
|
||||||
};
|
};
|
||||||
|
|
||||||
# Working directory will be /tmp
|
# Working directory will be /tmp
|
||||||
|
@ -376,7 +377,8 @@ let
|
||||||
|
|
||||||
# Check if we can renew.
|
# Check if we can renew.
|
||||||
# We can only renew if the list of domains has not changed.
|
# We can only renew if the list of domains has not changed.
|
||||||
if cmp -s domainhash.txt certificates/domainhash.txt && [ -e 'certificates/${keyName}.key' -a -e 'certificates/${keyName}.crt' -a -n "$(ls -1 accounts)" ]; then
|
# We also need an account key. Avoids #190493
|
||||||
|
if cmp -s domainhash.txt certificates/domainhash.txt && [ -e 'certificates/${keyName}.key' -a -e 'certificates/${keyName}.crt' -a -n "$(find accounts -name '${data.email}.key')" ]; then
|
||||||
|
|
||||||
# Even if a cert is not expired, it may be revoked by the CA.
|
# Even if a cert is not expired, it may be revoked by the CA.
|
||||||
# Try to renew, and silently fail if the cert is not expired.
|
# Try to renew, and silently fail if the cert is not expired.
|
||||||
|
|
|
@ -415,7 +415,7 @@ in {
|
||||||
# Empty string first, so we will never accidentally have an empty capability bounding set
|
# Empty string first, so we will never accidentally have an empty capability bounding set
|
||||||
# https://github.com/NixOS/nixpkgs/issues/120617#issuecomment-830685115
|
# https://github.com/NixOS/nixpkgs/issues/120617#issuecomment-830685115
|
||||||
""
|
""
|
||||||
] ++ lib.optionals (builtins.any useComponent [ "bluetooth" "bluetooth_le_tracker" "bluetooth_tracker" "eq3btsmart" "fjaraskupan" "govee_ble" "homekit_controller" "inkbird" "moat" "sensorpush" "switchbot" "xiaomi_ble" ]) [
|
] ++ lib.optionals (builtins.any useComponent componentsUsingBluetooth) [
|
||||||
# Required for interaction with hci devices and bluetooth sockets, identified by bluetooth-adapters dependency
|
# Required for interaction with hci devices and bluetooth sockets, identified by bluetooth-adapters dependency
|
||||||
# https://www.home-assistant.io/integrations/bluetooth_le_tracker/#rootless-setup-on-core-installs
|
# https://www.home-assistant.io/integrations/bluetooth_le_tracker/#rootless-setup-on-core-installs
|
||||||
"CAP_NET_ADMIN"
|
"CAP_NET_ADMIN"
|
||||||
|
@ -432,8 +432,30 @@ in {
|
||||||
]);
|
]);
|
||||||
componentsUsingBluetooth = [
|
componentsUsingBluetooth = [
|
||||||
# Components that require the AF_BLUETOOTH address family
|
# Components that require the AF_BLUETOOTH address family
|
||||||
"bluetooth_tracker"
|
"august"
|
||||||
|
"bluemaestro"
|
||||||
|
"bluetooth"
|
||||||
"bluetooth_le_tracker"
|
"bluetooth_le_tracker"
|
||||||
|
"bluetooth_tracker"
|
||||||
|
"bthome"
|
||||||
|
"default_config"
|
||||||
|
"eq3btsmart"
|
||||||
|
"esphome"
|
||||||
|
"fjaraskupan"
|
||||||
|
"govee_ble"
|
||||||
|
"homekit_controller"
|
||||||
|
"inkbird"
|
||||||
|
"led_ble"
|
||||||
|
"melnor"
|
||||||
|
"moat"
|
||||||
|
"qingping"
|
||||||
|
"sensorpro"
|
||||||
|
"sensorpush"
|
||||||
|
"switchbot"
|
||||||
|
"thermobeacon"
|
||||||
|
"thermopro"
|
||||||
|
"xiaomi_ble"
|
||||||
|
"yalexs_ble"
|
||||||
];
|
];
|
||||||
componentsUsingPing = [
|
componentsUsingPing = [
|
||||||
# Components that require the capset syscall for the ping wrapper
|
# Components that require the capset syscall for the ping wrapper
|
||||||
|
@ -450,7 +472,6 @@ in {
|
||||||
# mostly the ones using config flows already.
|
# mostly the ones using config flows already.
|
||||||
"acer_projector"
|
"acer_projector"
|
||||||
"alarmdecoder"
|
"alarmdecoder"
|
||||||
"arduino"
|
|
||||||
"blackbird"
|
"blackbird"
|
||||||
"deconz"
|
"deconz"
|
||||||
"dsmr"
|
"dsmr"
|
||||||
|
@ -464,7 +485,6 @@ in {
|
||||||
"insteon"
|
"insteon"
|
||||||
"kwb"
|
"kwb"
|
||||||
"lacrosse"
|
"lacrosse"
|
||||||
"mhz19"
|
|
||||||
"modbus"
|
"modbus"
|
||||||
"modem_callerid"
|
"modem_callerid"
|
||||||
"mysensors"
|
"mysensors"
|
||||||
|
@ -480,7 +500,6 @@ in {
|
||||||
"usb"
|
"usb"
|
||||||
"velbus"
|
"velbus"
|
||||||
"w800rf32"
|
"w800rf32"
|
||||||
"xbee"
|
|
||||||
"zha"
|
"zha"
|
||||||
"zwave"
|
"zwave"
|
||||||
"zwave_js"
|
"zwave_js"
|
||||||
|
|
|
@ -212,6 +212,9 @@ with lib;
|
||||||
|
|
||||||
systemd.tmpfiles.rules = [
|
systemd.tmpfiles.rules = [
|
||||||
"d /var/spool/nullmailer - ${cfg.user} - - -"
|
"d /var/spool/nullmailer - ${cfg.user} - - -"
|
||||||
|
"d /var/spool/nullmailer/failed 750 ${cfg.user} - - -"
|
||||||
|
"d /var/spool/nullmailer/queue 750 ${cfg.user} - - -"
|
||||||
|
"d /var/spool/nullmailer/tmp 750 ${cfg.user} - - -"
|
||||||
];
|
];
|
||||||
|
|
||||||
systemd.services.nullmailer = {
|
systemd.services.nullmailer = {
|
||||||
|
@ -220,7 +223,6 @@ with lib;
|
||||||
after = [ "network.target" ];
|
after = [ "network.target" ];
|
||||||
|
|
||||||
preStart = ''
|
preStart = ''
|
||||||
mkdir -p /var/spool/nullmailer/{queue,tmp,failed}
|
|
||||||
rm -f /var/spool/nullmailer/trigger && mkfifo -m 660 /var/spool/nullmailer/trigger
|
rm -f /var/spool/nullmailer/trigger && mkfifo -m 660 /var/spool/nullmailer/trigger
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
|
|
@ -195,6 +195,25 @@ in
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
options.sync_api.search = {
|
||||||
|
enable = lib.mkEnableOption (lib.mdDoc "Dendrite's full-text search engine");
|
||||||
|
index_path = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
default = "${workingDir}/searchindex";
|
||||||
|
description = lib.mdDoc ''
|
||||||
|
The path the search index will be created in.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
language = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
default = "en";
|
||||||
|
description = lib.mdDoc ''
|
||||||
|
The language most likely to be used on the server - used when indexing, to
|
||||||
|
ensure the returned results match expectations. A full list of possible languages
|
||||||
|
can be found at https://github.com/blevesearch/bleve/tree/master/analysis/lang
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
options.user_api = {
|
options.user_api = {
|
||||||
account_database = {
|
account_database = {
|
||||||
connection_string = lib.mkOption {
|
connection_string = lib.mkOption {
|
||||||
|
|
144
third_party/nixpkgs/nixos/modules/services/misc/tandoor-recipes.nix
vendored
Normal file
144
third_party/nixpkgs/nixos/modules/services/misc/tandoor-recipes.nix
vendored
Normal file
|
@ -0,0 +1,144 @@
|
||||||
|
{ config, pkgs, lib, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
let
|
||||||
|
cfg = config.services.tandoor-recipes;
|
||||||
|
pkg = cfg.package;
|
||||||
|
|
||||||
|
# SECRET_KEY through an env file
|
||||||
|
env = {
|
||||||
|
GUNICORN_CMD_ARGS = "--bind=${cfg.address}:${toString cfg.port}";
|
||||||
|
DEBUG = "0";
|
||||||
|
MEDIA_ROOT = "/var/lib/tandoor-recipes";
|
||||||
|
} // optionalAttrs (config.time.timeZone != null) {
|
||||||
|
TIMEZONE = config.time.timeZone;
|
||||||
|
} // (
|
||||||
|
lib.mapAttrs (_: toString) cfg.extraConfig
|
||||||
|
);
|
||||||
|
|
||||||
|
manage =
|
||||||
|
let
|
||||||
|
setupEnv = lib.concatStringsSep "\n" (mapAttrsToList (name: val: "export ${name}=\"${val}\"") env);
|
||||||
|
in
|
||||||
|
pkgs.writeShellScript "manage" ''
|
||||||
|
${setupEnv}
|
||||||
|
exec ${pkg}/bin/tandoor-recipes "$@"
|
||||||
|
'';
|
||||||
|
in
|
||||||
|
{
|
||||||
|
meta.maintainers = with maintainers; [ ambroisie ];
|
||||||
|
|
||||||
|
options.services.tandoor-recipes = {
|
||||||
|
enable = mkOption {
|
||||||
|
type = lib.types.bool;
|
||||||
|
default = false;
|
||||||
|
description = lib.mdDoc ''
|
||||||
|
Enable Tandoor Recipes.
|
||||||
|
|
||||||
|
When started, the Tandoor Recipes database is automatically created if
|
||||||
|
it doesn't exist and updated if the package has changed. Both tasks are
|
||||||
|
achieved by running a Django migration.
|
||||||
|
|
||||||
|
A script to manage the instance (by wrapping Django's manage.py) is linked to
|
||||||
|
`/var/lib/tandoor-recipes/tandoor-recipes-manage`.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
address = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
default = "localhost";
|
||||||
|
description = lib.mdDoc "Web interface address.";
|
||||||
|
};
|
||||||
|
|
||||||
|
port = mkOption {
|
||||||
|
type = types.port;
|
||||||
|
default = 8080;
|
||||||
|
description = lib.mdDoc "Web interface port.";
|
||||||
|
};
|
||||||
|
|
||||||
|
extraConfig = mkOption {
|
||||||
|
type = types.attrs;
|
||||||
|
default = { };
|
||||||
|
description = lib.mdDoc ''
|
||||||
|
Extra tandoor recipes config options.
|
||||||
|
|
||||||
|
See [the example dot-env file](https://raw.githubusercontent.com/vabene1111/recipes/master/.env.template)
|
||||||
|
for available options.
|
||||||
|
'';
|
||||||
|
example = {
|
||||||
|
ENABLE_SIGNUP = "1";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
package = mkOption {
|
||||||
|
type = types.package;
|
||||||
|
default = pkgs.tandoor-recipes;
|
||||||
|
defaultText = literalExpression "pkgs.tandoor-recipes";
|
||||||
|
description = lib.mdDoc "The Tandoor Recipes package to use.";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
systemd.services.tandoor-recipes = {
|
||||||
|
description = "Tandoor Recipes server";
|
||||||
|
|
||||||
|
serviceConfig = {
|
||||||
|
ExecStart = ''
|
||||||
|
${pkg.python.pkgs.gunicorn}/bin/gunicorn recipes.wsgi
|
||||||
|
'';
|
||||||
|
Restart = "on-failure";
|
||||||
|
|
||||||
|
User = "tandoor_recipes";
|
||||||
|
DynamicUser = true;
|
||||||
|
StateDirectory = "tandoor-recipes";
|
||||||
|
WorkingDirectory = "/var/lib/tandoor-recipes";
|
||||||
|
RuntimeDirectory = "tandoor-recipes";
|
||||||
|
|
||||||
|
BindReadOnlyPaths = [
|
||||||
|
"${config.environment.etc."ssl/certs/ca-certificates.crt".source}:/etc/ssl/certs/ca-certificates.crt"
|
||||||
|
builtins.storeDir
|
||||||
|
"-/etc/resolv.conf"
|
||||||
|
"-/etc/nsswitch.conf"
|
||||||
|
"-/etc/hosts"
|
||||||
|
"-/etc/localtime"
|
||||||
|
"-/run/postgresql"
|
||||||
|
];
|
||||||
|
CapabilityBoundingSet = "";
|
||||||
|
LockPersonality = true;
|
||||||
|
MemoryDenyWriteExecute = true;
|
||||||
|
PrivateDevices = true;
|
||||||
|
PrivateUsers = true;
|
||||||
|
ProtectClock = true;
|
||||||
|
ProtectControlGroups = true;
|
||||||
|
ProtectHome = true;
|
||||||
|
ProtectHostname = true;
|
||||||
|
ProtectKernelLogs = true;
|
||||||
|
ProtectKernelModules = true;
|
||||||
|
ProtectKernelTunables = true;
|
||||||
|
RestrictAddressFamilies = [ "AF_UNIX" "AF_INET" "AF_INET6" ];
|
||||||
|
RestrictNamespaces = true;
|
||||||
|
RestrictRealtime = true;
|
||||||
|
SystemCallArchitectures = "native";
|
||||||
|
# gunicorn needs setuid
|
||||||
|
SystemCallFilter = [ "@system-service" "~@privileged" "@resources" "@setuid" "@keyring" ];
|
||||||
|
UMask = "0066";
|
||||||
|
} // lib.optionalAttrs (cfg.port < 1024) {
|
||||||
|
AmbientCapabilities = [ "CAP_NET_BIND_SERVICE" ];
|
||||||
|
CapabilityBoundingSet = [ "CAP_NET_BIND_SERVICE" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
|
||||||
|
preStart = ''
|
||||||
|
ln -sf ${manage} tandoor-recipes-manage
|
||||||
|
|
||||||
|
# Let django migrate the DB as needed
|
||||||
|
${pkg}/bin/tandoor-recipes migrate
|
||||||
|
'';
|
||||||
|
|
||||||
|
environment = env // {
|
||||||
|
PYTHONPATH = "${pkg.python.pkgs.makePythonPath pkg.propagatedBuildInputs}:${pkg}/lib/tandoor-recipes";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -1,9 +1,9 @@
|
||||||
{ config, lib, pkgs, utils, ... }:
|
{ config, lib, pkgs, utils, ... }:
|
||||||
with lib;
|
with lib;
|
||||||
let
|
let
|
||||||
cfg = config.services.ipfs;
|
cfg = config.services.kubo;
|
||||||
|
|
||||||
ipfsFlags = utils.escapeSystemdExecArgs (
|
kuboFlags = utils.escapeSystemdExecArgs (
|
||||||
optional cfg.autoMount "--mount" ++
|
optional cfg.autoMount "--mount" ++
|
||||||
optional cfg.enableGC "--enable-gc" ++
|
optional cfg.enableGC "--enable-gc" ++
|
||||||
optional (cfg.serviceFdlimit != null) "--manage-fdlimit=false" ++
|
optional (cfg.serviceFdlimit != null) "--manage-fdlimit=false" ++
|
||||||
|
@ -50,27 +50,27 @@ in
|
||||||
|
|
||||||
options = {
|
options = {
|
||||||
|
|
||||||
services.ipfs = {
|
services.kubo = {
|
||||||
|
|
||||||
enable = mkEnableOption (lib.mdDoc "Interplanetary File System (WARNING: may cause severe network degredation)");
|
enable = mkEnableOption (lib.mdDoc "Interplanetary File System (WARNING: may cause severe network degredation)");
|
||||||
|
|
||||||
package = mkOption {
|
package = mkOption {
|
||||||
type = types.package;
|
type = types.package;
|
||||||
default = pkgs.ipfs;
|
default = pkgs.kubo;
|
||||||
defaultText = literalExpression "pkgs.ipfs";
|
defaultText = literalExpression "pkgs.kubo";
|
||||||
description = lib.mdDoc "Which IPFS package to use.";
|
description = lib.mdDoc "Which Kubo package to use.";
|
||||||
};
|
};
|
||||||
|
|
||||||
user = mkOption {
|
user = mkOption {
|
||||||
type = types.str;
|
type = types.str;
|
||||||
default = "ipfs";
|
default = "ipfs";
|
||||||
description = lib.mdDoc "User under which the IPFS daemon runs";
|
description = lib.mdDoc "User under which the Kubo daemon runs";
|
||||||
};
|
};
|
||||||
|
|
||||||
group = mkOption {
|
group = mkOption {
|
||||||
type = types.str;
|
type = types.str;
|
||||||
default = "ipfs";
|
default = "ipfs";
|
||||||
description = lib.mdDoc "Group under which the IPFS daemon runs";
|
description = lib.mdDoc "Group under which the Kubo daemon runs";
|
||||||
};
|
};
|
||||||
|
|
||||||
dataDir = mkOption {
|
dataDir = mkOption {
|
||||||
|
@ -84,7 +84,7 @@ in
|
||||||
then "/var/lib/ipfs"
|
then "/var/lib/ipfs"
|
||||||
else "/var/lib/ipfs/.ipfs"
|
else "/var/lib/ipfs/.ipfs"
|
||||||
'';
|
'';
|
||||||
description = lib.mdDoc "The data dir for IPFS";
|
description = lib.mdDoc "The data dir for Kubo";
|
||||||
};
|
};
|
||||||
|
|
||||||
defaultMode = mkOption {
|
defaultMode = mkOption {
|
||||||
|
@ -96,13 +96,13 @@ in
|
||||||
autoMount = mkOption {
|
autoMount = mkOption {
|
||||||
type = types.bool;
|
type = types.bool;
|
||||||
default = false;
|
default = false;
|
||||||
description = lib.mdDoc "Whether IPFS should try to mount /ipfs and /ipns at startup.";
|
description = lib.mdDoc "Whether Kubo should try to mount /ipfs and /ipns at startup.";
|
||||||
};
|
};
|
||||||
|
|
||||||
autoMigrate = mkOption {
|
autoMigrate = mkOption {
|
||||||
type = types.bool;
|
type = types.bool;
|
||||||
default = true;
|
default = true;
|
||||||
description = lib.mdDoc "Whether IPFS should try to run the fs-repo-migration at startup.";
|
description = lib.mdDoc "Whether Kubo should try to run the fs-repo-migration at startup.";
|
||||||
};
|
};
|
||||||
|
|
||||||
ipfsMountDir = mkOption {
|
ipfsMountDir = mkOption {
|
||||||
|
@ -126,7 +126,7 @@ in
|
||||||
apiAddress = mkOption {
|
apiAddress = mkOption {
|
||||||
type = types.str;
|
type = types.str;
|
||||||
default = "/ip4/127.0.0.1/tcp/5001";
|
default = "/ip4/127.0.0.1/tcp/5001";
|
||||||
description = lib.mdDoc "Where IPFS exposes its API to";
|
description = lib.mdDoc "Where Kubo exposes its API to";
|
||||||
};
|
};
|
||||||
|
|
||||||
swarmAddress = mkOption {
|
swarmAddress = mkOption {
|
||||||
|
@ -137,7 +137,7 @@ in
|
||||||
"/ip4/0.0.0.0/udp/4001/quic"
|
"/ip4/0.0.0.0/udp/4001/quic"
|
||||||
"/ip6/::/udp/4001/quic"
|
"/ip6/::/udp/4001/quic"
|
||||||
];
|
];
|
||||||
description = lib.mdDoc "Where IPFS listens for incoming p2p connections";
|
description = lib.mdDoc "Where Kubo listens for incoming p2p connections";
|
||||||
};
|
};
|
||||||
|
|
||||||
enableGC = mkOption {
|
enableGC = mkOption {
|
||||||
|
@ -174,14 +174,14 @@ in
|
||||||
|
|
||||||
extraFlags = mkOption {
|
extraFlags = mkOption {
|
||||||
type = types.listOf types.str;
|
type = types.listOf types.str;
|
||||||
description = lib.mdDoc "Extra flags passed to the IPFS daemon";
|
description = lib.mdDoc "Extra flags passed to the Kubo daemon";
|
||||||
default = [ ];
|
default = [ ];
|
||||||
};
|
};
|
||||||
|
|
||||||
localDiscovery = mkOption {
|
localDiscovery = mkOption {
|
||||||
type = types.bool;
|
type = types.bool;
|
||||||
description = lib.mdDoc ''Whether to enable local discovery for the ipfs daemon.
|
description = lib.mdDoc ''Whether to enable local discovery for the Kubo daemon.
|
||||||
This will allow ipfs to scan ports on your local network. Some hosting services will ban you if you do this.
|
This will allow Kubo to scan ports on your local network. Some hosting services will ban you if you do this.
|
||||||
'';
|
'';
|
||||||
default = false;
|
default = false;
|
||||||
};
|
};
|
||||||
|
@ -189,14 +189,14 @@ in
|
||||||
serviceFdlimit = mkOption {
|
serviceFdlimit = mkOption {
|
||||||
type = types.nullOr types.int;
|
type = types.nullOr types.int;
|
||||||
default = null;
|
default = null;
|
||||||
description = lib.mdDoc "The fdlimit for the IPFS systemd unit or `null` to have the daemon attempt to manage it";
|
description = lib.mdDoc "The fdlimit for the Kubo systemd unit or `null` to have the daemon attempt to manage it";
|
||||||
example = 64 * 1024;
|
example = 64 * 1024;
|
||||||
};
|
};
|
||||||
|
|
||||||
startWhenNeeded = mkOption {
|
startWhenNeeded = mkOption {
|
||||||
type = types.bool;
|
type = types.bool;
|
||||||
default = false;
|
default = false;
|
||||||
description = lib.mdDoc "Whether to use socket activation to start IPFS when needed.";
|
description = lib.mdDoc "Whether to use socket activation to start Kubo when needed.";
|
||||||
};
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
@ -223,7 +223,7 @@ in
|
||||||
uid = config.ids.uids.ipfs;
|
uid = config.ids.uids.ipfs;
|
||||||
description = "IPFS daemon user";
|
description = "IPFS daemon user";
|
||||||
packages = [
|
packages = [
|
||||||
pkgs.ipfs-migrator
|
pkgs.kubo-migrator
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -255,7 +255,7 @@ in
|
||||||
# After an unclean shutdown this file may exist which will cause the config command to attempt to talk to the daemon. This will hang forever if systemd is holding our sockets open.
|
# After an unclean shutdown this file may exist which will cause the config command to attempt to talk to the daemon. This will hang forever if systemd is holding our sockets open.
|
||||||
rm -vf "$IPFS_PATH/api"
|
rm -vf "$IPFS_PATH/api"
|
||||||
'' + optionalString cfg.autoMigrate ''
|
'' + optionalString cfg.autoMigrate ''
|
||||||
${pkgs.ipfs-migrator}/bin/fs-repo-migrations -to '${cfg.package.repoVersion}' -y
|
${pkgs.kubo-migrator}/bin/fs-repo-migrations -to '${cfg.package.repoVersion}' -y
|
||||||
'' + ''
|
'' + ''
|
||||||
ipfs --offline config profile apply ${profile} >/dev/null
|
ipfs --offline config profile apply ${profile} >/dev/null
|
||||||
fi
|
fi
|
||||||
|
@ -279,7 +279,7 @@ in
|
||||||
| ipfs --offline config replace -
|
| ipfs --offline config replace -
|
||||||
'';
|
'';
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
ExecStart = [ "" "${cfg.package}/bin/ipfs daemon ${ipfsFlags}" ];
|
ExecStart = [ "" "${cfg.package}/bin/ipfs daemon ${kuboFlags}" ];
|
||||||
User = cfg.user;
|
User = cfg.user;
|
||||||
Group = cfg.group;
|
Group = cfg.group;
|
||||||
StateDirectory = "";
|
StateDirectory = "";
|
||||||
|
@ -320,4 +320,27 @@ in
|
||||||
meta = {
|
meta = {
|
||||||
maintainers = with lib.maintainers; [ Luflosi ];
|
maintainers = with lib.maintainers; [ Luflosi ];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
imports = [
|
||||||
|
(mkRenamedOptionModule [ "services" "ipfs" "enable" ] [ "services" "kubo" "enable" ])
|
||||||
|
(mkRenamedOptionModule [ "services" "ipfs" "package" ] [ "services" "kubo" "package" ])
|
||||||
|
(mkRenamedOptionModule [ "services" "ipfs" "user" ] [ "services" "kubo" "user" ])
|
||||||
|
(mkRenamedOptionModule [ "services" "ipfs" "group" ] [ "services" "kubo" "group" ])
|
||||||
|
(mkRenamedOptionModule [ "services" "ipfs" "dataDir" ] [ "services" "kubo" "dataDir" ])
|
||||||
|
(mkRenamedOptionModule [ "services" "ipfs" "defaultMode" ] [ "services" "kubo" "defaultMode" ])
|
||||||
|
(mkRenamedOptionModule [ "services" "ipfs" "autoMount" ] [ "services" "kubo" "autoMount" ])
|
||||||
|
(mkRenamedOptionModule [ "services" "ipfs" "autoMigrate" ] [ "services" "kubo" "autoMigrate" ])
|
||||||
|
(mkRenamedOptionModule [ "services" "ipfs" "ipfsMountDir" ] [ "services" "kubo" "ipfsMountDir" ])
|
||||||
|
(mkRenamedOptionModule [ "services" "ipfs" "ipnsMountDir" ] [ "services" "kubo" "ipnsMountDir" ])
|
||||||
|
(mkRenamedOptionModule [ "services" "ipfs" "gatewayAddress" ] [ "services" "kubo" "gatewayAddress" ])
|
||||||
|
(mkRenamedOptionModule [ "services" "ipfs" "apiAddress" ] [ "services" "kubo" "apiAddress" ])
|
||||||
|
(mkRenamedOptionModule [ "services" "ipfs" "swarmAddress" ] [ "services" "kubo" "swarmAddress" ])
|
||||||
|
(mkRenamedOptionModule [ "services" "ipfs" "enableGC" ] [ "services" "kubo" "enableGC" ])
|
||||||
|
(mkRenamedOptionModule [ "services" "ipfs" "emptyRepo" ] [ "services" "kubo" "emptyRepo" ])
|
||||||
|
(mkRenamedOptionModule [ "services" "ipfs" "extraConfig" ] [ "services" "kubo" "extraConfig" ])
|
||||||
|
(mkRenamedOptionModule [ "services" "ipfs" "extraFlags" ] [ "services" "kubo" "extraFlags" ])
|
||||||
|
(mkRenamedOptionModule [ "services" "ipfs" "localDiscovery" ] [ "services" "kubo" "localDiscovery" ])
|
||||||
|
(mkRenamedOptionModule [ "services" "ipfs" "serviceFdlimit" ] [ "services" "kubo" "serviceFdlimit" ])
|
||||||
|
(mkRenamedOptionModule [ "services" "ipfs" "startWhenNeeded" ] [ "services" "kubo" "startWhenNeeded" ])
|
||||||
|
];
|
||||||
}
|
}
|
|
@ -19,6 +19,9 @@ let
|
||||||
fxa_email_domain = "api.accounts.firefox.com";
|
fxa_email_domain = "api.accounts.firefox.com";
|
||||||
fxa_oauth_server_url = "https://oauth.accounts.firefox.com/v1";
|
fxa_oauth_server_url = "https://oauth.accounts.firefox.com/v1";
|
||||||
run_migrations = true;
|
run_migrations = true;
|
||||||
|
# if JWK caching is not enabled the token server must verify tokens
|
||||||
|
# using the fxa api, on a thread pool with a static size.
|
||||||
|
additional_blocking_threads_for_fxa_requests = 10;
|
||||||
} // lib.optionalAttrs cfg.singleNode.enable {
|
} // lib.optionalAttrs cfg.singleNode.enable {
|
||||||
# Single-node mode is likely to be used on small instances with little
|
# Single-node mode is likely to be used on small instances with little
|
||||||
# capacity. The default value (0.1) can only ever release capacity when
|
# capacity. The default value (0.1) can only ever release capacity when
|
||||||
|
@ -309,11 +312,7 @@ in
|
||||||
enableACME = cfg.singleNode.enableTLS;
|
enableACME = cfg.singleNode.enableTLS;
|
||||||
forceSSL = cfg.singleNode.enableTLS;
|
forceSSL = cfg.singleNode.enableTLS;
|
||||||
locations."/" = {
|
locations."/" = {
|
||||||
proxyPass = "http://localhost:${toString cfg.settings.port}";
|
proxyPass = "http://127.0.0.1:${toString cfg.settings.port}";
|
||||||
# source mentions that this header should be set
|
|
||||||
extraConfig = ''
|
|
||||||
add_header X-Content-Type-Options nosniff;
|
|
||||||
'';
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -70,7 +70,7 @@ in
|
||||||
description = lib.mdDoc ''
|
description = lib.mdDoc ''
|
||||||
Videobridge configuration.
|
Videobridge configuration.
|
||||||
|
|
||||||
See <https://github.com/jitsi/jitsi-videobridge/blob/master/src/main/resources/reference.conf>
|
See <https://github.com/jitsi/jitsi-videobridge/blob/master/jvb/src/main/resources/reference.conf>
|
||||||
for default configuration with comments.
|
for default configuration with comments.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
|
@ -26,6 +26,15 @@ in
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
package = mkOption {
|
||||||
|
type = types.package;
|
||||||
|
default = pkgs.nix-serve;
|
||||||
|
defaultText = literalExpression "pkgs.nix-serve";
|
||||||
|
description = lib.mdDoc ''
|
||||||
|
nix-serve package to use.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
openFirewall = mkOption {
|
openFirewall = mkOption {
|
||||||
type = types.bool;
|
type = types.bool;
|
||||||
default = false;
|
default = false;
|
||||||
|
@ -70,7 +79,7 @@ in
|
||||||
${lib.optionalString (cfg.secretKeyFile != null) ''
|
${lib.optionalString (cfg.secretKeyFile != null) ''
|
||||||
export NIX_SECRET_KEY_FILE="$CREDENTIALS_DIRECTORY/NIX_SECRET_KEY_FILE"
|
export NIX_SECRET_KEY_FILE="$CREDENTIALS_DIRECTORY/NIX_SECRET_KEY_FILE"
|
||||||
''}
|
''}
|
||||||
exec ${pkgs.nix-serve}/bin/nix-serve --listen ${cfg.bindAddress}:${toString cfg.port} ${cfg.extraParams}
|
exec ${cfg.package}/bin/nix-serve --listen ${cfg.bindAddress}:${toString cfg.port} ${cfg.extraParams}
|
||||||
'';
|
'';
|
||||||
|
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
|
|
122
third_party/nixpkgs/nixos/modules/services/networking/tmate-ssh-server.nix
vendored
Normal file
122
third_party/nixpkgs/nixos/modules/services/networking/tmate-ssh-server.nix
vendored
Normal file
|
@ -0,0 +1,122 @@
|
||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
with lib;
|
||||||
|
let
|
||||||
|
cfg = config.services.tmate-ssh-server;
|
||||||
|
|
||||||
|
defaultKeysDir = "/etc/tmate-ssh-server-keys";
|
||||||
|
edKey = "${defaultKeysDir}/ssh_host_ed25519_key";
|
||||||
|
rsaKey = "${defaultKeysDir}/ssh_host_rsa_key";
|
||||||
|
|
||||||
|
keysDir =
|
||||||
|
if cfg.keysDir == null
|
||||||
|
then defaultKeysDir
|
||||||
|
else cfg.keysDir;
|
||||||
|
|
||||||
|
domain = config.networking.domain;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.services.tmate-ssh-server = {
|
||||||
|
enable = mkEnableOption (mdDoc "tmate ssh server");
|
||||||
|
|
||||||
|
package = mkOption {
|
||||||
|
type = types.package;
|
||||||
|
description = mdDoc "The package containing tmate-ssh-server";
|
||||||
|
defaultText = literalExpression "pkgs.tmate-ssh-server";
|
||||||
|
default = pkgs.tmate-ssh-server;
|
||||||
|
};
|
||||||
|
|
||||||
|
host = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
description = mdDoc "External host name";
|
||||||
|
defaultText = lib.literalExpression "config.networking.domain or config.networking.hostName ";
|
||||||
|
default =
|
||||||
|
if domain == null then
|
||||||
|
config.networking.hostName
|
||||||
|
else
|
||||||
|
domain;
|
||||||
|
};
|
||||||
|
|
||||||
|
port = mkOption {
|
||||||
|
type = types.port;
|
||||||
|
description = mdDoc "Listen port for the ssh server";
|
||||||
|
default = 2222;
|
||||||
|
};
|
||||||
|
|
||||||
|
openFirewall = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = true;
|
||||||
|
description = mdDoc "Whether to automatically open the specified ports in the firewall.";
|
||||||
|
};
|
||||||
|
|
||||||
|
advertisedPort = mkOption {
|
||||||
|
type = types.port;
|
||||||
|
description = mdDoc "External port advertised to clients";
|
||||||
|
};
|
||||||
|
|
||||||
|
keysDir = mkOption {
|
||||||
|
type = with types; nullOr str;
|
||||||
|
description = mdDoc "Directory containing ssh keys, defaulting to auto-generation";
|
||||||
|
default = null;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
|
||||||
|
networking.firewall.allowedTCPPorts = optionals cfg.openFirewall [ cfg.port ];
|
||||||
|
|
||||||
|
services.tmate-ssh-server = {
|
||||||
|
advertisedPort = mkDefault cfg.port;
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.systemPackages =
|
||||||
|
let
|
||||||
|
tmate-config = pkgs.writeText "tmate.conf"
|
||||||
|
''
|
||||||
|
set -g tmate-server-host "${cfg.host}"
|
||||||
|
set -g tmate-server-port ${toString cfg.port}
|
||||||
|
set -g tmate-server-ed25519-fingerprint "@ed25519_fingerprint@"
|
||||||
|
set -g tmate-server-rsa-fingerprint "@rsa_fingerprint@"
|
||||||
|
'';
|
||||||
|
in
|
||||||
|
[
|
||||||
|
(pkgs.writeShellApplication {
|
||||||
|
name = "tmate-client-config";
|
||||||
|
runtimeInputs = with pkgs;[ openssh coreutils sd ];
|
||||||
|
text = ''
|
||||||
|
RSA_SIG="$(ssh-keygen -l -E SHA256 -f "${keysDir}/ssh_host_rsa_key.pub" | cut -d ' ' -f 2)"
|
||||||
|
ED25519_SIG="$(ssh-keygen -l -E SHA256 -f "${keysDir}/ssh_host_ed25519_key.pub" | cut -d ' ' -f 2)"
|
||||||
|
sd -sp '@ed25519_fingerprint@' "$ED25519_SIG" ${tmate-config} | \
|
||||||
|
sd -sp '@rsa_fingerprint@' "$RSA_SIG"
|
||||||
|
'';
|
||||||
|
})
|
||||||
|
];
|
||||||
|
|
||||||
|
systemd.services.tmate-ssh-server = {
|
||||||
|
description = "tmate SSH Server";
|
||||||
|
after = [ "network.target" ];
|
||||||
|
wantedBy = [ "multi-user.target" ];
|
||||||
|
serviceConfig = {
|
||||||
|
ExecStart = "${cfg.package}/bin/tmate-ssh-server -h ${cfg.host} -p ${toString cfg.port} -q ${toString cfg.advertisedPort} -k ${keysDir}";
|
||||||
|
};
|
||||||
|
preStart = mkIf (cfg.keysDir == null) ''
|
||||||
|
if [[ ! -d ${defaultKeysDir} ]]
|
||||||
|
then
|
||||||
|
mkdir -p ${defaultKeysDir}
|
||||||
|
fi
|
||||||
|
if [[ ! -f ${edKey} ]]
|
||||||
|
then
|
||||||
|
${pkgs.openssh}/bin/ssh-keygen -t ed25519 -f ${edKey} -N ""
|
||||||
|
fi
|
||||||
|
if [[ ! -f ${rsaKey} ]]
|
||||||
|
then
|
||||||
|
${pkgs.openssh}/bin/ssh-keygen -t rsa -f ${rsaKey} -N ""
|
||||||
|
fi
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
meta = {
|
||||||
|
maintainers = with maintainers; [ jlesquembre ];
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
|
@ -465,7 +465,13 @@ in
|
||||||
networking.wireguard = {
|
networking.wireguard = {
|
||||||
|
|
||||||
enable = mkOption {
|
enable = mkOption {
|
||||||
description = lib.mdDoc "Whether to enable WireGuard.";
|
description = lib.mdDoc ''
|
||||||
|
Whether to enable WireGuard.
|
||||||
|
|
||||||
|
Please note that {option}`systemd.network.netdevs` has more features
|
||||||
|
and is better maintained. When building new things, it is advised to
|
||||||
|
use that instead.
|
||||||
|
'';
|
||||||
type = types.bool;
|
type = types.bool;
|
||||||
# 2019-05-25: Backwards compatibility.
|
# 2019-05-25: Backwards compatibility.
|
||||||
default = cfg.interfaces != {};
|
default = cfg.interfaces != {};
|
||||||
|
@ -474,7 +480,13 @@ in
|
||||||
};
|
};
|
||||||
|
|
||||||
interfaces = mkOption {
|
interfaces = mkOption {
|
||||||
description = lib.mdDoc "WireGuard interfaces.";
|
description = lib.mdDoc ''
|
||||||
|
WireGuard interfaces.
|
||||||
|
|
||||||
|
Please note that {option}`systemd.network.netdevs` has more features
|
||||||
|
and is better maintained. When building new things, it is advised to
|
||||||
|
use that instead.
|
||||||
|
'';
|
||||||
default = {};
|
default = {};
|
||||||
example = {
|
example = {
|
||||||
wg0 = {
|
wg0 = {
|
||||||
|
|
|
@ -91,8 +91,9 @@ in
|
||||||
example = "nftables-multiport";
|
example = "nftables-multiport";
|
||||||
description = lib.mdDoc ''
|
description = lib.mdDoc ''
|
||||||
Default banning action (e.g. iptables, iptables-new, iptables-multiport,
|
Default banning action (e.g. iptables, iptables-new, iptables-multiport,
|
||||||
shorewall, etc) It is used to define action_* variables. Can be overridden
|
iptables-ipset-proto6-allports, shorewall, etc) It is used to
|
||||||
globally or per section within jail.local file
|
define action_* variables. Can be overridden globally or per
|
||||||
|
section within jail.local file
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -212,10 +213,18 @@ in
|
||||||
filter = apache-nohome
|
filter = apache-nohome
|
||||||
action = iptables-multiport[name=HTTP, port="http,https"]
|
action = iptables-multiport[name=HTTP, port="http,https"]
|
||||||
logpath = /var/log/httpd/error_log*
|
logpath = /var/log/httpd/error_log*
|
||||||
|
backend = auto
|
||||||
findtime = 600
|
findtime = 600
|
||||||
bantime = 600
|
bantime = 600
|
||||||
maxretry = 5
|
maxretry = 5
|
||||||
''';
|
''';
|
||||||
|
dovecot = '''
|
||||||
|
# block IPs which failed to log-in
|
||||||
|
# aggressive mode add blocking for aborted connections
|
||||||
|
enabled = true
|
||||||
|
filter = dovecot[mode=aggressive]
|
||||||
|
maxretry = 3
|
||||||
|
''';
|
||||||
}
|
}
|
||||||
'';
|
'';
|
||||||
type = types.attrsOf types.lines;
|
type = types.attrsOf types.lines;
|
||||||
|
|
|
@ -63,7 +63,7 @@ in {
|
||||||
hashedPassword = mkOption {
|
hashedPassword = mkOption {
|
||||||
default = "";
|
default = "";
|
||||||
description =
|
description =
|
||||||
lib.mdDoc "Create the password with: 'echo -n 'thisismypassword' | npx argon2-cli -e'.";
|
lib.mdDoc "Create the password with: `echo -n 'thisismypassword' | npx argon2-cli -e`.";
|
||||||
type = types.str;
|
type = types.str;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -109,7 +109,7 @@ in {
|
||||||
HASHED_PASSWORD = cfg.hashedPassword;
|
HASHED_PASSWORD = cfg.hashedPassword;
|
||||||
} // cfg.extraEnvironment;
|
} // cfg.extraEnvironment;
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
ExecStart = "${cfg.package}/bin/code-server --bind-addr ${cfg.host}:${toString cfg.port} --auth ${cfg.auth} " + builtins.concatStringsSep " " cfg.extraArguments;
|
ExecStart = "${cfg.package}/bin/code-server --bind-addr ${cfg.host}:${toString cfg.port} --auth ${cfg.auth} " + lib.escapeShellArgs cfg.extraArguments;
|
||||||
ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID";
|
ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID";
|
||||||
RuntimeDirectory = cfg.user;
|
RuntimeDirectory = cfg.user;
|
||||||
User = cfg.user;
|
User = cfg.user;
|
||||||
|
|
|
@ -30,9 +30,10 @@ let
|
||||||
# requests that look like: https://example.com/wp-content//nix/store/...plugin/path/some-file.js
|
# requests that look like: https://example.com/wp-content//nix/store/...plugin/path/some-file.js
|
||||||
# Since hard linking directories is not allowed, copying is the next best thing.
|
# Since hard linking directories is not allowed, copying is the next best thing.
|
||||||
|
|
||||||
# copy additional plugin(s) and theme(s)
|
# copy additional plugin(s), theme(s) and language(s)
|
||||||
${concatMapStringsSep "\n" (theme: "cp -r ${theme} $out/share/wordpress/wp-content/themes/${theme.name}") cfg.themes}
|
${concatMapStringsSep "\n" (theme: "cp -r ${theme} $out/share/wordpress/wp-content/themes/${theme.name}") cfg.themes}
|
||||||
${concatMapStringsSep "\n" (plugin: "cp -r ${plugin} $out/share/wordpress/wp-content/plugins/${plugin.name}") cfg.plugins}
|
${concatMapStringsSep "\n" (plugin: "cp -r ${plugin} $out/share/wordpress/wp-content/plugins/${plugin.name}") cfg.plugins}
|
||||||
|
${concatMapStringsSep "\n" (language: "cp -r ${language} $out/share/wordpress/wp-content/languages/") cfg.languages}
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -154,6 +155,32 @@ let
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
languages = mkOption {
|
||||||
|
type = types.listOf types.path;
|
||||||
|
default = [];
|
||||||
|
description = lib.mdDoc ''
|
||||||
|
List of path(s) to respective language(s) which are copied from the 'languages' directory.
|
||||||
|
'';
|
||||||
|
example = literalExpression ''
|
||||||
|
[(
|
||||||
|
# Let's package the German language.
|
||||||
|
# For other languages try to replace language and country code in the download URL with your desired one.
|
||||||
|
# Reference https://translate.wordpress.org for available translations and
|
||||||
|
# codes.
|
||||||
|
language-de = pkgs.stdenv.mkDerivation {
|
||||||
|
name = "language-de";
|
||||||
|
src = pkgs.fetchurl {
|
||||||
|
url = "https://de.wordpress.org/wordpress-''${pkgs.wordpress.version}-de_DE.tar.gz";
|
||||||
|
# Name is required to invalidate the hash when wordpress is updated
|
||||||
|
name = "wordpress-''${pkgs.wordpress.version}-language-de"
|
||||||
|
sha256 = "sha256-dlas0rXTSV4JAl8f/UyMbig57yURRYRhTMtJwF9g8h0=";
|
||||||
|
};
|
||||||
|
installPhase = "mkdir -p $out; cp -r ./wp-content/languages/* $out/";
|
||||||
|
};
|
||||||
|
)];
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
database = {
|
database = {
|
||||||
host = mkOption {
|
host = mkOption {
|
||||||
type = types.str;
|
type = types.str;
|
||||||
|
|
|
@ -22,42 +22,14 @@ let
|
||||||
favorite-apps=[ 'org.gnome.Epiphany.desktop', 'org.gnome.Geary.desktop', 'org.gnome.Calendar.desktop', 'org.gnome.Music.desktop', 'org.gnome.Photos.desktop', 'org.gnome.Nautilus.desktop' ]
|
favorite-apps=[ 'org.gnome.Epiphany.desktop', 'org.gnome.Geary.desktop', 'org.gnome.Calendar.desktop', 'org.gnome.Music.desktop', 'org.gnome.Photos.desktop', 'org.gnome.Nautilus.desktop' ]
|
||||||
'';
|
'';
|
||||||
|
|
||||||
nixos-background-ligtht = pkgs.nixos-artwork.wallpapers.simple-blue;
|
nixos-background-light = pkgs.nixos-artwork.wallpapers.simple-blue;
|
||||||
nixos-background-dark = pkgs.nixos-artwork.wallpapers.simple-dark-gray;
|
nixos-background-dark = pkgs.nixos-artwork.wallpapers.simple-dark-gray;
|
||||||
|
|
||||||
nixos-gsettings-desktop-schemas = let
|
# TODO: Having https://github.com/NixOS/nixpkgs/issues/54150 would supersede this
|
||||||
defaultPackages = with pkgs; [ gsettings-desktop-schemas gnome.gnome-shell ];
|
nixos-gsettings-desktop-schemas = pkgs.gnome.nixos-gsettings-overrides.override {
|
||||||
in
|
inherit (cfg) extraGSettingsOverrides extraGSettingsOverridePackages favoriteAppsOverride;
|
||||||
pkgs.runCommand "nixos-gsettings-desktop-schemas" { preferLocalBuild = true; }
|
inherit flashbackEnabled nixos-background-dark nixos-background-light;
|
||||||
''
|
};
|
||||||
mkdir -p $out/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas
|
|
||||||
|
|
||||||
${concatMapStrings
|
|
||||||
(pkg: "cp -rf ${pkg}/share/gsettings-schemas/*/glib-2.0/schemas/*.xml $out/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas\n")
|
|
||||||
(defaultPackages ++ cfg.extraGSettingsOverridePackages)}
|
|
||||||
|
|
||||||
cp -f ${pkgs.gnome.gnome-shell}/share/gsettings-schemas/*/glib-2.0/schemas/*.gschema.override $out/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas
|
|
||||||
|
|
||||||
${optionalString flashbackEnabled ''
|
|
||||||
cp -f ${pkgs.gnome.gnome-flashback}/share/gsettings-schemas/*/glib-2.0/schemas/*.gschema.override $out/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas
|
|
||||||
''}
|
|
||||||
|
|
||||||
chmod -R a+w $out/share/gsettings-schemas/nixos-gsettings-overrides
|
|
||||||
cat - > $out/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas/nixos-defaults.gschema.override <<- EOF
|
|
||||||
[org.gnome.desktop.background]
|
|
||||||
picture-uri='file://${nixos-background-ligtht.gnomeFilePath}'
|
|
||||||
picture-uri-dark='file://${nixos-background-dark.gnomeFilePath}'
|
|
||||||
|
|
||||||
[org.gnome.desktop.screensaver]
|
|
||||||
picture-uri='file://${nixos-background-dark.gnomeFilePath}'
|
|
||||||
|
|
||||||
${cfg.favoriteAppsOverride}
|
|
||||||
|
|
||||||
${cfg.extraGSettingsOverrides}
|
|
||||||
EOF
|
|
||||||
|
|
||||||
${pkgs.glib.dev}/bin/glib-compile-schemas $out/share/gsettings-schemas/nixos-gsettings-overrides/glib-2.0/schemas/
|
|
||||||
'';
|
|
||||||
|
|
||||||
nixos-background-info = pkgs.writeTextFile rec {
|
nixos-background-info = pkgs.writeTextFile rec {
|
||||||
name = "nixos-background-info";
|
name = "nixos-background-info";
|
||||||
|
@ -67,7 +39,7 @@ let
|
||||||
<wallpapers>
|
<wallpapers>
|
||||||
<wallpaper deleted="false">
|
<wallpaper deleted="false">
|
||||||
<name>Blobs</name>
|
<name>Blobs</name>
|
||||||
<filename>${nixos-background-ligtht.gnomeFilePath}</filename>
|
<filename>${nixos-background-light.gnomeFilePath}</filename>
|
||||||
<filename-dark>${nixos-background-dark.gnomeFilePath}</filename-dark>
|
<filename-dark>${nixos-background-dark.gnomeFilePath}</filename-dark>
|
||||||
<options>zoom</options>
|
<options>zoom</options>
|
||||||
<shade_type>solid</shade_type>
|
<shade_type>solid</shade_type>
|
||||||
|
|
|
@ -156,6 +156,14 @@ let cfg = config.services.xserver.libinput;
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
tappingButtonMap = mkOption {
|
||||||
|
type = types.nullOr (types.enum [ "lrm" "lmr" ]);
|
||||||
|
default = null;
|
||||||
|
description = lib.mdDoc ''
|
||||||
|
Set the button mapping for 1/2/3-finger taps to left/right/middle or left/middle/right, respectively.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
tappingDragLock = mkOption {
|
tappingDragLock = mkOption {
|
||||||
type = types.bool;
|
type = types.bool;
|
||||||
default = true;
|
default = true;
|
||||||
|
@ -220,6 +228,7 @@ let cfg = config.services.xserver.libinput;
|
||||||
Option "HorizontalScrolling" "${xorgBool cfg.${deviceType}.horizontalScrolling}"
|
Option "HorizontalScrolling" "${xorgBool cfg.${deviceType}.horizontalScrolling}"
|
||||||
Option "SendEventsMode" "${cfg.${deviceType}.sendEventsMode}"
|
Option "SendEventsMode" "${cfg.${deviceType}.sendEventsMode}"
|
||||||
Option "Tapping" "${xorgBool cfg.${deviceType}.tapping}"
|
Option "Tapping" "${xorgBool cfg.${deviceType}.tapping}"
|
||||||
|
${optionalString (cfg.${deviceType}.tappingButtonMap != null) ''Option "TappingButtonMap" "${cfg.${deviceType}.tappingButtonMap}"''}
|
||||||
Option "TappingDragLock" "${xorgBool cfg.${deviceType}.tappingDragLock}"
|
Option "TappingDragLock" "${xorgBool cfg.${deviceType}.tappingDragLock}"
|
||||||
Option "DisableWhileTyping" "${xorgBool cfg.${deviceType}.disableWhileTyping}"
|
Option "DisableWhileTyping" "${xorgBool cfg.${deviceType}.disableWhileTyping}"
|
||||||
${cfg.${deviceType}.additionalOptions}
|
${cfg.${deviceType}.additionalOptions}
|
||||||
|
@ -241,6 +250,7 @@ in {
|
||||||
"horizontalScrolling"
|
"horizontalScrolling"
|
||||||
"sendEventsMode"
|
"sendEventsMode"
|
||||||
"tapping"
|
"tapping"
|
||||||
|
"tappingButtonMap"
|
||||||
"tappingDragLock"
|
"tappingDragLock"
|
||||||
"transformationMatrix"
|
"transformationMatrix"
|
||||||
"disableWhileTyping"
|
"disableWhileTyping"
|
||||||
|
|
|
@ -325,8 +325,8 @@ in
|
||||||
type = types.lines;
|
type = types.lines;
|
||||||
example = "DefaultLimitCORE=infinity";
|
example = "DefaultLimitCORE=infinity";
|
||||||
description = lib.mdDoc ''
|
description = lib.mdDoc ''
|
||||||
Extra config options for systemd. See man systemd-system.conf for
|
Extra config options for systemd. See systemd-system.conf(5) man page
|
||||||
available options.
|
for available options.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -372,6 +372,8 @@ in {
|
||||||
"/etc/os-release".source = config.boot.initrd.osRelease;
|
"/etc/os-release".source = config.boot.initrd.osRelease;
|
||||||
"/etc/initrd-release".source = config.boot.initrd.osRelease;
|
"/etc/initrd-release".source = config.boot.initrd.osRelease;
|
||||||
|
|
||||||
|
} // optionalAttrs (config.environment.etc ? "modprobe.d/nixos.conf") {
|
||||||
|
"/etc/modprobe.d/nixos.conf".source = config.environment.etc."modprobe.d/nixos.conf".source;
|
||||||
};
|
};
|
||||||
|
|
||||||
storePaths = [
|
storePaths = [
|
||||||
|
|
|
@ -604,6 +604,10 @@ in
|
||||||
The configuration for each network interface. If
|
The configuration for each network interface. If
|
||||||
{option}`networking.useDHCP` is true, then every
|
{option}`networking.useDHCP` is true, then every
|
||||||
interface not listed here will be configured using DHCP.
|
interface not listed here will be configured using DHCP.
|
||||||
|
|
||||||
|
Please note that {option}`systemd.network.netdevs` has more features
|
||||||
|
and is better maintained. When building new things, it is advised to
|
||||||
|
use that instead.
|
||||||
'';
|
'';
|
||||||
type = with types; attrsOf (submodule interfaceOpts);
|
type = with types; attrsOf (submodule interfaceOpts);
|
||||||
};
|
};
|
||||||
|
|
60
third_party/nixpkgs/nixos/tests/acme.nix
vendored
60
third_party/nixpkgs/nixos/tests/acme.nix
vendored
|
@ -41,6 +41,16 @@
|
||||||
inherit documentRoot;
|
inherit documentRoot;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
simpleConfig = {
|
||||||
|
security.acme = {
|
||||||
|
certs."http.example.test" = {
|
||||||
|
listenHTTP = ":80";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
networking.firewall.allowedTCPPorts = [ 80 ];
|
||||||
|
};
|
||||||
|
|
||||||
# Base specialisation config for testing general ACME features
|
# Base specialisation config for testing general ACME features
|
||||||
webserverBasicConfig = {
|
webserverBasicConfig = {
|
||||||
services.nginx.enable = true;
|
services.nginx.enable = true;
|
||||||
|
@ -173,6 +183,26 @@ in {
|
||||||
services.nginx.logError = "stderr info";
|
services.nginx.logError = "stderr info";
|
||||||
|
|
||||||
specialisation = {
|
specialisation = {
|
||||||
|
# Tests HTTP-01 verification using Lego's built-in web server
|
||||||
|
http01lego.configuration = simpleConfig;
|
||||||
|
|
||||||
|
renew.configuration = lib.mkMerge [
|
||||||
|
simpleConfig
|
||||||
|
{
|
||||||
|
# Pebble provides 5 year long certs,
|
||||||
|
# needs to be higher than that to test renewal
|
||||||
|
security.acme.certs."http.example.test".validMinDays = 9999;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
# Tests that account creds can be safely changed.
|
||||||
|
accountchange.configuration = lib.mkMerge [
|
||||||
|
simpleConfig
|
||||||
|
{
|
||||||
|
security.acme.certs."http.example.test".email = "admin@example.test";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
# First derivation used to test general ACME features
|
# First derivation used to test general ACME features
|
||||||
general.configuration = { ... }: let
|
general.configuration = { ... }: let
|
||||||
caDomain = nodes.acme.test-support.acme.caDomain;
|
caDomain = nodes.acme.test-support.acme.caDomain;
|
||||||
|
@ -446,7 +476,35 @@ in {
|
||||||
|
|
||||||
download_ca_certs(client)
|
download_ca_certs(client)
|
||||||
|
|
||||||
# Perform general tests first
|
# Perform http-01 w/ lego test first
|
||||||
|
with subtest("Can request certificate with Lego's built in web server"):
|
||||||
|
switch_to(webserver, "http01lego")
|
||||||
|
webserver.wait_for_unit("acme-finished-http.example.test.target")
|
||||||
|
check_fullchain(webserver, "http.example.test")
|
||||||
|
check_issuer(webserver, "http.example.test", "pebble")
|
||||||
|
|
||||||
|
# Perform renewal test
|
||||||
|
with subtest("Can renew certificates when they expire"):
|
||||||
|
hash = webserver.succeed("sha256sum /var/lib/acme/http.example.test/cert.pem")
|
||||||
|
switch_to(webserver, "renew")
|
||||||
|
webserver.wait_for_unit("acme-finished-http.example.test.target")
|
||||||
|
check_fullchain(webserver, "http.example.test")
|
||||||
|
check_issuer(webserver, "http.example.test", "pebble")
|
||||||
|
hash_after = webserver.succeed("sha256sum /var/lib/acme/http.example.test/cert.pem")
|
||||||
|
assert hash != hash_after
|
||||||
|
|
||||||
|
# Perform account change test
|
||||||
|
with subtest("Handles email change correctly"):
|
||||||
|
hash = webserver.succeed("sha256sum /var/lib/acme/http.example.test/cert.pem")
|
||||||
|
switch_to(webserver, "accountchange")
|
||||||
|
webserver.wait_for_unit("acme-finished-http.example.test.target")
|
||||||
|
check_fullchain(webserver, "http.example.test")
|
||||||
|
check_issuer(webserver, "http.example.test", "pebble")
|
||||||
|
hash_after = webserver.succeed("sha256sum /var/lib/acme/http.example.test/cert.pem")
|
||||||
|
# Has to do a full run to register account, which creates new certs.
|
||||||
|
assert hash != hash_after
|
||||||
|
|
||||||
|
# Perform general tests
|
||||||
switch_to(webserver, "general")
|
switch_to(webserver, "general")
|
||||||
|
|
||||||
with subtest("Can request certificate with HTTP-01 challenge"):
|
with subtest("Can request certificate with HTTP-01 challenge"):
|
||||||
|
|
|
@ -284,7 +284,6 @@ in {
|
||||||
installer-systemd-stage-1 = handleTest ./installer-systemd-stage-1.nix {};
|
installer-systemd-stage-1 = handleTest ./installer-systemd-stage-1.nix {};
|
||||||
invoiceplane = handleTest ./invoiceplane.nix {};
|
invoiceplane = handleTest ./invoiceplane.nix {};
|
||||||
iodine = handleTest ./iodine.nix {};
|
iodine = handleTest ./iodine.nix {};
|
||||||
ipfs = handleTest ./ipfs.nix {};
|
|
||||||
ipv6 = handleTest ./ipv6.nix {};
|
ipv6 = handleTest ./ipv6.nix {};
|
||||||
iscsi-multipath-root = handleTest ./iscsi-multipath-root.nix {};
|
iscsi-multipath-root = handleTest ./iscsi-multipath-root.nix {};
|
||||||
iscsi-root = handleTest ./iscsi-root.nix {};
|
iscsi-root = handleTest ./iscsi-root.nix {};
|
||||||
|
@ -317,6 +316,8 @@ in {
|
||||||
ksm = handleTest ./ksm.nix {};
|
ksm = handleTest ./ksm.nix {};
|
||||||
kthxbye = handleTest ./kthxbye.nix {};
|
kthxbye = handleTest ./kthxbye.nix {};
|
||||||
kubernetes = handleTestOn ["x86_64-linux"] ./kubernetes {};
|
kubernetes = handleTestOn ["x86_64-linux"] ./kubernetes {};
|
||||||
|
kubo = handleTest ./kubo.nix {};
|
||||||
|
ladybird = handleTest ./ladybird.nix {};
|
||||||
languagetool = handleTest ./languagetool.nix {};
|
languagetool = handleTest ./languagetool.nix {};
|
||||||
latestKernel.login = handleTest ./login.nix { latestKernel = true; };
|
latestKernel.login = handleTest ./login.nix { latestKernel = true; };
|
||||||
leaps = handleTest ./leaps.nix {};
|
leaps = handleTest ./leaps.nix {};
|
||||||
|
@ -596,6 +597,7 @@ in {
|
||||||
systemd-initrd-btrfs-raid = handleTest ./systemd-initrd-btrfs-raid.nix {};
|
systemd-initrd-btrfs-raid = handleTest ./systemd-initrd-btrfs-raid.nix {};
|
||||||
systemd-initrd-luks-keyfile = handleTest ./systemd-initrd-luks-keyfile.nix {};
|
systemd-initrd-luks-keyfile = handleTest ./systemd-initrd-luks-keyfile.nix {};
|
||||||
systemd-initrd-luks-password = handleTest ./systemd-initrd-luks-password.nix {};
|
systemd-initrd-luks-password = handleTest ./systemd-initrd-luks-password.nix {};
|
||||||
|
systemd-initrd-modprobe = handleTest ./systemd-initrd-modprobe.nix {};
|
||||||
systemd-initrd-shutdown = handleTest ./systemd-shutdown.nix { systemdStage1 = true; };
|
systemd-initrd-shutdown = handleTest ./systemd-shutdown.nix { systemdStage1 = true; };
|
||||||
systemd-initrd-simple = handleTest ./systemd-initrd-simple.nix {};
|
systemd-initrd-simple = handleTest ./systemd-initrd-simple.nix {};
|
||||||
systemd-initrd-swraid = handleTest ./systemd-initrd-swraid.nix {};
|
systemd-initrd-swraid = handleTest ./systemd-initrd-swraid.nix {};
|
||||||
|
@ -611,6 +613,7 @@ in {
|
||||||
systemd-shutdown = handleTest ./systemd-shutdown.nix {};
|
systemd-shutdown = handleTest ./systemd-shutdown.nix {};
|
||||||
systemd-timesyncd = handleTest ./systemd-timesyncd.nix {};
|
systemd-timesyncd = handleTest ./systemd-timesyncd.nix {};
|
||||||
systemd-misc = handleTest ./systemd-misc.nix {};
|
systemd-misc = handleTest ./systemd-misc.nix {};
|
||||||
|
tandoor-recipes = handleTest ./tandoor-recipes.nix {};
|
||||||
taskserver = handleTest ./taskserver.nix {};
|
taskserver = handleTest ./taskserver.nix {};
|
||||||
teeworlds = handleTest ./teeworlds.nix {};
|
teeworlds = handleTest ./teeworlds.nix {};
|
||||||
telegraf = handleTest ./telegraf.nix {};
|
telegraf = handleTest ./telegraf.nix {};
|
||||||
|
@ -623,6 +626,7 @@ in {
|
||||||
tinc = handleTest ./tinc {};
|
tinc = handleTest ./tinc {};
|
||||||
tinydns = handleTest ./tinydns.nix {};
|
tinydns = handleTest ./tinydns.nix {};
|
||||||
tinywl = handleTest ./tinywl.nix {};
|
tinywl = handleTest ./tinywl.nix {};
|
||||||
|
tmate-ssh-server = handleTest ./tmate-ssh-server.nix { };
|
||||||
tomcat = handleTest ./tomcat.nix {};
|
tomcat = handleTest ./tomcat.nix {};
|
||||||
tor = handleTest ./tor.nix {};
|
tor = handleTest ./tor.nix {};
|
||||||
# traefik test relies on docker-containers
|
# traefik test relies on docker-containers
|
||||||
|
@ -677,6 +681,7 @@ in {
|
||||||
xfce = handleTest ./xfce.nix {};
|
xfce = handleTest ./xfce.nix {};
|
||||||
xmonad = handleTest ./xmonad.nix {};
|
xmonad = handleTest ./xmonad.nix {};
|
||||||
xmonad-xdg-autostart = handleTest ./xmonad-xdg-autostart.nix {};
|
xmonad-xdg-autostart = handleTest ./xmonad-xdg-autostart.nix {};
|
||||||
|
xpadneo = handleTest ./xpadneo.nix {};
|
||||||
xrdp = handleTest ./xrdp.nix {};
|
xrdp = handleTest ./xrdp.nix {};
|
||||||
xss-lock = handleTest ./xss-lock.nix {};
|
xss-lock = handleTest ./xss-lock.nix {};
|
||||||
xterm = handleTest ./xterm.nix {};
|
xterm = handleTest ./xterm.nix {};
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import ../make-test-python.nix ({ pkgs, ... }:
|
import ../make-test-python.nix ({ pkgs, lib, ... }:
|
||||||
let
|
let
|
||||||
imageEnv = pkgs.buildEnv {
|
imageEnv = pkgs.buildEnv {
|
||||||
name = "k3s-pause-image-env";
|
name = "k3s-pause-image-env";
|
||||||
|
@ -54,7 +54,15 @@ import ../make-test-python.nix ({ pkgs, ... }:
|
||||||
role = "server";
|
role = "server";
|
||||||
package = pkgs.k3s;
|
package = pkgs.k3s;
|
||||||
clusterInit = true;
|
clusterInit = true;
|
||||||
extraFlags = "--no-deploy coredns,servicelb,traefik,local-storage,metrics-server --pause-image test.local/pause:local --node-ip 192.168.1.1";
|
extraFlags = ''
|
||||||
|
--disable coredns \
|
||||||
|
--disable local-storage \
|
||||||
|
--disable metrics-server \
|
||||||
|
--disable servicelb \
|
||||||
|
--disable traefik \
|
||||||
|
--node-ip 192.168.1.1 \
|
||||||
|
--pause-image test.local/pause:local
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
networking.firewall.allowedTCPPorts = [ 2379 2380 6443 ];
|
networking.firewall.allowedTCPPorts = [ 2379 2380 6443 ];
|
||||||
networking.firewall.allowedUDPPorts = [ 8472 ];
|
networking.firewall.allowedUDPPorts = [ 8472 ];
|
||||||
|
@ -76,7 +84,15 @@ import ../make-test-python.nix ({ pkgs, ... }:
|
||||||
enable = true;
|
enable = true;
|
||||||
serverAddr = "https://192.168.1.1:6443";
|
serverAddr = "https://192.168.1.1:6443";
|
||||||
clusterInit = false;
|
clusterInit = false;
|
||||||
extraFlags = "--no-deploy coredns,servicelb,traefik,local-storage,metrics-server --pause-image test.local/pause:local --node-ip 192.168.1.3";
|
extraFlags = ''
|
||||||
|
--disable coredns \
|
||||||
|
--disable local-storage \
|
||||||
|
--disable metrics-server \
|
||||||
|
--disable servicelb \
|
||||||
|
--disable traefik \
|
||||||
|
--node-ip 192.168.1.3 \
|
||||||
|
--pause-image test.local/pause:local
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
networking.firewall.allowedTCPPorts = [ 2379 2380 6443 ];
|
networking.firewall.allowedTCPPorts = [ 2379 2380 6443 ];
|
||||||
networking.firewall.allowedUDPPorts = [ 8472 ];
|
networking.firewall.allowedUDPPorts = [ 8472 ];
|
||||||
|
@ -123,7 +139,8 @@ import ../make-test-python.nix ({ pkgs, ... }:
|
||||||
server.wait_until_succeeds("k3s kubectl get node agent")
|
server.wait_until_succeeds("k3s kubectl get node agent")
|
||||||
|
|
||||||
for m in machines:
|
for m in machines:
|
||||||
m.succeed("k3s check-config")
|
'' # Fix-Me: Tests fail for 'aarch64-linux' as: "CONFIG_CGROUP_FREEZER: missing (fail)"
|
||||||
|
+ lib.optionalString (!pkgs.stdenv.isAarch64) ''m.succeed("k3s check-config")'' + ''
|
||||||
m.succeed(
|
m.succeed(
|
||||||
"${pauseImage} | k3s ctr image import -"
|
"${pauseImage} | k3s ctr image import -"
|
||||||
)
|
)
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
import ../make-test-python.nix ({ pkgs, ... }:
|
import ../make-test-python.nix ({ pkgs, lib, ... }:
|
||||||
let
|
let
|
||||||
imageEnv = pkgs.buildEnv {
|
imageEnv = pkgs.buildEnv {
|
||||||
name = "k3s-pause-image-env";
|
name = "k3s-pause-image-env";
|
||||||
|
@ -40,7 +40,15 @@ import ../make-test-python.nix ({ pkgs, ... }:
|
||||||
services.k3s.role = "server";
|
services.k3s.role = "server";
|
||||||
services.k3s.package = pkgs.k3s;
|
services.k3s.package = pkgs.k3s;
|
||||||
# Slightly reduce resource usage
|
# Slightly reduce resource usage
|
||||||
services.k3s.extraFlags = "--no-deploy coredns,servicelb,traefik,local-storage,metrics-server --pause-image test.local/pause:local";
|
services.k3s.extraFlags = ''
|
||||||
|
--disable coredns \
|
||||||
|
--disable local-storage \
|
||||||
|
--disable metrics-server \
|
||||||
|
--disable servicelb \
|
||||||
|
--disable traefik \
|
||||||
|
--pause-image \
|
||||||
|
test.local/pause:local
|
||||||
|
'';
|
||||||
|
|
||||||
users.users = {
|
users.users = {
|
||||||
noprivs = {
|
noprivs = {
|
||||||
|
@ -57,7 +65,8 @@ import ../make-test-python.nix ({ pkgs, ... }:
|
||||||
machine.wait_for_unit("k3s")
|
machine.wait_for_unit("k3s")
|
||||||
machine.succeed("k3s kubectl cluster-info")
|
machine.succeed("k3s kubectl cluster-info")
|
||||||
machine.fail("sudo -u noprivs k3s kubectl cluster-info")
|
machine.fail("sudo -u noprivs k3s kubectl cluster-info")
|
||||||
machine.succeed("k3s check-config")
|
'' # Fix-Me: Tests fail for 'aarch64-linux' as: "CONFIG_CGROUP_FREEZER: missing (fail)"
|
||||||
|
+ lib.optionalString (!pkgs.stdenv.isAarch64) ''machine.succeed("k3s check-config")'' + ''
|
||||||
|
|
||||||
machine.succeed(
|
machine.succeed(
|
||||||
"${pauseImage} | k3s ctr image import -"
|
"${pauseImage} | k3s ctr image import -"
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
import ./make-test-python.nix ({ pkgs, ...} : {
|
import ./make-test-python.nix ({ pkgs, ...} : {
|
||||||
name = "ipfs";
|
name = "kubo";
|
||||||
meta = with pkgs.lib.maintainers; {
|
meta = with pkgs.lib.maintainers; {
|
||||||
maintainers = [ mguentner ];
|
maintainers = [ mguentner ];
|
||||||
};
|
};
|
||||||
|
|
||||||
nodes.machine = { ... }: {
|
nodes.machine = { ... }: {
|
||||||
services.ipfs = {
|
services.kubo = {
|
||||||
enable = true;
|
enable = true;
|
||||||
# Also will add a unix domain socket socket API address, see module.
|
# Also will add a unix domain socket socket API address, see module.
|
||||||
startWhenNeeded = true;
|
startWhenNeeded = true;
|
||||||
|
@ -15,7 +15,7 @@ import ./make-test-python.nix ({ pkgs, ...} : {
|
||||||
};
|
};
|
||||||
|
|
||||||
nodes.fuse = { ... }: {
|
nodes.fuse = { ... }: {
|
||||||
services.ipfs = {
|
services.kubo = {
|
||||||
enable = true;
|
enable = true;
|
||||||
apiAddress = "/ip4/127.0.0.1/tcp/2324";
|
apiAddress = "/ip4/127.0.0.1/tcp/2324";
|
||||||
autoMount = true;
|
autoMount = true;
|
30
third_party/nixpkgs/nixos/tests/ladybird.nix
vendored
Normal file
30
third_party/nixpkgs/nixos/tests/ladybird.nix
vendored
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
import ./make-test-python.nix ({ pkgs, ... }: {
|
||||||
|
name = "ladybird";
|
||||||
|
meta = with pkgs.lib.maintainers; {
|
||||||
|
maintainers = [ fgaz ];
|
||||||
|
};
|
||||||
|
|
||||||
|
nodes.machine = { config, pkgs, ... }: {
|
||||||
|
imports = [
|
||||||
|
./common/x11.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
services.xserver.enable = true;
|
||||||
|
environment.systemPackages = [
|
||||||
|
pkgs.ladybird
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
enableOCR = true;
|
||||||
|
|
||||||
|
testScript =
|
||||||
|
''
|
||||||
|
machine.wait_for_x()
|
||||||
|
machine.succeed("echo '<!DOCTYPE html><html><body><h1>Hello world</h1></body></html>' > page.html")
|
||||||
|
machine.execute("ladybird file://$(pwd)/page.html >&2 &")
|
||||||
|
machine.wait_for_window("Ladybird")
|
||||||
|
machine.sleep(5)
|
||||||
|
machine.wait_for_text("Hello world")
|
||||||
|
machine.screenshot("screen")
|
||||||
|
'';
|
||||||
|
})
|
|
@ -6,4 +6,6 @@ f: {
|
||||||
|
|
||||||
with import ../lib/testing-python.nix { inherit system pkgs; };
|
with import ../lib/testing-python.nix { inherit system pkgs; };
|
||||||
|
|
||||||
makeTest (if pkgs.lib.isFunction f then f (args // { inherit pkgs; inherit (pkgs) lib; }) else f)
|
let testConfig = makeTest (if pkgs.lib.isFunction f then f (args // { inherit pkgs; inherit (pkgs) lib; }) else f);
|
||||||
|
in testConfig.test # For nix-build
|
||||||
|
// testConfig # For all-tests.nix
|
||||||
|
|
4
third_party/nixpkgs/nixos/tests/pgadmin4.nix
vendored
4
third_party/nixpkgs/nixos/tests/pgadmin4.nix
vendored
|
@ -107,14 +107,12 @@ import ./make-test-python.nix ({ pkgs, lib, buildDeps ? [ ], pythonEnv ? [ ], ..
|
||||||
)
|
)
|
||||||
|
|
||||||
# Don't bother to test LDAP or kerberos authentification
|
# Don't bother to test LDAP or kerberos authentification
|
||||||
# For now deactivate change_password API test. Current bug report at https://redmine.postgresql.org/issues/7648
|
|
||||||
# Password change works from the UI, if email SMTP is configured.
|
|
||||||
with subtest("run browser test"):
|
with subtest("run browser test"):
|
||||||
machine.succeed(
|
machine.succeed(
|
||||||
'cd ${pgadmin4SrcDir}/pgadmin4-${pkgs.pgadmin4.version}/web \
|
'cd ${pgadmin4SrcDir}/pgadmin4-${pkgs.pgadmin4.version}/web \
|
||||||
&& python regression/runtests.py \
|
&& python regression/runtests.py \
|
||||||
--pkg browser \
|
--pkg browser \
|
||||||
--exclude browser.tests.test_ldap_login.LDAPLoginTestCase,browser.tests.test_ldap_login,browser.tests.test_kerberos_with_mocking,browser.tests.test_change_password'
|
--exclude browser.tests.test_ldap_login.LDAPLoginTestCase,browser.tests.test_ldap_login,browser.tests.test_kerberos_with_mocking'
|
||||||
)
|
)
|
||||||
|
|
||||||
# fontconfig is necessary for chromium to run
|
# fontconfig is necessary for chromium to run
|
||||||
|
|
|
@ -2,7 +2,7 @@ import ./make-test-python.nix ({ pkgs, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
name = "retroarch";
|
name = "retroarch";
|
||||||
meta = with pkgs.lib.maintainers; { maintainers = [ j0hax ]; };
|
meta = with pkgs.lib; { maintainers = teams.libretro.members ++ [ maintainers.j0hax ]; };
|
||||||
|
|
||||||
nodes.machine = { ... }:
|
nodes.machine = { ... }:
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@ import ./make-test-python.nix ({ pkgs, ... }:
|
||||||
services.xserver.enable = true;
|
services.xserver.enable = true;
|
||||||
services.xserver.desktopManager.retroarch = {
|
services.xserver.desktopManager.retroarch = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs.retroarchFull;
|
package = pkgs.retroarchBare;
|
||||||
};
|
};
|
||||||
services.xserver.displayManager = {
|
services.xserver.displayManager = {
|
||||||
sddm.enable = true;
|
sddm.enable = true;
|
||||||
|
|
17
third_party/nixpkgs/nixos/tests/systemd-initrd-modprobe.nix
vendored
Normal file
17
third_party/nixpkgs/nixos/tests/systemd-initrd-modprobe.nix
vendored
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
import ./make-test-python.nix ({ lib, pkgs, ... }: {
|
||||||
|
name = "systemd-initrd-modprobe";
|
||||||
|
|
||||||
|
nodes.machine = { pkgs, ... }: {
|
||||||
|
boot.initrd.systemd.enable = true;
|
||||||
|
boot.initrd.kernelModules = [ "loop" ]; # Load module in initrd.
|
||||||
|
boot.extraModprobeConfig = ''
|
||||||
|
options loop max_loop=42
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
testScript = ''
|
||||||
|
machine.wait_for_unit("multi-user.target")
|
||||||
|
max_loop = machine.succeed("cat /sys/module/loop/parameters/max_loop")
|
||||||
|
assert int(max_loop) == 42, "Parameter should be respected for initrd kernel modules"
|
||||||
|
'';
|
||||||
|
})
|
|
@ -1,4 +1,4 @@
|
||||||
import ./make-test-python.nix (
|
import ./make-test-python.nix ({ pkgs, ... }:
|
||||||
let
|
let
|
||||||
|
|
||||||
container = {
|
container = {
|
||||||
|
@ -18,6 +18,7 @@ import ./make-test-python.nix (
|
||||||
};
|
};
|
||||||
|
|
||||||
containerSystem = (import ../lib/eval-config.nix {
|
containerSystem = (import ../lib/eval-config.nix {
|
||||||
|
inherit (pkgs) system;
|
||||||
modules = [ container ];
|
modules = [ container ];
|
||||||
}).config.system.build.toplevel;
|
}).config.system.build.toplevel;
|
||||||
|
|
||||||
|
|
43
third_party/nixpkgs/nixos/tests/tandoor-recipes.nix
vendored
Normal file
43
third_party/nixpkgs/nixos/tests/tandoor-recipes.nix
vendored
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
import ./make-test-python.nix ({ lib, ... }: {
|
||||||
|
name = "tandoor-recipes";
|
||||||
|
meta.maintainers = with lib.maintainers; [ ambroisie ];
|
||||||
|
|
||||||
|
nodes.machine = { pkgs, ... }: {
|
||||||
|
# Setup using Postgres
|
||||||
|
services.tandoor-recipes = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
extraConfig = {
|
||||||
|
DB_ENGINE = "django.db.backends.postgresql";
|
||||||
|
POSTGRES_HOST = "/run/postgresql";
|
||||||
|
POSTGRES_USER = "tandoor_recipes";
|
||||||
|
POSTGRES_DB = "tandoor_recipes";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.postgresql = {
|
||||||
|
enable = true;
|
||||||
|
ensureDatabases = [ "tandoor_recipes" ];
|
||||||
|
ensureUsers = [
|
||||||
|
{
|
||||||
|
name = "tandoor_recipes";
|
||||||
|
ensurePermissions."DATABASE tandoor_recipes" = "ALL PRIVILEGES";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.services = {
|
||||||
|
tandoor-recipes = {
|
||||||
|
after = [ "postgresql.service" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
testScript = ''
|
||||||
|
machine.wait_for_unit("tandoor-recipes.service")
|
||||||
|
|
||||||
|
with subtest("Web interface gets ready"):
|
||||||
|
# Wait until server accepts connections
|
||||||
|
machine.wait_until_succeeds("curl -fs localhost:8080")
|
||||||
|
'';
|
||||||
|
})
|
73
third_party/nixpkgs/nixos/tests/tmate-ssh-server.nix
vendored
Normal file
73
third_party/nixpkgs/nixos/tests/tmate-ssh-server.nix
vendored
Normal file
|
@ -0,0 +1,73 @@
|
||||||
|
import ./make-test-python.nix ({ pkgs, lib, ... }:
|
||||||
|
let
|
||||||
|
inherit (import ./ssh-keys.nix pkgs)
|
||||||
|
snakeOilPrivateKey snakeOilPublicKey;
|
||||||
|
|
||||||
|
setUpPrivateKey = name: ''
|
||||||
|
${name}.succeed(
|
||||||
|
"mkdir -p /root/.ssh",
|
||||||
|
"chown 700 /root/.ssh",
|
||||||
|
"cat '${snakeOilPrivateKey}' > /root/.ssh/id_snakeoil",
|
||||||
|
"chown 600 /root/.ssh/id_snakeoil",
|
||||||
|
)
|
||||||
|
${name}.wait_for_file("/root/.ssh/id_snakeoil")
|
||||||
|
'';
|
||||||
|
|
||||||
|
sshOpts = "-oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null -oIdentityFile=/root/.ssh/id_snakeoil";
|
||||||
|
|
||||||
|
in
|
||||||
|
{
|
||||||
|
name = "tmate-ssh-server";
|
||||||
|
nodes =
|
||||||
|
{
|
||||||
|
server = { ... }: {
|
||||||
|
services.tmate-ssh-server = {
|
||||||
|
enable = true;
|
||||||
|
port = 2223;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
client = { ... }: {
|
||||||
|
environment.systemPackages = [ pkgs.tmate ];
|
||||||
|
services.openssh.enable = true;
|
||||||
|
users.users.root.openssh.authorizedKeys.keys = [ snakeOilPublicKey ];
|
||||||
|
};
|
||||||
|
client2 = { ... }: {
|
||||||
|
environment.systemPackages = [ pkgs.openssh ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
testScript = ''
|
||||||
|
start_all()
|
||||||
|
|
||||||
|
server.wait_for_unit("tmate-ssh-server.service")
|
||||||
|
server.wait_for_open_port(2223)
|
||||||
|
server.wait_for_file("/etc/tmate-ssh-server-keys/ssh_host_ed25519_key.pub")
|
||||||
|
server.wait_for_file("/etc/tmate-ssh-server-keys/ssh_host_rsa_key.pub")
|
||||||
|
server.succeed("tmate-client-config > /tmp/tmate.conf")
|
||||||
|
server.wait_for_file("/tmp/tmate.conf")
|
||||||
|
|
||||||
|
${setUpPrivateKey "server"}
|
||||||
|
client.wait_for_unit("sshd.service")
|
||||||
|
client.wait_for_open_port(22)
|
||||||
|
server.succeed("scp ${sshOpts} /tmp/tmate.conf client:/tmp/tmate.conf")
|
||||||
|
|
||||||
|
client.wait_for_file("/tmp/tmate.conf")
|
||||||
|
client.send_chars("root\n")
|
||||||
|
client.sleep(2)
|
||||||
|
client.send_chars("tmate -f /tmp/tmate.conf\n")
|
||||||
|
client.sleep(2)
|
||||||
|
client.send_chars("q")
|
||||||
|
client.sleep(2)
|
||||||
|
client.send_chars("tmate display -p '#{tmate_ssh}' > /tmp/ssh_command\n")
|
||||||
|
client.wait_for_file("/tmp/ssh_command")
|
||||||
|
ssh_cmd = client.succeed("cat /tmp/ssh_command")
|
||||||
|
|
||||||
|
client2.succeed("mkdir -p ~/.ssh; ssh-keyscan -p 2223 server > ~/.ssh/known_hosts")
|
||||||
|
client2.send_chars("root\n")
|
||||||
|
client2.sleep(2)
|
||||||
|
client2.send_chars(ssh_cmd.strip() + "\n")
|
||||||
|
client2.sleep(2)
|
||||||
|
client2.send_chars("touch /tmp/client_2\n")
|
||||||
|
|
||||||
|
client.wait_for_file("/tmp/client_2")
|
||||||
|
'';
|
||||||
|
})
|
|
@ -20,10 +20,8 @@ import ./make-test-python.nix ({ pkgs, ... }: {
|
||||||
machine.wait_for_x()
|
machine.wait_for_x()
|
||||||
machine.execute("vengi-voxedit >&2 &")
|
machine.execute("vengi-voxedit >&2 &")
|
||||||
machine.wait_for_window("voxedit")
|
machine.wait_for_window("voxedit")
|
||||||
# OCR on voxedit's window is very expensive, so we avoid wasting a try
|
# Let the window load fully
|
||||||
# by letting the window load fully first
|
|
||||||
machine.sleep(15)
|
machine.sleep(15)
|
||||||
machine.wait_for_text("Solid")
|
|
||||||
machine.screenshot("screen")
|
machine.screenshot("screen")
|
||||||
'';
|
'';
|
||||||
})
|
})
|
||||||
|
|
18
third_party/nixpkgs/nixos/tests/xpadneo.nix
vendored
Normal file
18
third_party/nixpkgs/nixos/tests/xpadneo.nix
vendored
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
import ./make-test-python.nix ({ lib, pkgs, ... }: {
|
||||||
|
name = "xpadneo";
|
||||||
|
meta.maintainers = with lib.maintainers; [ kira-bruneau ];
|
||||||
|
|
||||||
|
nodes = {
|
||||||
|
machine = {
|
||||||
|
config.hardware.xpadneo.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# This is just a sanity check to make sure the module was
|
||||||
|
# loaded. We'd have to find some way to mock an xbox controller if
|
||||||
|
# we wanted more in-depth testing.
|
||||||
|
testScript = ''
|
||||||
|
machine.start();
|
||||||
|
machine.succeed("modinfo hid_xpadneo | grep 'version:\s\+${pkgs.linuxPackages.xpadneo.version}'")
|
||||||
|
'';
|
||||||
|
})
|
|
@ -1,32 +0,0 @@
|
||||||
{ appimageTools, lib, fetchurl }:
|
|
||||||
let
|
|
||||||
pname = "apple-music-electron";
|
|
||||||
version = "1.5.5";
|
|
||||||
name = "Apple.Music-${version}";
|
|
||||||
|
|
||||||
src = fetchurl {
|
|
||||||
url = "https://github.com/cryptofyre/Apple-Music-Electron/releases/download/v${version}/${name}.AppImage";
|
|
||||||
sha256 = "1gb6j3nvam9fcpsgiv56jccg9a4y14vzsyw11h3hckaigy90knpx";
|
|
||||||
};
|
|
||||||
|
|
||||||
appimageContents = appimageTools.extract { inherit name src; };
|
|
||||||
in appimageTools.wrapType2 {
|
|
||||||
inherit name src;
|
|
||||||
|
|
||||||
extraInstallCommands = ''
|
|
||||||
mv $out/bin/${name} $out/bin/${pname}
|
|
||||||
|
|
||||||
install -m 444 -D ${appimageContents}/${pname}.desktop -t $out/share/applications
|
|
||||||
substituteInPlace $out/share/applications/${pname}.desktop \
|
|
||||||
--replace 'Exec=AppRun' 'Exec=${pname}'
|
|
||||||
cp -r ${appimageContents}/usr/share/icons $out/share
|
|
||||||
'';
|
|
||||||
|
|
||||||
meta = with lib; {
|
|
||||||
description = "Unofficial Apple Music application without having to bother with a Web Browser or iTunes";
|
|
||||||
homepage = "https://github.com/iiFir3z/Apple-Music-Electron";
|
|
||||||
license = licenses.mit;
|
|
||||||
maintainers = [ maintainers.ivar ];
|
|
||||||
platforms = [ "x86_64-linux" ];
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -22,7 +22,7 @@ python3Packages.buildPythonApplication rec {
|
||||||
format = "other"; # no setup.py
|
format = "other"; # no setup.py
|
||||||
|
|
||||||
pname = "cozy";
|
pname = "cozy";
|
||||||
version = "1.2.0";
|
version = "1.2.1";
|
||||||
|
|
||||||
# Temporary fix
|
# Temporary fix
|
||||||
# See https://github.com/NixOS/nixpkgs/issues/57029
|
# See https://github.com/NixOS/nixpkgs/issues/57029
|
||||||
|
@ -33,7 +33,7 @@ python3Packages.buildPythonApplication rec {
|
||||||
owner = "geigi";
|
owner = "geigi";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = version;
|
rev = version;
|
||||||
sha256 = "0igqf9b77i13sxlk4ziw549h379hmz1slrb3vvf8irk94gxabsaw";
|
hash = "sha256-cRqfLFLvje8lxUZ4S83UAFyYUX0vj1ZgLG0Y6gpCfmI=";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
|
|
|
@ -2,13 +2,13 @@
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "dragonfly-reverb";
|
pname = "dragonfly-reverb";
|
||||||
version = "3.2.6";
|
version = "3.2.7";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "michaelwillis";
|
owner = "michaelwillis";
|
||||||
repo = "dragonfly-reverb";
|
repo = "dragonfly-reverb";
|
||||||
rev = version;
|
rev = version;
|
||||||
sha256 = "sha256-hTapy/wXt1rRZVdkx2RDW8LS/DcY30p+WaAWgemGqVo=";
|
sha256 = "sha256-DJ6J5PuRFDin6PtkNYjIRI1gEVQkKmnZLhnj7L4JtPM=";
|
||||||
fetchSubmodules = true;
|
fetchSubmodules = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
78
third_party/nixpkgs/pkgs/applications/audio/eartag/default.nix
vendored
Normal file
78
third_party/nixpkgs/pkgs/applications/audio/eartag/default.nix
vendored
Normal file
|
@ -0,0 +1,78 @@
|
||||||
|
{ stdenv
|
||||||
|
, lib
|
||||||
|
, fetchFromGitHub
|
||||||
|
, meson
|
||||||
|
, ninja
|
||||||
|
, pkg-config
|
||||||
|
, wrapGAppsHook4
|
||||||
|
, libadwaita
|
||||||
|
, gettext
|
||||||
|
, glib
|
||||||
|
, gobject-introspection
|
||||||
|
, desktop-file-utils
|
||||||
|
, appstream-glib
|
||||||
|
, gtk4
|
||||||
|
, librsvg
|
||||||
|
, python3Packages
|
||||||
|
}:
|
||||||
|
|
||||||
|
python3Packages.buildPythonApplication rec {
|
||||||
|
pname = "eartag";
|
||||||
|
version = "0.2.1";
|
||||||
|
format = "other";
|
||||||
|
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "knuxify";
|
||||||
|
repo = pname;
|
||||||
|
rev = version;
|
||||||
|
sha256 = "sha256-TlY2F2y7ZZ9f+vkYYkES5zoIGcuTWP1+rOJI62wc4SU=";
|
||||||
|
};
|
||||||
|
|
||||||
|
postPatch = ''
|
||||||
|
chmod +x ./build-aux/meson/postinstall.py
|
||||||
|
patchShebangs ./build-aux/meson/postinstall.py
|
||||||
|
substituteInPlace ./build-aux/meson/postinstall.py \
|
||||||
|
--replace "gtk-update-icon-cache" "gtk4-update-icon-cache"
|
||||||
|
'';
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
meson
|
||||||
|
ninja
|
||||||
|
glib
|
||||||
|
desktop-file-utils
|
||||||
|
appstream-glib
|
||||||
|
pkg-config
|
||||||
|
gettext
|
||||||
|
gobject-introspection
|
||||||
|
wrapGAppsHook4
|
||||||
|
] ++ lib.optional stdenv.isDarwin gtk4; # for gtk4-update-icon-cache
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
librsvg
|
||||||
|
libadwaita
|
||||||
|
];
|
||||||
|
|
||||||
|
propagatedBuildInputs = with python3Packages; [
|
||||||
|
pygobject3
|
||||||
|
eyeD3
|
||||||
|
pillow
|
||||||
|
mutagen
|
||||||
|
pytaglib
|
||||||
|
python-magic
|
||||||
|
];
|
||||||
|
|
||||||
|
dontWrapGApps = true;
|
||||||
|
preFixup = ''
|
||||||
|
makeWrapperArgs+=("''${gappsWrapperArgs[@]}")
|
||||||
|
'';
|
||||||
|
|
||||||
|
meta = with lib; {
|
||||||
|
homepage = "https://github.com/knuxify/eartag";
|
||||||
|
description = "Simple music tag editor";
|
||||||
|
# This seems to be using ICU license but we're flagging it to MIT license
|
||||||
|
# since ICU license is a modified version of MIT and to prevent it from
|
||||||
|
# being incorrectly identified as unfree software.
|
||||||
|
license = licenses.mit;
|
||||||
|
maintainers = with maintainers; [ foo-dogsquared ];
|
||||||
|
};
|
||||||
|
}
|
|
@ -13,13 +13,13 @@
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "ft2-clone";
|
pname = "ft2-clone";
|
||||||
version = "1.58";
|
version = "1.59";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "8bitbubsy";
|
owner = "8bitbubsy";
|
||||||
repo = "ft2-clone";
|
repo = "ft2-clone";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "sha256-FHhASs1PKTz6G1sAKNUeft0BHbWgl44l7eiOnyQXZb8=";
|
sha256 = "sha256-TQJCkvPV6vbhURLcuH41i8obHnfHkrCTJG0+IuSVDos=";
|
||||||
};
|
};
|
||||||
|
|
||||||
# Adapt the linux-only CMakeLists to darwin (more reliable than make-macos.sh)
|
# Adapt the linux-only CMakeLists to darwin (more reliable than make-macos.sh)
|
||||||
|
|
|
@ -81,7 +81,6 @@ stdenv.mkDerivation rec {
|
||||||
|
|
||||||
passthru = {
|
passthru = {
|
||||||
updateScript = gitUpdater {
|
updateScript = gitUpdater {
|
||||||
inherit pname version;
|
|
||||||
rev-prefix = "v";
|
rev-prefix = "v";
|
||||||
};
|
};
|
||||||
tests.version = testers.testVersion {
|
tests.version = testers.testVersion {
|
||||||
|
|
|
@ -24,9 +24,10 @@ stdenv.mkDerivation rec {
|
||||||
version = "11.8.16";
|
version = "11.8.16";
|
||||||
|
|
||||||
libmpd = stdenv.mkDerivation {
|
libmpd = stdenv.mkDerivation {
|
||||||
name = "libmpd-11.8.17";
|
pname = "libmpd";
|
||||||
|
version = "11.8.17";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "http://download.sarine.nl/Programs/gmpc/11.8/libmpd-11.8.17.tar.gz";
|
url = "https://download.sarine.nl/Programs/gmpc/${lib.versions.majorMinor version}/libmpd-${version}.tar.gz";
|
||||||
sha256 = "10vspwsgr8pwf3qp2bviw6b2l8prgdiswgv7qiqiyr0h1mmk487y";
|
sha256 = "10vspwsgr8pwf3qp2bviw6b2l8prgdiswgv7qiqiyr0h1mmk487y";
|
||||||
};
|
};
|
||||||
patches = [ ./libmpd-11.8.17-remove-strndup.patch ];
|
patches = [ ./libmpd-11.8.17-remove-strndup.patch ];
|
||||||
|
|
|
@ -5,14 +5,14 @@
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "helio-workstation";
|
pname = "helio-workstation";
|
||||||
version = "3.9";
|
version = "3.10";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "helio-fm";
|
owner = "helio-fm";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = version;
|
rev = version;
|
||||||
fetchSubmodules = true;
|
fetchSubmodules = true;
|
||||||
sha256 = "sha256-AtgKgw+F5lc0Ma3zOxmk3iaZQp2KZb2FP5F8QvvYTT4=";
|
sha256 = "sha256-TqwebaFZXUto+azVJQlggqAc7WKDxAaXxyXcG8x5S/w=";
|
||||||
};
|
};
|
||||||
|
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
|
|
|
@ -32,7 +32,7 @@ python3Packages.buildPythonApplication rec {
|
||||||
# sandbox to be disabled.
|
# sandbox to be disabled.
|
||||||
doCheck = false;
|
doCheck = false;
|
||||||
|
|
||||||
passthru.updateScript = gitUpdater { inherit pname version; };
|
passthru.updateScript = gitUpdater { };
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
description = "Fast audio loudness scanner & tagger (ReplayGain v2 / R128)";
|
description = "Fast audio loudness scanner & tagger (ReplayGain v2 / R128)";
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
{ stdenv, lib, fetchFromGitHub, cmake, pkg-config
|
{ stdenv, lib, fetchFromGitHub, cmake, pkg-config, darwin
|
||||||
, alsa-lib, asio, avahi, boost17x, flac, libogg, libvorbis, soxr
|
, alsa-lib, asio, avahi, boost17x, flac, libogg, libvorbis, soxr
|
||||||
, aixlog, popl
|
, aixlog, popl
|
||||||
, pulseaudioSupport ? false, libpulseaudio
|
, pulseaudioSupport ? false, libpulseaudio
|
||||||
|
@ -22,9 +22,13 @@ stdenv.mkDerivation rec {
|
||||||
# not needed
|
# not needed
|
||||||
buildInputs = [
|
buildInputs = [
|
||||||
boost17x
|
boost17x
|
||||||
alsa-lib asio avahi flac libogg libvorbis
|
asio avahi flac libogg libvorbis
|
||||||
aixlog popl soxr
|
aixlog popl soxr
|
||||||
] ++ lib.optional pulseaudioSupport libpulseaudio;
|
] ++ lib.optional pulseaudioSupport libpulseaudio
|
||||||
|
++ lib.optional stdenv.isLinux alsa-lib
|
||||||
|
++ lib.optional stdenv.isDarwin [darwin.apple_sdk.frameworks.IOKit darwin.apple_sdk.frameworks.AudioToolbox];
|
||||||
|
|
||||||
|
TARGET=lib.optionalString stdenv.isDarwin "MACOS";
|
||||||
|
|
||||||
# Upstream systemd unit files are pretty awful, so we provide our own in a
|
# Upstream systemd unit files are pretty awful, so we provide our own in a
|
||||||
# NixOS module. It might make sense to get that upstreamed...
|
# NixOS module. It might make sense to get that upstreamed...
|
||||||
|
@ -39,6 +43,7 @@ stdenv.mkDerivation rec {
|
||||||
description = "Synchronous multi-room audio player";
|
description = "Synchronous multi-room audio player";
|
||||||
homepage = "https://github.com/badaix/snapcast";
|
homepage = "https://github.com/badaix/snapcast";
|
||||||
maintainers = with maintainers; [ fpletz ];
|
maintainers = with maintainers; [ fpletz ];
|
||||||
|
platforms = platforms.linux ++ platforms.darwin;
|
||||||
license = licenses.gpl3Plus;
|
license = licenses.gpl3Plus;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
, libid3tag, liblo, libmad, liboggz, libpulseaudio, libsamplerate
|
, libid3tag, liblo, libmad, liboggz, libpulseaudio, libsamplerate
|
||||||
, libsndfile, lrdf, opusfile, portaudio, rubberband, serd, sord, capnproto
|
, libsndfile, lrdf, opusfile, portaudio, rubberband, serd, sord, capnproto
|
||||||
, wrapQtAppsHook, pkg-config
|
, wrapQtAppsHook, pkg-config
|
||||||
|
, libjack2
|
||||||
}:
|
}:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
|
@ -17,6 +18,7 @@ stdenv.mkDerivation rec {
|
||||||
[ alsa-lib boost bzip2 fftw fftwFloat libfishsound libid3tag liblo
|
[ alsa-lib boost bzip2 fftw fftwFloat libfishsound libid3tag liblo
|
||||||
libmad liboggz libpulseaudio libsamplerate libsndfile lrdf opusfile
|
libmad liboggz libpulseaudio libsamplerate libsndfile lrdf opusfile
|
||||||
portaudio rubberband serd sord capnproto
|
portaudio rubberband serd sord capnproto
|
||||||
|
libjack2
|
||||||
];
|
];
|
||||||
|
|
||||||
nativeBuildInputs = [ pkg-config wrapQtAppsHook ];
|
nativeBuildInputs = [ pkg-config wrapQtAppsHook ];
|
||||||
|
@ -34,5 +36,7 @@ stdenv.mkDerivation rec {
|
||||||
license = licenses.gpl2Plus;
|
license = licenses.gpl2Plus;
|
||||||
maintainers = [ maintainers.vandenoever ];
|
maintainers = [ maintainers.vandenoever ];
|
||||||
platforms = platforms.linux;
|
platforms = platforms.linux;
|
||||||
|
# undefined reference to `std::__throw_bad_array_new_length()@GLIBCXX_3.4.29'
|
||||||
|
broken = true; # at 2022-09-30
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -132,7 +132,7 @@ stdenv.mkDerivation rec {
|
||||||
description = "The Linux desktop music player from the future";
|
description = "The Linux desktop music player from the future";
|
||||||
homepage = "https://tauonmusicbox.rocks/";
|
homepage = "https://tauonmusicbox.rocks/";
|
||||||
license = licenses.gpl3;
|
license = licenses.gpl3;
|
||||||
maintainers = with maintainers; [ SuperSandro2000 ];
|
maintainers = with maintainers; [ jansol ];
|
||||||
platforms = platforms.linux;
|
platforms = platforms.linux;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,6 +18,7 @@
|
||||||
, gdk-pixbuf
|
, gdk-pixbuf
|
||||||
, glib
|
, glib
|
||||||
, gtk3
|
, gtk3
|
||||||
|
, imagemagick
|
||||||
, libappindicator-gtk3
|
, libappindicator-gtk3
|
||||||
, libdbusmenu
|
, libdbusmenu
|
||||||
, libdrm
|
, libdrm
|
||||||
|
@ -36,11 +37,11 @@
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "tidal-hifi";
|
pname = "tidal-hifi";
|
||||||
version = "4.2.0";
|
version = "4.3.0";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://github.com/Mastermindzh/tidal-hifi/releases/download/${version}/tidal-hifi_${version}_amd64.deb";
|
url = "https://github.com/Mastermindzh/tidal-hifi/releases/download/${version}/tidal-hifi_${version}_amd64.deb";
|
||||||
sha256 = "sha256-YydpWzGH+Orb8Vot8hchh+FFcd327VwQ8Kr7x8WYnv4=";
|
sha256 = "sha256-/ZESysxaDhMpyTKHjjoRMiLM7SMESA5VIfgWCqdyDck=";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ autoPatchelfHook dpkg makeWrapper ];
|
nativeBuildInputs = [ autoPatchelfHook dpkg makeWrapper ];
|
||||||
|
@ -60,6 +61,7 @@ stdenv.mkDerivation rec {
|
||||||
gdk-pixbuf
|
gdk-pixbuf
|
||||||
glib
|
glib
|
||||||
gtk3
|
gtk3
|
||||||
|
imagemagick
|
||||||
pango
|
pango
|
||||||
systemd
|
systemd
|
||||||
mesa # for libgbm
|
mesa # for libgbm
|
||||||
|
@ -106,8 +108,15 @@ stdenv.mkDerivation rec {
|
||||||
makeWrapper $out/opt/tidal-hifi/tidal-hifi $out/bin/tidal-hifi \
|
makeWrapper $out/opt/tidal-hifi/tidal-hifi $out/bin/tidal-hifi \
|
||||||
--prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath buildInputs}" \
|
--prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath buildInputs}" \
|
||||||
"''${gappsWrapperArgs[@]}"
|
"''${gappsWrapperArgs[@]}"
|
||||||
substituteInPlace $out/share/applications/tidal-hifi.desktop --replace \
|
substituteInPlace $out/share/applications/tidal-hifi.desktop \
|
||||||
"/opt/tidal-hifi/tidal-hifi" "tidal-hifi"
|
--replace "/opt/tidal-hifi/tidal-hifi" "tidal-hifi" \
|
||||||
|
--replace "/usr/share/icons/hicolor/0x0/apps/tidal-hifi.png" "tidal-hifi.png"
|
||||||
|
|
||||||
|
for size in 48 64 128 256 512; do
|
||||||
|
mkdir -p $out/share/icons/hicolor/''${size}x''${size}/apps/
|
||||||
|
convert $out/share/icons/hicolor/0x0/apps/tidal-hifi.png \
|
||||||
|
-resize ''${size}x''${size} $out/share/icons/hicolor/''${size}x''${size}/apps/tidal-hifi.png
|
||||||
|
done
|
||||||
'';
|
'';
|
||||||
|
|
||||||
meta = with lib; {
|
meta = with lib; {
|
||||||
|
|
|
@ -3,12 +3,12 @@
|
||||||
, libGLU, lv2, gtk2, cairo, pango, fftwFloat, zita-convolver }:
|
, libGLU, lv2, gtk2, cairo, pango, fftwFloat, zita-convolver }:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
version = "20220714";
|
version = "20220923";
|
||||||
pname = "x42-plugins";
|
pname = "x42-plugins";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://gareus.org/misc/x42-plugins/${pname}-${version}.tar.xz";
|
url = "https://gareus.org/misc/x42-plugins/${pname}-${version}.tar.xz";
|
||||||
sha256 = "sha256-myrHOfgpCwuW8YX0jZ3RutoqtXysU0ejBNcuxN3stXU=";
|
sha256 = "sha256-9Y9up5Ziipm6ums1wESfcADKgMwas2SESgGPn74RTt4=";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ pkg-config ];
|
nativeBuildInputs = [ pkg-config ];
|
||||||
|
|
|
@ -22,13 +22,13 @@
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "yoshimi";
|
pname = "yoshimi";
|
||||||
version = "2.2.1";
|
version = "2.2.2.1";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "Yoshimi";
|
owner = "Yoshimi";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = version;
|
rev = version;
|
||||||
hash = "sha256-Uo403vxzmDntmdoQZQqncuLpDXVJ2FdGi4pQ9jE9b/k=";
|
hash = "sha256-fkN5VNiXRVKCCAyrG6Z2s5qLEtHQNB2874VprhHBhAg=";
|
||||||
};
|
};
|
||||||
|
|
||||||
sourceRoot = "source/src";
|
sourceRoot = "source/src";
|
||||||
|
|
|
@ -6,14 +6,14 @@
|
||||||
|
|
||||||
let chia = python3Packages.buildPythonApplication rec {
|
let chia = python3Packages.buildPythonApplication rec {
|
||||||
pname = "chia";
|
pname = "chia";
|
||||||
version = "1.5.1";
|
version = "1.6.0";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "Chia-Network";
|
owner = "Chia-Network";
|
||||||
repo = "chia-blockchain";
|
repo = "chia-blockchain";
|
||||||
rev = version;
|
rev = version;
|
||||||
fetchSubmodules = true;
|
fetchSubmodules = true;
|
||||||
hash = "sha256-FzKdb6Z/ykKYjpjCr7QR5fxXPNnQbW3bBY97t7DxS90=";
|
hash = "sha256-TNaHPvN19fkRqkQHtqdeEDwhqbntcVhxXhY8TNIScEg=";
|
||||||
};
|
};
|
||||||
|
|
||||||
patches = [
|
patches = [
|
||||||
|
|
|
@ -2,11 +2,11 @@
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "ergo";
|
pname = "ergo";
|
||||||
version = "4.0.45";
|
version = "4.0.103";
|
||||||
|
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://github.com/ergoplatform/ergo/releases/download/v${version}/ergo-${version}.jar";
|
url = "https://github.com/ergoplatform/ergo/releases/download/v${version}/ergo-${version}.jar";
|
||||||
sha256 = "sha256-YUcBNGUs7oBiY7zkRSQxT4/t3DfvamcQPVI3h/sonHM=";
|
sha256 = "sha256-9vGPHNq76BSdqN1z0KzDOzeMOHAUKnA3Jpx+I5+FOFM=";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ makeWrapper ];
|
nativeBuildInputs = [ makeWrapper ];
|
||||||
|
|
|
@ -2,17 +2,17 @@
|
||||||
|
|
||||||
buildGoModule rec {
|
buildGoModule rec {
|
||||||
pname = "erigon";
|
pname = "erigon";
|
||||||
version = "2022.09.03";
|
version = "2022.10.01";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "ledgerwatch";
|
owner = "ledgerwatch";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "sha256-dilsoJw7VPA7SerpAOhYUviE2zt2qMBmSLWaPm0ux2Y=";
|
sha256 = "sha256-FuOVI59vfhm5q92hnfgarh3zpLXSDRmZQJuERHf4I7A=";
|
||||||
fetchSubmodules = true;
|
fetchSubmodules = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
vendorSha256 = "sha256-W8hEMfn2qW/3+V6x/RH1azj49V26fyQ+1y2re3tXsTk=";
|
vendorSha256 = "sha256-zdm11bGkCcwnz+8dve2pdcpg6pDgLe4UG3Ob/mbqhko=";
|
||||||
proxyVendor = true;
|
proxyVendor = true;
|
||||||
|
|
||||||
# Build errors in mdbx when format hardening is enabled:
|
# Build errors in mdbx when format hardening is enabled:
|
||||||
|
|
|
@ -11,13 +11,13 @@
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "fulcrum";
|
pname = "fulcrum";
|
||||||
version = "1.8.1";
|
version = "1.8.2";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "cculianu";
|
owner = "cculianu";
|
||||||
repo = "Fulcrum";
|
repo = "Fulcrum";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "sha256-GaXXqIHuMTGn8iLymAhL8i0HzXmaO6RxtvIzgWw6QI0=";
|
sha256 = "sha256-sX9GeY+c/mcsAWApQ0E5LwoXZgWUC4w7YY8/PEzMhl8=";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [ pkg-config qmake ];
|
nativeBuildInputs = [ pkg-config qmake ];
|
||||||
|
|
|
@ -9,13 +9,13 @@
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "monero-cli";
|
pname = "monero-cli";
|
||||||
version = "0.18.1.1";
|
version = "0.18.1.2";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "monero-project";
|
owner = "monero-project";
|
||||||
repo = "monero";
|
repo = "monero";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "sha256-R3ajdsHVgvkUEwaShwMvhIrcbM4YjsXgBk2QGBhxGRQ=";
|
sha256 = "sha256-yV1ysoesEcjL+JX6hkmcrBDmazOWBvYK6EjshxJzcAw=";
|
||||||
fetchSubmodules = true;
|
fetchSubmodules = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -14,13 +14,13 @@
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "monero-gui";
|
pname = "monero-gui";
|
||||||
version = "0.18.1.1";
|
version = "0.18.1.2";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "monero-project";
|
owner = "monero-project";
|
||||||
repo = "monero-gui";
|
repo = "monero-gui";
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "sha256-mxbr02Ba/BeUiAZujnBdXgJSaq6a/U4GM7rR7sZzTWc=";
|
sha256 = "sha256-GBILqNkYQUkil1qvYnJTkHwgK3dzKR9I9GVbbLy/0UU=";
|
||||||
};
|
};
|
||||||
|
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
|
|
|
@ -3,13 +3,13 @@
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "stellar-core";
|
pname = "stellar-core";
|
||||||
version = "19.3.0";
|
version = "19.4.0";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "stellar";
|
owner = "stellar";
|
||||||
repo = pname;
|
repo = pname;
|
||||||
rev = "v${version}";
|
rev = "v${version}";
|
||||||
sha256 = "sha256-6untHS4+2CyYfGQdbACjEbE+aSirjNk7LxOO2BWDZEM=";
|
sha256 = "sha256-pgwLCtlj2Ak34KfE+ffIxQ1Z4Epxm3f1Y2aqYOIlLUc=";
|
||||||
fetchSubmodules = true;
|
fetchSubmodules = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -10,16 +10,16 @@ let
|
||||||
inherit tiling_wm;
|
inherit tiling_wm;
|
||||||
};
|
};
|
||||||
stableVersion = {
|
stableVersion = {
|
||||||
version = "2021.2.1.15"; # "Android Studio Chipmunk (2021.2.1)"
|
version = "2021.3.1.16"; # "Android Studio Dolphin (2021.3.1)"
|
||||||
sha256Hash = "ABjg38DdKSFwBRb3osRDN3xVd4jaf7CkUkPstDAHRb4=";
|
sha256Hash = "GnJbWFeG9DuUQzbK9wM2BEbj9LXm4jQFf/Eh5Q75HZo=";
|
||||||
};
|
};
|
||||||
betaVersion = {
|
betaVersion = {
|
||||||
version = "2021.3.1.14"; # "Android Studio Dolphin (2021.3.1) Beta 5"
|
version = "2022.1.1.11"; # "Android Studio Electic Eel (2022.1.1) Beta 1"
|
||||||
sha256Hash = "k1Qt54u45rwHsQNz9TVqnFB65kBKtfFZ3OknpfutKPI=";
|
sha256Hash = "YQ20VQME9bQ2vOI7RWfA00npewOL3D6y1dGgNnJXnHc=";
|
||||||
};
|
};
|
||||||
latestVersion = { # canary & dev
|
latestVersion = { # canary & dev
|
||||||
version = "2022.1.1.8"; # "Android Studio Electric Eel (2022.1.1) Canary 8"
|
version = "2022.2.1.2"; # "Android Studio Flamingo (2022.2.1) Canary 2"
|
||||||
sha256Hash = "0bZXx4YpMztLAnwuBaSaNT3GJNfYnqCDanwR+Q7qyUc=";
|
sha256Hash = "hlHlgyl9If2LH4aExpElx0rqmWeoFX+qx4w6RRb5e8U=";
|
||||||
};
|
};
|
||||||
in {
|
in {
|
||||||
# Attributes are named by their corresponding release channels
|
# Attributes are named by their corresponding release channels
|
||||||
|
|
|
@ -38,13 +38,13 @@ let
|
||||||
in
|
in
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
pname = "cudatext";
|
pname = "cudatext";
|
||||||
version = "1.171.0";
|
version = "1.172.0";
|
||||||
|
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
owner = "Alexey-T";
|
owner = "Alexey-T";
|
||||||
repo = "CudaText";
|
repo = "CudaText";
|
||||||
rev = version;
|
rev = version;
|
||||||
hash = "sha256-+NTxZ5UkmaFDcTYliNi/5c8xGztVu6P8C7Ga99MHSFM=";
|
hash = "sha256-AYIgYLrOVutsv0cHUd/TwNAyLbog6xjcepV9/3fTshc=";
|
||||||
};
|
};
|
||||||
|
|
||||||
postPatch = ''
|
postPatch = ''
|
||||||
|
|
|
@ -16,13 +16,13 @@
|
||||||
},
|
},
|
||||||
"ATSynEdit": {
|
"ATSynEdit": {
|
||||||
"owner": "Alexey-T",
|
"owner": "Alexey-T",
|
||||||
"rev": "2022.09.18",
|
"rev": "2022.10.01",
|
||||||
"hash": "sha256-HjW4V7MctQoHbDYIlMv7VS0nS7FFG6Qir0sCju+isI0="
|
"hash": "sha256-cfjpPTOc8KjhaD1wVY3Tb/lQwEeT3Rq22lJ1MKdTNF0="
|
||||||
},
|
},
|
||||||
"ATSynEdit_Cmp": {
|
"ATSynEdit_Cmp": {
|
||||||
"owner": "Alexey-T",
|
"owner": "Alexey-T",
|
||||||
"rev": "2022.09.18",
|
"rev": "2022.10.03",
|
||||||
"hash": "sha256-yIbIRo4hpwbCdH+3fIhjnQPtdvuFmfJSqloKjWqKEuY="
|
"hash": "sha256-2XP3LyB18ZHLQOxzP4lBuhlUA8u1+wHl97cxmRYa7Xg="
|
||||||
},
|
},
|
||||||
"EControl": {
|
"EControl": {
|
||||||
"owner": "Alexey-T",
|
"owner": "Alexey-T",
|
||||||
|
|
|
@ -19,10 +19,10 @@
|
||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "ack";
|
pname = "ack";
|
||||||
ename = "ack";
|
ename = "ack";
|
||||||
version = "1.10";
|
version = "1.11";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/ack-1.10.tar";
|
url = "https://elpa.gnu.org/packages/ack-1.11.tar";
|
||||||
sha256 = "0jz8badhjpzjlrprpzgcm1z6ask1ykc7ab62ixjrj9wcgfjif5qw";
|
sha256 = "0fsi3lgfkyv9gxwcs0q5c9fawksz6x0pqarjagcndnd7jlbxjw7z";
|
||||||
};
|
};
|
||||||
packageRequires = [];
|
packageRequires = [];
|
||||||
meta = {
|
meta = {
|
||||||
|
@ -234,10 +234,10 @@
|
||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "async";
|
pname = "async";
|
||||||
ename = "async";
|
ename = "async";
|
||||||
version = "1.9.6";
|
version = "1.9.7";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/async-1.9.6.tar";
|
url = "https://elpa.gnu.org/packages/async-1.9.7.tar";
|
||||||
sha256 = "0qyf1niqjhzaphb50q1znkwqzpdvqw3drivkzrqxrs747k7pm3my";
|
sha256 = "0wwjgvj42irznwz6rjh8yiz4p9hswgi6ak57anjn256c4zx8xaz2";
|
||||||
};
|
};
|
||||||
packageRequires = [ emacs ];
|
packageRequires = [ emacs ];
|
||||||
meta = {
|
meta = {
|
||||||
|
@ -1071,10 +1071,10 @@
|
||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "denote";
|
pname = "denote";
|
||||||
ename = "denote";
|
ename = "denote";
|
||||||
version = "0.6.1";
|
version = "1.0.0";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/denote-0.6.1.tar";
|
url = "https://elpa.gnu.org/packages/denote-1.0.0.tar";
|
||||||
sha256 = "1yxfnwq2b32xrl52g61a9g3i53m94iybx0n8hh6nbmcv5x4y43ya";
|
sha256 = "1gywi22x12p7hkliwy84i7pvyis5ja22fybz5shkdmkcl12mx631";
|
||||||
};
|
};
|
||||||
packageRequires = [ emacs ];
|
packageRequires = [ emacs ];
|
||||||
meta = {
|
meta = {
|
||||||
|
@ -1086,10 +1086,10 @@
|
||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "detached";
|
pname = "detached";
|
||||||
ename = "detached";
|
ename = "detached";
|
||||||
version = "0.9.0";
|
version = "0.9.1";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/detached-0.9.0.tar";
|
url = "https://elpa.gnu.org/packages/detached-0.9.1.tar";
|
||||||
sha256 = "1br1s2kwb5ji4ad5m89grpyvjffhc3xxydgja9q796cx6zwrnavp";
|
sha256 = "1hzvqb18bpdpmnk469cmkayvddm37knd3mjj7m6zv3qsjw17n6f1";
|
||||||
};
|
};
|
||||||
packageRequires = [ emacs ];
|
packageRequires = [ emacs ];
|
||||||
meta = {
|
meta = {
|
||||||
|
@ -1247,6 +1247,21 @@
|
||||||
license = lib.licenses.free;
|
license = lib.licenses.free;
|
||||||
};
|
};
|
||||||
}) {};
|
}) {};
|
||||||
|
doc-toc = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
|
||||||
|
elpaBuild {
|
||||||
|
pname = "doc-toc";
|
||||||
|
ename = "doc-toc";
|
||||||
|
version = "1.0";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://elpa.gnu.org/packages/doc-toc-1.0.tar";
|
||||||
|
sha256 = "07yan1jmp6q87rhm8bmglswnhzlh5r9j35x5sqm5yfx0pcp16kpj";
|
||||||
|
};
|
||||||
|
packageRequires = [ emacs ];
|
||||||
|
meta = {
|
||||||
|
homepage = "https://elpa.gnu.org/packages/doc-toc.html";
|
||||||
|
license = lib.licenses.free;
|
||||||
|
};
|
||||||
|
}) {};
|
||||||
docbook = callPackage ({ elpaBuild, fetchurl, lib }:
|
docbook = callPackage ({ elpaBuild, fetchurl, lib }:
|
||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "docbook";
|
pname = "docbook";
|
||||||
|
@ -1386,10 +1401,10 @@
|
||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "eev";
|
pname = "eev";
|
||||||
ename = "eev";
|
ename = "eev";
|
||||||
version = "20220828";
|
version = "20220926";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/eev-20220828.tar";
|
url = "https://elpa.gnu.org/packages/eev-20220926.tar";
|
||||||
sha256 = "0znsimjq61p67c2q3qbia5qrimy847xy6gjpl1jgyrdlpgm9hv6r";
|
sha256 = "0kc30y44wl691jchafljp938kbwilawdfxm0bp6nsniv1bm95rpy";
|
||||||
};
|
};
|
||||||
packageRequires = [ emacs ];
|
packageRequires = [ emacs ];
|
||||||
meta = {
|
meta = {
|
||||||
|
@ -1401,10 +1416,10 @@
|
||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "ef-themes";
|
pname = "ef-themes";
|
||||||
ename = "ef-themes";
|
ename = "ef-themes";
|
||||||
version = "0.5.0";
|
version = "0.6.0";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/ef-themes-0.5.0.tar";
|
url = "https://elpa.gnu.org/packages/ef-themes-0.6.0.tar";
|
||||||
sha256 = "1k73q48vg7vyjmnvizinwn9if481ajq63ps2iwb01f1brrhmbf5v";
|
sha256 = "00xq5ymsq8lq2jc541lw64i9pp0a0757wj3nasmfsa27wfpivzhb";
|
||||||
};
|
};
|
||||||
packageRequires = [ emacs ];
|
packageRequires = [ emacs ];
|
||||||
meta = {
|
meta = {
|
||||||
|
@ -1563,10 +1578,10 @@
|
||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "ement";
|
pname = "ement";
|
||||||
ename = "ement";
|
ename = "ement";
|
||||||
version = "0.2";
|
version = "0.3";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/ement-0.2.tar";
|
url = "https://elpa.gnu.org/packages/ement-0.3.tar";
|
||||||
sha256 = "1kxbkqiy5c9pxk4f5k3d3j2q3qn7cg8f21zpgds9s8fd6ax0arcf";
|
sha256 = "08k1qfcymsnaz0mzq33l3i0fj9kjf5y0pdpn7k0skhhlsw90h078";
|
||||||
};
|
};
|
||||||
packageRequires = [
|
packageRequires = [
|
||||||
emacs
|
emacs
|
||||||
|
@ -2909,10 +2924,10 @@
|
||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "modus-themes";
|
pname = "modus-themes";
|
||||||
ename = "modus-themes";
|
ename = "modus-themes";
|
||||||
version = "2.6.0";
|
version = "2.7.1";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/modus-themes-2.6.0.tar";
|
url = "https://elpa.gnu.org/packages/modus-themes-2.7.1.tar";
|
||||||
sha256 = "0i4y69rrdcm64mvqs5z7dmgx1xk0x7g5978q5gjblczlfka444k4";
|
sha256 = "1ms5nig05z26342723jln50m7xq055knr2570x40lkg2m9s1ikx1";
|
||||||
};
|
};
|
||||||
packageRequires = [ emacs ];
|
packageRequires = [ emacs ];
|
||||||
meta = {
|
meta = {
|
||||||
|
@ -3162,10 +3177,10 @@
|
||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "notmuch-indicator";
|
pname = "notmuch-indicator";
|
||||||
ename = "notmuch-indicator";
|
ename = "notmuch-indicator";
|
||||||
version = "0.1.0";
|
version = "0.1.1";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/notmuch-indicator-0.1.0.tar";
|
url = "https://elpa.gnu.org/packages/notmuch-indicator-0.1.1.tar";
|
||||||
sha256 = "11kbl8y95vwww1rsgdd1q5x8i690gi4cxql4n2sg7r5dysdrbyz1";
|
sha256 = "1fdl8xm48id1a85gf3gr8d8m3sz61xrras9f598pvrksm3j162b6";
|
||||||
};
|
};
|
||||||
packageRequires = [ emacs ];
|
packageRequires = [ emacs ];
|
||||||
meta = {
|
meta = {
|
||||||
|
@ -3582,10 +3597,10 @@
|
||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "perl-doc";
|
pname = "perl-doc";
|
||||||
ename = "perl-doc";
|
ename = "perl-doc";
|
||||||
version = "0.2";
|
version = "0.6";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/perl-doc-0.2.tar";
|
url = "https://elpa.gnu.org/packages/perl-doc-0.6.tar";
|
||||||
sha256 = "1p5bbkwllh91a0vg5aisqa9kbms7l9vxk14lm09bav952xxn6gdl";
|
sha256 = "0xmk09pfvdzkrjfsa2l78bd6akcbdhcbnpvwnm6r83h65gpld79f";
|
||||||
};
|
};
|
||||||
packageRequires = [ emacs ];
|
packageRequires = [ emacs ];
|
||||||
meta = {
|
meta = {
|
||||||
|
@ -3642,10 +3657,10 @@
|
||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "plz";
|
pname = "plz";
|
||||||
ename = "plz";
|
ename = "plz";
|
||||||
version = "0.2";
|
version = "0.2.1";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/plz-0.2.tar";
|
url = "https://elpa.gnu.org/packages/plz-0.2.1.tar";
|
||||||
sha256 = "1b45m9b9gzx5ylpxcppkiikk5lfya7ngiqsap4a7m1b2cr8rqxcj";
|
sha256 = "01xa4vjbcdm37dya5d006k9p37kcm1g4yh4j7vh7hjfdz43j6y9s";
|
||||||
};
|
};
|
||||||
packageRequires = [ emacs ];
|
packageRequires = [ emacs ];
|
||||||
meta = {
|
meta = {
|
||||||
|
@ -3747,10 +3762,10 @@
|
||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "pyim";
|
pname = "pyim";
|
||||||
ename = "pyim";
|
ename = "pyim";
|
||||||
version = "5.2.4";
|
version = "5.2.5";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/pyim-5.2.4.tar";
|
url = "https://elpa.gnu.org/packages/pyim-5.2.5.tar";
|
||||||
sha256 = "1dzl4xaf31nyjb5hnwwf29i75x0i8dakpmmagbn4ks5hi3jl2ig0";
|
sha256 = "00f23pl53rdy9iwp4gj2656wik7c6vnmhsglg7z4pz3ippz3f4hq";
|
||||||
};
|
};
|
||||||
packageRequires = [ async emacs xr ];
|
packageRequires = [ async emacs xr ];
|
||||||
meta = {
|
meta = {
|
||||||
|
@ -4427,10 +4442,10 @@
|
||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "sokoban";
|
pname = "sokoban";
|
||||||
ename = "sokoban";
|
ename = "sokoban";
|
||||||
version = "1.4.8";
|
version = "1.4.9";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/sokoban-1.4.8.tar";
|
url = "https://elpa.gnu.org/packages/sokoban-1.4.9.tar";
|
||||||
sha256 = "1w3vrkg239x1saqka21zbl380fxqmbz3lr7820spxd8p5w9v55pn";
|
sha256 = "1zri4czw2d5impkgn8d4hliyw31vndadg7wj31gairk8kyakjpgm";
|
||||||
};
|
};
|
||||||
packageRequires = [ cl-lib emacs ];
|
packageRequires = [ cl-lib emacs ];
|
||||||
meta = {
|
meta = {
|
||||||
|
@ -4687,10 +4702,10 @@
|
||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "taxy-magit-section";
|
pname = "taxy-magit-section";
|
||||||
ename = "taxy-magit-section";
|
ename = "taxy-magit-section";
|
||||||
version = "0.10";
|
version = "0.11";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/taxy-magit-section-0.10.tar";
|
url = "https://elpa.gnu.org/packages/taxy-magit-section-0.11.tar";
|
||||||
sha256 = "1g58nvpb04ldhn5qnjw2q5idrv6vhlfa0qmb46cvis6bkz46cxkw";
|
sha256 = "058z95c0z2hxplr5pfgph1cdq68zcrkmwx1wqyd5fy4a5h43yknq";
|
||||||
};
|
};
|
||||||
packageRequires = [ emacs magit-section taxy ];
|
packageRequires = [ emacs magit-section taxy ];
|
||||||
meta = {
|
meta = {
|
||||||
|
@ -4826,10 +4841,10 @@
|
||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "tramp";
|
pname = "tramp";
|
||||||
ename = "tramp";
|
ename = "tramp";
|
||||||
version = "2.5.3.2";
|
version = "2.5.3.3";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/tramp-2.5.3.2.tar";
|
url = "https://elpa.gnu.org/packages/tramp-2.5.3.3.tar";
|
||||||
sha256 = "1jcicb9f7c1nmaqg20yy2j4wd0qfch4llc26ga7q3ckhx41pvbiw";
|
sha256 = "05w04qwk1lk50fzwl6fxyf6pb1jd2lx4as99zm1dpa858jab6w4a";
|
||||||
};
|
};
|
||||||
packageRequires = [ emacs ];
|
packageRequires = [ emacs ];
|
||||||
meta = {
|
meta = {
|
||||||
|
@ -4841,10 +4856,10 @@
|
||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "tramp-nspawn";
|
pname = "tramp-nspawn";
|
||||||
ename = "tramp-nspawn";
|
ename = "tramp-nspawn";
|
||||||
version = "1.0";
|
version = "1.0.1";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.gnu.org/packages/tramp-nspawn-1.0.tar";
|
url = "https://elpa.gnu.org/packages/tramp-nspawn-1.0.1.tar";
|
||||||
sha256 = "1si649vcj4md50p5nzvw431580rcl113rraj6fw636a394485hvx";
|
sha256 = "1w8h563pcdksqqy5v5vi7vrx76r6pi4bzhqywk1v67rhnr33qsvq";
|
||||||
};
|
};
|
||||||
packageRequires = [ emacs ];
|
packageRequires = [ emacs ];
|
||||||
meta = {
|
meta = {
|
||||||
|
|
|
@ -96,7 +96,7 @@ self: let
|
||||||
./build.sh -j$NIX_BUILD_CORES
|
./build.sh -j$NIX_BUILD_CORES
|
||||||
'';
|
'';
|
||||||
|
|
||||||
postInstall = ''
|
postInstall = (old.postInstall or "") + "\n" + ''
|
||||||
./install.sh --prefix=$out
|
./install.sh --prefix=$out
|
||||||
'';
|
'';
|
||||||
|
|
||||||
|
|
|
@ -160,6 +160,8 @@
|
||||||
|
|
||||||
urweb-mode = callPackage ./urweb-mode { };
|
urweb-mode = callPackage ./urweb-mode { };
|
||||||
|
|
||||||
|
voicemacs = callPackage ./voicemacs { };
|
||||||
|
|
||||||
# Packages made the classical callPackage way
|
# Packages made the classical callPackage way
|
||||||
|
|
||||||
ebuild-mode = callPackage ./ebuild-mode { };
|
ebuild-mode = callPackage ./ebuild-mode { };
|
||||||
|
|
|
@ -186,7 +186,7 @@ let
|
||||||
cd -
|
cd -
|
||||||
'';
|
'';
|
||||||
|
|
||||||
postInstall = ''
|
postInstall = (old.postInstall or "") + "\n" + ''
|
||||||
install -m=755 -D source/sqlite/emacsql-sqlite \
|
install -m=755 -D source/sqlite/emacsql-sqlite \
|
||||||
$out/share/emacs/site-lisp/elpa/emacsql-sqlite-${old.version}/sqlite/emacsql-sqlite
|
$out/share/emacs/site-lisp/elpa/emacsql-sqlite-${old.version}/sqlite/emacsql-sqlite
|
||||||
'';
|
'';
|
||||||
|
@ -301,7 +301,7 @@ let
|
||||||
make
|
make
|
||||||
popd
|
popd
|
||||||
'';
|
'';
|
||||||
postInstall = ''
|
postInstall = (attrs.postInstall or "") + "\n" + ''
|
||||||
outd=$(echo $out/share/emacs/site-lisp/elpa/libgit-**)
|
outd=$(echo $out/share/emacs/site-lisp/elpa/libgit-**)
|
||||||
mkdir $outd/build
|
mkdir $outd/build
|
||||||
install -m444 -t $outd/build ./source/src/libegit2.so
|
install -m444 -t $outd/build ./source/src/libegit2.so
|
||||||
|
@ -426,7 +426,7 @@ let
|
||||||
cd -
|
cd -
|
||||||
'';
|
'';
|
||||||
|
|
||||||
postInstall = ''
|
postInstall = (old.postInstall or "") + "\n" + ''
|
||||||
mkdir -p $out/bin
|
mkdir -p $out/bin
|
||||||
install -m755 -Dt $out/bin ./source/server/telega-server
|
install -m755 -Dt $out/bin ./source/server/telega-server
|
||||||
'';
|
'';
|
||||||
|
@ -456,7 +456,7 @@ let
|
||||||
pkgs.libtool
|
pkgs.libtool
|
||||||
(pkgs.zeromq.override { enableDrafts = true; })
|
(pkgs.zeromq.override { enableDrafts = true; })
|
||||||
];
|
];
|
||||||
postInstall = ''
|
postInstall = (old.postInstall or "") + "\n" + ''
|
||||||
mv $EZMQ_LIBDIR/emacs-zmq.* $out/share/emacs/site-lisp/elpa/zmq-*
|
mv $EZMQ_LIBDIR/emacs-zmq.* $out/share/emacs/site-lisp/elpa/zmq-*
|
||||||
rm -r $out/share/emacs/site-lisp/elpa/zmq-*/src
|
rm -r $out/share/emacs/site-lisp/elpa/zmq-*/src
|
||||||
rm $out/share/emacs/site-lisp/elpa/zmq-*/Makefile
|
rm $out/share/emacs/site-lisp/elpa/zmq-*/Makefile
|
||||||
|
@ -533,7 +533,7 @@ let
|
||||||
];
|
];
|
||||||
# we need the proper out directory to exist, so we do this in the
|
# we need the proper out directory to exist, so we do this in the
|
||||||
# postInstall instead of postBuild
|
# postInstall instead of postBuild
|
||||||
postInstall = ''
|
postInstall = (old.postInstall or "") + "\n" + ''
|
||||||
pushd source/build >/dev/null
|
pushd source/build >/dev/null
|
||||||
make
|
make
|
||||||
install -m444 -t $out/share/emacs/site-lisp/elpa/vterm-** ../*.so
|
install -m444 -t $out/share/emacs/site-lisp/elpa/vterm-** ../*.so
|
||||||
|
|
|
@ -49,10 +49,10 @@
|
||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "annotate";
|
pname = "annotate";
|
||||||
ename = "annotate";
|
ename = "annotate";
|
||||||
version = "1.7.2";
|
version = "1.8.0";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.nongnu.org/nongnu/annotate-1.7.2.tar";
|
url = "https://elpa.nongnu.org/nongnu/annotate-1.8.0.tar";
|
||||||
sha256 = "0vdpv8k1cvkn3cvsnxqv299gvp470ga2pgmfvdqi7k1vzypgpp57";
|
sha256 = "169cav480g2fm3z7d5dixrng2h8fv39sa9n066b79cb573p4bbcp";
|
||||||
};
|
};
|
||||||
packageRequires = [];
|
packageRequires = [];
|
||||||
meta = {
|
meta = {
|
||||||
|
@ -1208,10 +1208,10 @@
|
||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "helm";
|
pname = "helm";
|
||||||
ename = "helm";
|
ename = "helm";
|
||||||
version = "3.8.7";
|
version = "3.8.8";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.nongnu.org/nongnu/helm-3.8.7.tar";
|
url = "https://elpa.nongnu.org/nongnu/helm-3.8.8.tar";
|
||||||
sha256 = "1n0m061amrzm0xpgqy2mp9vrk2960gqhl5hi6c1smcmm7nxqwz12";
|
sha256 = "1qsiw8gswjwfp79n7g103db7xsmk36lq6ln558ipn4cw0fpnq1sc";
|
||||||
};
|
};
|
||||||
packageRequires = [ helm-core popup ];
|
packageRequires = [ helm-core popup ];
|
||||||
meta = {
|
meta = {
|
||||||
|
@ -1223,10 +1223,10 @@
|
||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "helm-core";
|
pname = "helm-core";
|
||||||
ename = "helm-core";
|
ename = "helm-core";
|
||||||
version = "3.8.7";
|
version = "3.8.8";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.nongnu.org/nongnu/helm-core-3.8.7.tar";
|
url = "https://elpa.nongnu.org/nongnu/helm-core-3.8.8.tar";
|
||||||
sha256 = "1sak74v3gg34zzlbbgvlzvg7gw32fhcbxp5kigigmwvvbj5imgs7";
|
sha256 = "0wg21425ki8n8d954lkmlyci6awwwv53jg4gn5z495vh27qiv3qn";
|
||||||
};
|
};
|
||||||
packageRequires = [ async emacs ];
|
packageRequires = [ async emacs ];
|
||||||
meta = {
|
meta = {
|
||||||
|
@ -2358,6 +2358,21 @@
|
||||||
license = lib.licenses.free;
|
license = lib.licenses.free;
|
||||||
};
|
};
|
||||||
}) {};
|
}) {};
|
||||||
|
sweeprolog = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
|
||||||
|
elpaBuild {
|
||||||
|
pname = "sweeprolog";
|
||||||
|
ename = "sweeprolog";
|
||||||
|
version = "0.4.5";
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://elpa.nongnu.org/nongnu/sweeprolog-0.4.5.tar";
|
||||||
|
sha256 = "17dbrn2yvc6ib4dig410kbmvpwp4iz6q9hx6g0mk3vxqjrmgwyls";
|
||||||
|
};
|
||||||
|
packageRequires = [ emacs ];
|
||||||
|
meta = {
|
||||||
|
homepage = "https://elpa.gnu.org/packages/sweeprolog.html";
|
||||||
|
license = lib.licenses.free;
|
||||||
|
};
|
||||||
|
}) {};
|
||||||
swift-mode = callPackage ({ elpaBuild, emacs, fetchurl, lib, seq }:
|
swift-mode = callPackage ({ elpaBuild, emacs, fetchurl, lib, seq }:
|
||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "swift-mode";
|
pname = "swift-mode";
|
||||||
|
@ -2518,10 +2533,10 @@
|
||||||
elpaBuild {
|
elpaBuild {
|
||||||
pname = "tuareg";
|
pname = "tuareg";
|
||||||
ename = "tuareg";
|
ename = "tuareg";
|
||||||
version = "2.3.0";
|
version = "3.0.1";
|
||||||
src = fetchurl {
|
src = fetchurl {
|
||||||
url = "https://elpa.nongnu.org/nongnu/tuareg-2.3.0.tar";
|
url = "https://elpa.nongnu.org/nongnu/tuareg-3.0.1.tar";
|
||||||
sha256 = "0a24q64yk4bbgsvm56j1y68zs9yi25qyl83xydx3ff75sk27f1yb";
|
sha256 = "0y98gwnbrcj3csd9yilk1izgzmp1ds5dh3y1bxgb2fzrjir3i13f";
|
||||||
};
|
};
|
||||||
packageRequires = [ caml emacs ];
|
packageRequires = [ caml emacs ];
|
||||||
meta = {
|
meta = {
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -0,0 +1,38 @@
|
||||||
|
From eb9fefe7eddee0b22c7c1104eb9133ed595c55f9 Mon Sep 17 00:00:00 2001
|
||||||
|
From: adisbladis <adisbladis@gmail.com>
|
||||||
|
Date: Fri, 23 Sep 2022 14:52:34 +1200
|
||||||
|
Subject: [PATCH] Add missing (require)'s
|
||||||
|
|
||||||
|
---
|
||||||
|
voicemacs-server.el | 2 ++
|
||||||
|
voicemacs.el | 2 ++
|
||||||
|
2 files changed, 4 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/voicemacs-server.el b/voicemacs-server.el
|
||||||
|
index edfe74c..04ffdf2 100644
|
||||||
|
--- a/voicemacs-server.el
|
||||||
|
+++ b/voicemacs-server.el
|
||||||
|
@@ -1,5 +1,7 @@
|
||||||
|
(require 'cl-lib)
|
||||||
|
(require 'json-rpc-server)
|
||||||
|
+(require 'f)
|
||||||
|
+(require 'porthole)
|
||||||
|
|
||||||
|
|
||||||
|
(defvar voicemacs--update-response-timeout 3
|
||||||
|
diff --git a/voicemacs.el b/voicemacs.el
|
||||||
|
index b93e80b..d790636 100644
|
||||||
|
--- a/voicemacs.el
|
||||||
|
+++ b/voicemacs.el
|
||||||
|
@@ -18,6 +18,8 @@
|
||||||
|
(require 'voicemacs-extend-company))
|
||||||
|
|
||||||
|
|
||||||
|
+(require 'yasnippet)
|
||||||
|
+
|
||||||
|
(voicemacs-define-sync voicemacs
|
||||||
|
:update t
|
||||||
|
:enable nil
|
||||||
|
--
|
||||||
|
2.37.2
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue