Merge remote-tracking branch 'origin/master' into r-updates
This commit is contained in:
commit
145172b2c4
868 changed files with 20460 additions and 15636 deletions
|
@ -13,10 +13,10 @@ assignees: ''
|
|||
<!-- Note that these are hard requirements -->
|
||||
|
||||
<!--
|
||||
You can use the "Go to file" functionality on github to find the package
|
||||
You can use the "Go to file" functionality on GitHub to find the package
|
||||
Then you can go to the history for this package
|
||||
Find the latest "package_name: old_version -> new_version" commit
|
||||
The "new_version" is the the current version of the package
|
||||
The "new_version" is the current version of the package
|
||||
-->
|
||||
- [ ] Checked the [nixpkgs master branch](https://github.com/NixOS/nixpkgs)
|
||||
<!--
|
||||
|
@ -29,7 +29,7 @@ There's a high chance that you'll have the new version right away while helping
|
|||
###### Project name
|
||||
`nix search` name:
|
||||
<!--
|
||||
The current version can be found easily with the same process than above for checking the master branch
|
||||
The current version can be found easily with the same process as above for checking the master branch
|
||||
If an open PR is present for the package, take this version as the current one and link to the PR
|
||||
-->
|
||||
current version:
|
||||
|
|
|
@ -21,7 +21,7 @@ jobs:
|
|||
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
|
||||
git config user.name "github-actions[bot]"
|
||||
pushd pkgs/applications/networking/cluster/terraform-providers
|
||||
./update-all-providers
|
||||
./update-all-providers --no-build
|
||||
git commit -m "${{ steps.setup.outputs.title }}" providers.json
|
||||
popd
|
||||
- name: create PR
|
||||
|
|
|
@ -319,10 +319,14 @@ For information about how to run the updates, execute `nix-shell maintainers/scr
|
|||
|
||||
## Phases {#sec-stdenv-phases}
|
||||
|
||||
The generic builder has a number of *phases*. Package builds are split into phases to make it easier to override specific parts of the build (e.g., unpacking the sources or installing the binaries). Furthermore, it allows a nicer presentation of build logs in the Nix build farm.
|
||||
`stdenv.mkDerivation` sets the Nix [derivation](https://nixos.org/manual/nix/stable/expressions/derivations.html#derivations)'s builder to a script that loads the stdenv `setup.sh` bash library and calls `genericBuild`. Most packaging functions rely on this default builder.
|
||||
|
||||
This generic command invokes a number of *phases*. Package builds are split into phases to make it easier to override specific parts of the build (e.g., unpacking the sources or installing the binaries).
|
||||
|
||||
Each phase can be overridden in its entirety either by setting the environment variable `namePhase` to a string containing some shell commands to be executed, or by redefining the shell function `namePhase`. The former is convenient to override a phase from the derivation, while the latter is convenient from a build script. However, typically one only wants to *add* some commands to a phase, e.g. by defining `postInstall` or `preFixup`, as skipping some of the default actions may have unexpected consequences. The default script for each phase is defined in the file `pkgs/stdenv/generic/setup.sh`.
|
||||
|
||||
While inside an interactive `nix-shell`, if you wanted to run all phases in the order they would be run in an actual build, you can invoke `genericBuild` yourself.
|
||||
|
||||
### Controlling phases {#ssec-controlling-phases}
|
||||
|
||||
There are a number of variables that control what phases are executed and in what order:
|
||||
|
|
34
flake.nix
34
flake.nix
|
@ -21,35 +21,13 @@
|
|||
|
||||
nixos = import ./nixos/lib { lib = final; };
|
||||
|
||||
nixosSystem = { modules, ... } @ args:
|
||||
nixosSystem = args:
|
||||
import ./nixos/lib/eval-config.nix (args // {
|
||||
modules =
|
||||
let
|
||||
moduleDeclarationFile =
|
||||
let
|
||||
# Even though `modules` is a mandatory argument for `nixosSystem`, it doesn't
|
||||
# mean that the evaluator always keeps track of its position. If there
|
||||
# are too many levels of indirection, the position gets lost at some point.
|
||||
intermediatePos = builtins.unsafeGetAttrPos "modules" args;
|
||||
in
|
||||
if intermediatePos == null then null else intermediatePos.file;
|
||||
|
||||
# Add the invoking file as error message location for modules
|
||||
# that don't have their own locations; presumably inline modules.
|
||||
addModuleDeclarationFile =
|
||||
m: if moduleDeclarationFile == null then m else {
|
||||
_file = moduleDeclarationFile;
|
||||
imports = [ m ];
|
||||
};
|
||||
|
||||
in
|
||||
map addModuleDeclarationFile modules ++ [
|
||||
{
|
||||
system.nixos.versionSuffix =
|
||||
".${final.substring 0 8 (self.lastModifiedDate or self.lastModified or "19700101")}.${self.shortRev or "dirty"}";
|
||||
system.nixos.revision = final.mkIf (self ? rev) self.rev;
|
||||
}
|
||||
];
|
||||
modules = args.modules ++ [ {
|
||||
system.nixos.versionSuffix =
|
||||
".${final.substring 0 8 (self.lastModifiedDate or self.lastModified or "19700101")}.${self.shortRev or "dirty"}";
|
||||
system.nixos.revision = final.mkIf (self ? rev) self.rev;
|
||||
} ];
|
||||
});
|
||||
});
|
||||
|
||||
|
|
|
@ -111,8 +111,8 @@ let
|
|||
cleanSource sourceByRegex sourceFilesBySuffices
|
||||
commitIdFromGitRepo cleanSourceWith pathHasContext
|
||||
canCleanSource pathIsRegularFile pathIsGitRepo;
|
||||
inherit (self.modules) evalModules unifyModuleSyntax
|
||||
applyIfFunction mergeModules
|
||||
inherit (self.modules) evalModules setDefaultModuleLocation
|
||||
unifyModuleSyntax applyIfFunction mergeModules
|
||||
mergeModules' mergeOptionDecls evalOptionValue mergeDefinitions
|
||||
pushDownProperties dischargeProperties filterOverrides
|
||||
sortProperties fixupOptionType mkIf mkAssert mkMerge mkOverride
|
||||
|
|
|
@ -334,6 +334,10 @@ rec {
|
|||
in modulesPath: initialModules: args:
|
||||
filterModules modulesPath (collectStructuredModules unknownModule "" initialModules args);
|
||||
|
||||
/* Wrap a module with a default location for reporting errors. */
|
||||
setDefaultModuleLocation = file: m:
|
||||
{ _file = file; imports = [ m ]; };
|
||||
|
||||
/* Massage a module into canonical form, that is, a set consisting
|
||||
of ‘options’, ‘config’ and ‘imports’ attributes. */
|
||||
unifyModuleSyntax = file: key: m:
|
||||
|
@ -534,11 +538,9 @@ rec {
|
|||
correspond to the definition of 'loc' in 'opt.file'. */
|
||||
mergeOptionDecls =
|
||||
let
|
||||
packSubmodule = file: m:
|
||||
{ _file = file; imports = [ m ]; };
|
||||
coerceOption = file: opt:
|
||||
if isFunction opt then packSubmodule file opt
|
||||
else packSubmodule file { options = opt; };
|
||||
if isFunction opt then setDefaultModuleLocation file opt
|
||||
else setDefaultModuleLocation file { options = opt; };
|
||||
in loc: opts:
|
||||
foldl' (res: opt:
|
||||
let t = res.type;
|
||||
|
@ -568,7 +570,7 @@ rec {
|
|||
|
||||
getSubModules = opt.options.type.getSubModules or null;
|
||||
submodules =
|
||||
if getSubModules != null then map (packSubmodule opt._file) getSubModules ++ res.options
|
||||
if getSubModules != null then map (setDefaultModuleLocation opt._file) getSubModules ++ res.options
|
||||
else if opt.options ? options then map (coerceOption opt._file) options' ++ res.options
|
||||
else res.options;
|
||||
in opt.options // res //
|
||||
|
|
115
lib/sources.nix
115
lib/sources.nix
|
@ -20,17 +20,26 @@ let
|
|||
readFile
|
||||
;
|
||||
|
||||
# Returns the type of a path: regular (for file), symlink, or directory
|
||||
pathType = p: getAttr (baseNameOf p) (readDir (dirOf p));
|
||||
/*
|
||||
Returns the type of a path: regular (for file), symlink, or directory.
|
||||
*/
|
||||
pathType = path: getAttr (baseNameOf path) (readDir (dirOf path));
|
||||
|
||||
# Returns true if the path exists and is a directory, false otherwise
|
||||
pathIsDirectory = p: if pathExists p then (pathType p) == "directory" else false;
|
||||
/*
|
||||
Returns true if the path exists and is a directory, false otherwise.
|
||||
*/
|
||||
pathIsDirectory = path: if pathExists path then (pathType path) == "directory" else false;
|
||||
|
||||
# Returns true if the path exists and is a regular file, false otherwise
|
||||
pathIsRegularFile = p: if pathExists p then (pathType p) == "regular" else false;
|
||||
/*
|
||||
Returns true if the path exists and is a regular file, false otherwise.
|
||||
*/
|
||||
pathIsRegularFile = path: if pathExists path then (pathType path) == "regular" else false;
|
||||
|
||||
# Bring in a path as a source, filtering out all Subversion and CVS
|
||||
# directories, as well as backup files (*~).
|
||||
/*
|
||||
A basic filter for `cleanSourceWith` that removes
|
||||
directories of version control system, backup files (*~)
|
||||
and some generated files.
|
||||
*/
|
||||
cleanSourceFilter = name: type: let baseName = baseNameOf (toString name); in ! (
|
||||
# Filter out version control software files/directories
|
||||
(baseName == ".git" || type == "directory" && (baseName == ".svn" || baseName == "CVS" || baseName == ".hg")) ||
|
||||
|
@ -48,43 +57,48 @@ let
|
|||
(type == "unknown")
|
||||
);
|
||||
|
||||
# Filters a source tree removing version control files and directories using cleanSourceWith
|
||||
#
|
||||
# Example:
|
||||
# cleanSource ./.
|
||||
/*
|
||||
Filters a source tree removing version control files and directories using cleanSourceFilter.
|
||||
|
||||
Example:
|
||||
cleanSource ./.
|
||||
*/
|
||||
cleanSource = src: cleanSourceWith { filter = cleanSourceFilter; inherit src; };
|
||||
|
||||
# Like `builtins.filterSource`, except it will compose with itself,
|
||||
# allowing you to chain multiple calls together without any
|
||||
# intermediate copies being put in the nix store.
|
||||
#
|
||||
# lib.cleanSourceWith {
|
||||
# filter = f;
|
||||
# src = lib.cleanSourceWith {
|
||||
# filter = g;
|
||||
# src = ./.;
|
||||
# };
|
||||
# }
|
||||
# # Succeeds!
|
||||
#
|
||||
# builtins.filterSource f (builtins.filterSource g ./.)
|
||||
# # Fails!
|
||||
#
|
||||
# Parameters:
|
||||
#
|
||||
# src: A path or cleanSourceWith result to filter and/or rename.
|
||||
#
|
||||
# filter: A function (path -> type -> bool)
|
||||
# Optional with default value: constant true (include everything)
|
||||
# The function will be combined with the && operator such
|
||||
# that src.filter is called lazily.
|
||||
# For implementing a filter, see
|
||||
# https://nixos.org/nix/manual/#builtin-filterSource
|
||||
#
|
||||
# name: Optional name to use as part of the store path.
|
||||
# This defaults to `src.name` or otherwise `"source"`.
|
||||
#
|
||||
cleanSourceWith = { filter ? _path: _type: true, src, name ? null }:
|
||||
/*
|
||||
Like `builtins.filterSource`, except it will compose with itself,
|
||||
allowing you to chain multiple calls together without any
|
||||
intermediate copies being put in the nix store.
|
||||
|
||||
Example:
|
||||
lib.cleanSourceWith {
|
||||
filter = f;
|
||||
src = lib.cleanSourceWith {
|
||||
filter = g;
|
||||
src = ./.;
|
||||
};
|
||||
}
|
||||
# Succeeds!
|
||||
|
||||
builtins.filterSource f (builtins.filterSource g ./.)
|
||||
# Fails!
|
||||
|
||||
*/
|
||||
cleanSourceWith =
|
||||
{
|
||||
# A path or cleanSourceWith result to filter and/or rename.
|
||||
src,
|
||||
# Optional with default value: constant true (include everything)
|
||||
# The function will be combined with the && operator such
|
||||
# that src.filter is called lazily.
|
||||
# For implementing a filter, see
|
||||
# https://nixos.org/nix/manual/#builtin-filterSource
|
||||
# Type: A function (path -> type -> bool)
|
||||
filter ? _path: _type: true,
|
||||
# Optional name to use as part of the store path.
|
||||
# This defaults to `src.name` or otherwise `"source"`.
|
||||
name ? null
|
||||
}:
|
||||
let
|
||||
orig = toSourceAttributes src;
|
||||
in fromSourceAttributes {
|
||||
|
@ -116,9 +130,11 @@ let
|
|||
satisfiesSubpathInvariant = src ? satisfiesSubpathInvariant && src.satisfiesSubpathInvariant;
|
||||
};
|
||||
|
||||
# Filter sources by a list of regular expressions.
|
||||
#
|
||||
# E.g. `src = sourceByRegex ./my-subproject [".*\.py$" "^database.sql$"]`
|
||||
/*
|
||||
Filter sources by a list of regular expressions.
|
||||
|
||||
Example: src = sourceByRegex ./my-subproject [".*\.py$" "^database.sql$"]
|
||||
*/
|
||||
sourceByRegex = src: regexes:
|
||||
let
|
||||
isFiltered = src ? _isLibCleanSourceWith;
|
||||
|
@ -153,8 +169,11 @@ let
|
|||
|
||||
pathIsGitRepo = path: (tryEval (commitIdFromGitRepo path)).success;
|
||||
|
||||
# Get the commit id of a git repo
|
||||
# Example: commitIdFromGitRepo <nixpkgs/.git>
|
||||
/*
|
||||
Get the commit id of a git repo.
|
||||
|
||||
Example: commitIdFromGitRepo <nixpkgs/.git>
|
||||
*/
|
||||
commitIdFromGitRepo =
|
||||
let readCommitFromFile = file: path:
|
||||
let fileName = toString path + "/" + file;
|
||||
|
|
|
@ -61,11 +61,11 @@ rec {
|
|||
pipe = val: functions:
|
||||
let reverseApply = x: f: f x;
|
||||
in builtins.foldl' reverseApply val functions;
|
||||
/* note please don’t add a function like `compose = flip pipe`.
|
||||
This would confuse users, because the order of the functions
|
||||
in the list is not clear. With pipe, it’s obvious that it
|
||||
goes first-to-last. With `compose`, not so much.
|
||||
*/
|
||||
|
||||
# note please don’t add a function like `compose = flip pipe`.
|
||||
# This would confuse users, because the order of the functions
|
||||
# in the list is not clear. With pipe, it’s obvious that it
|
||||
# goes first-to-last. With `compose`, not so much.
|
||||
|
||||
## Named versions corresponding to some builtin operators.
|
||||
|
||||
|
|
|
@ -4396,6 +4396,12 @@
|
|||
githubId = 27668;
|
||||
name = "Tobias Pflug";
|
||||
};
|
||||
gin66 = {
|
||||
email = "jochen@kiemes.de";
|
||||
github = "gin66";
|
||||
githubId = 5549373;
|
||||
name = "Jochen Kiemes";
|
||||
};
|
||||
giogadi = {
|
||||
email = "lgtorres42@gmail.com";
|
||||
github = "giogadi";
|
||||
|
@ -7523,16 +7529,6 @@
|
|||
githubId = 29855073;
|
||||
name = "Michael Colicchia";
|
||||
};
|
||||
matdsoupe = {
|
||||
github = "matdsoupe";
|
||||
githubId = 44469426;
|
||||
name = "Matheus de Souza Pessanha";
|
||||
email = "matheus_pessanha2001@outlook.com";
|
||||
keys = [{
|
||||
longkeyid = "rsa4096/0x2671964AB1E06A08";
|
||||
fingerprint = "2F32 CFEF E11A D73B A740 FA47 2671 964A B1E0 6A08";
|
||||
}];
|
||||
};
|
||||
matejc = {
|
||||
email = "cotman.matej@gmail.com";
|
||||
github = "matejc";
|
||||
|
@ -8559,6 +8555,12 @@
|
|||
githubId = 3747396;
|
||||
name = "Nathan Isom";
|
||||
};
|
||||
nelsonjeppesen = {
|
||||
email = "nix@jeppesen.io";
|
||||
github = "NelsonJeppesen";
|
||||
githubId = 50854675;
|
||||
name = "Nelson Jeppesen";
|
||||
};
|
||||
neonfuz = {
|
||||
email = "neonfuz@gmail.com";
|
||||
github = "neonfuz";
|
||||
|
@ -11571,6 +11573,13 @@
|
|||
githubId = 2666479;
|
||||
name = "Y Nguyen";
|
||||
};
|
||||
superherointj = {
|
||||
name = "Sérgio G.";
|
||||
email = "5861043+superherointj@users.noreply.github.com";
|
||||
matrix = "@superherointj:matrix.org";
|
||||
github = "superherointj";
|
||||
githubId = 5861043;
|
||||
};
|
||||
SuperSandro2000 = {
|
||||
email = "sandro.jaeckel@gmail.com";
|
||||
matrix = "@sandro:supersandro.de";
|
||||
|
@ -11811,6 +11820,13 @@
|
|||
githubId = 863327;
|
||||
name = "Tyler Benster";
|
||||
};
|
||||
tboerger = {
|
||||
email = "thomas@webhippie.de";
|
||||
matrix = "@tboerger:matrix.org";
|
||||
github = "tboerger";
|
||||
githubId = 156964;
|
||||
name = "Thomas Boerger";
|
||||
};
|
||||
tcbravo = {
|
||||
email = "tomas.bravo@protonmail.ch";
|
||||
github = "tcbravo";
|
||||
|
@ -13747,6 +13763,16 @@
|
|||
github = "zeri42";
|
||||
githubId = 68825133;
|
||||
};
|
||||
zoedsoupe = {
|
||||
github = "zoedsoupe";
|
||||
githubId = 44469426;
|
||||
name = "Zoey de Souza Pessanha";
|
||||
email = "zoey.spessanha@outlook.com";
|
||||
keys = [{
|
||||
longkeyid = "rsa4096/0x1E1E889CDBD6A315";
|
||||
fingerprint = "EAA1 51DB 472B 0122 109A CB17 1E1E 889C DBD6 A315";
|
||||
}];
|
||||
};
|
||||
zombiezen = {
|
||||
name = "Ross Light";
|
||||
email = "ross@zombiezen.com";
|
||||
|
@ -13810,4 +13836,16 @@
|
|||
fingerprint = "3586 3350 BFEA C101 DB1A 4AF0 1F81 112D 62A9 ADCE";
|
||||
}];
|
||||
};
|
||||
ameer = {
|
||||
name = "Ameer Taweel";
|
||||
email = "ameertaweel2002@gmail.com";
|
||||
github = "AmeerTaweel";
|
||||
githubId = 20538273;
|
||||
};
|
||||
nigelgbanks = {
|
||||
name = "Nigel Banks";
|
||||
email = "nigel.g.banks@gmail.com";
|
||||
github = "nigelgbanks";
|
||||
githubId = 487373;
|
||||
};
|
||||
}
|
||||
|
|
|
@ -168,6 +168,13 @@
|
|||
<link linkend="opt-services.baget.enable">services.baget</link>.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<link xlink:href="https://moosefs.com">moosefs</link>, fault
|
||||
tolerant petabyte distributed file system. Available as
|
||||
<link linkend="opt-services.moosefs">moosefs</link>.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<link xlink:href="https://github.com/ThomasLeister/prosody-filer">prosody-filer</link>,
|
||||
|
@ -233,6 +240,19 @@
|
|||
<literal>haskellPackages.callPackage</literal>).
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<literal>pkgs.ghc.withPackages</literal> as well as
|
||||
<literal>haskellPackages.ghcWithPackages</literal> etc. now
|
||||
needs be overridden directly, as opposed to overriding the
|
||||
result of calling it. Additionally, the
|
||||
<literal>withLLVM</literal> parameter has been renamed to
|
||||
<literal>useLLVM</literal>. So instead of
|
||||
<literal>(ghc.withPackages (p: [])).override { withLLVM = true; }</literal>,
|
||||
one needs to use
|
||||
<literal>(ghc.withPackages.override { useLLVM = true; }) (p: [])</literal>.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<literal>pkgs.emacsPackages.orgPackages</literal> is removed
|
||||
|
@ -310,6 +330,22 @@
|
|||
<literal>writers.writePyPy2</literal> needs to be used.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
<literal>buildGoModule</literal> was updated to use
|
||||
<literal>go_1_17</literal>, third party derivations that
|
||||
specify >= go 1.17 in the main <literal>go.mod</literal>
|
||||
will need to regenerate their <literal>vendorSha256</literal>
|
||||
hash.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
The <literal>gnome-passwordsafe</literal> package updated to
|
||||
<link xlink:href="https://gitlab.gnome.org/World/secrets/-/tags/6.0">version
|
||||
6.x</link> and renamed to <literal>gnome-secrets</literal>.
|
||||
</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>
|
||||
If you previously used
|
||||
|
|
|
@ -51,6 +51,9 @@ In addition to numerous new and upgraded packages, this release has the followin
|
|||
|
||||
- [BaGet](https://loic-sharma.github.io/BaGet/), a lightweight NuGet and symbol server. Available at [services.baget](#opt-services.baget.enable).
|
||||
|
||||
- [moosefs](https://moosefs.com), fault tolerant petabyte distributed file system.
|
||||
Available as [moosefs](#opt-services.moosefs).
|
||||
|
||||
- [prosody-filer](https://github.com/ThomasLeister/prosody-filer), a server for handling XMPP HTTP Upload requests. Available at [services.prosody-filer](#opt-services.prosody-filer.enable).
|
||||
|
||||
- [ethercalc](https://github.com/audreyt/ethercalc), an online collaborative
|
||||
|
@ -78,6 +81,12 @@ In addition to numerous new and upgraded packages, this release has the followin
|
|||
instead to ensure cross compilation keeps working (or switch to
|
||||
`haskellPackages.callPackage`).
|
||||
|
||||
- `pkgs.ghc.withPackages` as well as `haskellPackages.ghcWithPackages` etc.
|
||||
now needs be overridden directly, as opposed to overriding the result of
|
||||
calling it. Additionally, the `withLLVM` parameter has been renamed to
|
||||
`useLLVM`. So instead of `(ghc.withPackages (p: [])).override { withLLVM = true; }`,
|
||||
one needs to use `(ghc.withPackages.override { useLLVM = true; }) (p: [])`.
|
||||
|
||||
- `pkgs.emacsPackages.orgPackages` is removed because org elpa is deprecated.
|
||||
The packages in the top level of `pkgs.emacsPackages`, such as org and
|
||||
org-contrib, refer to the ones in `pkgs.emacsPackages.elpaPackages` and
|
||||
|
@ -102,6 +111,10 @@ In addition to numerous new and upgraded packages, this release has the followin
|
|||
- The `writers.writePython2` and corresponding `writers.writePython2Bin` convenience functions to create executable Python 2 scripts in the store were removed in preparation of removal of the Python 2 interpreter.
|
||||
Scripts have to be converted to Python 3 for use with `writers.writePython3` or `writers.writePyPy2` needs to be used.
|
||||
|
||||
- `buildGoModule` was updated to use `go_1_17`, third party derivations that specify >= go 1.17 in the main `go.mod` will need to regenerate their `vendorSha256` hash.
|
||||
|
||||
- The `gnome-passwordsafe` package updated to [version 6.x](https://gitlab.gnome.org/World/secrets/-/tags/6.0) and renamed to `gnome-secrets`.
|
||||
|
||||
- If you previously used `/etc/docker/daemon.json`, you need to incorporate the changes into the new option `virtualisation.docker.daemon.settings`.
|
||||
|
||||
- The backward compatibility in `services.wordpress` to configure sites with
|
||||
|
|
|
@ -21,6 +21,7 @@ evalConfigArgs@
|
|||
, # !!! See comment about args in lib/modules.nix
|
||||
specialArgs ? {}
|
||||
, modules
|
||||
, modulesLocation ? (builtins.unsafeGetAttrPos "modules" evalConfigArgs).file or null
|
||||
, # !!! See comment about check in lib/modules.nix
|
||||
check ? true
|
||||
, prefix ? []
|
||||
|
@ -74,7 +75,18 @@ let
|
|||
_module.check = lib.mkDefault check;
|
||||
};
|
||||
};
|
||||
allUserModules = modules ++ legacyModules;
|
||||
|
||||
allUserModules =
|
||||
let
|
||||
# Add the invoking file (or specified modulesLocation) as error message location
|
||||
# for modules that don't have their own locations; presumably inline modules.
|
||||
locatedModules =
|
||||
if modulesLocation == null then
|
||||
modules
|
||||
else
|
||||
map (lib.setDefaultModuleLocation modulesLocation) modules;
|
||||
in
|
||||
locatedModules ++ legacyModules;
|
||||
|
||||
noUserModules = evalModulesMinimal ({
|
||||
inherit prefix specialArgs;
|
||||
|
|
|
@ -149,10 +149,16 @@ rec {
|
|||
if [[ -h '${output}' ]]; then
|
||||
rm '${output}'
|
||||
fi
|
||||
|
||||
inherit_errexit_restore=$(shopt -p inherit_errexit)
|
||||
shopt -s inherit_errexit
|
||||
''
|
||||
+ concatStringsSep
|
||||
"\n"
|
||||
(imap1 (index: name: "export secret${toString index}=$(<'${secrets.${name}}')")
|
||||
(imap1 (index: name: ''
|
||||
secret${toString index}=$(<'${secrets.${name}}')
|
||||
export secret${toString index}
|
||||
'')
|
||||
(attrNames secrets))
|
||||
+ "\n"
|
||||
+ "${pkgs.jq}/bin/jq >'${output}' '"
|
||||
|
@ -164,6 +170,7 @@ rec {
|
|||
' <<'EOF'
|
||||
${builtins.toJSON set}
|
||||
EOF
|
||||
$inherit_errexit_restore
|
||||
'';
|
||||
|
||||
systemdUtils = {
|
||||
|
|
|
@ -449,16 +449,10 @@ in {
|
|||
imports = [
|
||||
(mkAliasOptionModule [ "users" "extraUsers" ] [ "users" "users" ])
|
||||
(mkAliasOptionModule [ "users" "extraGroups" ] [ "users" "groups" ])
|
||||
(mkChangedOptionModule
|
||||
[ "security" "initialRootPassword" ]
|
||||
[ "users" "users" "root" "initialHashedPassword" ]
|
||||
(cfg: if cfg.security.initialRootPassword == "!"
|
||||
then null
|
||||
else cfg.security.initialRootPassword))
|
||||
(mkRenamedOptionModule ["security" "initialRootPassword"] ["users" "users" "root" "initialHashedPassword"])
|
||||
];
|
||||
|
||||
###### interface
|
||||
|
||||
options = {
|
||||
|
||||
users.mutableUsers = mkOption {
|
||||
|
@ -526,6 +520,17 @@ in {
|
|||
'';
|
||||
};
|
||||
|
||||
|
||||
users.allowNoPasswordLogin = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Disable checking that at least the <literal>root</literal> user or a user in the <literal>wheel</literal> group can log in using
|
||||
a password or an SSH key.
|
||||
|
||||
WARNING: enabling this can lock you out of your system. Enable this only if you know what are you doing.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
|
@ -540,6 +545,7 @@ in {
|
|||
home = "/root";
|
||||
shell = mkDefault cfg.defaultUserShell;
|
||||
group = "root";
|
||||
initialHashedPassword = mkDefault "!";
|
||||
};
|
||||
nobody = {
|
||||
uid = ids.uids.nobody;
|
||||
|
@ -616,9 +622,11 @@ in {
|
|||
# there is at least one "privileged" account that has a
|
||||
# password or an SSH authorized key. Privileged accounts are
|
||||
# root and users in the wheel group.
|
||||
assertion = !cfg.mutableUsers ->
|
||||
any id ((mapAttrsToList (_: cfg:
|
||||
(cfg.name == "root"
|
||||
# The check does not apply when users.disableLoginPossibilityAssertion
|
||||
# The check does not apply when users.mutableUsers
|
||||
assertion = !cfg.mutableUsers -> !cfg.allowNoPasswordLogin ->
|
||||
any id (mapAttrsToList (name: cfg:
|
||||
(name == "root"
|
||||
|| cfg.group == "wheel"
|
||||
|| elem "wheel" cfg.extraGroups)
|
||||
&&
|
||||
|
@ -627,12 +635,16 @@ in {
|
|||
|| cfg.passwordFile != null
|
||||
|| cfg.openssh.authorizedKeys.keys != []
|
||||
|| cfg.openssh.authorizedKeys.keyFiles != [])
|
||||
) cfg.users) ++ [
|
||||
) cfg.users ++ [
|
||||
config.security.googleOsLogin.enable
|
||||
]);
|
||||
message = ''
|
||||
Neither the root account nor any wheel user has a password or SSH authorized key.
|
||||
You must set one to prevent being locked out of your system.'';
|
||||
You must set one to prevent being locked out of your system.
|
||||
If you really want to be locked out of your system, set users.allowNoPasswordLogin = true;
|
||||
However you are most probably better off by setting users.mutableUsers = true; and
|
||||
manually running passwd root to set the root password.
|
||||
'';
|
||||
}
|
||||
] ++ flatten (flip mapAttrsToList cfg.users (name: user:
|
||||
[
|
||||
|
|
|
@ -356,7 +356,6 @@
|
|||
./services/desktops/cpupower-gui.nix
|
||||
./services/desktops/dleyna-renderer.nix
|
||||
./services/desktops/dleyna-server.nix
|
||||
./services/desktops/pantheon/files.nix
|
||||
./services/desktops/espanso.nix
|
||||
./services/desktops/flatpak.nix
|
||||
./services/desktops/geoclue2.nix
|
||||
|
@ -683,6 +682,7 @@
|
|||
./services/network-filesystems/litestream/default.nix
|
||||
./services/network-filesystems/netatalk.nix
|
||||
./services/network-filesystems/nfsd.nix
|
||||
./services/network-filesystems/moosefs.nix
|
||||
./services/network-filesystems/openafs/client.nix
|
||||
./services/network-filesystems/openafs/server.nix
|
||||
./services/network-filesystems/orangefs/server.nix
|
||||
|
@ -914,6 +914,7 @@
|
|||
./services/networking/vsftpd.nix
|
||||
./services/networking/wasabibackend.nix
|
||||
./services/networking/websockify.nix
|
||||
./services/networking/wg-netmanager.nix
|
||||
./services/networking/wg-quick.nix
|
||||
./services/networking/wireguard.nix
|
||||
./services/networking/wpa_supplicant.nix
|
||||
|
@ -1157,7 +1158,7 @@
|
|||
./system/boot/systemd-nspawn.nix
|
||||
./system/boot/timesyncd.nix
|
||||
./system/boot/tmp.nix
|
||||
./system/etc/etc.nix
|
||||
./system/etc/etc-activation.nix
|
||||
./tasks/auto-upgrade.nix
|
||||
./tasks/bcache.nix
|
||||
./tasks/cpu-freq.nix
|
||||
|
|
|
@ -14,6 +14,8 @@ in {
|
|||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
programs.dconf.enable = true;
|
||||
|
||||
environment.systemPackages = [
|
||||
pkgs.calls
|
||||
];
|
||||
|
|
|
@ -60,6 +60,9 @@ with lib;
|
|||
(mkRemovedOptionModule [ "services" "moinmoin" ] "The corresponding package was removed from nixpkgs.")
|
||||
(mkRemovedOptionModule [ "services" "mwlib" ] "The corresponding package was removed from nixpkgs.")
|
||||
(mkRemovedOptionModule [ "services" "osquery" ] "The osquery module has been removed")
|
||||
(mkRemovedOptionModule [ "services" "pantheon" "files" ] ''
|
||||
This module was removed, please add pkgs.pantheon.elementary-files to environment.systemPackages directly.
|
||||
'')
|
||||
(mkRemovedOptionModule [ "services" "prey" ] ''
|
||||
prey-bash-client is deprecated upstream
|
||||
'')
|
||||
|
|
|
@ -5,7 +5,7 @@ with lib;
|
|||
let
|
||||
|
||||
cfg = config.security.googleOsLogin;
|
||||
package = pkgs.google-compute-engine-oslogin;
|
||||
package = pkgs.google-guest-oslogin;
|
||||
|
||||
in
|
||||
|
||||
|
@ -17,7 +17,7 @@ in
|
|||
type = types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Whether to enable Google OS Login
|
||||
Whether to enable Google OS Login.
|
||||
|
||||
The OS Login package enables the following components:
|
||||
AuthorizedKeysCommand to query valid SSH keys from the user's OS Login
|
||||
|
@ -36,7 +36,7 @@ in
|
|||
security.pam.services.sshd = {
|
||||
makeHomeDir = true;
|
||||
googleOsLoginAccountVerification = true;
|
||||
# disabled for now: googleOsLoginAuthentication = true;
|
||||
googleOsLoginAuthentication = true;
|
||||
};
|
||||
|
||||
security.sudo.extraConfig = ''
|
||||
|
@ -47,6 +47,9 @@ in
|
|||
"d /var/google-users.d 750 root root -"
|
||||
];
|
||||
|
||||
systemd.packages = [ package ];
|
||||
systemd.timers.google-oslogin-cache.wantedBy = [ "timers.target" ];
|
||||
|
||||
# enable the nss module, so user lookups etc. work
|
||||
system.nssModules = [ package ];
|
||||
system.nssDatabases.passwd = [ "cache_oslogin" "oslogin" ];
|
||||
|
|
|
@ -444,15 +444,15 @@ let
|
|||
account sufficient ${pam_krb5}/lib/security/pam_krb5.so
|
||||
'' +
|
||||
optionalString cfg.googleOsLoginAccountVerification ''
|
||||
account [success=ok ignore=ignore default=die] ${pkgs.google-compute-engine-oslogin}/lib/pam_oslogin_login.so
|
||||
account [success=ok default=ignore] ${pkgs.google-compute-engine-oslogin}/lib/pam_oslogin_admin.so
|
||||
account [success=ok ignore=ignore default=die] ${pkgs.google-guest-oslogin}/lib/security/pam_oslogin_login.so
|
||||
account [success=ok default=ignore] ${pkgs.google-guest-oslogin}/lib/security/pam_oslogin_admin.so
|
||||
'' +
|
||||
''
|
||||
|
||||
# Authentication management.
|
||||
'' +
|
||||
optionalString cfg.googleOsLoginAuthentication ''
|
||||
auth [success=done perm_denied=bad default=ignore] ${pkgs.google-compute-engine-oslogin}/lib/pam_oslogin_login.so
|
||||
auth [success=done perm_denied=die default=ignore] ${pkgs.google-guest-oslogin}/lib/security/pam_oslogin_login.so
|
||||
'' +
|
||||
optionalString cfg.rootOK ''
|
||||
auth sufficient pam_rootok.so
|
||||
|
@ -1091,11 +1091,11 @@ in
|
|||
mr ${pam_ccreds}/lib/security/pam_ccreds.so,
|
||||
'' +
|
||||
optionalString (isEnabled (cfg: cfg.googleOsLoginAccountVerification)) ''
|
||||
mr ${pkgs.google-compute-engine-oslogin}/lib/pam_oslogin_login.so,
|
||||
mr ${pkgs.google-compute-engine-oslogin}/lib/pam_oslogin_admin.so,
|
||||
mr ${pkgs.google-guest-oslogin}/lib/security/pam_oslogin_login.so,
|
||||
mr ${pkgs.google-guest-oslogin}/lib/security/pam_oslogin_admin.so,
|
||||
'' +
|
||||
optionalString (isEnabled (cfg: cfg.googleOsLoginAuthentication)) ''
|
||||
mr ${pkgs.google-compute-engine-oslogin}/lib/pam_oslogin_login.so,
|
||||
mr ${pkgs.google-guest-oslogin}/lib/security/pam_oslogin_login.so,
|
||||
'' +
|
||||
optionalString (config.security.pam.enableSSHAgentAuth
|
||||
&& isEnabled (cfg: cfg.sshAgentAuth)) ''
|
||||
|
|
|
@ -208,6 +208,7 @@ in
|
|||
token=$(< "$STATE_DIRECTORY"/${newConfigTokenFilename})
|
||||
RUNNER_ROOT="$STATE_DIRECTORY" ${cfg.package}/bin/config.sh \
|
||||
--unattended \
|
||||
--disableupdate \
|
||||
--work "$RUNTIME_DIRECTORY" \
|
||||
--url ${escapeShellArg cfg.url} \
|
||||
--token "$token" \
|
||||
|
|
|
@ -1,13 +0,0 @@
|
|||
# pantheon files daemon.
|
||||
|
||||
{ config, pkgs, lib, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
{
|
||||
|
||||
imports = [
|
||||
(mkRemovedOptionModule [ "services" "pantheon" "files" "enable" ] "Use `environment.systemPackages [ pkgs.pantheon.elementary-files ];`")
|
||||
];
|
||||
|
||||
}
|
|
@ -20,6 +20,9 @@ in
|
|||
###### implementation
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
# Load the i2c-dev module
|
||||
boot.kernelModules = [ "i2c_dev" ];
|
||||
|
||||
# Give users access to the "gddccontrol" tool
|
||||
environment.systemPackages = [
|
||||
pkgs.ddccontrol
|
||||
|
|
|
@ -317,7 +317,8 @@ in
|
|||
(isYes "NET")
|
||||
];
|
||||
|
||||
boot.extraModprobeConfig = "options firmware_class path=${config.hardware.firmware}/lib/firmware";
|
||||
# We don't place this into `extraModprobeConfig` so that stage-1 ramdisk doesn't bloat.
|
||||
environment.etc."modprobe.d/firmware.conf".text = "options firmware_class path=${config.hardware.firmware}/lib/firmware";
|
||||
|
||||
system.activationScripts.udevd =
|
||||
''
|
||||
|
|
|
@ -155,8 +155,8 @@ in
|
|||
default = 1200;
|
||||
description = ''
|
||||
When <literal>usePercentageForPolicy</literal> is
|
||||
<literal>false</literal>, the time remaining at which UPower will
|
||||
consider the battery low.
|
||||
<literal>false</literal>, the time remaining in seconds at which
|
||||
UPower will consider the battery low.
|
||||
|
||||
If any value (of <literal>timeLow</literal>,
|
||||
<literal>timeCritical</literal> and <literal>timeAction</literal>) is
|
||||
|
@ -169,8 +169,8 @@ in
|
|||
default = 300;
|
||||
description = ''
|
||||
When <literal>usePercentageForPolicy</literal> is
|
||||
<literal>false</literal>, the time remaining at which UPower will
|
||||
consider the battery critical.
|
||||
<literal>false</literal>, the time remaining in seconds at which
|
||||
UPower will consider the battery critical.
|
||||
|
||||
If any value (of <literal>timeLow</literal>,
|
||||
<literal>timeCritical</literal> and <literal>timeAction</literal>) is
|
||||
|
@ -183,8 +183,8 @@ in
|
|||
default = 120;
|
||||
description = ''
|
||||
When <literal>usePercentageForPolicy</literal> is
|
||||
<literal>false</literal>, the time remaining at which UPower will
|
||||
take action for the critical battery level.
|
||||
<literal>false</literal>, the time remaining in seconds at which
|
||||
UPower will take action for the critical battery level.
|
||||
|
||||
If any value (of <literal>timeLow</literal>,
|
||||
<literal>timeCritical</literal> and <literal>timeAction</literal>) is
|
||||
|
|
|
@ -43,6 +43,7 @@ in {
|
|||
ExecStart = "${pkgs.autorandr}/bin/autorandr --batch --change --default ${cfg.defaultTarget}";
|
||||
Type = "oneshot";
|
||||
RemainAfterExit = false;
|
||||
KillMode = "process";
|
||||
};
|
||||
};
|
||||
|
||||
|
|
|
@ -1131,8 +1131,8 @@ in {
|
|||
|
||||
ExecStartPre = let
|
||||
preStartFullPrivileges = ''
|
||||
shopt -s dotglob nullglob
|
||||
set -eu
|
||||
set -o errexit -o pipefail -o nounset
|
||||
shopt -s dotglob nullglob inherit_errexit
|
||||
|
||||
chown --no-dereference '${cfg.user}':'${cfg.group}' '${cfg.statePath}'/*
|
||||
if [[ -n "$(ls -A '${cfg.statePath}'/config/)" ]]; then
|
||||
|
@ -1142,7 +1142,8 @@ in {
|
|||
in "+${pkgs.writeShellScript "gitlab-pre-start-full-privileges" preStartFullPrivileges}";
|
||||
|
||||
ExecStart = pkgs.writeShellScript "gitlab-config" ''
|
||||
set -eu
|
||||
set -o errexit -o pipefail -o nounset
|
||||
shopt -s inherit_errexit
|
||||
|
||||
umask u=rwx,g=rx,o=
|
||||
|
||||
|
@ -1171,7 +1172,8 @@ in {
|
|||
rm -f '${cfg.statePath}/config/database.yml'
|
||||
|
||||
${if cfg.databasePasswordFile != null then ''
|
||||
export db_password="$(<'${cfg.databasePasswordFile}')"
|
||||
db_password="$(<'${cfg.databasePasswordFile}')"
|
||||
export db_password
|
||||
|
||||
if [[ -z "$db_password" ]]; then
|
||||
>&2 echo "Database password was an empty string!"
|
||||
|
@ -1195,10 +1197,11 @@ in {
|
|||
|
||||
rm -f '${cfg.statePath}/config/secrets.yml'
|
||||
|
||||
export secret="$(<'${cfg.secrets.secretFile}')"
|
||||
export db="$(<'${cfg.secrets.dbFile}')"
|
||||
export otp="$(<'${cfg.secrets.otpFile}')"
|
||||
export jws="$(<'${cfg.secrets.jwsFile}')"
|
||||
secret="$(<'${cfg.secrets.secretFile}')"
|
||||
db="$(<'${cfg.secrets.dbFile}')"
|
||||
otp="$(<'${cfg.secrets.otpFile}')"
|
||||
jws="$(<'${cfg.secrets.jwsFile}')"
|
||||
export secret db otp jws
|
||||
jq -n '{production: {secret_key_base: $ENV.secret,
|
||||
otp_key_base: $ENV.otp,
|
||||
db_key_base: $ENV.db,
|
||||
|
@ -1232,7 +1235,8 @@ in {
|
|||
RemainAfterExit = true;
|
||||
|
||||
ExecStart = pkgs.writeShellScript "gitlab-db-config" ''
|
||||
set -eu
|
||||
set -o errexit -o pipefail -o nounset
|
||||
shopt -s inherit_errexit
|
||||
umask u=rwx,g=rx,o=
|
||||
|
||||
initial_root_password="$(<'${cfg.initialRootPasswordFile}')"
|
||||
|
|
|
@ -329,7 +329,7 @@ in {
|
|||
"zwave_js"
|
||||
];
|
||||
in {
|
||||
ExecStart = "${package}/bin/hass --runner --config '${cfg.configDir}'";
|
||||
ExecStart = "${package}/bin/hass --config '${cfg.configDir}'";
|
||||
ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID";
|
||||
User = "hass";
|
||||
Group = "hass";
|
||||
|
|
|
@ -86,6 +86,15 @@ in
|
|||
and is set to be read only.
|
||||
'';
|
||||
};
|
||||
global.database_backend = mkOption {
|
||||
type = types.enum [ "sqlite" "rocksdb" ];
|
||||
default = "sqlite";
|
||||
example = "rocksdb";
|
||||
description = ''
|
||||
The database backend for the service. Switching it on an existing
|
||||
instance will require manual migration of data.
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
default = {};
|
||||
|
|
|
@ -6,6 +6,10 @@ let
|
|||
cfg = config.services.plex;
|
||||
in
|
||||
{
|
||||
imports = [
|
||||
(mkRemovedOptionModule [ "services" "plex" "managePlugins" ] "Please omit or define the option: `services.plex.extraPlugins' instead.")
|
||||
];
|
||||
|
||||
options = {
|
||||
services.plex = {
|
||||
enable = mkEnableOption "Plex Media Server";
|
||||
|
@ -42,16 +46,6 @@ in
|
|||
'';
|
||||
};
|
||||
|
||||
managePlugins = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = ''
|
||||
If set to true, this option will cause all of the symlinks in Plex's
|
||||
plugin directory to be removed and symlinks for paths specified in
|
||||
<option>extraPlugins</option> to be added.
|
||||
'';
|
||||
};
|
||||
|
||||
extraPlugins = mkOption {
|
||||
type = types.listOf types.path;
|
||||
default = [];
|
||||
|
@ -59,9 +53,7 @@ in
|
|||
A list of paths to extra plugin bundles to install in Plex's plugin
|
||||
directory. Every time the systemd unit for Plex starts up, all of the
|
||||
symlinks in Plex's plugin directory will be cleared and this module
|
||||
will symlink all of the paths specified here to that directory. If
|
||||
this behavior is undesired, set <option>managePlugins</option> to
|
||||
false.
|
||||
will symlink all of the paths specified here to that directory.
|
||||
'';
|
||||
};
|
||||
|
||||
|
|
|
@ -260,24 +260,17 @@ in
|
|||
ipfs --offline config Mounts.IPNS ${cfg.ipnsMountDir}
|
||||
'' + optionalString cfg.autoMigrate ''
|
||||
${pkgs.ipfs-migrator}/bin/fs-repo-migrations -y
|
||||
'' + concatStringsSep "\n" (collect
|
||||
isString
|
||||
(mapAttrsRecursive
|
||||
(path: value:
|
||||
# Using heredoc below so that the value is never improperly quoted
|
||||
''
|
||||
read value <<EOF
|
||||
${builtins.toJSON value}
|
||||
EOF
|
||||
ipfs --offline config --json "${concatStringsSep "." path}" "$value"
|
||||
'')
|
||||
({
|
||||
Addresses.API = cfg.apiAddress;
|
||||
Addresses.Gateway = cfg.gatewayAddress;
|
||||
Addresses.Swarm = cfg.swarmAddress;
|
||||
} //
|
||||
cfg.extraConfig))
|
||||
);
|
||||
'' + ''
|
||||
ipfs --offline config show \
|
||||
| ${pkgs.jq}/bin/jq '. * $extraConfig' --argjson extraConfig ${
|
||||
escapeShellArg (builtins.toJSON ({
|
||||
Addresses.API = cfg.apiAddress;
|
||||
Addresses.Gateway = cfg.gatewayAddress;
|
||||
Addresses.Swarm = cfg.swarmAddress;
|
||||
} // cfg.extraConfig))
|
||||
} \
|
||||
| ipfs --offline config replace -
|
||||
'';
|
||||
serviceConfig = {
|
||||
ExecStart = [ "" "${cfg.package}/bin/ipfs daemon ${ipfsFlags}" ];
|
||||
User = cfg.user;
|
||||
|
|
249
nixos/modules/services/network-filesystems/moosefs.nix
Normal file
249
nixos/modules/services/network-filesystems/moosefs.nix
Normal file
|
@ -0,0 +1,249 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.moosefs;
|
||||
|
||||
mfsUser = if cfg.runAsUser then "moosefs" else "root";
|
||||
|
||||
settingsFormat = let
|
||||
listSep = " ";
|
||||
allowedTypes = with types; [ bool int float str ];
|
||||
valueToString = val:
|
||||
if isList val then concatStringsSep listSep (map (x: valueToString x) val)
|
||||
else if isBool val then (if val then "1" else "0")
|
||||
else toString val;
|
||||
|
||||
in {
|
||||
type = with types; let
|
||||
valueType = oneOf ([
|
||||
(listOf valueType)
|
||||
] ++ allowedTypes) // {
|
||||
description = "Flat key-value file";
|
||||
};
|
||||
in attrsOf valueType;
|
||||
|
||||
generate = name: value:
|
||||
pkgs.writeText name ( lib.concatStringsSep "\n" (
|
||||
lib.mapAttrsToList (key: val: "${key} = ${valueToString val}") value ));
|
||||
};
|
||||
|
||||
|
||||
initTool = pkgs.writeShellScriptBin "mfsmaster-init" ''
|
||||
if [ ! -e ${cfg.master.settings.DATA_PATH}/metadata.mfs ]; then
|
||||
cp ${pkgs.moosefs}/var/mfs/metadata.mfs.empty ${cfg.master.settings.DATA_PATH}
|
||||
chmod +w ${cfg.master.settings.DATA_PATH}/metadata.mfs.empty
|
||||
${pkgs.moosefs}/bin/mfsmaster -a -c ${masterCfg} start
|
||||
${pkgs.moosefs}/bin/mfsmaster -c ${masterCfg} stop
|
||||
rm ${cfg.master.settings.DATA_PATH}/metadata.mfs.empty
|
||||
fi
|
||||
'';
|
||||
|
||||
# master config file
|
||||
masterCfg = settingsFormat.generate
|
||||
"mfsmaster.cfg" cfg.master.settings;
|
||||
|
||||
# metalogger config file
|
||||
metaloggerCfg = settingsFormat.generate
|
||||
"mfsmetalogger.cfg" cfg.metalogger.settings;
|
||||
|
||||
# chunkserver config file
|
||||
chunkserverCfg = settingsFormat.generate
|
||||
"mfschunkserver.cfg" cfg.chunkserver.settings;
|
||||
|
||||
# generic template for all deamons
|
||||
systemdService = name: extraConfig: configFile: {
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
wants = [ "network-online.target" ];
|
||||
after = [ "network.target" "network-online.target" ];
|
||||
|
||||
serviceConfig = {
|
||||
Type = "forking";
|
||||
ExecStart = "${pkgs.moosefs}/bin/mfs${name} -c ${configFile} start";
|
||||
ExecStop = "${pkgs.moosefs}/bin/mfs${name} -c ${configFile} stop";
|
||||
ExecReload = "${pkgs.moosefs}/bin/mfs${name} -c ${configFile} reload";
|
||||
PIDFile = "${cfg."${name}".settings.DATA_PATH}/.mfs${name}.lock";
|
||||
} // extraConfig;
|
||||
};
|
||||
|
||||
in {
|
||||
###### interface
|
||||
|
||||
options = {
|
||||
services.moosefs = {
|
||||
masterHost = mkOption {
|
||||
type = types.str;
|
||||
default = null;
|
||||
description = "IP or DNS name of master host.";
|
||||
};
|
||||
|
||||
runAsUser = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
example = true;
|
||||
description = "Run daemons as user moosefs instead of root.";
|
||||
};
|
||||
|
||||
client.enable = mkEnableOption "Moosefs client.";
|
||||
|
||||
master = {
|
||||
enable = mkOption {
|
||||
type = types.bool;
|
||||
description = ''
|
||||
Enable Moosefs master daemon.
|
||||
|
||||
You need to run <literal>mfsmaster-init</literal> on a freshly installed master server to
|
||||
initialize the <literal>DATA_PATH</literal> direcory.
|
||||
'';
|
||||
default = false;
|
||||
};
|
||||
|
||||
exports = mkOption {
|
||||
type = with types; listOf str;
|
||||
default = null;
|
||||
description = "Paths to export (see mfsexports.cfg).";
|
||||
example = [
|
||||
"* / rw,alldirs,admin,maproot=0:0"
|
||||
"* . rw"
|
||||
];
|
||||
};
|
||||
|
||||
openFirewall = mkOption {
|
||||
type = types.bool;
|
||||
description = "Whether to automatically open the necessary ports in the firewall.";
|
||||
default = false;
|
||||
};
|
||||
|
||||
settings = mkOption {
|
||||
type = types.submodule {
|
||||
freeformType = settingsFormat.type;
|
||||
|
||||
options.DATA_PATH = mkOption {
|
||||
type = types.str;
|
||||
default = "/var/lib/mfs";
|
||||
description = "Data storage directory.";
|
||||
};
|
||||
};
|
||||
|
||||
description = "Contents of config file (mfsmaster.cfg).";
|
||||
};
|
||||
};
|
||||
|
||||
metalogger = {
|
||||
enable = mkEnableOption "Moosefs metalogger daemon.";
|
||||
|
||||
settings = mkOption {
|
||||
type = types.submodule {
|
||||
freeformType = settingsFormat.type;
|
||||
|
||||
options.DATA_PATH = mkOption {
|
||||
type = types.str;
|
||||
default = "/var/lib/mfs";
|
||||
description = "Data storage directory";
|
||||
};
|
||||
};
|
||||
|
||||
description = "Contents of metalogger config file (mfsmetalogger.cfg).";
|
||||
};
|
||||
};
|
||||
|
||||
chunkserver = {
|
||||
enable = mkEnableOption "Moosefs chunkserver daemon.";
|
||||
|
||||
openFirewall = mkOption {
|
||||
type = types.bool;
|
||||
description = "Whether to automatically open the necessary ports in the firewall.";
|
||||
default = false;
|
||||
};
|
||||
|
||||
hdds = mkOption {
|
||||
type = with types; listOf str;
|
||||
default = null;
|
||||
description = "Mount points to be used by chunkserver for storage (see mfshdd.cfg).";
|
||||
example = [ "/mnt/hdd1" ];
|
||||
};
|
||||
|
||||
settings = mkOption {
|
||||
type = types.submodule {
|
||||
freeformType = settingsFormat.type;
|
||||
|
||||
options.DATA_PATH = mkOption {
|
||||
type = types.str;
|
||||
default = "/var/lib/mfs";
|
||||
description = "Directory for lock file.";
|
||||
};
|
||||
};
|
||||
|
||||
description = "Contents of chunkserver config file (mfschunkserver.cfg).";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
###### implementation
|
||||
|
||||
config = mkIf ( cfg.client.enable || cfg.master.enable || cfg.metalogger.enable || cfg.chunkserver.enable ) {
|
||||
|
||||
warnings = [ ( mkIf (!cfg.runAsUser) "Running moosefs services as root is not recommended.") ];
|
||||
|
||||
# Service settings
|
||||
services.moosefs = {
|
||||
master.settings = mkIf cfg.master.enable {
|
||||
WORKING_USER = mfsUser;
|
||||
EXPORTS_FILENAME = toString ( pkgs.writeText "mfsexports.cfg"
|
||||
(concatStringsSep "\n" cfg.master.exports));
|
||||
};
|
||||
|
||||
metalogger.settings = mkIf cfg.metalogger.enable {
|
||||
WORKING_USER = mfsUser;
|
||||
MASTER_HOST = cfg.masterHost;
|
||||
};
|
||||
|
||||
chunkserver.settings = mkIf cfg.chunkserver.enable {
|
||||
WORKING_USER = mfsUser;
|
||||
MASTER_HOST = cfg.masterHost;
|
||||
HDD_CONF_FILENAME = toString ( pkgs.writeText "mfshdd.cfg"
|
||||
(concatStringsSep "\n" cfg.chunkserver.hdds));
|
||||
};
|
||||
};
|
||||
|
||||
# Create system user account for daemons
|
||||
users = mkIf ( cfg.runAsUser && ( cfg.master.enable || cfg.metalogger.enable || cfg.chunkserver.enable ) ) {
|
||||
users.moosefs = {
|
||||
isSystemUser = true;
|
||||
description = "moosefs daemon user";
|
||||
group = "moosefs";
|
||||
};
|
||||
groups.moosefs = {};
|
||||
};
|
||||
|
||||
environment.systemPackages =
|
||||
(lib.optional cfg.client.enable pkgs.moosefs) ++
|
||||
(lib.optional cfg.master.enable initTool);
|
||||
|
||||
networking.firewall.allowedTCPPorts =
|
||||
(lib.optionals cfg.master.openFirewall [ 9419 9420 9421 ]) ++
|
||||
(lib.optional cfg.chunkserver.openFirewall 9422);
|
||||
|
||||
# Ensure storage directories exist
|
||||
systemd.tmpfiles.rules =
|
||||
optional cfg.master.enable "d ${cfg.master.settings.DATA_PATH} 0700 ${mfsUser} ${mfsUser}"
|
||||
++ optional cfg.metalogger.enable "d ${cfg.metalogger.settings.DATA_PATH} 0700 ${mfsUser} ${mfsUser}"
|
||||
++ optional cfg.chunkserver.enable "d ${cfg.chunkserver.settings.DATA_PATH} 0700 ${mfsUser} ${mfsUser}";
|
||||
|
||||
# Service definitions
|
||||
systemd.services.mfs-master = mkIf cfg.master.enable
|
||||
( systemdService "master" {
|
||||
TimeoutStartSec = 1800;
|
||||
TimeoutStopSec = 1800;
|
||||
Restart = "no";
|
||||
} masterCfg );
|
||||
|
||||
systemd.services.mfs-metalogger = mkIf cfg.metalogger.enable
|
||||
( systemdService "metalogger" { Restart = "on-abnormal"; } metaloggerCfg );
|
||||
|
||||
systemd.services.mfs-chunkserver = mkIf cfg.chunkserver.enable
|
||||
( systemdService "chunkserver" { Restart = "on-abnormal"; } chunkserverCfg );
|
||||
};
|
||||
}
|
|
@ -127,7 +127,7 @@ in {
|
|||
description = "ConnMan VPN service";
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
after = [ "syslog.target" ];
|
||||
before = [ "connman" ];
|
||||
before = [ "connman.service" ];
|
||||
serviceConfig = {
|
||||
Type = "dbus";
|
||||
BusName = "net.connman.vpn";
|
||||
|
@ -140,7 +140,7 @@ in {
|
|||
description = "D-BUS Service";
|
||||
serviceConfig = {
|
||||
Name = "net.connman.vpn";
|
||||
before = [ "connman" ];
|
||||
before = [ "connman.service" ];
|
||||
ExecStart = "${cfg.package}/sbin/connman-vpnd -n";
|
||||
User = "root";
|
||||
SystemdService = "connman-vpn.service";
|
||||
|
|
|
@ -326,7 +326,7 @@ in
|
|||
type = types.package;
|
||||
default = pkgs.iptables;
|
||||
defaultText = literalExpression "pkgs.iptables";
|
||||
example = literalExpression "pkgs.iptables-nftables-compat";
|
||||
example = literalExpression "pkgs.iptables-legacy";
|
||||
description =
|
||||
''
|
||||
The iptables package to use for running the firewall service."
|
||||
|
|
|
@ -68,7 +68,7 @@ in
|
|||
systemd.services.syncplay = {
|
||||
description = "Syncplay Service";
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
after = [ "network-online.target "];
|
||||
after = [ "network-online.target" ];
|
||||
|
||||
serviceConfig = {
|
||||
ExecStart = "${pkgs.syncplay}/bin/syncplay-server ${escapeShellArgs cmdArgs}";
|
||||
|
|
42
nixos/modules/services/networking/wg-netmanager.nix
Normal file
42
nixos/modules/services/networking/wg-netmanager.nix
Normal file
|
@ -0,0 +1,42 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
cfg = config.services.wg-netmanager;
|
||||
in
|
||||
{
|
||||
|
||||
options = {
|
||||
services.wg-netmanager = {
|
||||
enable = mkEnableOption "Wireguard network manager";
|
||||
};
|
||||
};
|
||||
|
||||
###### implementation
|
||||
config = mkIf cfg.enable {
|
||||
# NOTE: wg-netmanager runs as root
|
||||
systemd.services.wg-netmanager = {
|
||||
description = "Wireguard network manager";
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
after = [ "network.target" ];
|
||||
path = with pkgs; [ wireguard-tools iproute2 wireguard-go ];
|
||||
serviceConfig = {
|
||||
Type = "simple";
|
||||
Restart = "on-failure";
|
||||
ExecStart = "${pkgs.wg-netmanager}/bin/wg_netmanager";
|
||||
ExecReload = "${pkgs.coreutils}/bin/kill -HUP $MAINPID";
|
||||
ExecStop = "${pkgs.coreutils}/bin/kill -HUP $MAINPID";
|
||||
|
||||
ReadWritePaths = [
|
||||
"/tmp" # wg-netmanager creates files in /tmp before deleting them after use
|
||||
];
|
||||
};
|
||||
unitConfig = {
|
||||
ConditionPathExists = ["/etc/wg_netmanager/network.yaml" "/etc/wg_netmanager/peer.yaml"];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
meta.maintainers = with maintainers; [ gin66 ];
|
||||
}
|
|
@ -11,11 +11,15 @@ let
|
|||
opt = options.networking.wireless;
|
||||
|
||||
wpa3Protocols = [ "SAE" "FT-SAE" ];
|
||||
hasWPA3 = opts: !mutuallyExclusive opts.authProtocols wpa3Protocols;
|
||||
hasMixedWPA = opts:
|
||||
let
|
||||
hasWPA3 = !mutuallyExclusive opts.authProtocols wpa3Protocols;
|
||||
others = subtractLists wpa3Protocols opts.authProtocols;
|
||||
in hasWPA3 && others != [];
|
||||
|
||||
# Gives a WPA3 network higher priority
|
||||
increaseWPA3Priority = opts:
|
||||
opts // optionalAttrs (hasWPA3 opts)
|
||||
opts // optionalAttrs (hasMixedWPA opts)
|
||||
{ priority = if opts.priority == null
|
||||
then 1
|
||||
else opts.priority + 1;
|
||||
|
@ -33,7 +37,7 @@ let
|
|||
allNetworks =
|
||||
if cfg.fallbackToWPA2
|
||||
then map increaseWPA3Priority networkList
|
||||
++ map mkWPA2Fallback (filter hasWPA3 networkList)
|
||||
++ map mkWPA2Fallback (filter hasMixedWPA networkList)
|
||||
else networkList;
|
||||
|
||||
# Content of wpa_supplicant.conf
|
||||
|
|
|
@ -84,7 +84,6 @@ in {
|
|||
interface eth0
|
||||
{
|
||||
AdvSendAdvert on;
|
||||
AdvDefaultLifetime 0;
|
||||
prefix ${prefix}::/64 {
|
||||
AdvOnLink on;
|
||||
AdvAutonomous on;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
{ config, options, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
|
@ -11,7 +11,16 @@ in {
|
|||
dataDir = mkOption {
|
||||
default = "/var/lib/cfssl";
|
||||
type = types.path;
|
||||
description = "Cfssl work directory.";
|
||||
description = ''
|
||||
The work directory for CFSSL.
|
||||
|
||||
<note><para>
|
||||
If left as the default value this directory will automatically be
|
||||
created before the CFSSL server starts, otherwise you are
|
||||
responsible for ensuring the directory exists with appropriate
|
||||
ownership and permissions.
|
||||
</para></note>
|
||||
'';
|
||||
};
|
||||
|
||||
address = mkOption {
|
||||
|
@ -22,7 +31,7 @@ in {
|
|||
|
||||
port = mkOption {
|
||||
default = 8888;
|
||||
type = types.ints.u16;
|
||||
type = types.port;
|
||||
description = "Port to bind.";
|
||||
};
|
||||
|
||||
|
@ -147,13 +156,12 @@ in {
|
|||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
users.extraGroups.cfssl = {
|
||||
users.groups.cfssl = {
|
||||
gid = config.ids.gids.cfssl;
|
||||
};
|
||||
|
||||
users.extraUsers.cfssl = {
|
||||
users.users.cfssl = {
|
||||
description = "cfssl user";
|
||||
createHome = true;
|
||||
home = cfg.dataDir;
|
||||
group = "cfssl";
|
||||
uid = config.ids.uids.cfssl;
|
||||
|
@ -164,41 +172,46 @@ in {
|
|||
wantedBy = [ "multi-user.target" ];
|
||||
after = [ "network.target" ];
|
||||
|
||||
serviceConfig = {
|
||||
WorkingDirectory = cfg.dataDir;
|
||||
StateDirectory = cfg.dataDir;
|
||||
StateDirectoryMode = 700;
|
||||
Restart = "always";
|
||||
User = "cfssl";
|
||||
serviceConfig = lib.mkMerge [
|
||||
{
|
||||
WorkingDirectory = cfg.dataDir;
|
||||
Restart = "always";
|
||||
User = "cfssl";
|
||||
Group = "cfssl";
|
||||
|
||||
ExecStart = with cfg; let
|
||||
opt = n: v: optionalString (v != null) ''-${n}="${v}"'';
|
||||
in
|
||||
lib.concatStringsSep " \\\n" [
|
||||
"${pkgs.cfssl}/bin/cfssl serve"
|
||||
(opt "address" address)
|
||||
(opt "port" (toString port))
|
||||
(opt "ca" ca)
|
||||
(opt "ca-key" caKey)
|
||||
(opt "ca-bundle" caBundle)
|
||||
(opt "int-bundle" intBundle)
|
||||
(opt "int-dir" intDir)
|
||||
(opt "metadata" metadata)
|
||||
(opt "remote" remote)
|
||||
(opt "config" configFile)
|
||||
(opt "responder" responder)
|
||||
(opt "responder-key" responderKey)
|
||||
(opt "tls-key" tlsKey)
|
||||
(opt "tls-cert" tlsCert)
|
||||
(opt "mutual-tls-ca" mutualTlsCa)
|
||||
(opt "mutual-tls-cn" mutualTlsCn)
|
||||
(opt "mutual-tls-client-key" mutualTlsClientKey)
|
||||
(opt "mutual-tls-client-cert" mutualTlsClientCert)
|
||||
(opt "tls-remote-ca" tlsRemoteCa)
|
||||
(opt "db-config" dbConfig)
|
||||
(opt "loglevel" (toString logLevel))
|
||||
];
|
||||
};
|
||||
ExecStart = with cfg; let
|
||||
opt = n: v: optionalString (v != null) ''-${n}="${v}"'';
|
||||
in
|
||||
lib.concatStringsSep " \\\n" [
|
||||
"${pkgs.cfssl}/bin/cfssl serve"
|
||||
(opt "address" address)
|
||||
(opt "port" (toString port))
|
||||
(opt "ca" ca)
|
||||
(opt "ca-key" caKey)
|
||||
(opt "ca-bundle" caBundle)
|
||||
(opt "int-bundle" intBundle)
|
||||
(opt "int-dir" intDir)
|
||||
(opt "metadata" metadata)
|
||||
(opt "remote" remote)
|
||||
(opt "config" configFile)
|
||||
(opt "responder" responder)
|
||||
(opt "responder-key" responderKey)
|
||||
(opt "tls-key" tlsKey)
|
||||
(opt "tls-cert" tlsCert)
|
||||
(opt "mutual-tls-ca" mutualTlsCa)
|
||||
(opt "mutual-tls-cn" mutualTlsCn)
|
||||
(opt "mutual-tls-client-key" mutualTlsClientKey)
|
||||
(opt "mutual-tls-client-cert" mutualTlsClientCert)
|
||||
(opt "tls-remote-ca" tlsRemoteCa)
|
||||
(opt "db-config" dbConfig)
|
||||
(opt "loglevel" (toString logLevel))
|
||||
];
|
||||
}
|
||||
(mkIf (cfg.dataDir == options.services.cfssl.dataDir.default) {
|
||||
StateDirectory = baseNameOf cfg.dataDir;
|
||||
StateDirectoryMode = 700;
|
||||
})
|
||||
];
|
||||
};
|
||||
|
||||
services.cfssl = {
|
||||
|
|
|
@ -52,11 +52,22 @@ in
|
|||
'';
|
||||
};
|
||||
|
||||
network.enable = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Allow the cloud-init service to configure network interfaces
|
||||
through systemd-networkd.
|
||||
'';
|
||||
};
|
||||
|
||||
config = mkOption {
|
||||
type = types.str;
|
||||
default = ''
|
||||
system_info:
|
||||
distro: nixos
|
||||
network:
|
||||
renderers: [ 'networkd' ]
|
||||
users:
|
||||
- root
|
||||
|
||||
|
@ -109,9 +120,12 @@ in
|
|||
|
||||
environment.etc."cloud/cloud.cfg".text = cfg.config;
|
||||
|
||||
systemd.network.enable = cfg.network.enable;
|
||||
|
||||
systemd.services.cloud-init-local =
|
||||
{ description = "Initial cloud-init job (pre-networking)";
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
before = ["systemd-networkd.service"];
|
||||
path = path;
|
||||
serviceConfig =
|
||||
{ Type = "oneshot";
|
||||
|
@ -129,7 +143,7 @@ in
|
|||
"sshd.service" "sshd-keygen.service" ];
|
||||
after = [ "network-online.target" "cloud-init-local.service" ];
|
||||
before = [ "sshd.service" "sshd-keygen.service" ];
|
||||
requires = [ "network.target "];
|
||||
requires = [ "network.target"];
|
||||
path = path;
|
||||
serviceConfig =
|
||||
{ Type = "oneshot";
|
||||
|
|
|
@ -126,6 +126,8 @@ in
|
|||
|
||||
config = lib.mkIf cfg.enable {
|
||||
systemd.services.self-deploy = {
|
||||
inherit (cfg) startAt;
|
||||
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
|
||||
requires = lib.mkIf (!(isPathType cfg.repository)) [ "network-online.target" ];
|
||||
|
@ -138,8 +140,7 @@ in
|
|||
path = with pkgs; [
|
||||
git
|
||||
nix
|
||||
systemd
|
||||
];
|
||||
] ++ lib.optionals (cfg.switchCommand == "boot") [ systemd ];
|
||||
|
||||
script = ''
|
||||
if [ ! -e ${repositoryDirectory} ]; then
|
||||
|
|
|
@ -224,7 +224,6 @@ in
|
|||
programs.file-roller.package = pkgs.pantheon.file-roller;
|
||||
|
||||
# Settings from elementary-default-settings
|
||||
environment.sessionVariables.GTK_CSD = "1";
|
||||
environment.etc."gtk-3.0/settings.ini".source = "${pkgs.pantheon.elementary-default-settings}/etc/gtk-3.0/settings.ini";
|
||||
|
||||
xdg.portal.extraPortals = with pkgs.pantheon; [
|
||||
|
|
|
@ -350,6 +350,9 @@ let
|
|||
'';
|
||||
symlink = "/etc/modprobe.d/ubuntu.conf";
|
||||
}
|
||||
{ object = config.environment.etc."modprobe.d/nixos.conf".source;
|
||||
symlink = "/etc/modprobe.d/nixos.conf";
|
||||
}
|
||||
{ object = pkgs.kmod-debian-aliases;
|
||||
symlink = "/etc/modprobe.d/debian.conf";
|
||||
}
|
||||
|
|
12
nixos/modules/system/etc/etc-activation.nix
Normal file
12
nixos/modules/system/etc/etc-activation.nix
Normal file
|
@ -0,0 +1,12 @@
|
|||
{ config, lib, ... }:
|
||||
let
|
||||
inherit (lib) stringAfter;
|
||||
in {
|
||||
|
||||
imports = [ ./etc.nix ];
|
||||
|
||||
config = {
|
||||
system.activationScripts.etc =
|
||||
stringAfter [ "users" "groups" ] config.system.build.etcActivationCommands;
|
||||
};
|
||||
}
|
|
@ -66,6 +66,8 @@ in
|
|||
|
||||
{
|
||||
|
||||
imports = [ ../build.nix ];
|
||||
|
||||
###### interface
|
||||
|
||||
options = {
|
||||
|
@ -188,14 +190,12 @@ in
|
|||
config = {
|
||||
|
||||
system.build.etc = etc;
|
||||
|
||||
system.activationScripts.etc = stringAfter [ "users" "groups" ]
|
||||
system.build.etcActivationCommands =
|
||||
''
|
||||
# Set up the statically computed bits of /etc.
|
||||
echo "setting up /etc..."
|
||||
${pkgs.perl.withPackages (p: [ p.FileSlurp ])}/bin/perl ${./setup-etc.pl} ${etc}/etc
|
||||
'';
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
|
|
70
nixos/modules/system/etc/test.nix
Normal file
70
nixos/modules/system/etc/test.nix
Normal file
|
@ -0,0 +1,70 @@
|
|||
{ lib
|
||||
, coreutils
|
||||
, fakechroot
|
||||
, fakeroot
|
||||
, evalMinimalConfig
|
||||
, pkgsModule
|
||||
, runCommand
|
||||
, util-linux
|
||||
, vmTools
|
||||
, writeText
|
||||
}:
|
||||
let
|
||||
node = evalMinimalConfig ({ config, ... }: {
|
||||
imports = [ pkgsModule ../etc/etc.nix ];
|
||||
environment.etc."passwd" = {
|
||||
text = passwdText;
|
||||
};
|
||||
environment.etc."hosts" = {
|
||||
text = hostsText;
|
||||
mode = "0751";
|
||||
};
|
||||
});
|
||||
passwdText = ''
|
||||
root:x:0:0:System administrator:/root:/run/current-system/sw/bin/bash
|
||||
'';
|
||||
hostsText = ''
|
||||
127.0.0.1 localhost
|
||||
::1 localhost
|
||||
# testing...
|
||||
'';
|
||||
in
|
||||
lib.recurseIntoAttrs {
|
||||
test-etc-vm =
|
||||
vmTools.runInLinuxVM (runCommand "test-etc-vm" { } ''
|
||||
mkdir -p /etc
|
||||
${node.config.system.build.etcActivationCommands}
|
||||
set -x
|
||||
[[ -L /etc/passwd ]]
|
||||
diff /etc/passwd ${writeText "expected-passwd" passwdText}
|
||||
[[ 751 = $(stat --format %a /etc/hosts) ]]
|
||||
diff /etc/hosts ${writeText "expected-hosts" hostsText}
|
||||
set +x
|
||||
touch $out
|
||||
'');
|
||||
|
||||
# fakeroot is behaving weird
|
||||
test-etc-fakeroot =
|
||||
runCommand "test-etc"
|
||||
{
|
||||
nativeBuildInputs = [
|
||||
fakeroot
|
||||
fakechroot
|
||||
# for chroot
|
||||
coreutils
|
||||
# fakechroot needs getopt, which is provided by util-linux
|
||||
util-linux
|
||||
];
|
||||
fakeRootCommands = ''
|
||||
mkdir -p /etc
|
||||
${node.config.system.build.etcActivationCommands}
|
||||
diff /etc/hosts ${writeText "expected-hosts" hostsText}
|
||||
touch $out
|
||||
'';
|
||||
} ''
|
||||
mkdir fake-root
|
||||
export FAKECHROOT_EXCLUDE_PATH=/dev:/proc:/sys:${builtins.storeDir}:$out
|
||||
fakechroot fakeroot chroot $PWD/fake-root bash -c 'source $stdenv/setup; eval "$fakeRootCommands"'
|
||||
'';
|
||||
|
||||
}
|
|
@ -305,7 +305,7 @@ let
|
|||
enable = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "Wether to enable wol on this interface.";
|
||||
description = "Whether to enable wol on this interface.";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
|
|
@ -155,7 +155,7 @@ in
|
|||
systemd.services."serial-getty@ttyS0".enable = true;
|
||||
|
||||
# Creates symlinks for block device names.
|
||||
services.udev.packages = [ pkgs.ec2-utils ];
|
||||
services.udev.packages = [ pkgs.amazon-ec2-utils ];
|
||||
|
||||
# Force getting the hostname from EC2.
|
||||
networking.hostName = mkDefault "";
|
||||
|
|
|
@ -76,7 +76,11 @@ in
|
|||
# needs newuidmap from pkgs.shadow
|
||||
path = [ "/run/wrappers" ];
|
||||
environment = proxy_env;
|
||||
unitConfig.StartLimitInterval = "60s";
|
||||
unitConfig = {
|
||||
# docker-rootless doesn't support running as root.
|
||||
ConditionUser = "!root";
|
||||
StartLimitInterval = "60s";
|
||||
};
|
||||
serviceConfig = {
|
||||
Type = "notify";
|
||||
ExecStart = "${cfg.package}/bin/dockerd-rootless --config-file=${daemonSettingsFile}";
|
||||
|
|
|
@ -1,36 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
WGET() {
|
||||
wget --retry-connrefused -t 15 --waitretry=10 --header='Metadata-Flavor: Google' "$@"
|
||||
}
|
||||
|
||||
# When dealing with cryptographic keys, we want to keep things private.
|
||||
umask 077
|
||||
mkdir -p /root/.ssh
|
||||
|
||||
echo "Fetching authorized keys..."
|
||||
WGET -O /tmp/auth_keys http://metadata.google.internal/computeMetadata/v1/instance/attributes/sshKeys
|
||||
|
||||
# Read keys one by one, split in case Google decided
|
||||
# to append metadata (it does sometimes) and add to
|
||||
# authorized_keys if not already present.
|
||||
touch /root/.ssh/authorized_keys
|
||||
while IFS='' read -r line || [[ -n "$line" ]]; do
|
||||
keyLine=$(echo -n "$line" | cut -d ':' -f2)
|
||||
IFS=' ' read -r -a array <<<"$keyLine"
|
||||
if [[ ${#array[@]} -ge 3 ]]; then
|
||||
echo "${array[@]:0:3}" >>/tmp/new_keys
|
||||
echo "Added ${array[*]:2} to authorized_keys"
|
||||
fi
|
||||
done </tmp/auth_keys
|
||||
mv /tmp/new_keys /root/.ssh/authorized_keys
|
||||
chmod 600 /root/.ssh/authorized_keys
|
||||
|
||||
echo "Fetching host keys..."
|
||||
WGET -O /tmp/ssh_host_ed25519_key http://metadata.google.internal/computeMetadata/v1/instance/attributes/ssh_host_ed25519_key
|
||||
WGET -O /tmp/ssh_host_ed25519_key.pub http://metadata.google.internal/computeMetadata/v1/instance/attributes/ssh_host_ed25519_key_pub
|
||||
mv -f /tmp/ssh_host_ed25519_key* /etc/ssh/
|
||||
chmod 600 /etc/ssh/ssh_host_ed25519_key
|
||||
chmod 644 /etc/ssh/ssh_host_ed25519_key.pub
|
|
@ -1,8 +1,5 @@
|
|||
{ config, lib, pkgs, ... }:
|
||||
with lib;
|
||||
let
|
||||
gce = pkgs.google-compute-engine;
|
||||
in
|
||||
{
|
||||
imports = [
|
||||
../profiles/headless.nix
|
||||
|
@ -40,7 +37,8 @@ in
|
|||
security.googleOsLogin.enable = true;
|
||||
|
||||
# Use GCE udev rules for dynamic disk volumes
|
||||
services.udev.packages = [ gce ];
|
||||
services.udev.packages = [ pkgs.google-guest-configs ];
|
||||
services.udev.path = [ pkgs.google-guest-configs ];
|
||||
|
||||
# Force getting the hostname from Google Compute.
|
||||
networking.hostName = mkDefault "";
|
||||
|
@ -48,12 +46,6 @@ in
|
|||
# Always include cryptsetup so that NixOps can use it.
|
||||
environment.systemPackages = [ pkgs.cryptsetup ];
|
||||
|
||||
# Make sure GCE image does not replace host key that NixOps sets
|
||||
environment.etc."default/instance_configs.cfg".text = lib.mkDefault ''
|
||||
[InstanceSetup]
|
||||
set_host_keys = false
|
||||
'';
|
||||
|
||||
# Rely on GCP's firewall instead
|
||||
networking.firewall.enable = mkDefault false;
|
||||
|
||||
|
@ -69,105 +61,42 @@ in
|
|||
# GC has 1460 MTU
|
||||
networking.interfaces.eth0.mtu = 1460;
|
||||
|
||||
# Used by NixOps
|
||||
systemd.services.fetch-instance-ssh-keys = {
|
||||
description = "Fetch host keys and authorized_keys for root user";
|
||||
|
||||
wantedBy = [ "sshd.service" ];
|
||||
before = [ "sshd.service" ];
|
||||
after = [ "network-online.target" ];
|
||||
wants = [ "network-online.target" ];
|
||||
path = [ pkgs.wget ];
|
||||
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
ExecStart = pkgs.runCommand "fetch-instance-ssh-keys" { } ''
|
||||
cp ${./fetch-instance-ssh-keys.bash} $out
|
||||
chmod +x $out
|
||||
${pkgs.shfmt}/bin/shfmt -i 4 -d $out
|
||||
${pkgs.shellcheck}/bin/shellcheck $out
|
||||
patchShebangs $out
|
||||
'';
|
||||
PrivateTmp = true;
|
||||
StandardError = "journal+console";
|
||||
StandardOutput = "journal+console";
|
||||
};
|
||||
};
|
||||
|
||||
systemd.services.google-instance-setup = {
|
||||
description = "Google Compute Engine Instance Setup";
|
||||
after = [ "network-online.target" "network.target" "rsyslog.service" ];
|
||||
before = [ "sshd.service" ];
|
||||
path = with pkgs; [ coreutils ethtool openssh ];
|
||||
serviceConfig = {
|
||||
ExecStart = "${gce}/bin/google_instance_setup";
|
||||
StandardOutput="journal+console";
|
||||
Type = "oneshot";
|
||||
};
|
||||
wantedBy = [ "sshd.service" "multi-user.target" ];
|
||||
};
|
||||
|
||||
systemd.services.google-network-daemon = {
|
||||
description = "Google Compute Engine Network Daemon";
|
||||
after = [ "network-online.target" "network.target" "google-instance-setup.service" ];
|
||||
path = with pkgs; [ iproute2 ];
|
||||
serviceConfig = {
|
||||
ExecStart = "${gce}/bin/google_network_daemon";
|
||||
StandardOutput="journal+console";
|
||||
Type="simple";
|
||||
};
|
||||
systemd.packages = [ pkgs.google-guest-agent ];
|
||||
systemd.services.google-guest-agent = {
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
restartTriggers = [ config.environment.etc."default/instance_configs.cfg".source ];
|
||||
path = lib.optional config.users.mutableUsers pkgs.shadow;
|
||||
};
|
||||
systemd.services.google-startup-scripts.wantedBy = [ "multi-user.target" ];
|
||||
systemd.services.google-shutdown-scripts.wantedBy = [ "multi-user.target" ];
|
||||
|
||||
systemd.services.google-clock-skew-daemon = {
|
||||
description = "Google Compute Engine Clock Skew Daemon";
|
||||
after = [ "network.target" "google-instance-setup.service" "google-network-daemon.service" ];
|
||||
serviceConfig = {
|
||||
ExecStart = "${gce}/bin/google_clock_skew_daemon";
|
||||
StandardOutput="journal+console";
|
||||
Type = "simple";
|
||||
};
|
||||
wantedBy = ["multi-user.target"];
|
||||
};
|
||||
security.sudo.extraRules = mkIf config.users.mutableUsers [
|
||||
{ groups = [ "google-sudoers" ]; commands = [ { command = "ALL"; options = [ "NOPASSWD" ]; } ]; }
|
||||
];
|
||||
|
||||
users.groups.google-sudoers = mkIf config.users.mutableUsers { };
|
||||
|
||||
systemd.services.google-shutdown-scripts = {
|
||||
description = "Google Compute Engine Shutdown Scripts";
|
||||
after = [
|
||||
"network-online.target"
|
||||
"network.target"
|
||||
"rsyslog.service"
|
||||
"google-instance-setup.service"
|
||||
"google-network-daemon.service"
|
||||
];
|
||||
serviceConfig = {
|
||||
ExecStart = "${pkgs.coreutils}/bin/true";
|
||||
ExecStop = "${gce}/bin/google_metadata_script_runner --script-type shutdown";
|
||||
RemainAfterExit = true;
|
||||
StandardOutput="journal+console";
|
||||
TimeoutStopSec = "0";
|
||||
Type = "oneshot";
|
||||
};
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
};
|
||||
boot.extraModprobeConfig = lib.readFile "${pkgs.google-guest-configs}/etc/modprobe.d/gce-blacklist.conf";
|
||||
|
||||
systemd.services.google-startup-scripts = {
|
||||
description = "Google Compute Engine Startup Scripts";
|
||||
after = [
|
||||
"network-online.target"
|
||||
"network.target"
|
||||
"rsyslog.service"
|
||||
"google-instance-setup.service"
|
||||
"google-network-daemon.service"
|
||||
];
|
||||
serviceConfig = {
|
||||
ExecStart = "${gce}/bin/google_metadata_script_runner --script-type startup";
|
||||
KillMode = "process";
|
||||
StandardOutput = "journal+console";
|
||||
Type = "oneshot";
|
||||
};
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
};
|
||||
environment.etc."sysctl.d/60-gce-network-security.conf".source = "${pkgs.google-guest-configs}/etc/sysctl.d/60-gce-network-security.conf";
|
||||
|
||||
environment.etc."sysctl.d/11-gce-network-security.conf".source = "${gce}/sysctl.d/11-gce-network-security.conf";
|
||||
environment.etc."default/instance_configs.cfg".text = ''
|
||||
[Accounts]
|
||||
useradd_cmd = useradd -m -s /run/current-system/sw/bin/bash -p * {user}
|
||||
|
||||
[Daemons]
|
||||
accounts_daemon = ${boolToString config.users.mutableUsers}
|
||||
|
||||
[InstanceSetup]
|
||||
# Make sure GCE image does not replace host key that NixOps sets.
|
||||
set_host_keys = false
|
||||
|
||||
[MetadataScripts]
|
||||
default_shell = ${pkgs.stdenv.shell}
|
||||
|
||||
[NetworkInterfaces]
|
||||
dhclient_script = ${pkgs.google-guest-configs}/bin/google-dhclient-script
|
||||
# We set up network interfaces declaratively.
|
||||
setup = false
|
||||
'';
|
||||
}
|
||||
|
|
|
@ -632,6 +632,15 @@ in
|
|||
Enable the Qemu guest agent.
|
||||
'';
|
||||
};
|
||||
|
||||
virtioKeyboard =
|
||||
mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = ''
|
||||
Enable the virtio-keyboard device.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
virtualisation.useNixStoreImage =
|
||||
|
@ -835,7 +844,9 @@ in
|
|||
|
||||
# FIXME: Consolidate this one day.
|
||||
virtualisation.qemu.options = mkMerge [
|
||||
[ "-device virtio-keyboard" ]
|
||||
(mkIf cfg.qemu.virtioKeyboard [
|
||||
"-device virtio-keyboard"
|
||||
])
|
||||
(mkIf pkgs.stdenv.hostPlatform.isx86 [
|
||||
"-usb" "-device usb-tablet,bus=usb-bus.0"
|
||||
])
|
||||
|
|
|
@ -68,7 +68,7 @@ in
|
|||
SUBSYSTEM=="misc", KERNEL=="vboxguest", TAG+="systemd"
|
||||
'';
|
||||
} (mkIf cfg.x11 {
|
||||
services.xserver.videoDrivers = mkOverride 50 [ "vmware" "virtualbox" "modesetting" ];
|
||||
services.xserver.videoDrivers = [ "vmware" "virtualbox" "modesetting" ];
|
||||
|
||||
services.xserver.config =
|
||||
''
|
||||
|
|
|
@ -141,6 +141,7 @@ in
|
|||
env = handleTest ./env.nix {};
|
||||
ergo = handleTest ./ergo.nix {};
|
||||
ergochat = handleTest ./ergochat.nix {};
|
||||
etc = pkgs.callPackage ../modules/system/etc/test.nix { inherit evalMinimalConfig; };
|
||||
etcd = handleTestOn ["x86_64-linux"] ./etcd.nix {};
|
||||
etcd-cluster = handleTestOn ["x86_64-linux"] ./etcd-cluster.nix {};
|
||||
etebase-server = handleTest ./etebase-server.nix {};
|
||||
|
@ -304,6 +305,7 @@ in
|
|||
moodle = handleTest ./moodle.nix {};
|
||||
morty = handleTest ./morty.nix {};
|
||||
mosquitto = handleTest ./mosquitto.nix {};
|
||||
moosefs = handleTest ./moosefs.nix {};
|
||||
mpd = handleTest ./mpd.nix {};
|
||||
mpv = handleTest ./mpv.nix {};
|
||||
mumble = handleTest ./mumble.nix {};
|
||||
|
|
|
@ -35,6 +35,24 @@ let
|
|||
public-keys:
|
||||
- "${snakeOilPublicKey}"
|
||||
EOF
|
||||
|
||||
cat << EOF > $out/iso/network-config
|
||||
version: 1
|
||||
config:
|
||||
- type: physical
|
||||
name: eth0
|
||||
mac_address: '52:54:00:12:34:56'
|
||||
subnets:
|
||||
- type: static
|
||||
address: '12.34.56.78'
|
||||
netmask: '255.255.255.0'
|
||||
gateway: '12.34.56.9'
|
||||
- type: nameserver
|
||||
address:
|
||||
- '8.8.8.8'
|
||||
search:
|
||||
- 'example.com'
|
||||
EOF
|
||||
${pkgs.cdrkit}/bin/genisoimage -volid cidata -joliet -rock -o $out/metadata.iso $out/iso
|
||||
'';
|
||||
};
|
||||
|
@ -46,9 +64,13 @@ in makeTest {
|
|||
machine = { ... }:
|
||||
{
|
||||
virtualisation.qemu.options = [ "-cdrom" "${metadataDrive}/metadata.iso" ];
|
||||
services.cloud-init.enable = true;
|
||||
services.cloud-init = {
|
||||
enable = true;
|
||||
network.enable = true;
|
||||
};
|
||||
services.openssh.enable = true;
|
||||
networking.hostName = "";
|
||||
networking.useDHCP = false;
|
||||
};
|
||||
testScript = ''
|
||||
# To wait until cloud-init terminates its run
|
||||
|
@ -80,5 +102,8 @@ in makeTest {
|
|||
).strip()
|
||||
== "test"
|
||||
)
|
||||
|
||||
assert "default via 12.34.56.9 dev eth0 proto static" in unnamed.succeed("ip route")
|
||||
assert "12.34.56.0/24 dev eth0 proto kernel scope link src 12.34.56.78" in unnamed.succeed("ip route")
|
||||
'';
|
||||
}
|
||||
|
|
|
@ -31,10 +31,10 @@ in {
|
|||
|
||||
# mockserver should return a non-expired ssh key for both mockuser and mockadmin
|
||||
server.succeed(
|
||||
f'${pkgs.google-compute-engine-oslogin}/bin/google_authorized_keys {MOCKUSER} | grep -q "${snakeOilPublicKey}"'
|
||||
f'${pkgs.google-guest-oslogin}/bin/google_authorized_keys {MOCKUSER} | grep -q "${snakeOilPublicKey}"'
|
||||
)
|
||||
server.succeed(
|
||||
f'${pkgs.google-compute-engine-oslogin}/bin/google_authorized_keys {MOCKADMIN} | grep -q "${snakeOilPublicKey}"'
|
||||
f'${pkgs.google-guest-oslogin}/bin/google_authorized_keys {MOCKADMIN} | grep -q "${snakeOilPublicKey}"'
|
||||
)
|
||||
|
||||
# install snakeoil ssh key on the client, and provision .ssh/config file
|
||||
|
|
|
@ -23,7 +23,5 @@ in {
|
|||
security.googleOsLogin.enable = true;
|
||||
|
||||
# Mock google service
|
||||
networking.extraHosts = ''
|
||||
127.0.0.1 metadata.google.internal
|
||||
'';
|
||||
networking.interfaces.lo.ipv4.addresses = [ { address = "169.254.169.254"; prefixLength = 32; } ];
|
||||
}
|
||||
|
|
0
nixos/tests/google-oslogin/server.py
Normal file → Executable file
0
nixos/tests/google-oslogin/server.py
Normal file → Executable file
|
@ -16,7 +16,6 @@ import ./make-test-python.nix ({ pkgs, ...}: {
|
|||
frontend http
|
||||
bind *:80
|
||||
mode http
|
||||
option http-use-htx
|
||||
http-request use-service prometheus-exporter if { path /metrics }
|
||||
use_backend http_server
|
||||
'';
|
||||
|
|
89
nixos/tests/moosefs.nix
Normal file
89
nixos/tests/moosefs.nix
Normal file
|
@ -0,0 +1,89 @@
|
|||
import ./make-test-python.nix ({ pkgs, ... } :
|
||||
|
||||
let
|
||||
master = { pkgs, ... } : {
|
||||
# data base is stored in memory
|
||||
# server crashes with default memory size
|
||||
virtualisation.memorySize = 1024;
|
||||
|
||||
services.moosefs.master = {
|
||||
enable = true;
|
||||
openFirewall = true;
|
||||
exports = [
|
||||
"* / rw,alldirs,admin,maproot=0:0"
|
||||
"* . rw"
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
chunkserver = { pkgs, ... } : {
|
||||
virtualisation.emptyDiskImages = [ 4096 ];
|
||||
boot.initrd.postDeviceCommands = ''
|
||||
${pkgs.e2fsprogs}/bin/mkfs.ext4 -L data /dev/vdb
|
||||
'';
|
||||
|
||||
fileSystems = pkgs.lib.mkVMOverride {
|
||||
"/data" = {
|
||||
device = "/dev/disk/by-label/data";
|
||||
fsType = "ext4";
|
||||
};
|
||||
};
|
||||
|
||||
services.moosefs = {
|
||||
masterHost = "master";
|
||||
chunkserver = {
|
||||
openFirewall = true;
|
||||
enable = true;
|
||||
hdds = [ "~/data" ];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
metalogger = { pkgs, ... } : {
|
||||
services.moosefs = {
|
||||
masterHost = "master";
|
||||
metalogger.enable = true;
|
||||
};
|
||||
};
|
||||
|
||||
client = { pkgs, ... } : {
|
||||
services.moosefs.client.enable = true;
|
||||
};
|
||||
|
||||
in {
|
||||
name = "moosefs";
|
||||
|
||||
nodes= {
|
||||
inherit master;
|
||||
inherit metalogger;
|
||||
chunkserver1 = chunkserver;
|
||||
chunkserver2 = chunkserver;
|
||||
client1 = client;
|
||||
client2 = client;
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
# prepare master server
|
||||
master.start()
|
||||
master.wait_for_unit("multi-user.target")
|
||||
master.succeed("mfsmaster-init")
|
||||
master.succeed("systemctl restart mfs-master")
|
||||
master.wait_for_unit("mfs-master.service")
|
||||
|
||||
metalogger.wait_for_unit("mfs-metalogger.service")
|
||||
|
||||
for chunkserver in [chunkserver1, chunkserver2]:
|
||||
chunkserver.wait_for_unit("multi-user.target")
|
||||
chunkserver.succeed("chown moosefs:moosefs /data")
|
||||
chunkserver.succeed("systemctl restart mfs-chunkserver")
|
||||
chunkserver.wait_for_unit("mfs-chunkserver.service")
|
||||
|
||||
for client in [client1, client2]:
|
||||
client.wait_for_unit("multi-user.target")
|
||||
client.succeed("mkdir /moosefs")
|
||||
client.succeed("mount -t moosefs master:/ /moosefs")
|
||||
|
||||
client1.succeed("echo test > /moosefs/file")
|
||||
client2.succeed("grep test /moosefs/file")
|
||||
'';
|
||||
})
|
|
@ -10,6 +10,6 @@ pkgs:
|
|||
snakeOilPublicKey = pkgs.lib.concatStrings [
|
||||
"ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHA"
|
||||
"yNTYAAABBBChdA2BmwcG49OrQN33f/sj+OHL5sJhwVl2Qim0vkUJQCry1zFpKTa"
|
||||
"9ZcDMiWaEhoAR6FGoaGI04ff7CS+1yybQ= sakeoil"
|
||||
"9ZcDMiWaEhoAR6FGoaGI04ff7CS+1yybQ= snakeoil"
|
||||
];
|
||||
}
|
||||
|
|
|
@ -28,6 +28,10 @@ in
|
|||
enable = true;
|
||||
wheelNeedsPassword = false;
|
||||
|
||||
extraConfig = ''
|
||||
Defaults lecture="never"
|
||||
'';
|
||||
|
||||
extraRules = [
|
||||
# SUDOERS SYNTAX CHECK (Test whether the module produces a valid output;
|
||||
# errors being detected by the visudo checks.
|
||||
|
|
|
@ -1,6 +1,4 @@
|
|||
import ./make-test-python.nix ({ pkgs, lib, ... }:
|
||||
|
||||
{
|
||||
import ./make-test-python.nix ({ pkgs, lib, ... }: {
|
||||
name = "sway";
|
||||
meta = {
|
||||
maintainers = with lib.maintainers; [ primeos synthetica ];
|
||||
|
@ -70,6 +68,14 @@ import ./make-test-python.nix ({ pkgs, lib, ... }:
|
|||
enableOCR = true;
|
||||
|
||||
testScript = { nodes, ... }: ''
|
||||
import shlex
|
||||
|
||||
def swaymsg(command: str, succeed=True):
|
||||
with machine.nested(f"sending swaymsg {command!r}" + " (allowed to fail)" * (not succeed)):
|
||||
(machine.succeed if succeed else machine.execute)(
|
||||
f"su - alice -c {shlex.quote('swaymsg -- ' + command)}"
|
||||
)
|
||||
|
||||
start_all()
|
||||
machine.wait_for_unit("multi-user.target")
|
||||
|
||||
|
@ -81,9 +87,7 @@ import ./make-test-python.nix ({ pkgs, lib, ... }:
|
|||
machine.wait_for_file("/tmp/sway-ipc.sock")
|
||||
|
||||
# Test XWayland (foot does not support X):
|
||||
machine.succeed(
|
||||
"su - alice -c 'swaymsg exec WINIT_UNIX_BACKEND=x11 WAYLAND_DISPLAY=invalid alacritty'"
|
||||
)
|
||||
swaymsg("exec WINIT_UNIX_BACKEND=x11 WAYLAND_DISPLAY=invalid alacritty")
|
||||
machine.wait_for_text("alice@machine")
|
||||
machine.send_chars("test-x11\n")
|
||||
machine.wait_for_file("/tmp/test-x11-exit-ok")
|
||||
|
@ -107,9 +111,7 @@ import ./make-test-python.nix ({ pkgs, lib, ... }:
|
|||
|
||||
# Test gpg-agent starting pinentry-gnome3 via D-Bus (tests if
|
||||
# $WAYLAND_DISPLAY is correctly imported into the D-Bus user env):
|
||||
machine.succeed(
|
||||
"su - alice -c 'swaymsg -- exec gpg --no-tty --yes --quick-generate-key test'"
|
||||
)
|
||||
swaymsg("exec gpg --no-tty --yes --quick-generate-key test")
|
||||
machine.wait_until_succeeds("pgrep --exact gpg")
|
||||
machine.wait_for_text("Passphrase")
|
||||
machine.screenshot("gpg_pinentry")
|
||||
|
@ -121,8 +123,15 @@ import ./make-test-python.nix ({ pkgs, lib, ... }:
|
|||
machine.wait_for_text("You pressed the exit shortcut.")
|
||||
machine.screenshot("sway_exit")
|
||||
|
||||
swaymsg("exec swaylock")
|
||||
machine.wait_until_succeeds("pgrep -x swaylock")
|
||||
machine.sleep(3)
|
||||
machine.send_chars("${nodes.machine.config.users.users.alice.password}")
|
||||
machine.send_key("ret")
|
||||
machine.wait_until_fails("pgrep -x swaylock")
|
||||
|
||||
# Exit Sway and verify process exit status 0:
|
||||
machine.succeed("su - alice -c 'swaymsg exit || true'")
|
||||
swaymsg("exit", succeed=False)
|
||||
machine.wait_until_fails("pgrep -x sway")
|
||||
machine.wait_for_file("/tmp/sway-exit-ok")
|
||||
'';
|
||||
|
|
|
@ -27,8 +27,19 @@ import ./make-test-python.nix ({ pkgs, lib, ...}:
|
|||
enable = lib.mkOverride 0 true;
|
||||
userControlled.enable = true;
|
||||
interfaces = [ "wlan1" ];
|
||||
fallbackToWPA2 = true;
|
||||
|
||||
networks = {
|
||||
# test WPA2 fallback
|
||||
mixed-wpa = {
|
||||
psk = "password";
|
||||
authProtocols = [ "WPA-PSK" "SAE" ];
|
||||
};
|
||||
sae-only = {
|
||||
psk = "password";
|
||||
authProtocols = [ "SAE" ];
|
||||
};
|
||||
|
||||
# test network
|
||||
nixos-test.psk = "@PSK_NIXOS_TEST@";
|
||||
|
||||
|
@ -64,8 +75,12 @@ import ./make-test-python.nix ({ pkgs, lib, ...}:
|
|||
machine.succeed(f"grep -q @PSK_MISSING@ {config_file}")
|
||||
machine.succeed(f"grep -q P@ssowrdWithSome@tSymbol {config_file}")
|
||||
|
||||
# save file for manual inspection
|
||||
machine.copy_from_vm(config_file)
|
||||
with subtest("WPA2 fallbacks have been generated"):
|
||||
assert int(machine.succeed(f"grep -c sae-only {config_file}")) == 1
|
||||
assert int(machine.succeed(f"grep -c mixed-wpa {config_file}")) == 2
|
||||
|
||||
# save file for manual inspection
|
||||
machine.copy_from_vm(config_file)
|
||||
|
||||
with subtest("Daemon is running and accepting connections"):
|
||||
machine.wait_for_unit("wpa_supplicant-wlan1.service")
|
||||
|
|
|
@ -19,14 +19,15 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "squeekboard";
|
||||
version = "1.14.0";
|
||||
version = "1.16.0";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
domain = "source.puri.sm";
|
||||
owner = "Librem5";
|
||||
domain = "gitlab.gnome.org";
|
||||
group = "World";
|
||||
owner = "Phosh";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "1ayap40pgzcpmfydk5pbf3gwhh26m3cmbk6lyly4jihr9qw7dgb0";
|
||||
sha256 = "sha256-51Grkn6NSR6azTRuq1vdbDg7d3HuQQ+ZJCsM2mSrSHk=";
|
||||
};
|
||||
|
||||
cargoDeps = rustPlatform.fetchCargoTarball {
|
||||
|
@ -35,18 +36,9 @@ stdenv.mkDerivation rec {
|
|||
cat Cargo.toml.in Cargo.deps > Cargo.toml
|
||||
'';
|
||||
name = "${pname}-${version}";
|
||||
sha256 = "0148ynzmapxfrlccikf20ikmi0ssbkn9fl5wi6nh6azflv50pzzn";
|
||||
sha256 = "sha256-vQaiEENxaQxBGYP1br03wSkU7OGOYkJvMBUAOeb3jGk=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
# remove when updating from 1.14.0
|
||||
(fetchpatch {
|
||||
name = "fix-rust-1.54-build.patch";
|
||||
url = "https://gitlab.gnome.org/World/Phosh/squeekboard/-/commit/9cd56185c59ace535a6af26384ef6beca4423816.patch";
|
||||
sha256 = "sha256-8rWcfhQmGiwlc2lpkRvJ95XQp1Xg7St+0K85x8nQ0mk=";
|
||||
})
|
||||
];
|
||||
|
||||
nativeBuildInputs = [
|
||||
meson
|
||||
ninja
|
||||
|
|
|
@ -57,7 +57,7 @@ in mkDerivation rec {
|
|||
there are basic functionalities to align the signals in time and
|
||||
amplitude, this software does not aim to be an audio editor.
|
||||
'';
|
||||
homepage = "http://gillesdegottex.github.io/dfasma/";
|
||||
homepage = "https://gillesdegottex.gitlab.io/dfasma-website/";
|
||||
license = [ licenses.gpl3Plus reaperFork.meta.license ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
|
|
|
@ -4,14 +4,15 @@
|
|||
, fetchFromGitHub
|
||||
, calf
|
||||
, fftwFloat
|
||||
, fmt
|
||||
, glib
|
||||
, glibmm
|
||||
, gtk4
|
||||
, gtkmm4
|
||||
, itstool
|
||||
, libadwaita
|
||||
, libbs2b
|
||||
, libebur128
|
||||
, libsamplerate
|
||||
, libsigcxx30
|
||||
, libsndfile
|
||||
, lilv
|
||||
, lsp-plugins
|
||||
|
@ -26,6 +27,7 @@
|
|||
, rnnoise
|
||||
, rubberband
|
||||
, speexdsp
|
||||
, tbb
|
||||
, wrapGAppsHook4
|
||||
, zam-plugins
|
||||
, zita-convolver
|
||||
|
@ -33,13 +35,13 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "easyeffects";
|
||||
version = "6.1.3";
|
||||
version = "6.2.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "wwmm";
|
||||
repo = "easyeffects";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-1UfeqPJxY4YT98UdqTZtG+QUBOZlKfK+7WbszhO22A0=";
|
||||
sha256 = "sha256-A1UanrAbmZFGCmDNIr1h+v5RVMsIl4qgM/veBirudQM=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
@ -54,13 +56,14 @@ stdenv.mkDerivation rec {
|
|||
|
||||
buildInputs = [
|
||||
fftwFloat
|
||||
fmt
|
||||
glib
|
||||
glibmm
|
||||
gtk4
|
||||
gtkmm4
|
||||
libadwaita
|
||||
libbs2b
|
||||
libebur128
|
||||
libsamplerate
|
||||
libsigcxx30
|
||||
libsndfile
|
||||
lilv
|
||||
lv2
|
||||
|
@ -69,14 +72,13 @@ stdenv.mkDerivation rec {
|
|||
rnnoise
|
||||
rubberband
|
||||
speexdsp
|
||||
tbb
|
||||
zita-convolver
|
||||
];
|
||||
|
||||
postPatch = ''
|
||||
chmod +x meson_post_install.py
|
||||
patchShebangs meson_post_install.py
|
||||
# https://github.com/wwmm/easyeffects/pull/1205
|
||||
substituteInPlace meson_post_install.py --replace "gtk-update-icon-cache" "gtk4-update-icon-cache"
|
||||
'';
|
||||
|
||||
preFixup =
|
||||
|
|
|
@ -13,9 +13,9 @@ stdenv.mkDerivation rec {
|
|||
buildInputs = [ lv2 python3 ];
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "http://drobilla.net/software/fomp/";
|
||||
homepage = "https://drobilla.net/software/fomp.html";
|
||||
description = "An LV2 port of the MCP, VCO, FIL, and WAH plugins by Fons Adriaensen";
|
||||
license = licenses.gpl2;
|
||||
license = licenses.gpl2Plus;
|
||||
maintainers = [ maintainers.magnetophon ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
|
|
|
@ -13,13 +13,13 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "ft2-clone";
|
||||
version = "1.50";
|
||||
version = "1.51";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "8bitbubsy";
|
||||
repo = "ft2-clone";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-OURD8k8DIa1DddDng55HrzgAN95srW4wm7RD7DbiJLQ=";
|
||||
sha256 = "sha256-g8LZhP6qHctmvbmrhJ8gAOeAd57SePeO2tdFi9SVjQ0=";
|
||||
};
|
||||
|
||||
# Adapt the linux-only CMakeLists to darwin (more reliable than make-macos.sh)
|
||||
|
|
|
@ -8,7 +8,7 @@ stdenv.mkDerivation rec {
|
|||
url = "https://bitbucket.org/mpyne/game-music-emu/downloads/${pname}-${version}.tar.xz";
|
||||
sha256 = "07857vdkak306d9s5g6fhmjyxk7vijzjhkmqb15s7ihfxx9lx8xb";
|
||||
};
|
||||
|
||||
cmakeFlags = lib.optionals stdenv.isDarwin [ "-DENABLE_UBSAN=OFF" ];
|
||||
nativeBuildInputs = [ cmake ];
|
||||
|
||||
meta = with lib; {
|
||||
|
|
|
@ -75,7 +75,7 @@ stdenv.mkDerivation rec {
|
|||
'';
|
||||
|
||||
meta = with lib; {
|
||||
homepage = "http://www2.ika.ruhr-uni-bochum.de/HybridReverb2";
|
||||
homepage = "https://github.com/jpcima/HybridReverb2";
|
||||
description = "Reverb effect using hybrid impulse convolution";
|
||||
license = licenses.gpl2Plus;
|
||||
maintainers = [ maintainers.magnetophon ];
|
||||
|
|
64
pkgs/applications/audio/jamesdsp/default.nix
Normal file
64
pkgs/applications/audio/jamesdsp/default.nix
Normal file
|
@ -0,0 +1,64 @@
|
|||
{ lib
|
||||
, mkDerivation
|
||||
, fetchFromGitHub
|
||||
, pipewire
|
||||
, glibmm
|
||||
, qmake
|
||||
, makeDesktopItem
|
||||
, pkg-config
|
||||
, libarchive
|
||||
, fetchpatch
|
||||
}:
|
||||
|
||||
mkDerivation rec{
|
||||
pname = "jamesdsp";
|
||||
version = "2.3";
|
||||
src = fetchFromGitHub rec{
|
||||
owner = "Audio4Linux";
|
||||
repo = "JDSP4Linux";
|
||||
fetchSubmodules = true;
|
||||
rev = version;
|
||||
hash = "sha256-Hkzurr+s+vvSyOMCYH9kHI+nIm6mL9yORGNzY2FXslc=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
# fixing /usr install assumption, remove on version bump
|
||||
(fetchpatch {
|
||||
url = "https://github.com/Audio4Linux/JDSP4Linux/commit/003c9e9fc426f83e269aed6e05be3ed55273931a.patch";
|
||||
hash = "sha256-crll/a7C9pUq9eL5diq8/YgC5bNC6SrdijZEBxZpJ8E=";
|
||||
})
|
||||
];
|
||||
|
||||
nativeBuildInputs = [ qmake pkg-config ];
|
||||
buildInputs = [
|
||||
glibmm
|
||||
libarchive
|
||||
pipewire
|
||||
];
|
||||
|
||||
desktopItems = [
|
||||
(makeDesktopItem {
|
||||
name = "jamesdsp.desktop";
|
||||
desktopName = "JamesDSP";
|
||||
genericName = "Audio effects processor";
|
||||
exec = "jamesdsp";
|
||||
icon = "jamesdsp";
|
||||
comment = "JamesDSP for Linux";
|
||||
categories = "AudioVideo;Audio";
|
||||
startupNotify = false;
|
||||
terminal = false;
|
||||
type = "Application";
|
||||
extraDesktopEntries = {
|
||||
Keywords = "equalizer;audio;effect";
|
||||
};
|
||||
})
|
||||
];
|
||||
|
||||
meta = with lib;{
|
||||
description = "An audio effect processor for PipeWire clients";
|
||||
homepage = "https://github.com/Audio4Linux/JDSP4Linux";
|
||||
license = licenses.gpl3Only;
|
||||
maintainers = with maintainers;[ pasqui23 ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
}
|
|
@ -12,6 +12,12 @@ stdenv.mkDerivation rec {
|
|||
sha256 = "025fj34gq2kmkpwcswcyx7wdxb89vm944dh685zi4bxx0hz16vvk";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
# https://github.com/milkytracker/MilkyTracker/issues/262
|
||||
substituteInPlace CMakeLists.txt \
|
||||
--replace 'CMAKE_CXX_STANDARD 98' 'CMAKE_CXX_STANDARD 11'
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [ cmake pkg-config makeWrapper ];
|
||||
|
||||
buildInputs = [ SDL2 alsa-lib libjack2 lhasa perl rtmidi zlib zziplib ];
|
||||
|
|
|
@ -8,13 +8,13 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "pt2-clone";
|
||||
version = "1.39";
|
||||
version = "1.40";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "8bitbubsy";
|
||||
repo = "pt2-clone";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-ZmgsNp2fRebbLxSzzCsLdM6/7kBKo+YFUCdWLSYfI5A=";
|
||||
sha256 = "sha256-0qEhhkprIpseCEFStgJ0035TX0e9s271BK/1hVkn/JU=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ cmake ];
|
||||
|
|
|
@ -13,13 +13,13 @@
|
|||
|
||||
mkDerivation rec {
|
||||
pname = "ptcollab";
|
||||
version = "0.6.0.2";
|
||||
version = "0.6.1.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "yuxshao";
|
||||
repo = "ptcollab";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-9goELqV7GP2/8w3Tw4Gph0UBgR/2T+wo2g+lhrQG4tA=";
|
||||
sha256 = "sha256-zkDMZT1kKCLqNvvxZFKVuXFqZptX/LG/R9kRUcNJphw=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ qmake pkg-config ];
|
||||
|
|
|
@ -16,13 +16,13 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "sidplayfp";
|
||||
version = "2.2.2";
|
||||
version = "2.2.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "libsidplayfp";
|
||||
repo = "sidplayfp";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-DBZZf3A0AYkeQxQvHGyHHbsQ2EDuxsZnZPbxkWTNcHA=";
|
||||
sha256 = "sha256-R60Dh19GYM157ysmN8EOJ47eO8a7sdkEEF1TObG1xzk=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ autoreconfHook perl pkg-config ];
|
||||
|
|
|
@ -6,24 +6,25 @@
|
|||
, alsa-lib
|
||||
, pkg-config
|
||||
, ffmpeg
|
||||
, dbus
|
||||
}:
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "songrec";
|
||||
version = "0.2.1";
|
||||
version = "0.3.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "marin-m";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "sha256-pKHKM4XOuuZCr4neMe1AVqWMuZghwYNe+ifJCQhXG/c=";
|
||||
sha256 = "sha256-aHZH3sQNUUPcMRySy8Di0XUoFo4qjGi2pi0phLwORaA=";
|
||||
};
|
||||
|
||||
cargoSha256 = "sha256-J3ezXBOGJwzIPTHXujHpswsgh9PFy110AOQ2pPJNm10=";
|
||||
cargoSha256 = "sha256-EpkB43rMUJO6ouUV9TmQ+RSnGhX32DZHpKic1E6lUyU=";
|
||||
|
||||
nativeBuildInputs = [ pkg-config ];
|
||||
|
||||
buildInputs = [ alsa-lib gtk3 openssl ffmpeg ];
|
||||
buildInputs = [ alsa-lib dbus gtk3 openssl ffmpeg ];
|
||||
|
||||
postInstall = ''
|
||||
mv packaging/rootfs/usr/share $out/share
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
, python3Packages
|
||||
, ffmpeg
|
||||
, flac
|
||||
, librsvg
|
||||
, gobject-introspection
|
||||
, gtk3
|
||||
, libnotify
|
||||
|
@ -20,23 +21,22 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "tauon";
|
||||
version = "6.7.1";
|
||||
version = "7.0.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Taiko2k";
|
||||
repo = "TauonMusicBox";
|
||||
rev = "v${version}";
|
||||
sha256 = "1hm82yfq7q2akrrvff3vmwrd3bz34d2dk8jzhnizhnhar6xc6fzp";
|
||||
sha256 = "sha256-Sw9w6vFXk2Cx7LdfMsou9IDheVckdusc0iGWkVsVtCQ=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace tauon.py \
|
||||
--replace 'install_mode = False' 'install_mode = True' \
|
||||
--replace 'install_directory = os.path.dirname(__file__)' 'install_directory = "${placeholder "out"}/share/tauon"'
|
||||
--replace 'install_directory = os.path.dirname(os.path.abspath(__file__))' 'install_directory = "${placeholder "out"}/share/tauon"'
|
||||
|
||||
substituteInPlace t_modules/t_main.py \
|
||||
--replace 'install_mode = False' 'install_mode = True' \
|
||||
--replace 'install_directory = sys.path[0]' 'install_directory = "${placeholder "out"}/share/tauon"' \
|
||||
--replace 'libopenmpt.so' '${lib.getLib libopenmpt}/lib/libopenmpt.so' \
|
||||
--replace 'lib/libphazor.so' '../../lib/libphazor.so'
|
||||
|
||||
|
@ -44,6 +44,8 @@ stdenv.mkDerivation rec {
|
|||
--replace 'lib/libphazor.so' '../../lib/libphazor.so'
|
||||
|
||||
patchShebangs compile-phazor.sh
|
||||
|
||||
substituteInPlace extra/tauonmb.desktop --replace 'Exec=/opt/tauon-music-box/tauonmb.sh' 'Exec=${placeholder "out"}/bin/tauon'
|
||||
'';
|
||||
|
||||
postBuild = ''
|
||||
|
@ -61,6 +63,7 @@ stdenv.mkDerivation rec {
|
|||
gtk3
|
||||
libnotify
|
||||
libopenmpt
|
||||
librsvg
|
||||
libsamplerate
|
||||
libvorbis
|
||||
mpg123
|
||||
|
@ -70,11 +73,14 @@ stdenv.mkDerivation rec {
|
|||
];
|
||||
|
||||
pythonPath = with python3Packages; [
|
||||
beautifulsoup4
|
||||
gst-python
|
||||
dbus-python
|
||||
isounidecode
|
||||
musicbrainzngs
|
||||
mutagen
|
||||
pillow
|
||||
plexapi
|
||||
pulsectl
|
||||
pycairo
|
||||
pylast
|
||||
|
@ -83,6 +89,7 @@ stdenv.mkDerivation rec {
|
|||
pysdl2
|
||||
requests
|
||||
send2trash
|
||||
setproctitle
|
||||
] ++ lib.optional withDiscordRPC pypresence;
|
||||
|
||||
makeWrapperArgs = [
|
||||
|
@ -98,7 +105,12 @@ stdenv.mkDerivation rec {
|
|||
cp -r assets input.txt t_modules theme $out/share/tauon
|
||||
|
||||
wrapPythonPrograms
|
||||
'';
|
||||
|
||||
mkdir -p $out/share/applications
|
||||
install -Dm755 extra/tauonmb.desktop $out/share/applications/tauonmb.desktop
|
||||
mkdir -p $out/share/icons/hicolor/scalable/apps
|
||||
install -Dm644 extra/tauonmb{,-symbolic}.svg $out/share/icons/hicolor/scalable/apps
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "The Linux desktop music player from the future";
|
||||
|
|
29
pkgs/applications/blockchains/besu/default.nix
Normal file
29
pkgs/applications/blockchains/besu/default.nix
Normal file
|
@ -0,0 +1,29 @@
|
|||
{ lib, stdenv, fetchurl, makeWrapper, jre }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "besu";
|
||||
version = "21.10.8";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://hyperledger.jfrog.io/artifactory/${pname}-binaries/${pname}/${version}/${pname}-${version}.tar.gz";
|
||||
sha256 = "sha256-0yXi42vDinB6nuv5IGj1AhYGqMa2Rku0tNWQCO+AFPw=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
|
||||
installPhase = ''
|
||||
mkdir -p $out/bin
|
||||
cp -r bin $out/
|
||||
mkdir -p $out/lib
|
||||
cp -r lib $out/
|
||||
wrapProgram $out/bin/${pname} --set JAVA_HOME "${jre}"
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "An enterprise-grade Java-based, Apache 2.0 licensed Ethereum client";
|
||||
homepage = "https://www.hyperledger.org/projects/besu";
|
||||
license = licenses.asl20;
|
||||
platforms = platforms.all;
|
||||
maintainers = with maintainers; [ mmahut ];
|
||||
};
|
||||
}
|
|
@ -35,11 +35,11 @@ let
|
|||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "bisq-desktop";
|
||||
version = "1.8.0";
|
||||
version = "1.8.2";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/bisq-network/bisq/releases/download/v${version}/Bisq-64bit-${version}.deb";
|
||||
sha256 = "1q6x6w8mp5ax852hlvi2p61xgckb2lpr2ml21a9mfs9421b6m8h2";
|
||||
sha256 = "154b8whbbpnb8lk1b3an44h53gh5fdzxkg5vdfrw1ld6miy68kii";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ makeWrapper copyDesktopItems imagemagick dpkg gnutar zip xz ];
|
||||
|
|
|
@ -3,28 +3,22 @@
|
|||
|
||||
buildDotnetModule rec {
|
||||
pname = "btcpayserver";
|
||||
version = "1.3.7";
|
||||
version = "1.4.4";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = pname;
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-W8WRw42hMNUaQZlfrl73REGIvLcj6Vso9Axx53ENkx0=";
|
||||
sha256 = "sha256-PW5a1Bw21skpboWDtlZHGWtFwfImznD7nYI92RT7GGQ=";
|
||||
};
|
||||
|
||||
projectFile = "BTCPayServer/BTCPayServer.csproj";
|
||||
nugetDeps = ./deps.nix;
|
||||
|
||||
dotnet-sdk = dotnetCorePackages.sdk_3_1;
|
||||
dotnet-runtime = dotnetCorePackages.aspnetcore_3_1;
|
||||
dotnet-sdk = dotnetCorePackages.sdk_6_0;
|
||||
dotnet-runtime = dotnetCorePackages.aspnetcore_6_0;
|
||||
|
||||
dotnetFlags = lib.optionals altcoinSupport [ "/p:Configuration=Altcoins-Release" ];
|
||||
|
||||
# btcpayserver requires the publish directory as its working dir
|
||||
# https://github.com/btcpayserver/btcpayserver/issues/1894
|
||||
preInstall = ''
|
||||
makeWrapperArgs+=(--run "cd $out/lib/btcpayserver")
|
||||
'';
|
||||
buildType = if altcoinSupport then "Altcoins-Release" else "Release";
|
||||
|
||||
postFixup = ''
|
||||
mv $out/bin/{BTCPayServer,btcpayserver}
|
||||
|
|
559
pkgs/applications/blockchains/btcpayserver/deps.nix
generated
559
pkgs/applications/blockchains/btcpayserver/deps.nix
generated
File diff suppressed because it is too large
Load diff
|
@ -12,16 +12,16 @@ let
|
|||
in
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "electrs";
|
||||
version = "0.9.4";
|
||||
version = "0.9.5";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "romanz";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
hash = "sha256-37KTcLFVzuXlLpz9INXbasUdzuY+T34ef8EtfczQ+D8=";
|
||||
hash = "sha256-6TR9OeIAVVbwDrshb9zHTS39x6taNWYK0UyRLbkW+g0=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-aOSCpvejMUfSZCDwShqMPEc3vXw9ri2QvTaCuHODTwA=";
|
||||
cargoHash = "sha256-taOrbtx74DICvPLrwym70X3pv7EBA/H22VZmlxefANM=";
|
||||
|
||||
# needed for librocksdb-sys
|
||||
nativeBuildInputs = [ llvmPackages.clang ];
|
||||
|
|
36
pkgs/applications/blockchains/fulcrum/default.nix
Normal file
36
pkgs/applications/blockchains/fulcrum/default.nix
Normal file
|
@ -0,0 +1,36 @@
|
|||
{ lib
|
||||
, stdenv
|
||||
, fetchFromGitHub
|
||||
, pkg-config
|
||||
, qmake
|
||||
, python3
|
||||
, qtbase
|
||||
, rocksdb
|
||||
, zeromq
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "fulcrum";
|
||||
version = "1.6.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "cculianu";
|
||||
repo = "Fulcrum";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-oywxGg+Ss7qBITI2PBXQs5ph7PZbJ3c1smtT/TcVoLI=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ pkg-config qmake ];
|
||||
|
||||
dontWrapQtApps = true; # no GUI
|
||||
|
||||
buildInputs = [ python3 qtbase rocksdb zeromq ];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Fast & nimble SPV server for Bitcoin Cash & Bitcoin BTC";
|
||||
homepage = "https://github.com/cculianu/Fulcrum";
|
||||
maintainers = with maintainers; [ prusnak ];
|
||||
license = licenses.gpl3Plus;
|
||||
platforms = platforms.unix;
|
||||
};
|
||||
}
|
|
@ -2,12 +2,12 @@
|
|||
|
||||
let
|
||||
pname = "ledger-live-desktop";
|
||||
version = "2.36.3";
|
||||
version = "2.38.2";
|
||||
name = "${pname}-${version}";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/LedgerHQ/${pname}/releases/download/v${version}/${pname}-${version}-linux-x86_64.AppImage";
|
||||
hash = "sha256:1sxsr70nm86fyx2m3wf694x1p6kvmkwxw6fqnslpbyjpyi9x73cd";
|
||||
hash = "sha256-k6Rbxpe5BpRmlE+WL7iiFUtRCs5KlrLH2c3iSucUhqo=";
|
||||
};
|
||||
|
||||
appimageContents = appimageTools.extractType2 {
|
||||
|
|
|
@ -5,16 +5,16 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "lightning-loop";
|
||||
version = "0.16.0-beta";
|
||||
version = "0.17.0-beta";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "lightninglabs";
|
||||
repo = "loop";
|
||||
rev = "v${version}";
|
||||
sha256 = "0q4lk338mr30frilgnjr43gd55z7ryj2s260437b4pnp03hmbf10";
|
||||
sha256 = "0hjawagn1dfgj67i52bvf3phvm9f9708z3jqs6cvyz0w7vp107py";
|
||||
};
|
||||
|
||||
vendorSha256 = "14862603rrss14p537j9i7iwflaaprwrnslmqm9hpb7hj52bxqfv";
|
||||
vendorSha256 = "1fpc73hwdn3baz5ykrykvqdr5861gj9p6liy8qll5525kdv560f6";
|
||||
|
||||
subPackages = [ "cmd/loop" "cmd/loopd" ];
|
||||
|
||||
|
|
|
@ -6,16 +6,16 @@
|
|||
|
||||
buildGoModule rec {
|
||||
pname = "lnd";
|
||||
version = "0.14.1-beta";
|
||||
version = "0.14.2-beta";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "lightningnetwork";
|
||||
repo = "lnd";
|
||||
rev = "v${version}";
|
||||
sha256 = "0arm36682y4csdv9abqs0l8rgxkiqkamrps7q8wpyyg4n78yiij3";
|
||||
sha256 = "sha256-JOKitxxWcTlGlxYR1XpySZlI2fT9jgBrOxNUwT/sqdQ=";
|
||||
};
|
||||
|
||||
vendorSha256 = "13zhs0gb7chi0zz5rabmw3sd5fcpxc4s553crfcg7lrnbn5hcwzv";
|
||||
vendorSha256 = "sha256-shDmJcEyobY7Ih1MHMEY2GQnzAffsH/y4J1bme/bT7I=";
|
||||
|
||||
subPackages = [ "cmd/lncli" "cmd/lnd" ];
|
||||
|
||||
|
|
|
@ -2,20 +2,20 @@
|
|||
|
||||
buildDotnetModule rec {
|
||||
pname = "nbxplorer";
|
||||
version = "2.2.18";
|
||||
version = "2.2.20";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "dgarage";
|
||||
repo = "NBXplorer";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-zjSHgMdK417bm1Z/B2kvloDnPTqzM9jEVkZvoKeBkzM=";
|
||||
sha256 = "sha256-C3REnfecNwf3dtk6aLYAEsedHRlIrQZAokXtf6KI8U0=";
|
||||
};
|
||||
|
||||
projectFile = "NBXplorer/NBXplorer.csproj";
|
||||
nugetDeps = ./deps.nix;
|
||||
|
||||
dotnet-sdk = dotnetCorePackages.sdk_3_1;
|
||||
dotnet-runtime = dotnetCorePackages.aspnetcore_3_1;
|
||||
dotnet-sdk = dotnetCorePackages.sdk_6_0;
|
||||
dotnet-runtime = dotnetCorePackages.aspnetcore_6_0;
|
||||
|
||||
postFixup = ''
|
||||
mv $out/bin/{NBXplorer,nbxplorer}
|
||||
|
|
12
pkgs/applications/blockchains/nbxplorer/deps.nix
generated
12
pkgs/applications/blockchains/nbxplorer/deps.nix
generated
|
@ -6,13 +6,13 @@
|
|||
})
|
||||
(fetchNuGet {
|
||||
pname = "Microsoft.AspNetCore.JsonPatch";
|
||||
version = "3.1.19";
|
||||
sha256 = "1fh3k85k988jw35sf5hvm6jwmvzmslzpfvf3jk3sn3f3s6gyk0an";
|
||||
version = "6.0.1";
|
||||
sha256 = "0rsqng2b8a3zaha9c2x1195das5wwvmnz31xf14ancgha4lxq68r";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "Microsoft.AspNetCore.Mvc.NewtonsoftJson";
|
||||
version = "3.1.19";
|
||||
sha256 = "1nh08kjdc152m85ycwxn1q8r69f0l02p6cac6q57nzlyy5gyj2rs";
|
||||
version = "6.0.1";
|
||||
sha256 = "179b2774s68im71r32lv4nydcp586x86zggs8ml6jcfjrd9fs5b1";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "Microsoft.Azure.Amqp";
|
||||
|
@ -226,8 +226,8 @@
|
|||
})
|
||||
(fetchNuGet {
|
||||
pname = "Newtonsoft.Json";
|
||||
version = "12.0.2";
|
||||
sha256 = "0w2fbji1smd2y7x25qqibf1qrznmv4s6s0jvrbvr6alb7mfyqvh5";
|
||||
version = "13.0.1";
|
||||
sha256 = "0fijg0w6iwap8gvzyjnndds0q4b8anwxxvik7y8vgq97dram4srb";
|
||||
})
|
||||
(fetchNuGet {
|
||||
pname = "Newtonsoft.Json";
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
|
||||
let
|
||||
pname = "trezor-suite";
|
||||
version = "21.12.2";
|
||||
version = "22.1.1";
|
||||
name = "${pname}-${version}";
|
||||
|
||||
suffix = {
|
||||
|
@ -19,8 +19,8 @@ let
|
|||
src = fetchurl {
|
||||
url = "https://github.com/trezor/${pname}/releases/download/v${version}/Trezor-Suite-${version}-${suffix}.AppImage";
|
||||
sha512 = { # curl -Lfs https://github.com/trezor/trezor-suite/releases/latest/download/latest-linux{-arm64,}.yml | grep ^sha512 | sed 's/: /-/'
|
||||
aarch64-linux = "sha512-LzcTFSNN/loYaTDt+QpW8QpSgOTw2097IYdc7mC57Mn4NR/X2hycYZ9ZfZjBh9QFfVu/4R3UN2sA177v6Inomg==";
|
||||
x86_64-linux = "sha512-W/voBZrXaJVDN4eSUDD6lyBR9BqboD2k2/azI1pWm1NFUmDZFM+OGzyiPB3n+6SziAhca32Ot5Wy27sfmIjh3g==";
|
||||
aarch64-linux = "sha512-hRPwhKdAqiHmsaIuNm5r3ZuKhUh+IipR5/5N/9PwiLEfaSQRWink0dUwyuUoWzy4DyGabLQyIWbQRvR7eRGKJA==";
|
||||
x86_64-linux = "sha512-W4S7W4TeDtSwWCj6N6EoJJOCYG3m1pK3D+UPlsp7B7VY/0uBtI31+tS28E6TUgXZUttr8IIbqzJYWCuyLfDthQ==";
|
||||
}.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
|
||||
};
|
||||
|
||||
|
|
|
@ -9,16 +9,16 @@ let
|
|||
inherit buildFHSUserEnv;
|
||||
};
|
||||
stableVersion = {
|
||||
version = "2021.1.1.20"; # "Android Studio Bumblebee (2021.1.1)"
|
||||
sha256Hash = "LwG5IDJBFpdlspDoTNpbi1togri2fvEOEDbkkiYvrJE=";
|
||||
version = "2021.1.1.21"; # "Android Studio Bumblebee (2021.1.1 Patch 1)"
|
||||
sha256Hash = "PeMJIILfaunTlpR4EV76qQlTlZDcWoKes61qe9W9oqQ=";
|
||||
};
|
||||
betaVersion = {
|
||||
version = "2021.1.1.18"; # "Android Studio Bumblebee (2021.1.1) Beta 5"
|
||||
sha256Hash = "gWG8h3wTQDH84vSKlfTm3soUqLkwFYfSymJuAAFPDuQ=";
|
||||
version = "2021.2.1.8"; # "Android Studio Chipmunk (2021.2.1) Beta 1"
|
||||
sha256Hash = "bPfs4kw7czG9CbEgrzn0bQXdT03jyqPVqtaIuVBFSmc=";
|
||||
};
|
||||
latestVersion = { # canary & dev
|
||||
version = "2021.2.1.5"; # "Android Studio Chipmunk (2021.2.1) Canary 5"
|
||||
sha256Hash = "PS45nu5g9qXNeolYnFEs//Z6p8eIZoD6kUo/0yfHQ6A=";
|
||||
version = "2021.3.1.1"; # "Android Studio Dolphin (2021.3.1) Canary 1"
|
||||
sha256Hash = "W3pNQBM7WdDScQo5b8q5Va5NTgl73uZu0ks/zDMb4aA=";
|
||||
};
|
||||
in {
|
||||
# Attributes are named by their corresponding release channels
|
||||
|
|
|
@ -20,6 +20,8 @@ stdenv.mkDerivation rec {
|
|||
CFLAGS = "-D_DARWIN_C_SOURCE";
|
||||
makeFlags = [ "DESTDIR=$(out)" ];
|
||||
buildInputs = [ libX11 libXi libXt libXft ];
|
||||
# build fails when run in parallel
|
||||
enableParallelBuilding = false;
|
||||
|
||||
postInstall = ''
|
||||
mkdir -p $out/share/applications
|
||||
|
|
|
@ -234,10 +234,10 @@
|
|||
elpaBuild {
|
||||
pname = "auctex";
|
||||
ename = "auctex";
|
||||
version = "13.0.15";
|
||||
version = "13.0.16";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/auctex-13.0.15.tar";
|
||||
sha256 = "1rm8s02d1mx5sw7yj65zlr07xhimnmvqav7f45nz2h8bwka02c3c";
|
||||
url = "https://elpa.gnu.org/packages/auctex-13.0.16.tar";
|
||||
sha256 = "1r9piq4js45knw8sf73kk8jjinmx4m2mdinc98xrklnwcffw7hjf";
|
||||
};
|
||||
packageRequires = [ emacs ];
|
||||
meta = {
|
||||
|
@ -459,6 +459,21 @@
|
|||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
cape = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
|
||||
elpaBuild {
|
||||
pname = "cape";
|
||||
ename = "cape";
|
||||
version = "0.6";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/cape-0.6.tar";
|
||||
sha256 = "0pc0vvdb0pczz9n50wry6k6wkdaz3bqin07nmlxm8w1aqvapb2pr";
|
||||
};
|
||||
packageRequires = [ emacs ];
|
||||
meta = {
|
||||
homepage = "https://elpa.gnu.org/packages/cape.html";
|
||||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
capf-autosuggest = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
|
||||
elpaBuild {
|
||||
pname = "capf-autosuggest";
|
||||
|
@ -696,10 +711,10 @@
|
|||
elpaBuild {
|
||||
pname = "consult";
|
||||
ename = "consult";
|
||||
version = "0.14";
|
||||
version = "0.15";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/consult-0.14.tar";
|
||||
sha256 = "0lb72j4nxvaar2vip6jlyn62b9z2p2vsmijk3m9nsrshbqnlf0rc";
|
||||
url = "https://elpa.gnu.org/packages/consult-0.15.tar";
|
||||
sha256 = "0hsmxaiadb8smi1hk90n9napqrygh9rvj7g9a3d9isi47yrbg693";
|
||||
};
|
||||
packageRequires = [ emacs ];
|
||||
meta = {
|
||||
|
@ -726,10 +741,10 @@
|
|||
elpaBuild {
|
||||
pname = "corfu";
|
||||
ename = "corfu";
|
||||
version = "0.17";
|
||||
version = "0.18";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/corfu-0.17.tar";
|
||||
sha256 = "13nmbyrsvglzv57n9srl0kz75y07v8imr6c99nbf1mssli3h6n7y";
|
||||
url = "https://elpa.gnu.org/packages/corfu-0.18.tar";
|
||||
sha256 = "1g1b05wc9qql5qw3diprx0ay2rmq7963gdgyh7bi5i0xlfaspbgi";
|
||||
};
|
||||
packageRequires = [ emacs ];
|
||||
meta = {
|
||||
|
@ -741,10 +756,10 @@
|
|||
elpaBuild {
|
||||
pname = "coterm";
|
||||
ename = "coterm";
|
||||
version = "1.3";
|
||||
version = "1.4";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/coterm-1.3.tar";
|
||||
sha256 = "078rrc776mdzb4nczp1h8p0pymzds76kz3g2h78ri95k3wpy5ksj";
|
||||
url = "https://elpa.gnu.org/packages/coterm-1.4.tar";
|
||||
sha256 = "0cs9hqffkzlkkpcfhdh67gg3vzvffrjawmi89q7x9p52fk9rcxp6";
|
||||
};
|
||||
packageRequires = [ emacs ];
|
||||
meta = {
|
||||
|
@ -906,10 +921,10 @@
|
|||
elpaBuild {
|
||||
pname = "debbugs";
|
||||
ename = "debbugs";
|
||||
version = "0.29";
|
||||
version = "0.30";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/debbugs-0.29.tar";
|
||||
sha256 = "1bn21d9dr9pb3vdak3v07x056xafym89kdpxavjf4avy6bry6s4d";
|
||||
url = "https://elpa.gnu.org/packages/debbugs-0.30.tar";
|
||||
sha256 = "05yy1hhxd59rhricb14iai71w681222sv0i703yrgg868mphl7sb";
|
||||
};
|
||||
packageRequires = [ emacs soap-client ];
|
||||
meta = {
|
||||
|
@ -992,6 +1007,21 @@
|
|||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
diminish = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
|
||||
elpaBuild {
|
||||
pname = "diminish";
|
||||
ename = "diminish";
|
||||
version = "0.46";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/diminish-0.46.tar";
|
||||
sha256 = "17lsm5khp7cqrva13kn252ab57lw28sibf14615wdjvfqwlwwha4";
|
||||
};
|
||||
packageRequires = [ emacs ];
|
||||
meta = {
|
||||
homepage = "https://elpa.gnu.org/packages/diminish.html";
|
||||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
dired-du = callPackage ({ cl-lib ? null, elpaBuild, emacs, fetchurl, lib }:
|
||||
elpaBuild {
|
||||
pname = "dired-du";
|
||||
|
@ -1082,6 +1112,21 @@
|
|||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
dtache = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
|
||||
elpaBuild {
|
||||
pname = "dtache";
|
||||
ename = "dtache";
|
||||
version = "0.5";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/dtache-0.5.tar";
|
||||
sha256 = "10gcnkajpw7szd41l6ykkysv00yp93y1z9ajhcmk4wzni93w21z2";
|
||||
};
|
||||
packageRequires = [ emacs ];
|
||||
meta = {
|
||||
homepage = "https://elpa.gnu.org/packages/dtache.html";
|
||||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
dts-mode = callPackage ({ elpaBuild, fetchurl, lib }:
|
||||
elpaBuild {
|
||||
pname = "dts-mode";
|
||||
|
@ -1131,10 +1176,10 @@
|
|||
elpaBuild {
|
||||
pname = "ebdb";
|
||||
ename = "ebdb";
|
||||
version = "0.8.8";
|
||||
version = "0.8.10";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/ebdb-0.8.8.tar";
|
||||
sha256 = "035xakji5vypdpc06qp9yhg8ny7qn80h8kax6cl80p0lljplzrnn";
|
||||
url = "https://elpa.gnu.org/packages/ebdb-0.8.10.tar";
|
||||
sha256 = "1763zk75a85803wbn68sz4n3yvkhzh3a8571syd1r2npb59b40ad";
|
||||
};
|
||||
packageRequires = [ emacs seq ];
|
||||
meta = {
|
||||
|
@ -1191,10 +1236,10 @@
|
|||
elpaBuild {
|
||||
pname = "eev";
|
||||
ename = "eev";
|
||||
version = "20211226";
|
||||
version = "20220120";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/eev-20211226.tar";
|
||||
sha256 = "15ggg7sv4m5yc8ldyyffz7vgaj00xbw15zga0x2lpdfmahh6y2as";
|
||||
url = "https://elpa.gnu.org/packages/eev-20220120.tar";
|
||||
sha256 = "0wbm7bd48vl66vhraqfwycz989hd36whris1xa5rbhfbxgz2d1sx";
|
||||
};
|
||||
packageRequires = [ emacs ];
|
||||
meta = {
|
||||
|
@ -1214,10 +1259,10 @@
|
|||
elpaBuild {
|
||||
pname = "eglot";
|
||||
ename = "eglot";
|
||||
version = "1.7";
|
||||
version = "1.8";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/eglot-1.7.tar";
|
||||
sha256 = "1zvs144hxq2mmq1h0ynx9hy7yyccb46f3pjg9mgq8v9cw5y678vk";
|
||||
url = "https://elpa.gnu.org/packages/eglot-1.8.tar";
|
||||
sha256 = "1n04jnf3wwpxafrzfd02l53wf90brjc8p835f84k0n0rjxin99k5";
|
||||
};
|
||||
packageRequires = [ eldoc emacs flymake jsonrpc project xref ];
|
||||
meta = {
|
||||
|
@ -1264,10 +1309,10 @@
|
|||
elpaBuild {
|
||||
pname = "eldoc-eval";
|
||||
ename = "eldoc-eval";
|
||||
version = "0.1";
|
||||
version = "0.2";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/eldoc-eval-0.1.el";
|
||||
sha256 = "1mnhxdsn9h43iq941yqmg92v3hbzwyg7acqfnz14q5g52bnagg19";
|
||||
url = "https://elpa.gnu.org/packages/eldoc-eval-0.2.tar";
|
||||
sha256 = "09g9y1w1dlq3s8sqzczgaj02y53x616ak9w3kynq53pwgaxq14j4";
|
||||
};
|
||||
packageRequires = [];
|
||||
meta = {
|
||||
|
@ -1309,10 +1354,10 @@
|
|||
elpaBuild {
|
||||
pname = "embark";
|
||||
ename = "embark";
|
||||
version = "0.14";
|
||||
version = "0.15";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/embark-0.14.tar";
|
||||
sha256 = "12d4lza54sf493z9hx1fqlrhrx19girrdh560syi4gg03kg8s7nr";
|
||||
url = "https://elpa.gnu.org/packages/embark-0.15.tar";
|
||||
sha256 = "0dr97549xrs9j1fhnqpdspvbfxnzqvzvpi8qc91fd2v4jsfwlklh";
|
||||
};
|
||||
packageRequires = [ emacs ];
|
||||
meta = {
|
||||
|
@ -1329,10 +1374,10 @@
|
|||
elpaBuild {
|
||||
pname = "embark-consult";
|
||||
ename = "embark-consult";
|
||||
version = "0.3";
|
||||
version = "0.4";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/embark-consult-0.3.tar";
|
||||
sha256 = "1l38bnphfq65r2fjy8zi7a8l4h361bfz756sswa3r7446jhd48rv";
|
||||
url = "https://elpa.gnu.org/packages/embark-consult-0.4.tar";
|
||||
sha256 = "1z0xc11y59lagfsd2raps4iz68hvw132ff0qynbmvgw63mp1w4yy";
|
||||
};
|
||||
packageRequires = [ consult emacs embark ];
|
||||
meta = {
|
||||
|
@ -1349,10 +1394,10 @@
|
|||
elpaBuild {
|
||||
pname = "emms";
|
||||
ename = "emms";
|
||||
version = "8";
|
||||
version = "9";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/emms-8.tar";
|
||||
sha256 = "1iffh6n8q9xag25m9bgnpywa27bkdvvz2gr500hdgwwddgdm4pq8";
|
||||
url = "https://elpa.gnu.org/packages/emms-9.tar";
|
||||
sha256 = "12p9nigzyrlpkfvg7v76jmcfs08z84gggnx7h4frdaim3kx5y6xf";
|
||||
};
|
||||
packageRequires = [ cl-lib nadvice seq ];
|
||||
meta = {
|
||||
|
@ -2168,10 +2213,10 @@
|
|||
elpaBuild {
|
||||
pname = "jsonrpc";
|
||||
ename = "jsonrpc";
|
||||
version = "1.0.14";
|
||||
version = "1.0.15";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/jsonrpc-1.0.14.el";
|
||||
sha256 = "069l0sqkambam4ikj9id36kdw1jdjna8v586d51m64hiz96rmvm6";
|
||||
url = "https://elpa.gnu.org/packages/jsonrpc-1.0.15.tar";
|
||||
sha256 = "1hx378rg12jz2zm105cvrqk0nqyzsn04l59d903l98d6lbd96rsw";
|
||||
};
|
||||
packageRequires = [ emacs ];
|
||||
meta = {
|
||||
|
@ -2258,10 +2303,10 @@
|
|||
elpaBuild {
|
||||
pname = "leaf";
|
||||
ename = "leaf";
|
||||
version = "4.5.2";
|
||||
version = "4.5.5";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/leaf-4.5.2.tar";
|
||||
sha256 = "0i90shhhkpdcwmfi8zv0008qgmg4g3cqd2yvpycfv9n2axvhag54";
|
||||
url = "https://elpa.gnu.org/packages/leaf-4.5.5.tar";
|
||||
sha256 = "1rdbrf84ijapiqhq72gy8r5xgk54sf0jy31pgd3w4rl1wywh5cas";
|
||||
};
|
||||
packageRequires = [ emacs ];
|
||||
meta = {
|
||||
|
@ -2393,10 +2438,10 @@
|
|||
elpaBuild {
|
||||
pname = "marginalia";
|
||||
ename = "marginalia";
|
||||
version = "0.11";
|
||||
version = "0.12";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/marginalia-0.11.tar";
|
||||
sha256 = "0mri8awary11hwg6lib903q5jcv2isnf8mi62mgndiki5s9cgrbs";
|
||||
url = "https://elpa.gnu.org/packages/marginalia-0.12.tar";
|
||||
sha256 = "01dy9dg2ac6s84ffcxn2pw1y75pinkdvxg1j2g3vijwjd5hpfakq";
|
||||
};
|
||||
packageRequires = [ emacs ];
|
||||
meta = {
|
||||
|
@ -2438,10 +2483,10 @@
|
|||
elpaBuild {
|
||||
pname = "mct";
|
||||
ename = "mct";
|
||||
version = "0.3.0";
|
||||
version = "0.4.2";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/mct-0.3.0.tar";
|
||||
sha256 = "07wywk5zadcinjpx9hvag8ndzb426lq5jlg42rqdgrv92ka7n16b";
|
||||
url = "https://elpa.gnu.org/packages/mct-0.4.2.tar";
|
||||
sha256 = "0as8298mb136az555zag5q3xvc7d0z508d3siii60wmzs9dyb8dx";
|
||||
};
|
||||
packageRequires = [ emacs ];
|
||||
meta = {
|
||||
|
@ -2751,10 +2796,10 @@
|
|||
elpaBuild {
|
||||
pname = "nano-theme";
|
||||
ename = "nano-theme";
|
||||
version = "0.2.1";
|
||||
version = "0.3.0";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/nano-theme-0.2.1.tar";
|
||||
sha256 = "0m98kq40dhbrn55x4bp2x5d5j1gps4y7z4086mgnj8wr1y3w8kdl";
|
||||
url = "https://elpa.gnu.org/packages/nano-theme-0.3.0.tar";
|
||||
sha256 = "1nq5x46467vnsfg3fzb0qyg97xpnwsvbqg8frdjil5zq5fhsgmrz";
|
||||
};
|
||||
packageRequires = [ emacs ];
|
||||
meta = {
|
||||
|
@ -2916,6 +2961,21 @@
|
|||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
orderless = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
|
||||
elpaBuild {
|
||||
pname = "orderless";
|
||||
ename = "orderless";
|
||||
version = "0.7";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/orderless-0.7.tar";
|
||||
sha256 = "0hvfqxpazan1djpn0qxh609r53jgddpcdih6chkn2zvx29mhdkgg";
|
||||
};
|
||||
packageRequires = [ emacs ];
|
||||
meta = {
|
||||
homepage = "https://elpa.gnu.org/packages/orderless.html";
|
||||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
org = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
|
||||
elpaBuild {
|
||||
pname = "org";
|
||||
|
@ -2965,10 +3025,10 @@
|
|||
elpaBuild {
|
||||
pname = "org-transclusion";
|
||||
ename = "org-transclusion";
|
||||
version = "1.1.1";
|
||||
version = "1.2.0";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/org-transclusion-1.1.1.tar";
|
||||
sha256 = "12dp5fc7iw78qx2f501ch8mvhvw90bxg8hhvx0kz3y24gf2h8d4d";
|
||||
url = "https://elpa.gnu.org/packages/org-transclusion-1.2.0.tar";
|
||||
sha256 = "1q36nqxynzh8ygvgw5nmg49c4yq8pgp6lcb6mdqs9paw8pglxcjf";
|
||||
};
|
||||
packageRequires = [ emacs org ];
|
||||
meta = {
|
||||
|
@ -3145,10 +3205,10 @@
|
|||
elpaBuild {
|
||||
pname = "phps-mode";
|
||||
ename = "phps-mode";
|
||||
version = "0.4.13";
|
||||
version = "0.4.16";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/phps-mode-0.4.13.tar";
|
||||
sha256 = "03j5ck0pk88kdl7br1rkdqmnjd8418y9w9m27gk63hqbi3p8diy6";
|
||||
url = "https://elpa.gnu.org/packages/phps-mode-0.4.16.tar";
|
||||
sha256 = "0k8n2pa20nkqd8w4c86p1f5cgn93favxxhws62i4w16934x6w07j";
|
||||
};
|
||||
packageRequires = [ emacs ];
|
||||
meta = {
|
||||
|
@ -3190,10 +3250,10 @@
|
|||
elpaBuild {
|
||||
pname = "posframe";
|
||||
ename = "posframe";
|
||||
version = "1.1.5";
|
||||
version = "1.1.7";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/posframe-1.1.5.tar";
|
||||
sha256 = "1kyd3r926hhs03mmpyvbjjyqcbvqrxk62rrscgfyl7rqi9ar56i0";
|
||||
url = "https://elpa.gnu.org/packages/posframe-1.1.7.tar";
|
||||
sha256 = "13i2wxx079gfq0vbq0iwmsig5b7x4aspd1q02yqc79846f1dsx4w";
|
||||
};
|
||||
packageRequires = [ emacs ];
|
||||
meta = {
|
||||
|
@ -3250,10 +3310,10 @@
|
|||
elpaBuild {
|
||||
pname = "pyim";
|
||||
ename = "pyim";
|
||||
version = "4.0.3";
|
||||
version = "4.1.0";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/pyim-4.0.3.tar";
|
||||
sha256 = "110d9d8xglnyv0cn0slwk3msgqq8rs01xq2qmx5ya7i2v77gd5ql";
|
||||
url = "https://elpa.gnu.org/packages/pyim-4.1.0.tar";
|
||||
sha256 = "1q4b3y72gbkl5z31brlnjqjl30lgqm2d1zlqrbkqnnfy5hjgazk9";
|
||||
};
|
||||
packageRequires = [ async emacs xr ];
|
||||
meta = {
|
||||
|
@ -3560,10 +3620,10 @@
|
|||
elpaBuild {
|
||||
pname = "relint";
|
||||
ename = "relint";
|
||||
version = "1.19";
|
||||
version = "1.20";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/relint-1.19.tar";
|
||||
sha256 = "14z3i01pq5ljhjf5yfcjw7hxljcrwjnizkrdc1qyh9b6h3ic1bbi";
|
||||
url = "https://elpa.gnu.org/packages/relint-1.20.tar";
|
||||
sha256 = "0r20dim2r4a4bv0fmgbnq3graa7hhlai55h9qyknapqbr2j1v1h7";
|
||||
};
|
||||
packageRequires = [ emacs xr ];
|
||||
meta = {
|
||||
|
@ -3620,10 +3680,10 @@
|
|||
elpaBuild {
|
||||
pname = "rt-liberation";
|
||||
ename = "rt-liberation";
|
||||
version = "2.4";
|
||||
version = "4";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/rt-liberation-2.4.tar";
|
||||
sha256 = "1qfd0dy4n04gf3vx0pbwfgmp4wm2a64sh3m6mlfhinqgmasajh6r";
|
||||
url = "https://elpa.gnu.org/packages/rt-liberation-4.tar";
|
||||
sha256 = "15vs982cxpc3g8cq2gj3a6dfn9i2r9b44x38ydvcmiy2brkd3psj";
|
||||
};
|
||||
packageRequires = [];
|
||||
meta = {
|
||||
|
@ -3742,6 +3802,7 @@
|
|||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
# removed duplicated shell-command-plus
|
||||
shell-command-plus = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
|
||||
elpaBuild {
|
||||
pname = "shell-command-plus";
|
||||
|
@ -3892,16 +3953,20 @@
|
|||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
soap-client = callPackage ({ cl-lib ? null, elpaBuild, fetchurl, lib }:
|
||||
soap-client = callPackage ({ cl-lib ? null
|
||||
, elpaBuild
|
||||
, emacs
|
||||
, fetchurl
|
||||
, lib }:
|
||||
elpaBuild {
|
||||
pname = "soap-client";
|
||||
ename = "soap-client";
|
||||
version = "3.2.0";
|
||||
version = "3.2.1";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/soap-client-3.2.0.tar";
|
||||
sha256 = "1s0bwnip22nj6kgjadd4zlj9j729hiyyjb66sr51i2mddnf9i95s";
|
||||
url = "https://elpa.gnu.org/packages/soap-client-3.2.1.tar";
|
||||
sha256 = "0ajv6l1p8dinnlybwzvv4c2i6291is6isjxb2h4apg27g66qbcki";
|
||||
};
|
||||
packageRequires = [ cl-lib ];
|
||||
packageRequires = [ cl-lib emacs ];
|
||||
meta = {
|
||||
homepage = "https://elpa.gnu.org/packages/soap-client.html";
|
||||
license = lib.licenses.free;
|
||||
|
@ -4046,10 +4111,10 @@
|
|||
elpaBuild {
|
||||
pname = "svg-lib";
|
||||
ename = "svg-lib";
|
||||
version = "0.2.4";
|
||||
version = "0.2.5";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/svg-lib-0.2.4.tar";
|
||||
sha256 = "0vcf3vbrzhgwssf6mi4xyic32yzjsrllp2zaqdk3c0qjvq9w4wxa";
|
||||
url = "https://elpa.gnu.org/packages/svg-lib-0.2.5.tar";
|
||||
sha256 = "022jp54w14sv0d71j0z76bnir9bgvysmcpcxpzpiiz77da6rg393";
|
||||
};
|
||||
packageRequires = [ emacs ];
|
||||
meta = {
|
||||
|
@ -4147,6 +4212,21 @@
|
|||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
tempel = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
|
||||
elpaBuild {
|
||||
pname = "tempel";
|
||||
ename = "tempel";
|
||||
version = "0.2";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/tempel-0.2.tar";
|
||||
sha256 = "0xn2vqaxqv04zmlp5hpb9vxkbs3bv4dk22xs5j5fqjid2hcv3714";
|
||||
};
|
||||
packageRequires = [ emacs ];
|
||||
meta = {
|
||||
homepage = "https://elpa.gnu.org/packages/tempel.html";
|
||||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
test-simple = callPackage ({ cl-lib ? null, elpaBuild, fetchurl, lib }:
|
||||
elpaBuild {
|
||||
pname = "test-simple";
|
||||
|
@ -4200,10 +4280,10 @@
|
|||
elpaBuild {
|
||||
pname = "tramp";
|
||||
ename = "tramp";
|
||||
version = "2.5.2";
|
||||
version = "2.5.2.1";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/tramp-2.5.2.tar";
|
||||
sha256 = "1j71x3q6x9xyf21capjxcp85b7z2x9khrqsd2sy2s3qwxz3jbg5n";
|
||||
url = "https://elpa.gnu.org/packages/tramp-2.5.2.1.tar";
|
||||
sha256 = "1101nb0raiivrv1z4w442688cxj5mpf4h4zxzy6mhirgsbayk91p";
|
||||
};
|
||||
packageRequires = [ emacs ];
|
||||
meta = {
|
||||
|
@ -4290,10 +4370,10 @@
|
|||
elpaBuild {
|
||||
pname = "uni-confusables";
|
||||
ename = "uni-confusables";
|
||||
version = "0.2";
|
||||
version = "0.3";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/uni-confusables-0.2.tar";
|
||||
sha256 = "1an2l7f8lqhp3hq511a371isv1q00nx431g2a7266pp6pn2sndj1";
|
||||
url = "https://elpa.gnu.org/packages/uni-confusables-0.3.tar";
|
||||
sha256 = "1grmppbyzvjjz0yiv5vvgpykhalisj9jnh6p9ip9vbnnll63iz4w";
|
||||
};
|
||||
packageRequires = [];
|
||||
meta = {
|
||||
|
@ -4389,10 +4469,10 @@
|
|||
elpaBuild {
|
||||
pname = "vc-got";
|
||||
ename = "vc-got";
|
||||
version = "1.0";
|
||||
version = "1.1";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/vc-got-1.0.tar";
|
||||
sha256 = "1lx52g261zr52gy63vjll8mvczcbdzbsx3wa47qdajrq9bwmj99j";
|
||||
url = "https://elpa.gnu.org/packages/vc-got-1.1.tar";
|
||||
sha256 = "1myck30ybq8ggf4yk3s2sqjqj8m1kfl8qxygkk3ynfa6jxxy4x1r";
|
||||
};
|
||||
packageRequires = [ emacs ];
|
||||
meta = {
|
||||
|
@ -4481,10 +4561,10 @@
|
|||
elpaBuild {
|
||||
pname = "vertico";
|
||||
ename = "vertico";
|
||||
version = "0.19";
|
||||
version = "0.20";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/vertico-0.19.tar";
|
||||
sha256 = "1i9aqxsplmzyy7nv4czspa66a6v33lnng1d8zsgjf1m9sz0kyzxp";
|
||||
url = "https://elpa.gnu.org/packages/vertico-0.20.tar";
|
||||
sha256 = "1hg91f74klbwisxzp74d020v42l28wik9y1lg3hrbdspnhlhsdrl";
|
||||
};
|
||||
packageRequires = [ emacs ];
|
||||
meta = {
|
||||
|
@ -4501,10 +4581,10 @@
|
|||
elpaBuild {
|
||||
pname = "vertico-posframe";
|
||||
ename = "vertico-posframe";
|
||||
version = "0.4.8";
|
||||
version = "0.5.2";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/vertico-posframe-0.4.8.tar";
|
||||
sha256 = "1cvihfj59qycd3kifxbg9ndrmiihc62si8q5b8fxc1p20acw4f69";
|
||||
url = "https://elpa.gnu.org/packages/vertico-posframe-0.5.2.tar";
|
||||
sha256 = "0gzvm0la706kg3aqgrd6crz6353sp47dnpxdj9l2avb31avyqmv9";
|
||||
};
|
||||
packageRequires = [ emacs posframe vertico ];
|
||||
meta = {
|
||||
|
@ -4749,10 +4829,10 @@
|
|||
elpaBuild {
|
||||
pname = "xclip";
|
||||
ename = "xclip";
|
||||
version = "1.10";
|
||||
version = "1.11";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/xclip-1.10.el";
|
||||
sha256 = "0i3i9kwfg8qmhcmqhhnrb1kljgwkccv63s9q1mjwqfjldyfh8j8i";
|
||||
url = "https://elpa.gnu.org/packages/xclip-1.11.tar";
|
||||
sha256 = "0hgblj8ng7vfsdb7g1mm9m2qhzfprycdd77836l59prpak5kp55q";
|
||||
};
|
||||
packageRequires = [];
|
||||
meta = {
|
||||
|
@ -4794,10 +4874,10 @@
|
|||
elpaBuild {
|
||||
pname = "xr";
|
||||
ename = "xr";
|
||||
version = "1.21";
|
||||
version = "1.22";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.gnu.org/packages/xr-1.21.tar";
|
||||
sha256 = "0mc10d33lsqs0ihcja8w78jzh2pk0dfm9m86kap6r3hi6wkr1cmi";
|
||||
url = "https://elpa.gnu.org/packages/xr-1.22.tar";
|
||||
sha256 = "1l3bqgzvbamfs4n628kg789g7vjn4v81q570gzbw2cwjgk4s6xbj";
|
||||
};
|
||||
packageRequires = [ emacs ];
|
||||
meta = {
|
||||
|
|
|
@ -45,6 +45,21 @@
|
|||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
annotate = callPackage ({ elpaBuild, fetchurl, lib }:
|
||||
elpaBuild {
|
||||
pname = "annotate";
|
||||
ename = "annotate";
|
||||
version = "1.5.0";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu/annotate-1.5.0.tar";
|
||||
sha256 = "0ba91yy2id5jsl9bg8cfjm2sqbqp9jwwdikwkdj5v6xz6ggh134b";
|
||||
};
|
||||
packageRequires = [];
|
||||
meta = {
|
||||
homepage = "https://elpa.gnu.org/packages/annotate.html";
|
||||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
anti-zenburn-theme = callPackage ({ elpaBuild, fetchurl, lib }:
|
||||
elpaBuild {
|
||||
pname = "anti-zenburn-theme";
|
||||
|
@ -155,6 +170,21 @@
|
|||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
bind-map = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
|
||||
elpaBuild {
|
||||
pname = "bind-map";
|
||||
ename = "bind-map";
|
||||
version = "1.1.2";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu/bind-map-1.1.2.tar";
|
||||
sha256 = "1x98pgalnpl45h63yw6zz6q16x00phijyx2pf4jrf93s18lx33z5";
|
||||
};
|
||||
packageRequires = [ emacs ];
|
||||
meta = {
|
||||
homepage = "https://elpa.gnu.org/packages/bind-map.html";
|
||||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
bison-mode = callPackage ({ elpaBuild, fetchurl, lib }:
|
||||
elpaBuild {
|
||||
pname = "bison-mode";
|
||||
|
@ -340,6 +370,21 @@
|
|||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
dockerfile-mode = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
|
||||
elpaBuild {
|
||||
pname = "dockerfile-mode";
|
||||
ename = "dockerfile-mode";
|
||||
version = "1.5";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu/dockerfile-mode-1.5.tar";
|
||||
sha256 = "0dz91i4ak3v0x1v75ibhjjz211k9g6qimz4lxn3x424j7dlpa9f3";
|
||||
};
|
||||
packageRequires = [ emacs ];
|
||||
meta = {
|
||||
homepage = "https://elpa.gnu.org/packages/dockerfile-mode.html";
|
||||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
dracula-theme = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
|
||||
elpaBuild {
|
||||
pname = "dracula-theme";
|
||||
|
@ -355,6 +400,21 @@
|
|||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
drupal-mode = callPackage ({ elpaBuild, fetchurl, lib, php-mode }:
|
||||
elpaBuild {
|
||||
pname = "drupal-mode";
|
||||
ename = "drupal-mode";
|
||||
version = "0.7.4";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu/drupal-mode-0.7.4.tar";
|
||||
sha256 = "1cglipmwx5v8vaqkkc7f5ka3dpxlrmmqrqhi885mm625kh2r27j1";
|
||||
};
|
||||
packageRequires = [ php-mode ];
|
||||
meta = {
|
||||
homepage = "https://elpa.gnu.org/packages/drupal-mode.html";
|
||||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
editorconfig = callPackage ({ cl-lib ? null
|
||||
, elpaBuild
|
||||
, emacs
|
||||
|
@ -375,6 +435,36 @@
|
|||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
elixir-mode = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
|
||||
elpaBuild {
|
||||
pname = "elixir-mode";
|
||||
ename = "elixir-mode";
|
||||
version = "2.4.0";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu/elixir-mode-2.4.0.tar";
|
||||
sha256 = "0h3ypyxmcpfh8kcwd08rsild4jy8s4mr3zr8va03bbh81pd3nm1m";
|
||||
};
|
||||
packageRequires = [ emacs ];
|
||||
meta = {
|
||||
homepage = "https://elpa.gnu.org/packages/elixir-mode.html";
|
||||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
elpher = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
|
||||
elpaBuild {
|
||||
pname = "elpher";
|
||||
ename = "elpher";
|
||||
version = "3.3.1";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu/elpher-3.3.1.tar";
|
||||
sha256 = "056z3ryj2288wgl8h4b33v9hybm8n2kfrqyb22bmlq1npcixyjl7";
|
||||
};
|
||||
packageRequires = [ emacs ];
|
||||
meta = {
|
||||
homepage = "https://elpa.gnu.org/packages/elpher.html";
|
||||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
evil = callPackage ({ elpaBuild, fetchurl, lib }:
|
||||
elpaBuild {
|
||||
pname = "evil";
|
||||
|
@ -405,6 +495,21 @@
|
|||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
evil-args = callPackage ({ elpaBuild, evil, fetchurl, lib }:
|
||||
elpaBuild {
|
||||
pname = "evil-args";
|
||||
ename = "evil-args";
|
||||
version = "1.1";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu/evil-args-1.1.tar";
|
||||
sha256 = "0lgwrhjsy098h2lhsiasm39kzkdfqcjnapc2q6f2gyf7zll37761";
|
||||
};
|
||||
packageRequires = [ evil ];
|
||||
meta = {
|
||||
homepage = "https://elpa.gnu.org/packages/evil-args.html";
|
||||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
evil-exchange = callPackage ({ cl-lib ? null
|
||||
, elpaBuild
|
||||
, evil
|
||||
|
@ -553,14 +658,44 @@
|
|||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
forth-mode = callPackage ({ elpaBuild, fetchurl, lib }:
|
||||
elpaBuild {
|
||||
pname = "forth-mode";
|
||||
ename = "forth-mode";
|
||||
version = "0.2";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu/forth-mode-0.2.tar";
|
||||
sha256 = "0qk6kg8d38fcvbxa4gfsdyllzrrp9712w74sj29b90fppa11b530";
|
||||
};
|
||||
packageRequires = [];
|
||||
meta = {
|
||||
homepage = "https://elpa.gnu.org/packages/forth-mode.html";
|
||||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
free-keys = callPackage ({ cl-lib ? null, elpaBuild, fetchurl, lib }:
|
||||
elpaBuild {
|
||||
pname = "free-keys";
|
||||
ename = "free-keys";
|
||||
version = "1.0";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu/free-keys-1.0.tar";
|
||||
sha256 = "1w0dslygz098bddap1shwa8pn55ggavz2jn131rmdnbfjy6plglv";
|
||||
};
|
||||
packageRequires = [ cl-lib ];
|
||||
meta = {
|
||||
homepage = "https://elpa.gnu.org/packages/free-keys.html";
|
||||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
geiser = callPackage ({ elpaBuild, emacs, fetchurl, lib, transient }:
|
||||
elpaBuild {
|
||||
pname = "geiser";
|
||||
ename = "geiser";
|
||||
version = "0.22";
|
||||
version = "0.22.2";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu/geiser-0.22.tar";
|
||||
sha256 = "0jcxjfn9d7cnsir2pva0axaz180d01sn0l9f175sj57ws8spj2h2";
|
||||
url = "https://elpa.nongnu.org/nongnu/geiser-0.22.2.tar";
|
||||
sha256 = "0mva8arcxj1kf6g7s6f6ik70gradmbnhhiaf7rdkycxdd8kdqn7i";
|
||||
};
|
||||
packageRequires = [ emacs transient ];
|
||||
meta = {
|
||||
|
@ -647,10 +782,10 @@
|
|||
elpaBuild {
|
||||
pname = "geiser-guile";
|
||||
ename = "geiser-guile";
|
||||
version = "0.21.1";
|
||||
version = "0.21.2";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu/geiser-guile-0.21.1.tar";
|
||||
sha256 = "1sm19jmaxzxkxd4jksgvc064jv90bc6q0yf8zz0s77y0aldw8sf5";
|
||||
url = "https://elpa.nongnu.org/nongnu/geiser-guile-0.21.2.tar";
|
||||
sha256 = "06mr8clsk8fj73q4ln90i28xs8axl4sd68wiyl41kgg9w5y78cb7";
|
||||
};
|
||||
packageRequires = [ emacs geiser ];
|
||||
meta = {
|
||||
|
@ -814,6 +949,21 @@
|
|||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
graphql-mode = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
|
||||
elpaBuild {
|
||||
pname = "graphql-mode";
|
||||
ename = "graphql-mode";
|
||||
version = "1.0.0";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu/graphql-mode-1.0.0.tar";
|
||||
sha256 = "11vn02vwiqbkzl9gxsm3gvybkbac13xnzzv2y227j3y8aq5kbwss";
|
||||
};
|
||||
packageRequires = [ emacs ];
|
||||
meta = {
|
||||
homepage = "https://elpa.gnu.org/packages/graphql-mode.html";
|
||||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
gruvbox-theme = callPackage ({ autothemer, elpaBuild, fetchurl, lib }:
|
||||
elpaBuild {
|
||||
pname = "gruvbox-theme";
|
||||
|
@ -889,6 +1039,36 @@
|
|||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
helm = callPackage ({ elpaBuild, fetchurl, lib }:
|
||||
elpaBuild {
|
||||
pname = "helm";
|
||||
ename = "helm";
|
||||
version = "3.8.3";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu/helm-3.8.3.tar";
|
||||
sha256 = "00qjcv4qxjw50zp5dzvn79c0xpyla4h41fxkr2jjszq6qzgd92cv";
|
||||
};
|
||||
packageRequires = [];
|
||||
meta = {
|
||||
homepage = "https://elpa.gnu.org/packages/helm.html";
|
||||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
helm-core = callPackage ({ elpaBuild, fetchurl, lib }:
|
||||
elpaBuild {
|
||||
pname = "helm-core";
|
||||
ename = "helm-core";
|
||||
version = "3.8.3";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu/helm-core-3.8.3.tar";
|
||||
sha256 = "11ggn1fmi8wbg2igs5lqppyccgpz8kyfzl17wqkr5xy69lr1jn5g";
|
||||
};
|
||||
packageRequires = [];
|
||||
meta = {
|
||||
homepage = "https://elpa.gnu.org/packages/helm-core.html";
|
||||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
highlight-parentheses = callPackage ({ elpaBuild
|
||||
, emacs
|
||||
, fetchurl
|
||||
|
@ -991,6 +1171,21 @@
|
|||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
jade-mode = callPackage ({ elpaBuild, fetchurl, lib }:
|
||||
elpaBuild {
|
||||
pname = "jade-mode";
|
||||
ename = "jade-mode";
|
||||
version = "1.0.1";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu/jade-mode-1.0.1.tar";
|
||||
sha256 = "1kkf5ayqzs1rs7b3jqwb21r2mikds3lillfrs3pkcca7lj76313n";
|
||||
};
|
||||
packageRequires = [];
|
||||
meta = {
|
||||
homepage = "https://elpa.gnu.org/packages/jade-mode.html";
|
||||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
jinja2-mode = callPackage ({ elpaBuild, fetchurl, lib }:
|
||||
elpaBuild {
|
||||
pname = "jinja2-mode";
|
||||
|
@ -1036,6 +1231,21 @@
|
|||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
kotlin-mode = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
|
||||
elpaBuild {
|
||||
pname = "kotlin-mode";
|
||||
ename = "kotlin-mode";
|
||||
version = "1.0.0";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu/kotlin-mode-1.0.0.tar";
|
||||
sha256 = "0ajnnsh6a8psfh7gd34d2wfii08jxr7x7k6na0assjldsxy7afwj";
|
||||
};
|
||||
packageRequires = [ emacs ];
|
||||
meta = {
|
||||
homepage = "https://elpa.gnu.org/packages/kotlin-mode.html";
|
||||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
lua-mode = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
|
||||
elpaBuild {
|
||||
pname = "lua-mode";
|
||||
|
@ -1259,6 +1469,26 @@
|
|||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
nix-mode = callPackage ({ elpaBuild
|
||||
, emacs
|
||||
, fetchurl
|
||||
, lib
|
||||
, magit-section
|
||||
, transient }:
|
||||
elpaBuild {
|
||||
pname = "nix-mode";
|
||||
ename = "nix-mode";
|
||||
version = "1.4.4";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu/nix-mode-1.4.4.tar";
|
||||
sha256 = "1nn74671273s5mjxzbdqvpwqx6w12zya21sxhzw51k2fs68vwh23";
|
||||
};
|
||||
packageRequires = [ emacs magit-section transient ];
|
||||
meta = {
|
||||
homepage = "https://elpa.gnu.org/packages/nix-mode.html";
|
||||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
org-contrib = callPackage ({ elpaBuild, emacs, fetchurl, lib, org }:
|
||||
elpaBuild {
|
||||
pname = "org-contrib";
|
||||
|
@ -1314,10 +1544,10 @@
|
|||
elpaBuild {
|
||||
pname = "org-mime";
|
||||
ename = "org-mime";
|
||||
version = "0.2.4";
|
||||
version = "0.2.6";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu/org-mime-0.2.4.tar";
|
||||
sha256 = "048psi5h8ln83pra4f24iq794w00b8p8pk67cylbd8afjdhh2x1r";
|
||||
url = "https://elpa.nongnu.org/nongnu/org-mime-0.2.6.tar";
|
||||
sha256 = "1l6mniyhmw3vbkvahw24038isd4ysbx505c3r0ar1rh7fbdf58cf";
|
||||
};
|
||||
packageRequires = [ emacs ];
|
||||
meta = {
|
||||
|
@ -1436,6 +1666,21 @@
|
|||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
pcmpl-args = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
|
||||
elpaBuild {
|
||||
pname = "pcmpl-args";
|
||||
ename = "pcmpl-args";
|
||||
version = "0.1.3";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu/pcmpl-args-0.1.3.tar";
|
||||
sha256 = "1p9y80k2rb9vlkqbmwdmzw279wlk8yk8ii5kqgkyr1yg224qpaw7";
|
||||
};
|
||||
packageRequires = [ emacs ];
|
||||
meta = {
|
||||
homepage = "https://elpa.gnu.org/packages/pcmpl-args.html";
|
||||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
pdf-tools = callPackage ({ elpaBuild
|
||||
, emacs
|
||||
, fetchurl
|
||||
|
@ -1531,6 +1776,21 @@
|
|||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
raku-mode = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
|
||||
elpaBuild {
|
||||
pname = "raku-mode";
|
||||
ename = "raku-mode";
|
||||
version = "0.2.1";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu/raku-mode-0.2.1.tar";
|
||||
sha256 = "01ygn20pbq18rciczbb0mkszr33pifs6i74rajxz03bcgx2j3q6f";
|
||||
};
|
||||
packageRequires = [ emacs ];
|
||||
meta = {
|
||||
homepage = "https://elpa.gnu.org/packages/raku-mode.html";
|
||||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
request = callPackage ({ elpaBuild, emacs, fetchurl, lib }:
|
||||
elpaBuild {
|
||||
pname = "request";
|
||||
|
@ -1715,14 +1975,29 @@
|
|||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
stylus-mode = callPackage ({ elpaBuild, fetchurl, lib }:
|
||||
elpaBuild {
|
||||
pname = "stylus-mode";
|
||||
ename = "stylus-mode";
|
||||
version = "1.0.1";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu/stylus-mode-1.0.1.tar";
|
||||
sha256 = "0vihp241msg8f0ph8w3w9fkad9b12pmpwg0q5la8nbw7gfy41mz5";
|
||||
};
|
||||
packageRequires = [];
|
||||
meta = {
|
||||
homepage = "https://elpa.gnu.org/packages/stylus-mode.html";
|
||||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
subatomic-theme = callPackage ({ elpaBuild, fetchurl, lib }:
|
||||
elpaBuild {
|
||||
pname = "subatomic-theme";
|
||||
ename = "subatomic-theme";
|
||||
version = "1.8.1";
|
||||
version = "1.8.2";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu/subatomic-theme-1.8.1.tar";
|
||||
sha256 = "0j496l7c2rwgxk2srcf1a70z63y48q5bs9cpx95212q7rl20zhip";
|
||||
url = "https://elpa.nongnu.org/nongnu/subatomic-theme-1.8.2.tar";
|
||||
sha256 = "0h2ln37ir6w4q44vznlkw4kzaisfpvkgs02dnb2x9b1wdg5qfqw4";
|
||||
};
|
||||
packageRequires = [];
|
||||
meta = {
|
||||
|
@ -1734,10 +2009,10 @@
|
|||
elpaBuild {
|
||||
pname = "subed";
|
||||
ename = "subed";
|
||||
version = "0.0.3";
|
||||
version = "1.0.2";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu/subed-0.0.3.tar";
|
||||
sha256 = "1qwpzj9j5fbis6vlgnqyilc49gbnxf48wcrjl8kljwzna3hsk7bx";
|
||||
url = "https://elpa.nongnu.org/nongnu/subed-1.0.2.tar";
|
||||
sha256 = "187ksczrqqzjnbvh8px3xvqyf38i7ac24z1qxzybd4vx2n071v64";
|
||||
};
|
||||
packageRequires = [ emacs ];
|
||||
meta = {
|
||||
|
@ -1826,6 +2101,21 @@
|
|||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
textile-mode = callPackage ({ elpaBuild, fetchurl, lib }:
|
||||
elpaBuild {
|
||||
pname = "textile-mode";
|
||||
ename = "textile-mode";
|
||||
version = "1.0.0";
|
||||
src = fetchurl {
|
||||
url = "https://elpa.nongnu.org/nongnu/textile-mode-1.0.0.tar";
|
||||
sha256 = "14ssqiw8x1pvjlw76h12vrk2w5qmhvp11v4h3cddqi96fddr95sq";
|
||||
};
|
||||
packageRequires = [];
|
||||
meta = {
|
||||
homepage = "https://elpa.gnu.org/packages/textile-mode.html";
|
||||
license = lib.licenses.free;
|
||||
};
|
||||
}) {};
|
||||
toc-org = callPackage ({ elpaBuild, fetchurl, lib }:
|
||||
elpaBuild {
|
||||
pname = "toc-org";
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,29 +0,0 @@
|
|||
{ stdenv, lib, fetchurl, ncurses }:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "heme";
|
||||
version = "0.4.2";
|
||||
src = fetchurl {
|
||||
url = "mirror://sourceforge/project/heme/heme/heme-${version}/heme-${version}.tar.gz";
|
||||
sha256 = "0wsrnj5mrlazgqs4252k30aw8m86qw0z9dmrsli9zdxl7j4cg99v";
|
||||
};
|
||||
postPatch = ''
|
||||
substituteInPlace Makefile \
|
||||
--replace "/usr/local" "$out" \
|
||||
--replace "CFLAGS = " "CFLAGS = -I${ncurses.dev}/include " \
|
||||
--replace "LDFLAGS = " "LDFLAGS = -L${ncurses.out}/lib " \
|
||||
--replace "-lcurses" "-lncurses"
|
||||
'';
|
||||
buildInputs = [ ncurses ];
|
||||
preBuild = ''
|
||||
mkdir -p $out/bin
|
||||
mkdir -p $out/man/man1
|
||||
'';
|
||||
meta = with lib; {
|
||||
description = "Portable and fast console hex editor for unix operating systems";
|
||||
homepage = "http://heme.sourceforge.net/";
|
||||
license = licenses.gpl2;
|
||||
platforms = platforms.linux;
|
||||
maintainers = with maintainers; [ cstrahan ];
|
||||
};
|
||||
}
|
|
@ -82,10 +82,10 @@ with stdenv; lib.makeOverridable mkDerivation (rec {
|
|||
libnotify
|
||||
] ++ extraLdPath)}" \
|
||||
${lib.concatStringsSep " " extraWrapperArgs} \
|
||||
--set JDK_HOME "$jdk" \
|
||||
--set-default JDK_HOME "$jdk" \
|
||||
--set-default ANDROID_JAVA_HOME "$jdk" \
|
||||
--set-default JAVA_HOME "$jdk" \
|
||||
--set ${hiName}_JDK "$jdk" \
|
||||
--set ANDROID_JAVA_HOME "$jdk" \
|
||||
--set JAVA_HOME "$jdk" \
|
||||
--set ${hiName}_VM_OPTIONS ${vmoptsFile}
|
||||
|
||||
ln -s "$item/share/applications" $out/share
|
||||
|
|
|
@ -264,12 +264,12 @@ in
|
|||
|
||||
datagrip = buildDataGrip rec {
|
||||
name = "datagrip-${version}";
|
||||
version = "2021.3.3"; /* updated by script */
|
||||
version = "2021.3.4"; /* updated by script */
|
||||
description = "Your Swiss Army Knife for Databases and SQL";
|
||||
license = lib.licenses.unfree;
|
||||
src = fetchurl {
|
||||
url = "https://download.jetbrains.com/datagrip/${name}.tar.gz";
|
||||
sha256 = "0wbr7hjbj9zvxn4j7nrp7sdzjk78hcg7ssz430y35x9isfiqv5py"; /* updated by script */
|
||||
sha256 = "09dkxj5vn99gkgc1yd18w7gqkw2vzci0z9q2fcih0zn7lvqp0im3"; /* updated by script */
|
||||
};
|
||||
wmClass = "jetbrains-datagrip";
|
||||
update-channel = "DataGrip RELEASE";
|
||||
|
@ -277,12 +277,12 @@ in
|
|||
|
||||
goland = buildGoland rec {
|
||||
name = "goland-${version}";
|
||||
version = "2021.3.2"; /* updated by script */
|
||||
version = "2021.3.3"; /* updated by script */
|
||||
description = "Up and Coming Go IDE";
|
||||
license = lib.licenses.unfree;
|
||||
src = fetchurl {
|
||||
url = "https://download.jetbrains.com/go/${name}.tar.gz";
|
||||
sha256 = "0csc52wwqggdxc61qkmbs84hdvyj3x60rcv5jrxcwp3bjq94kskw"; /* updated by script */
|
||||
sha256 = "18z4mvxhds5fgdwcfywc4pj8s9ifvsknhradgzmxsvji0fbp0awx"; /* updated by script */
|
||||
};
|
||||
wmClass = "jetbrains-goland";
|
||||
update-channel = "GoLand RELEASE";
|
||||
|
@ -290,12 +290,12 @@ in
|
|||
|
||||
idea-community = buildIdea rec {
|
||||
name = "idea-community-${version}";
|
||||
version = "2021.3.1"; /* updated by script */
|
||||
version = "2021.3.2"; /* updated by script */
|
||||
description = "Integrated Development Environment (IDE) by Jetbrains, community edition";
|
||||
license = lib.licenses.asl20;
|
||||
src = fetchurl {
|
||||
url = "https://download.jetbrains.com/idea/ideaIC-${version}.tar.gz";
|
||||
sha256 = "19xxbjcn17n3fk1vdb31nihn9cv5q65wfxdan6dx7z0wq5c4x9zd"; /* updated by script */
|
||||
sha256 = "1j889b2r950bl9wiqq1z8v8s2qicidfcdar300cy666i8rc25qlr"; /* updated by script */
|
||||
};
|
||||
wmClass = "jetbrains-idea-ce";
|
||||
update-channel = "IntelliJ IDEA RELEASE";
|
||||
|
@ -303,12 +303,12 @@ in
|
|||
|
||||
idea-ultimate = buildIdea rec {
|
||||
name = "idea-ultimate-${version}";
|
||||
version = "2021.3.1"; /* updated by script */
|
||||
version = "2021.3.2"; /* updated by script */
|
||||
description = "Integrated Development Environment (IDE) by Jetbrains, requires paid license";
|
||||
license = lib.licenses.unfree;
|
||||
src = fetchurl {
|
||||
url = "https://download.jetbrains.com/idea/ideaIU-${version}-no-jbr.tar.gz";
|
||||
sha256 = "0ys8f2h0qaj8s9ga94hg73vah552a6al4r1ypdp05f7j1m7lzajf"; /* updated by script */
|
||||
sha256 = "0w36qnqgkvw6j1ks09h515237bhqfaixrimzg2r494ic98amvkps"; /* updated by script */
|
||||
};
|
||||
wmClass = "jetbrains-idea";
|
||||
update-channel = "IntelliJ IDEA RELEASE";
|
||||
|
@ -343,12 +343,12 @@ in
|
|||
|
||||
pycharm-community = buildPycharm rec {
|
||||
name = "pycharm-community-${version}";
|
||||
version = "2021.3.1"; /* updated by script */
|
||||
version = "2021.3.2"; /* updated by script */
|
||||
description = "PyCharm Community Edition";
|
||||
license = lib.licenses.asl20;
|
||||
src = fetchurl {
|
||||
url = "https://download.jetbrains.com/python/${name}.tar.gz";
|
||||
sha256 = "1xd88rd1w3ghkm6jq8ilhhjy972qfm57si581rnsjpz65rj6xpgm"; /* updated by script */
|
||||
sha256 = "1s36basydp7cxgbgdapjhkslx0x9vv3639xhm84ny76hf7s03bpi"; /* updated by script */
|
||||
};
|
||||
wmClass = "jetbrains-pycharm-ce";
|
||||
update-channel = "PyCharm RELEASE";
|
||||
|
@ -356,12 +356,12 @@ in
|
|||
|
||||
pycharm-professional = buildPycharm rec {
|
||||
name = "pycharm-professional-${version}";
|
||||
version = "2021.3.1"; /* updated by script */
|
||||
version = "2021.3.2"; /* updated by script */
|
||||
description = "PyCharm Professional Edition";
|
||||
license = lib.licenses.unfree;
|
||||
src = fetchurl {
|
||||
url = "https://download.jetbrains.com/python/${name}.tar.gz";
|
||||
sha256 = "0639mzjh1hw158gmf4qqld03371z60k3xyca21l1pnv3551svd6d"; /* updated by script */
|
||||
sha256 = "0rwykngqgby05mh47kls8wzi68gfka2z04k6kdmsxwn1hhx5gnbb"; /* updated by script */
|
||||
};
|
||||
wmClass = "jetbrains-pycharm";
|
||||
update-channel = "PyCharm RELEASE";
|
||||
|
@ -369,12 +369,12 @@ in
|
|||
|
||||
rider = buildRider rec {
|
||||
name = "rider-${version}";
|
||||
version = "2021.3.2"; /* updated by script */
|
||||
version = "2021.3.3"; /* updated by script */
|
||||
description = "A cross-platform .NET IDE based on the IntelliJ platform and ReSharper";
|
||||
license = lib.licenses.unfree;
|
||||
src = fetchurl {
|
||||
url = "https://download.jetbrains.com/rider/JetBrains.Rider-${version}.tar.gz";
|
||||
sha256 = "0arnh9wlw874jqlgad00q0nf1kjp7pvb4xixwrb6v1l9fbr9nsan"; /* updated by script */
|
||||
sha256 = "13q6hk5l3fqmz818z5wj014jd5iglpdcpi8zlpgaim1jg5fpvi8x"; /* updated by script */
|
||||
};
|
||||
wmClass = "jetbrains-rider";
|
||||
update-channel = "Rider RELEASE";
|
||||
|
@ -382,12 +382,12 @@ in
|
|||
|
||||
ruby-mine = buildRubyMine rec {
|
||||
name = "ruby-mine-${version}";
|
||||
version = "2021.3.1"; /* updated by script */
|
||||
version = "2021.3.2"; /* updated by script */
|
||||
description = "The Most Intelligent Ruby and Rails IDE";
|
||||
license = lib.licenses.unfree;
|
||||
src = fetchurl {
|
||||
url = "https://download.jetbrains.com/ruby/RubyMine-${version}.tar.gz";
|
||||
sha256 = "1xax3738myxjzm0p8zm8aaa2nw0336h80nrm9dqby2j7dass2jnm"; /* updated by script */
|
||||
sha256 = "18ny40zl9hgkynkc5yyy2xqngl9diifh2gqrfnz7rfq14kp10xb9"; /* updated by script */
|
||||
};
|
||||
wmClass = "jetbrains-rubymine";
|
||||
update-channel = "RubyMine RELEASE";
|
||||
|
|
|
@ -34,7 +34,7 @@ stdenv.mkDerivation rec {
|
|||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Jonathan's Own Version or Emacs";
|
||||
description = "Jonathan's Own Version of Emacs";
|
||||
homepage = "https://github.com/jonmacs/jove";
|
||||
license = licenses.bsd2;
|
||||
maintainers = with maintainers; [ AndersonTorres ];
|
||||
|
|
|
@ -15,13 +15,13 @@
|
|||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "lite-xl";
|
||||
version = "2.0.4";
|
||||
version = "2.0.5";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "lite-xl";
|
||||
repo = "lite-xl";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-yMdfJ8qE2Tv+CtvbPN6todzY/pDrYo+vaBeppuUt5F4=";
|
||||
sha256 = "sha256-7ppO5ITijhJ37OL6xlQgu1SaQ/snXDH5xJOwuXZNUVA=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
, makeWrapper
|
||||
, pkg-config
|
||||
, python2
|
||||
, python3
|
||||
, openssl
|
||||
, SDL2
|
||||
, fontconfig
|
||||
|
@ -24,16 +25,16 @@
|
|||
}:
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "neovide";
|
||||
version = "unstable-2021-10-09";
|
||||
version = "unstable-2022-02-04";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Kethku";
|
||||
repo = "neovide";
|
||||
rev = "7f76ad4764197ba75bb9263d25b265d801563ccf";
|
||||
sha256 = "sha256-kcP0WSk3quTaWCGQYN4zYlDQ9jhx/Vu6AamSLGFszwQ=";
|
||||
rev = "92bc1725f1733547eb0ae25b740425f03f358c2a";
|
||||
sha256 = "sha256-bKTteaj6gddp0NuV5Y0pfHotezU9Hmb136xOC9zkJ/M=";
|
||||
};
|
||||
|
||||
cargoSha256 = "sha256-TQEhz9FtvIb/6Qtyz018dPle0+nub1oMZMFtKAqYcoI=";
|
||||
cargoSha256 = "sha256-TaZN49ou6bf1vW0mEsmaItp1c73d0M826MMrSGXpnGE=";
|
||||
|
||||
SKIA_SOURCE_DIR =
|
||||
let
|
||||
|
@ -41,8 +42,8 @@ rustPlatform.buildRustPackage rec {
|
|||
owner = "rust-skia";
|
||||
repo = "skia";
|
||||
# see rust-skia:skia-bindings/Cargo.toml#package.metadata skia
|
||||
rev = "m91-0.39.4";
|
||||
sha256 = "sha256-ovlR1vEZaQqawwth/UYVUSjFu+kTsywRpRClBaE1CEA=";
|
||||
rev = "m93-0.42.0";
|
||||
sha256 = "sha256-F1DWLm7bdKnuCu5tMMekxSyaGq8gPRNtZwcRVXJxjZQ=";
|
||||
};
|
||||
# The externals for skia are taken from skia/DEPS
|
||||
externals = lib.mapAttrs (n: v: fetchgit v) (lib.importJSON ./skia-externals.json);
|
||||
|
@ -72,6 +73,7 @@ rustPlatform.buildRustPackage rec {
|
|||
pkg-config
|
||||
makeWrapper
|
||||
python2 # skia-bindings
|
||||
python3 # rust-xcb
|
||||
llvmPackages.clang # skia
|
||||
];
|
||||
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue