Merge remote-tracking branch 'origin/master' into r-updates

This commit is contained in:
Justin Bedo 2022-02-09 10:25:07 +11:00
commit 145172b2c4
No known key found for this signature in database
GPG key ID: 2C18202C56C182BD
868 changed files with 20460 additions and 15636 deletions

View file

@ -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:

View file

@ -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

View file

@ -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:

View file

@ -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;
} ];
});
});

View file

@ -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

View file

@ -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 //

View file

@ -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;

View file

@ -61,11 +61,11 @@ rec {
pipe = val: functions:
let reverseApply = x: f: f x;
in builtins.foldl' reverseApply val functions;
/* note please dont 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, its obvious that it
goes first-to-last. With `compose`, not so much.
*/
# note please dont 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, its obvious that it
# goes first-to-last. With `compose`, not so much.
## Named versions corresponding to some builtin operators.

View file

@ -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;
};
}

View file

@ -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 &gt;= 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

View file

@ -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

View file

@ -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;

View file

@ -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 = {

View file

@ -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:
[

View file

@ -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

View file

@ -14,6 +14,8 @@ in {
};
config = mkIf cfg.enable {
programs.dconf.enable = true;
environment.systemPackages = [
pkgs.calls
];

View file

@ -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
'')

View file

@ -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" ];

View file

@ -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)) ''

View file

@ -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" \

View file

@ -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 ];`")
];
}

View file

@ -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

View file

@ -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 =
''

View file

@ -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

View file

@ -43,6 +43,7 @@ in {
ExecStart = "${pkgs.autorandr}/bin/autorandr --batch --change --default ${cfg.defaultTarget}";
Type = "oneshot";
RemainAfterExit = false;
KillMode = "process";
};
};

View file

@ -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}')"

View file

@ -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";

View file

@ -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 = {};

View file

@ -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.
'';
};

View file

@ -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;

View 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 );
};
}

View file

@ -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";

View file

@ -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."

View file

@ -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}";

View 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 ];
}

View file

@ -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

View file

@ -84,7 +84,6 @@ in {
interface eth0
{
AdvSendAdvert on;
AdvDefaultLifetime 0;
prefix ${prefix}::/64 {
AdvOnLink on;
AdvAutonomous on;

View file

@ -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 = {

View file

@ -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";

View file

@ -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

View file

@ -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; [

View file

@ -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";
}

View 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;
};
}

View file

@ -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
'';
};
}

View 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"'
'';
}

View file

@ -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.";
};
};
};

View file

@ -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 "";

View file

@ -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}";

View file

@ -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

View file

@ -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
'';
}

View file

@ -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"
])

View file

@ -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 =
''

View file

@ -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 {};

View file

@ -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")
'';
}

View file

@ -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

View 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
View file

View 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
View 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")
'';
})

View file

@ -10,6 +10,6 @@ pkgs:
snakeOilPublicKey = pkgs.lib.concatStrings [
"ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHA"
"yNTYAAABBBChdA2BmwcG49OrQN33f/sj+OHL5sJhwVl2Qim0vkUJQCry1zFpKTa"
"9ZcDMiWaEhoAR6FGoaGI04ff7CS+1yybQ= sakeoil"
"9ZcDMiWaEhoAR6FGoaGI04ff7CS+1yybQ= snakeoil"
];
}

View file

@ -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.

View file

@ -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")
'';

View file

@ -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")

View file

@ -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

View file

@ -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;
};

View file

@ -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 =

View file

@ -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;
};

View file

@ -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)

View file

@ -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; {

View file

@ -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 ];

View 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;
};
}

View file

@ -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 ];

View file

@ -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 ];

View file

@ -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 ];

View file

@ -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 ];

View file

@ -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

View file

@ -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";

View 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 ];
};
}

View file

@ -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 ];

View file

@ -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}

File diff suppressed because it is too large Load diff

View file

@ -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 ];

View 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;
};
}

View file

@ -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 {

View file

@ -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" ];

View file

@ -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" ];

View file

@ -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}

View file

@ -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";

View file

@ -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}");
};

View file

@ -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

View file

@ -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

View file

@ -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 = {

View file

@ -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";

View file

@ -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 ];
};
}

View file

@ -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

View file

@ -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";

View file

@ -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 ];

View file

@ -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 = [

View file

@ -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