Merge staging-next into staging

main
github-actions[bot] 2 years ago committed by GitHub
commit 8357b101a5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 4
      doc/builders/fetchers.chapter.md
  2. 2
      doc/languages-frameworks/texlive.section.md
  3. 5
      lib/default.nix
  4. 6
      lib/modules.nix
  5. 19
      lib/trivial.nix
  6. 7
      maintainers/maintainer-list.nix
  7. 9
      nixos/doc/manual/from_md/release-notes/rl-2205.section.xml
  8. 2
      nixos/doc/manual/release-notes/rl-2205.section.md
  9. 30
      nixos/lib/testing-python.nix
  10. 2
      nixos/modules/installer/tools/tools.nix
  11. 1
      nixos/modules/module-list.nix
  12. 2
      nixos/modules/services/logging/graylog.nix
  13. 40
      nixos/modules/services/misc/moonraker.nix
  14. 10
      nixos/modules/services/misc/nix-gc.nix
  15. 10
      nixos/modules/services/misc/nix-optimise.nix
  16. 17
      nixos/modules/services/network-filesystems/ipfs.nix
  17. 128
      nixos/modules/services/networking/https-dns-proxy.nix
  18. 98
      nixos/modules/services/system/earlyoom.nix
  19. 4
      nixos/modules/services/x11/desktop-managers/plasma5.nix
  20. 2
      nixos/modules/tasks/network-interfaces-scripted.nix
  21. 2
      nixos/modules/tasks/network-interfaces-systemd.nix
  22. 11
      nixos/modules/tasks/network-interfaces.nix
  23. 2
      nixos/modules/virtualisation/qemu-vm.nix
  24. 2
      nixos/tests/all-tests.nix
  25. 1
      nixos/tests/boot.nix
  26. 6
      nixos/tests/caddy.nix
  27. 2
      nixos/tests/ceph-multi-node.nix
  28. 38
      nixos/tests/chromium.nix
  29. 2
      nixos/tests/cri-o.nix
  30. 16
      nixos/tests/earlyoom.nix
  31. 2
      nixos/tests/gitolite-fcgiwrap.nix
  32. 4
      nixos/tests/jitsi-meet.nix
  33. 6
      nixos/tests/misc.nix
  34. 45
      nixos/tests/moonraker.nix
  35. 12
      nixos/tests/networking.nix
  36. 6
      nixos/tests/rstudio-server.nix
  37. 4
      nixos/tests/step-ca.nix
  38. 25
      nixos/tests/tor.nix
  39. 21
      nixos/tests/without-nix.nix
  40. 4
      pkgs/applications/audio/airwave/default.nix
  41. 5
      pkgs/applications/audio/aj-snapshot/default.nix
  42. 2
      pkgs/applications/audio/ams/default.nix
  43. 2
      pkgs/applications/audio/bitwig-studio/bitwig-studio2.nix
  44. 2
      pkgs/applications/audio/cardinal/default.nix
  45. 4
      pkgs/applications/audio/cmt/default.nix
  46. 1
      pkgs/applications/audio/deadbeef/default.nix
  47. 11
      pkgs/applications/audio/gnome-podcasts/default.nix
  48. 2
      pkgs/applications/audio/jamin/default.nix
  49. 2
      pkgs/applications/audio/magnetophonDSP/faustCompressors/default.nix
  50. 11
      pkgs/applications/audio/mid2key/default.nix
  51. 9
      pkgs/applications/audio/midas/generic.nix
  52. 11
      pkgs/applications/audio/mopidy/youtube.nix
  53. 1
      pkgs/applications/audio/musescore/darwin.nix
  54. 1
      pkgs/applications/audio/musescore/default.nix
  55. 4
      pkgs/applications/audio/qmidiarp/default.nix
  56. 1
      pkgs/applications/audio/qmmp/default.nix
  57. 4
      pkgs/applications/audio/sisco.lv2/default.nix
  58. 10
      pkgs/applications/audio/sound-juicer/default.nix
  59. 2
      pkgs/applications/audio/soundkonverter/default.nix
  60. 2
      pkgs/applications/blockchains/bitcoin-unlimited/default.nix
  61. 2
      pkgs/applications/blockchains/dogecoin/default.nix
  62. 3
      pkgs/applications/blockchains/litecoin/default.nix
  63. 2
      pkgs/applications/blockchains/namecoin/default.nix
  64. 4
      pkgs/applications/editors/cudatext/default.nix
  65. 12
      pkgs/applications/editors/cudatext/deps.json
  66. 12
      pkgs/applications/editors/hexdino/default.nix
  67. 5
      pkgs/applications/editors/jetbrains/darwin.nix
  68. 64
      pkgs/applications/editors/jetbrains/default.nix
  69. 25
      pkgs/applications/editors/jetbrains/linux.nix
  70. 3
      pkgs/applications/editors/jupyter-kernels/octave/default.nix
  71. 4
      pkgs/applications/editors/micro/default.nix
  72. 30
      pkgs/applications/editors/micro/test-with-expect.nix
  73. 2
      pkgs/applications/editors/qxmledit/default.nix
  74. 4
      pkgs/applications/emulators/fceux/default.nix
  75. 6
      pkgs/applications/emulators/ryujinx/default.nix
  76. 8
      pkgs/applications/emulators/wine/base.nix
  77. 6
      pkgs/applications/emulators/wine/packages.nix
  78. 2
      pkgs/applications/gis/grass/default.nix
  79. 4
      pkgs/applications/graphics/drawio/default.nix
  80. 1
      pkgs/applications/graphics/gpicview/default.nix
  81. 4
      pkgs/applications/graphics/inkscape/extensions.nix
  82. 8
      pkgs/applications/graphics/mtpaint/default.nix
  83. 1
      pkgs/applications/graphics/nomacs/default.nix
  84. 107
      pkgs/applications/graphics/unigine-heaven/default.nix
  85. 6
      pkgs/applications/graphics/xournal/default.nix
  86. 9
      pkgs/applications/misc/avrdudess/default.nix
  87. 6
      pkgs/applications/misc/gosmore/default.nix
  88. 4
      pkgs/applications/misc/lighthouse/default.nix
  89. 8
      pkgs/applications/misc/mucommander/default.nix
  90. 1
      pkgs/applications/misc/mupdf/1.17.nix
  91. 1
      pkgs/applications/misc/mupdf/default.nix
  92. 1
      pkgs/applications/misc/nut/default.nix
  93. 3
      pkgs/applications/misc/obsidian/default.nix
  94. 43
      pkgs/applications/misc/octoprint/default.nix
  95. 8
      pkgs/applications/misc/pdfdiff/default.nix
  96. 7
      pkgs/applications/misc/pdfpc/default.nix
  97. 5
      pkgs/applications/misc/qmetro/default.nix
  98. 6
      pkgs/applications/misc/sleepyhead/default.nix
  99. 31
      pkgs/applications/misc/slmenu/default.nix
  100. 6
      pkgs/applications/misc/tuhi/default.nix
  101. Some files were not shown because too many files have changed in this diff Show More

@ -72,6 +72,10 @@ Used with Mercurial. Expects `url`, `rev`, and `sha256`.
A number of fetcher functions wrap part of `fetchurl` and `fetchzip`. They are mainly convenience functions intended for commonly used destinations of source code in Nixpkgs. These wrapper fetchers are listed below.
## `fetchFromGitea` {#fetchfromgitea}
`fetchFromGitea` expects five arguments. `domain` is the gitea server name. `owner` is a string corresponding to the Gitea user or organization that controls this repository. `repo` corresponds to the name of the software repository. These are located at the top of every Gitea HTML page as `owner`/`repo`. `rev` corresponds to the Git commit hash or tag (e.g `v1.0`) that will be downloaded from Git. Finally, `sha256` corresponds to the hash of the extracted directory. Again, other hash algorithms are also available but `sha256` is currently preferred.
## `fetchFromGitHub` {#fetchfromgithub}
`fetchFromGitHub` expects four arguments. `owner` is a string corresponding to the GitHub user or organization that controls this repository. `repo` corresponds to the name of the software repository. These are located at the top of every GitHub HTML page as `owner`/`repo`. `rev` corresponds to the Git commit hash or tag (e.g `v1.0`) that will be downloaded from Git. Finally, `sha256` corresponds to the hash of the extracted directory. Again, other hash algorithms are also available but `sha256` is currently preferred.

@ -6,7 +6,7 @@ Since release 15.09 there is a new TeX Live packaging that lives entirely under
- For basic usage just pull `texlive.combined.scheme-basic` for an environment with basic LaTeX support.
- It typically won't work to use separately installed packages together. Instead, you can build a custom set of packages like this:
- It typically won't work to use separately installed packages together. Instead, you can build a custom set of packages like this. Most CTAN packages should be available:
```nix
texlive.combine {

@ -68,7 +68,8 @@ let
bitNot boolToString mergeAttrs flip mapNullable inNixShell isFloat min max
importJSON importTOML warn warnIf throwIfNot checkListOfEnum
info showWarnings nixpkgsVersion version isInOldestRelease
mod compare splitByAndCompare functionArgs setFunctionArgs isFunction
mod compare splitByAndCompare
functionArgs setFunctionArgs isFunction toFunction
toHexString toBaseDigits;
inherit (self.fixedPoints) fix fix' converge extends composeExtensions
composeManyExtensions makeExtensible makeExtensibleWithCustomName;
@ -113,7 +114,7 @@ let
commitIdFromGitRepo cleanSourceWith pathHasContext
canCleanSource pathIsRegularFile pathIsGitRepo;
inherit (self.modules) evalModules setDefaultModuleLocation
unifyModuleSyntax applyIfFunction mergeModules
unifyModuleSyntax applyModuleArgsIfFunction mergeModules
mergeModules' mergeOptionDecls evalOptionValue mergeDefinitions
pushDownProperties dischargeProperties filterOverrides
sortProperties fixupOptionType mkIf mkAssert mkMerge mkOverride

@ -282,11 +282,11 @@ rec {
# Like unifyModuleSyntax, but also imports paths and calls functions if necessary
loadModule = args: fallbackFile: fallbackKey: m:
if isFunction m || isAttrs m then
unifyModuleSyntax fallbackFile fallbackKey (applyIfFunction fallbackKey m args)
unifyModuleSyntax fallbackFile fallbackKey (applyModuleArgsIfFunction fallbackKey m args)
else if isList m then
let defs = [{ file = fallbackFile; value = m; }]; in
throw "Module imports can't be nested lists. Perhaps you meant to remove one level of lists? Definitions: ${showDefs defs}"
else unifyModuleSyntax (toString m) (toString m) (applyIfFunction (toString m) (import m) args);
else unifyModuleSyntax (toString m) (toString m) (applyModuleArgsIfFunction (toString m) (import m) args);
/*
Collects all modules recursively into the form
@ -383,7 +383,7 @@ rec {
config = addFreeformType (addMeta (removeAttrs m ["_file" "key" "disabledModules" "require" "imports" "freeformType"]));
};
applyIfFunction = key: f: args@{ config, options, lib, ... }: if isFunction f then
applyModuleArgsIfFunction = key: f: args@{ config, options, lib, ... }: if isFunction f then
let
# Module arguments are resolved in a strict manner when attribute set
# deconstruction is used. As the arguments are now defined with the

@ -441,6 +441,25 @@ rec {
isFunction = f: builtins.isFunction f ||
(f ? __functor && isFunction (f.__functor f));
/*
Turns any non-callable values into constant functions.
Returns callable values as is.
Example:
nix-repl> lib.toFunction 1 2
1
nix-repl> lib.toFunction (x: x + 1) 2
3
*/
toFunction =
# Any value
v:
if isFunction v
then v
else k: v;
/* Convert the given positive integer to a string of its hexadecimal
representation. For example:

@ -4241,7 +4241,12 @@
githubId = 119691;
name = "Michael Gough";
};
freax13 = {
email = "erbse.13@gmx.de";
github = "freax13";
githubId = 14952658;
name = "Tom Dohrmann";
};
fredeb = {
email = "im@fredeb.dev";
github = "fredeeb";

@ -478,6 +478,15 @@
its reliance on python2.
</para>
</listitem>
<listitem>
<para>
<literal>services.ipfs.extraFlags</literal> is now escaped
with <literal>utils.escapeSystemdExecArgs</literal>. If you
rely on systemd interpolating <literal>extraFlags</literal> in
the service <literal>ExecStart</literal>, this will no longer
work.
</para>
</listitem>
<listitem>
<para>
The <literal>matrix-synapse</literal> service

@ -161,6 +161,8 @@ In addition to numerous new and upgraded packages, this release has the followin
- The `mailpile` email webclient (`services.mailpile`) has been removed due to its reliance on python2.
- `services.ipfs.extraFlags` is now escaped with `utils.escapeSystemdExecArgs`. If you rely on systemd interpolating `extraFlags` in the service `ExecStart`, this will no longer work.
- The `matrix-synapse` service (`services.matrix-synapse`) has been converted to use the `settings` option defined in RFC42.
This means that options that are part of your `homeserver.yaml` configuration, and that were specified at the top-level of the
module (`services.matrix-synapse`) now need to be moved into `services.matrix-synapse.settings`. And while not all options you

@ -146,26 +146,28 @@ rec {
# Make a full-blown test
makeTest =
{ testScript
{ machine ? null
, nodes ? {}
, testScript
, enableOCR ? false
, name ? "unnamed"
# Skip linting (mainly intended for faster dev cycles)
, skipLint ? false
, passthru ? {}
, meta ? {}
, # For meta.position
pos ? # position used in error messages and for meta.position
(if t.meta.description or null != null
then builtins.unsafeGetAttrPos "description" t.meta
(if meta.description or null != null
then builtins.unsafeGetAttrPos "description" meta
else builtins.unsafeGetAttrPos "testScript" t)
, ...
} @ t:
let
nodes = qemu_pkg:
mkNodes = qemu_pkg:
let
testScript' =
# Call the test script with the computed nodes.
if lib.isFunction testScript
then testScript { nodes = nodes qemu_pkg; }
then testScript { nodes = mkNodes qemu_pkg; }
else testScript;
build-vms = import ./build-vms.nix {
@ -205,33 +207,29 @@ rec {
};
in
build-vms.buildVirtualNetwork (
t.nodes or (if t ? machine then { machine = t.machine; } else { })
nodes // lib.optionalAttrs (machine != null) { inherit machine; }
);
driver = setupDriverForTest {
inherit testScript enableOCR skipLint passthru;
testName = name;
qemu_pkg = pkgs.qemu_test;
nodes = nodes pkgs.qemu_test;
nodes = mkNodes pkgs.qemu_test;
};
driverInteractive = setupDriverForTest {
inherit testScript enableOCR skipLint passthru;
testName = name;
qemu_pkg = pkgs.qemu;
nodes = nodes pkgs.qemu;
nodes = mkNodes pkgs.qemu;
interactive = true;
};
test =
let
passMeta = drv: drv // lib.optionalAttrs (t ? meta) {
meta = (drv.meta or { }) // t.meta;
};
in passMeta (runTests { inherit driver pos driverInteractive; });
test = lib.addMetaAttrs meta (runTests { inherit driver pos driverInteractive; });
in
test // {
inherit test driver driverInteractive nodes;
inherit test driver driverInteractive;
inherit (driver) nodes;
};
abortForFunction = functionName: abort ''The ${functionName} function was

@ -117,7 +117,7 @@ in
'';
};
config = lib.mkIf (!config.system.disableInstallerTools) {
config = lib.mkIf (config.nix.enable && !config.system.disableInstallerTools) {
system.nixos-generate-config.configuration = mkDefault ''
# Edit this configuration file to define what should be installed on

@ -777,6 +777,7 @@
./services/networking/headscale.nix
./services/networking/hostapd.nix
./services/networking/htpdate.nix
./services/networking/https-dns-proxy.nix
./services/networking/hylafax/default.nix
./services/networking/i2pd.nix
./services/networking/i2p.nix

@ -132,7 +132,7 @@ in
description = "Graylog server daemon user";
};
};
users.groups = mkIf (cfg.user == "graylog") {};
users.groups = mkIf (cfg.user == "graylog") { graylog = {}; };
systemd.tmpfiles.rules = [
"d '${cfg.messageJournalDir}' - ${cfg.user} - - -"

@ -79,6 +79,19 @@ in {
for supported values.
'';
};
allowSystemControl = mkOption {
type = types.bool;
default = false;
description = ''
Whether to allow Moonraker to perform system-level operations.
Moonraker exposes APIs to perform system-level operations, such as
reboot, shutdown, and management of systemd units. See the
<link xlink:href="https://moonraker.readthedocs.io/en/latest/web_api/#machine-commands">documentation</link>
for details on what clients are able to do.
'';
};
};
};
@ -86,6 +99,13 @@ in {
warnings = optional (cfg.settings ? update_manager)
''Enabling update_manager is not supported on NixOS and will lead to non-removable warnings in some clients.'';
assertions = [
{
assertion = cfg.allowSystemControl -> config.security.polkit.enable;
message = "services.moonraker.allowSystemControl requires polkit to be enabled (security.polkit.enable).";
}
];
users.users = optionalAttrs (cfg.user == "moonraker") {
moonraker = {
group = cfg.group;
@ -128,11 +148,31 @@ in {
exec ${pkg}/bin/moonraker -c ${cfg.configDir}/moonraker-temp.cfg
'';
# Needs `ip` command
path = [ pkgs.iproute2 ];
serviceConfig = {
WorkingDirectory = cfg.stateDir;
Group = cfg.group;
User = cfg.user;
};
};
security.polkit.extraConfig = lib.optionalString cfg.allowSystemControl ''
// nixos/moonraker: Allow Moonraker to perform system-level operations
//
// This was enabled via services.moonraker.allowSystemControl.
polkit.addRule(function(action, subject) {
if ((action.id == "org.freedesktop.systemd1.manage-units" ||
action.id == "org.freedesktop.login1.power-off" ||
action.id == "org.freedesktop.login1.power-off-multiple-sessions" ||
action.id == "org.freedesktop.login1.reboot" ||
action.id == "org.freedesktop.login1.reboot-multiple-sessions" ||
action.id.startsWith("org.freedesktop.packagekit.")) &&
subject.user == "${cfg.user}") {
return polkit.Result.YES;
}
});
'';
};
}

@ -81,8 +81,14 @@ in
###### implementation
config = {
systemd.services.nix-gc = {
assertions = [
{
assertion = cfg.automatic -> config.nix.enable;
message = ''nix.gc.automatic requires nix.enable'';
}
];
systemd.services.nix-gc = lib.mkIf config.nix.enable {
description = "Nix Garbage Collector";
script = "exec ${config.nix.package.out}/bin/nix-collect-garbage ${cfg.options}";
startAt = optional cfg.automatic cfg.dates;

@ -37,8 +37,14 @@ in
###### implementation
config = {
systemd.services.nix-optimise =
assertions = [
{
assertion = cfg.automatic -> config.nix.enable;
message = ''nix.optimise.automatic requires nix.enable'';
}
];
systemd.services.nix-optimise = lib.mkIf config.nix.enable
{ description = "Nix Store Optimiser";
# No point this if the nix daemon (and thus the nix store) is outside
unitConfig.ConditionPathIsReadWrite = "/nix/var/nix/daemon-socket";

@ -1,16 +1,17 @@
{ config, lib, pkgs, options, ... }:
{ config, lib, pkgs, options, utils, ... }:
with lib;
let
cfg = config.services.ipfs;
opt = options.services.ipfs;
ipfsFlags = toString ([
(optionalString cfg.autoMount "--mount")
(optionalString cfg.enableGC "--enable-gc")
(optionalString (cfg.serviceFdlimit != null) "--manage-fdlimit=false")
(optionalString (cfg.defaultMode == "offline") "--offline")
(optionalString (cfg.defaultMode == "norouting") "--routing=none")
] ++ cfg.extraFlags);
ipfsFlags = utils.escapeSystemdExecArgs (
optional cfg.autoMount "--mount" ++
optional cfg.enableGC "--enable-gc" ++
optional (cfg.serviceFdlimit != null) "--manage-fdlimit=false" ++
optional (cfg.defaultMode == "offline") "--offline" ++
optional (cfg.defaultMode == "norouting") "--routing=none" ++
cfg.extraFlags
);
profile =
if cfg.localDiscovery

@ -0,0 +1,128 @@
{ config, lib, pkgs, ... }:
let
inherit (lib)
concatStringsSep
mkEnableOption mkIf mkOption types;
cfg = config.services.https-dns-proxy;
providers = {
cloudflare = {
ips = [ "1.1.1.1" "1.0.0.1" ];
url = "https://cloudflare-dns.com/dns-query";
};
google = {
ips = [ "8.8.8.8" "8.8.4.4" ];
url = "https://dns.google/dns-query";
};
quad9 = {
ips = [ "9.9.9.9" "149.112.112.112" ];
url = "https://dns.quad9.net/dns-query";
};
};
defaultProvider = "quad9";
providerCfg =
let
isCustom = cfg.provider.kind == "custom";
in
lib.concatStringsSep " " [
"-b"
(concatStringsSep "," (if isCustom then cfg.provider.ips else providers."${cfg.provider.kind}".ips))
"-r"
(if isCustom then cfg.provider.url else providers."${cfg.provider.kind}".url)
];
in
{
meta.maintainers = with lib.maintainers; [ peterhoeg ];
###### interface
options.services.https-dns-proxy = {
enable = mkEnableOption "https-dns-proxy daemon";
address = mkOption {
description = "The address on which to listen";
type = types.str;
default = "127.0.0.1";
};
port = mkOption {
description = "The port on which to listen";
type = types.port;
default = 5053;
};
provider = {
kind = mkOption {
description = ''
The upstream provider to use or custom in case you do not trust any of
the predefined providers or just want to use your own.
The default is ${defaultProvider} and there are privacy and security trade-offs
when using any upstream provider. Please consider that before using any
of them.
If you pick a custom provider, you will need to provide the bootstrap
IP addresses as well as the resolver https URL.
'';
type = types.enum ((builtins.attrNames providers) ++ [ "custom" ]);
default = defaultProvider;
};
ips = mkOption {
description = "The custom provider IPs";
type = types.listOf types.str;
};
url = mkOption {
description = "The custom provider URL";
type = types.str;
};
};
preferIPv4 = mkOption {
description = ''
https_dns_proxy will by default use IPv6 and fail if it is not available.
To play it safe, we choose IPv4.
'';
type = types.bool;
default = true;
};
extraArgs = mkOption {
description = "Additional arguments to pass to the process.";
type = types.listOf types.str;
default = [ "-v" ];
};
};
###### implementation
config = lib.mkIf cfg.enable {
systemd.services.https-dns-proxy = {
description = "DNS to DNS over HTTPS (DoH) proxy";
after = [ "network.target" ];
wantedBy = [ "multi-user.target" ];
serviceConfig = rec {
Type = "exec";
DynamicUser = true;
ExecStart = lib.concatStringsSep " " (
[
"${pkgs.https-dns-proxy}/bin/https_dns_proxy"
"-a ${toString cfg.address}"
"-p ${toString cfg.port}"
"-l -"
providerCfg
]
++ lib.optional cfg.preferIPv4 "-4"
++ cfg.extraArgs
);
Restart = "on-failure";
};
};
};
}

@ -5,8 +5,8 @@ let
inherit (lib)
mkDefault mkEnableOption mkIf mkOption types
mkRemovedOptionModule
concatStringsSep optional;
mkRemovedOptionModule literalExpression
escapeShellArg concatStringsSep optional optionalString;
in
{
@ -17,10 +17,26 @@ in
type = types.ints.between 1 100;
default = 10;
description = ''
Minimum of availabe memory (in percent).
If the free memory falls below this threshold and the analog is true for
<option>services.earlyoom.freeSwapThreshold</option>
the killing begins.
Minimum available memory (in percent).
If the available memory falls below this threshold (and the analog is true for
<option>freeSwapThreshold</option>) the killing begins.
SIGTERM is sent first to the process that uses the most memory; then, if the available
memory falls below <option>freeMemKillThreshold</option> (and the analog is true for
<option>freeSwapKillThreshold</option>), SIGKILL is sent.
See <link xlink:href="https://github.com/rfjakob/earlyoom#command-line-options">README</link> for details.
'';
};
freeMemKillThreshold = mkOption {
type = types.nullOr (types.ints.between 1 100);
default = null;
description = ''
Minimum available memory (in percent) before sending SIGKILL.
If unset, this defaults to half of <option>freeMemThreshold</option>.
See the description of <xref linkend="opt-services.earlyoom.freeMemThreshold"/>.
'';
};
@ -28,19 +44,20 @@ in
type = types.ints.between 1 100;
default = 10;
description = ''
Minimum of availabe swap space (in percent).
If the available swap space falls below this threshold and the analog
is true for <option>services.earlyoom.freeMemThreshold</option>
the killing begins.
Minimum free swap space (in percent) before sending SIGTERM.
See the description of <xref linkend="opt-services.earlyoom.freeMemThreshold"/>.
'';
};
# TODO: remove or warn after 1.7 (https://github.com/rfjakob/earlyoom/commit/7ebc4554)
ignoreOOMScoreAdjust = mkOption {
type = types.bool;
default = false;
freeSwapKillThreshold = mkOption {
type = types.nullOr (types.ints.between 1 100);
default = null;
description = ''
Ignore oom_score_adjust values of processes.
Minimum free swap space (in percent) before sending SIGKILL.
If unset, this defaults to half of <option>freeSwapThreshold</option>.
See the description of <xref linkend="opt-services.earlyoom.freeMemThreshold"/>.
'';
};
@ -63,12 +80,43 @@ in
local user to DoS your session by spamming notifications.
To actually see the notifications in your GUI session, you need to have
<literal>systembus-notify</literal> running as your user which this
option handles.
<literal>systembus-notify</literal> running as your user, which this
option handles by enabling <option>services.systembus-notify</option>.
See <link xlink:href="https://github.com/rfjakob/earlyoom#notifications">README</link> for details.
'';
};
killHook = mkOption {
type = types.nullOr types.path;
default = null;
example = literalExpression ''
pkgs.writeShellScript "earlyoom-kill-hook" '''
echo "Process $EARLYOOM_NAME ($EARLYOOM_PID) was killed" >> /path/to/log
'''
'';
description = ''
An absolute path to an executable to be run for each process killed.
Some environment variables are available, see
<link xlink:href="https://github.com/rfjakob/earlyoom#notifications">README</link> and
<link xlink:href="https://github.com/rfjakob/earlyoom/blob/master/MANPAGE.md#-n-pathtoscript">the man page</link>
for details.
'';
};
reportInterval = mkOption {
type = types.int;
default = 3600;
example = 0;
description = "Interval (in seconds) at which a memory report is printed (set to 0 to disable).";
};
extraArgs = mkOption {
type = types.listOf types.str;
default = [];
example = [ "-g" "--prefer '(^|/)(java|chromium)$'" ];
description = "Extra command-line arguments to be passed to earlyoom.";
};
};
imports = [
@ -76,7 +124,11 @@ in
This option is deprecated and ignored by earlyoom since 1.2.
'')
(mkRemovedOptionModule [ "services" "earlyoom" "notificationsCommand" ] ''
This option is deprecated and ignored by earlyoom since 1.6.
This option was removed in earlyoom 1.6, but was reimplemented in 1.7
and is available as the new option `services.earlyoom.killHook`.
'')
(mkRemovedOptionModule [ "services" "earlyoom" "ignoreOOMScoreAdjust" ] ''
This option is deprecated and ignored by earlyoom since 1.7.
'')
];
@ -91,12 +143,16 @@ in
StandardError = "journal";
ExecStart = concatStringsSep " " ([
"${pkgs.earlyoom}/bin/earlyoom"
"-m ${toString cfg.freeMemThreshold}"
"-s ${toString cfg.freeSwapThreshold}"
("-m ${toString cfg.freeMemThreshold}"
+ optionalString (cfg.freeMemKillThreshold != null) ",${toString cfg.freeMemKillThreshold}")
("-s ${toString cfg.freeSwapThreshold}"
+ optionalString (cfg.freeSwapKillThreshold != null) ",${toString cfg.freeSwapKillThreshold}")
"-r ${toString cfg.reportInterval}"
]
++ optional cfg.ignoreOOMScoreAdjust "-i"
++ optional cfg.enableDebugInfo "-d"
++ optional cfg.enableNotifications "-n"
++ optional (cfg.killHook != null) "-N ${escapeShellArg cfg.killHook}"
++ cfg.extraArgs
);
};
};

@ -519,7 +519,7 @@ in
with plasma5; with kdeApplications; with kdeFrameworks;
[
# Basic packages without which Plasma Mobile fails to work properly.
plasma-phone-components
plasma-mobile
plasma-nano
pkgs.maliit-framework
pkgs.maliit-keyboard
@ -573,7 +573,7 @@ in
};
};
services.xserver.displayManager.sessionPackages = [ pkgs.libsForQt5.plasma5.plasma-phone-components ];
services.xserver.displayManager.sessionPackages = [ pkgs.libsForQt5.plasma5.plasma-mobile ];
})
];
}

@ -535,6 +535,7 @@ let
createGreDevice = n: v: nameValuePair "${n}-netdev"
(let
deps = deviceDependency v.dev;
ttlarg = if lib.hasPrefix "ip6" v.type then "hoplimit" else "ttl";
in
{ description = "GRE Tunnel Interface ${n}";
wantedBy = [ "network-setup.service" (subsystemDevice n) ];
@ -551,6 +552,7 @@ let
ip link add name "${n}" type ${v.type} \
${optionalString (v.remote != null) "remote \"${v.remote}\""} \
${optionalString (v.local != null) "local \"${v.local}\""} \
${optionalString (v.ttl != null) "${ttlarg} ${toString v.ttl}"} \
${optionalString (v.dev != null) "dev \"${v.dev}\""}
ip link set "${n}" up
'';

@ -318,6 +318,8 @@ in
Remote = gre.remote;
}) // (optionalAttrs (gre.local != null) {
Local = gre.local;
}) // (optionalAttrs (gre.ttl != null) {
TTL = gre.ttl;
});
};
networks = mkIf (gre.dev != null) {

@ -1020,12 +1020,14 @@ in
local = "10.0.0.22";
dev = "enp4s0f0";
type = "tap";
ttl = 255;
};
gre6Tunnel = {
remote = "fd7a:5634::1";
local = "fd7a:5634::2";
dev = "enp4s0f0";
type = "tun6";
ttl = 255;
};
}
'';
@ -1063,6 +1065,15 @@ in
'';
};
ttl = mkOption {
type = types.nullOr types.int;
default = null;
example = 255;
description = ''
The time-to-live/hoplimit of the connection to the remote tunnel endpoint.
'';
};
type = mkOption {
type = with types; enum [ "tun" "tap" "tun6" "tap6" ];
default = "tap";

@ -796,7 +796,7 @@ in
# allow `system.build.toplevel' to be included. (If we had a direct
# reference to ${regInfo} here, then we would get a cyclic
# dependency.)
boot.postBootCommands =
boot.postBootCommands = lib.mkIf config.nix.enable
''
if [[ "$(cat /proc/cmdline)" =~ regInfo=([^ ]*) ]]; then
${config.nix.package.out}/bin/nix-store --load-db < ''${BASH_REMATCH[1]}

@ -132,6 +132,7 @@ in
domination = handleTest ./domination.nix {};
dovecot = handleTest ./dovecot.nix {};
drbd = handleTest ./drbd.nix {};
earlyoom = handleTestOn ["x86_64-linux"] ./earlyoom.nix {};
ec2-config = (handleTestOn ["x86_64-linux"] ./ec2.nix {}).boot-ec2-config or {};
ec2-nixops = (handleTestOn ["x86_64-linux"] ./ec2.nix {}).boot-ec2-nixops or {};
ecryptfs = handleTest ./ecryptfs.nix {};
@ -308,6 +309,7 @@ in
molly-brown = handleTest ./molly-brown.nix {};
mongodb = handleTest ./mongodb.nix {};
moodle = handleTest ./moodle.nix {};
moonraker = handleTest ./moonraker.nix {};
morty = handleTest ./morty.nix {};
mosquitto = handleTest ./mosquitto.nix {};
moosefs = handleTest ./moosefs.nix {};

@ -38,7 +38,6 @@ let
} // extraConfig);
in
makeTest {
inherit iso;
name = "boot-" + name;
nodes = { };
testScript =

@ -7,7 +7,7 @@ import ./make-test-python.nix ({ pkgs, ... }: {
nodes = {
webserver = { pkgs, lib, ... }: {
services.caddy.enable = true;
services.caddy.config = ''
services.caddy.extraConfig = ''
http://localhost {
encode gzip
@ -22,7 +22,7 @@ import ./make-test-python.nix ({ pkgs, ... }: {
'';
specialisation.etag.configuration = {
services.caddy.config = lib.mkForce ''
services.caddy.extraConfig = lib.mkForce ''
http://localhost {
encode gzip
@ -38,7 +38,7 @@ import ./make-test-python.nix ({ pkgs, ... }: {
};
specialisation.config-reload.configuration = {
services.caddy.config = ''
services.caddy.extraConfig = ''
http://localhost:8080 {
}
'';

@ -48,7 +48,7 @@ let
sudo
ceph
xfsprogs
netcat-openbsd
libressl.nc
];
boot.kernelModules = [ "xfs" ];

@ -15,26 +15,9 @@
with import ../lib/testing-python.nix { inherit system pkgs; };
with pkgs.lib;
mapAttrs (channel: chromiumPkg: makeTest rec {
name = "chromium-${channel}";
meta = {
maintainers = with maintainers; [ aszlig primeos ];
# https://github.com/NixOS/hydra/issues/591#issuecomment-435125621
inherit (chromiumPkg.meta) timeout;
};
enableOCR = true;
let
user = "alice";
machine.imports = [ ./common/user-account.nix ./common/x11.nix ];
machine.virtualisation.memorySize = 2047;
machine.test-support.displayManager.auto.user = user;
machine.environment = {
systemPackages = [ chromiumPkg ];
variables."XAUTHORITY" = "/home/alice/.Xauthority";
};
startupHTML = pkgs.writeText "chromium-startup.html" ''
<!DOCTYPE html>
<html>
@ -50,6 +33,25 @@ mapAttrs (channel: chromiumPkg: makeTest rec {
</body>
</html>
'';
in
mapAttrs (channel: chromiumPkg: makeTest {
name = "chromium-${channel}";
meta = {
maintainers = with maintainers; [ aszlig primeos ];
# https://github.com/NixOS/hydra/issues/591#issuecomment-435125621
inherit (chromiumPkg.meta) timeout;
};
enableOCR = true;
machine.imports = [ ./common/user-account.nix ./common/x11.nix ];
machine.virtualisation.memorySize = 2047;
machine.test-support.displayManager.auto.user = user;
machine.environment = {
systemPackages = [ chromiumPkg ];
variables."XAUTHORITY" = "/home/alice/.Xauthority";
};
testScript = let
xdo = name: text: let

@ -1,7 +1,7 @@
# This test runs CRI-O and verifies via critest
import ./make-test-python.nix ({ pkgs, ... }: {
name = "cri-o";
maintainers = with pkgs.lib.maintainers; teams.podman.members;
meta.maintainers = with pkgs.lib.maintainers; teams.podman.members;
nodes = {
crio = {

@ -0,0 +1,16 @@
import ./make-test-python.nix ({ lib, ... }: {
name = "earlyoom";
meta = {
maintainers = with lib.maintainers; [ ncfavier ];
};
machine = {
services.earlyoom = {
enable = true;
};
};
testScript = ''
machine.wait_for_unit("earlyoom.service")
'';
})

@ -20,7 +20,7 @@ import ./make-test-python.nix (
nodes = {
server =
{ ... }:
{ config, ... }:
{
networking.firewall.allowedTCPPorts = [ 80 ];

@ -21,9 +21,9 @@ import ./make-test-python.nix ({ pkgs, ... }: {
forceSSL = true;
};
security.acme.email = "me@example.org";
security.acme.acceptTerms = true;
security.acme.server = "https://example.com"; # self-signed only
security.acme.defaults.email = "me@example.org";
security.acme.defaults.server = "https://example.com"; # self-signed only
};
};

@ -1,13 +1,13 @@
# Miscellaneous small tests that don't warrant their own VM run.
import ./make-test-python.nix ({ pkgs, ...} : rec {
import ./make-test-python.nix ({ pkgs, ...} : let
foo = pkgs.writeText "foo" "Hello World";
in {
name = "misc";
meta = with pkgs.lib.maintainers; {
maintainers = [ eelco ];
};
foo = pkgs.writeText "foo" "Hello World";
machine =
{ lib, ... }:
with lib;

@ -0,0 +1,45 @@
import ./make-test-python.nix ({ pkgs, ...} : {
name = "moonraker";
meta = with pkgs.lib.maintainers; {
maintainers = [ zhaofengli ];
};
nodes = {
printer = { config, pkgs, ... }: {
security.polkit.enable = true;
services.moonraker = {
enable = true;
allowSystemControl = true;
settings = {
authorization = {
trusted_clients = [ "127.0.0.0/8" "::1/128" ];
};
};
};
services.klipper = {
enable = true;
user = "moonraker";
group = "moonraker";
# No mcu configured so won't even enter `ready` state
settings = {};
};
};
};
testScript = ''
printer.start()
printer.wait_for_unit("klipper.service")
printer.wait_for_unit("moonraker.service")
printer.wait_until_succeeds("curl http://localhost:7125/printer/info | grep -v 'Not Found' >&2", timeout=30)
with subtest("Check that we can perform system-level operations"):
printer.succeed("curl -X POST http://localhost:7125/machine/services/stop?service=klipper | grep ok >&2")
printer.wait_until_succeeds("systemctl --no-pager show klipper.service | grep ActiveState=inactive", timeout=10)
'';
})

@ -514,12 +514,14 @@ let
local = "192.168.2.1";
remote = "192.168.2.2";
dev = "eth2";
ttl = 225;
type = "tap";
};
gre6Tunnel = {
local = "fd00:1234:5678:4::1";
remote = "fd00:1234:5678:4::2";
dev = "eth3";
ttl = 255;
type = "tun6";
};
};
@ -548,12 +550,14 @@ let
local = "192.168.2.2";
remote = "192.168.2.1";
dev = "eth1";
ttl = 225;
type = "tap";
};
gre6Tunnel = {
local = "fd00:1234:5678:4::2";
remote = "fd00:1234:5678:4::1";
dev = "eth3";
ttl = 255;
type = "tun6";
};
};
@ -573,6 +577,7 @@ let
];
testScript = { ... }:
''
import json
start_all()
with subtest("Wait for networking to be configured"):
@ -591,6 +596,13 @@ let
client1.wait_until_succeeds("ping -c 1 fc00::2")
client2.wait_until_succeeds("ping -c 1 fc00::1")
with subtest("Test GRE tunnel TTL"):
links = json.loads(client1.succeed("ip -details -json link show greTunnel"))
assert links[0]['linkinfo']['info_data']['ttl'] == 225, "ttl not set for greTunnel"
links = json.loads(client2.succeed("ip -details -json link show gre6Tunnel"))
assert links[0]['linkinfo']['info_data']['ttl'] == 255, "ttl not set for gre6Tunnel"
'';
};
vlan = let

@ -14,12 +14,6 @@ import ./make-test-python.nix ({ pkgs, ... }:
};
};
users.testuser = {
uid = 1000;
group = "testgroup";
};
groups.testgroup.gid = 1000;
testScript = ''
machine.wait_for_unit("rstudio-server.service")
machine.succeed("curl -f -vvv -s http://127.0.0.1:8787")

@ -42,8 +42,8 @@ import ./make-test-python.nix ({ pkgs, ... }:
caclient =
{ config, pkgs, ... }: {
security.acme.server = "https://caserver:8443/acme/acme/directory";
security.acme.email = "root@example.org";
security.acme.defaults.server = "https://caserver:8443/acme/acme/directory";
security.acme.defaults.email = "root@example.org";
security.acme.acceptTerms = true;
security.pki.certificateFiles = [ "${test-certificates}/root_ca.crt" ];

@ -1,24 +1,19 @@
import ./make-test-python.nix ({ lib, ... }: with lib;
rec {
{
name = "tor";
meta.maintainers = with maintainers; [ joachifm ];
common =
{ ... }:
{ boot.kernelParams = [ "audit=0" "apparmor=0" "quiet" ];
networking.firewall.enable = false;
networking.useDHCP = false;
};
nodes.client = { pkgs, ... }: {
boot.kernelParams = [ "audit=0" "apparmor=0" "quiet" ];
networking.firewall.enable = false;
networking.useDHCP = false;
nodes.client =
{ pkgs, ... }:
{ imports = [ common ];
environment.systemPackages = with pkgs; [ netcat ];
services.tor.enable = true;
services.tor.client.enable = true;
services.tor.settings.ControlPort = 9051;
};
environment.systemPackages = with pkgs; [ netcat ];
services.tor.enable = true;
services.tor.client.enable = true;
services.tor.settings.ControlPort = 9051;
};
testScript = ''
client.wait_for_unit("tor.service")

@ -4,14 +4,23 @@ import ./make-test-python.nix ({ lib, ... }: {
maintainers = [ ericson2314 ];
};
nixpkgs.overlays = [
(self: super: {
nix = throw "don't want to use this";
})
];
nodes.machine = { ... }: {
nix.enable = false;
nixpkgs.overlays = [
(self: super: {
nix = throw "don't want to use pkgs.nix";
nixVersions = lib.mapAttrs (k: throw "don't want to use pkgs.nixVersions.${k}") super.nixVersions;
# aliases, some deprecated
nix_2_3 = throw "don't want to use pkgs.nix_2_3";
nix_2_4 = throw "don't want to use pkgs.nix_2_4";
nix_2_5 = throw "don't want to use pkgs.nix_2_5";
nix_2_6 = throw "don't want to use pkgs.nix_2_6";
nixFlakes = throw "don't want to use pkgs.nixFlakes";
nixStable = throw "don't want to use pkgs.nixStable";
nixUnstable = throw "don't want to use pkgs.nixUnstable";
nixStatic = throw "don't want to use pkgs.nixStatic";
})
];
};
testScript = ''

@ -3,7 +3,6 @@
}:
let
version = "1.3.3";
airwave-src = fetchFromGitHub {
@ -38,7 +37,8 @@ let
in
multiStdenv.mkDerivation {
name = "airwave-${version}";
pname = "airwave";
inherit version;
src = airwave-src;

@ -1,12 +1,11 @@
{ lib, stdenv, fetchurl, alsa-lib, jack2, minixml, pkg-config }:
stdenv.mkDerivation rec {
name = packageName + "-" + version ;
packageName = "aj-snapshot" ;
pname = "aj-snapshot" ;
version = "0.9.9";
src = fetchurl {
url = "mirror://sourceforge/${packageName}/${name}.tar.bz2";
url = "mirror://sourceforge/aj-snapshot/aj-snapshot-${version}.tar.bz2";
sha256 = "0z8wd5yvxdmw1h1rj6km9h01xd4xmp4d86gczlix7hsc7zrf0wil";
};

@ -12,7 +12,7 @@
}:
stdenv.mkDerivation rec {
name = "ams";
pname = "ams";
version = "unstable-2019-04-27";
src = fetchgit {

@ -2,7 +2,7 @@
pulseaudio }:
bitwig-studio1.overrideAttrs (oldAttrs: rec {
name = "bitwig-studio-${version}";
pname = "bitwig-studio";
version = "2.5";
src = fetchurl {

@ -22,7 +22,7 @@
}:
stdenv.mkDerivation rec {
name = "cardinal-${version}";
pname = "cardinal";
version = "22.02";
src = fetchurl {

@ -4,11 +4,11 @@
}:
stdenv.mkDerivation rec {
name = "cmt";
pname = "cmt";
version = "1.17";
src = fetchurl {
url = "http://www.ladspa.org/download/${name}_${version}.tgz";
url = "http://www.ladspa.org/download/cmt_${version}.tgz";
sha256 = "07xd0xmwpa0j12813jpf87fr9hwzihii5l35mp8ady7xxfmxfmpb";
};

@ -112,6 +112,5 @@ stdenv.mkDerivation rec {
license = licenses.gpl2;
platforms = [ "x86_64-linux" "i686-linux" ];
maintainers = [ maintainers.abbradar ];
repositories.git = "https://github.com/Alexey-Yakovenko/deadbeef";
};
}

@ -2,6 +2,7 @@
, lib
, rustPlatform
, fetchFromGitLab
, fetchpatch
, meson
, ninja
, gettext
@ -31,6 +32,16 @@ stdenv.mkDerivation rec {
sha256 = "00vy1qkkpn76jdpybsq9qp8s6fh1ih10j73p2x43sl97m5g8944h";
};
patches = [
# Fix build with meson 0.61, can be removed on next release.
# podcasts-gtk/resources/meson.build:5:0: ERROR: Function does not take positional arguments.
# podcasts-gtk/resources/meson.build:30:0: ERROR: Function does not take positional arguments.
(fetchpatch {
url = "https://gitlab.gnome.org/World/podcasts/-/commit/6614bb62ecbec7c3b18ea7fe44beb50fe7942b27.patch";
sha256 = "3TVKFV9V6Ofdajgkdc+j+yxsU21C4JWSc6GjLExSM00=";
})
];
cargoDeps = rustPlatform.fetchCargoTarball {
inherit src;
name = "${pname}-${version}";

@ -4,7 +4,7 @@
stdenv.mkDerivation rec {
version = "0.95.0";
name = "jamin-${version}";
pname = "jamin";
src = fetchurl {
url = "mirror://sourceforge/jamin/jamin-${version}.tar.gz";

@ -1,6 +1,6 @@
{ lib, stdenv, fetchFromGitHub, faust2jaqt, faust2lv2 }:
stdenv.mkDerivation rec {
name = "faustCompressors-v${version}";
pname = "faustCompressors";
version = "1.2";
src = fetchFromGitHub {

@ -1,10 +1,13 @@
{ lib, stdenv, fetchurl, alsa-lib, libX11, libXi, libXtst, xorgproto }:
{ lib, stdenv, fetchFromGitHub, alsa-lib, libX11, libXi, libXtst, xorgproto }:
stdenv.mkDerivation rec {
name = "mid2key-r1";
pname = "mid2key";
version = "1";
src = fetchurl {
url = "http://mid2key.googlecode.com/files/${name}.tar.gz";
src = fetchFromGitHub {
owner = "dnschneid";
repo = "mid2key";
rev = "v${version}";
sha256 = "0j2vsjvdgx51nd1qmaa18mcy0yw9pwrhbv2mdwnf913bwsk4y904";
};

@ -1,8 +1,7 @@
{ stdenv, fetchurl, lib, libX11, libXext, alsa-lib, freetype, brand, type, version, homepage, url, sha256, ... }:
stdenv.mkDerivation rec {
inherit type;
baseName = "${type}-Edit";
name = "${lib.toLower baseName}-${version}";
pname = "${lib.toLower type}-edit";
inherit version;
src = fetchurl {
inherit url;
@ -15,7 +14,7 @@ stdenv.mkDerivation rec {
installPhase = ''
mkdir -p $out/bin
cp ${baseName} $out/bin
cp ${pname} $out/bin
'';
preFixup = let
# we prepare our library path in the let clause to avoid it become part of the input of mkDerivation
@ -30,7 +29,7 @@ stdenv.mkDerivation rec {
patchelf \
--set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
--set-rpath "${libPath}" \
$out/bin/${baseName}
$out/bin/${pname}
'';
meta = with lib; {

@ -6,15 +6,14 @@
python3.pkgs.buildPythonApplication rec {
pname = "mopidy-youtube";
version = "3.4";
disabled = python3.pythonOlder "3.7";
version = "3.5";
format = "setuptools";
src = fetchFromGitHub {
owner = "natumbri";
repo = pname;
rev = "v${version}";
sha256 = "0lm6nn926qkrwzvj64yracdixfrnv5zk243msjskrnlzkhgk01rk";
hash = "sha256-hlokysFFgZZYY7flghgRq6wVG824kpcLkXxk6nMhxn4=";
};
propagatedBuildInputs = with python3.pkgs; [
@ -39,8 +38,10 @@ python3.pkgs.buildPythonApplication rec {
];
disabledTestPaths = [
# Fails with an import error
# Disable tests which interact with Youtube
"tests/test_api.py"
"tests/test_backend.py"
"tests/test_youtube.py"
];
pythonImportsCheck = [

@ -32,6 +32,5 @@ stdenv.mkDerivation rec {
license = licenses.gpl2;
platforms = platforms.darwin;
maintainers = [];
repositories.git = "https://github.com/musescore/MuseScore";
};
}

@ -51,6 +51,5 @@ mkDerivation rec {
license = licenses.gpl2;
maintainers = with maintainers; [ vandenoever turion doronbehar ];
platforms = platforms.linux;
repositories.git = "https://github.com/musescore/MuseScore";
};
}

@ -10,13 +10,13 @@
}:
stdenv.mkDerivation rec {
name = "qmidiarp";
pname = "qmidiarp";
version = "0.6.5";
src = fetchgit {
url = "https://git.code.sf.net/p/qmidiarp/code";
sha256 = "1g2143gzfbihqr2zi3k2v1yn1x3mwfbb2khmcd4m4cq3hcwhhlx9";
rev = "qmidiarp-0.6.5";
rev = "qmidiarp-${version}";
};
nativeBuildInputs = [

@ -58,6 +58,5 @@ mkDerivation rec {
license = licenses.gpl2Plus;
platforms = platforms.linux;
maintainers = [ maintainers.bjornfor ];
repositories.svn = "https://svn.code.sf.net/p/qmmp-dev/code";
};
}

@ -1,7 +1,6 @@
{ lib, stdenv, fetchFromGitHub, lv2, pkg-config, libGLU, libGL, cairo, pango, libjack2 }:
let
name = "sisco.lv2-${version}";
version = "0.7.0";
robtkVersion = "80a2585253a861c81f0bfb7e4579c75f5c73af89";
@ -22,7 +21,8 @@ let
};
in
stdenv.mkDerivation rec {
inherit name;
pname = "sisco.lv2";
inherit version;
srcs = [ src robtkSrc ];
sourceRoot = src.name;

@ -1,6 +1,7 @@
{ lib
, stdenv
, fetchurl
, fetchpatch
, meson
, ninja
, pkg-config
@ -28,6 +29,15 @@ stdenv.mkDerivation rec {
sha256 = "08d5d81rz9sj3m5paw8fwbgxmhlbr7bcjdzpmzj832qvg8smydxf";
};
patches = [
# Fix build with meson 0.61
# data/meson.build:2:5: ERROR: Function does not take positional arguments.
(fetchpatch {
url = "https://gitlab.gnome.org/GNOME/sound-juicer/-/commit/9f97ca1faca396099f52264a9729aa355f8d122e.patch";
sha256 = "8JllVSQgI7KiBI5WP6QtXRiggYuD89NSJJp1hP4Dbao=";
})
];
nativeBuildInputs = [
meson
ninja

@ -45,7 +45,7 @@ let runtimeDeps = []
in
mkDerivation rec {
name = "soundkonverter";
pname = "soundkonverter";
version = "3.0.1";
src = fetchFromGitHub {
owner = "dfaust";

@ -6,7 +6,7 @@
with lib;
stdenv.mkDerivation rec {
name = "bitcoin" + (toString (optional (!withGui) "d")) + "-unlimited-" + version;
pname = "bitcoin" + optionalString (!withGui) "d" + "-unlimited";
version = "1.9.2.0";
src = fetchFromGitHub {

@ -6,7 +6,7 @@
with lib;
stdenv.mkDerivation rec {
name = "dogecoin" + (toString (optional (!withGui) "d")) + "-" + version;
pname = "dogecoin" + optionalString (!withGui) "d";
version = "1.14.5";
src = fetchFromGitHub {

@ -11,8 +11,7 @@
with lib;
mkDerivation rec {
name = "litecoin" + (toString (optional (!withGui) "d")) + "-" + version;
pname = "litecoin" + optionalString (!withGui) "d";
version = "0.18.1";
src = fetchFromGitHub {

@ -3,8 +3,8 @@
with lib;
stdenv.mkDerivation rec {
pname = "namecoin" + optionalString (!withGui) "d";
version = "nc22.0";
name = "namecoin" + toString (optional (!withGui) "d") + "-" + version;
src = fetchFromGitHub {
owner = "namecoin";

@ -38,13 +38,13 @@ let
in
stdenv.mkDerivation rec {
pname = "cudatext";
version = "1.158.2";
version = "1.159.0";
src = fetchFromGitHub {
owner = "Alexey-T";
repo = "CudaText";
rev = version;
sha256 = "sha256-YrRG+LaG39q/6Ry3cXo9XUwtvokkBl96XuQfE22QxZI=";
sha256 = "sha256-DRVJLzAdhw+ke+B2KFlkgLXgU4+Mq3LQ0PRYg52Aq/o=";
};
postPatch = ''

@ -16,8 +16,8 @@
},
"ATSynEdit": {
"owner": "Alexey-T",
"rev": "2022.03.17",
"sha256": "sha256-aJZGHodydkqfe2BJLKWUzIX6vbdiGKs4z5ZqtteM6NU="
"rev": "2022.03.23",
"sha256": "sha256-D/pQ4TSWUaL97Nau3bGi7rc8MxnvuoDcD7HDNEDwmsk="
},
"ATSynEdit_Cmp": {
"owner": "Alexey-T",
@ -26,13 +26,13 @@
},
"EControl": {
"owner": "Alexey-T",
"rev": "2022.03.17",
"sha256": "sha256-sWRKRhUYf07TIrVWRqtpsYPZu0dPm0EhSIqoDLmkG0Y="
"rev": "2022.03.23",
"sha256": "sha256-QXq75VoAnYqAhe3Fvsz1szZyBz4dHEpYJZqTSCR80v8="
},
"ATSynEdit_Ex": {
"owner": "Alexey-T",
"rev": "2022.03.17",
"sha256": "sha256-FndLHJuCOyFr0IGUL4zFRjkEvTyNF3tHUO/Wx5IaV2Y="
"rev": "2022.03.23",
"sha256": "sha256-m1rkWvRC1i1nLPIhiG6g8LGU96vTuGGqLFrSzw9A9x0="
},
"Python-for-Lazarus": {
"owner": "Alexey-T",

@ -1,17 +1,17 @@
{ lib, fetchFromGitHub, rustPlatform, ncurses }:
rustPlatform.buildRustPackage {
rustPlatform.buildRustPackage rec {
pname = "hexdino";
version = "0.1.0";
version = "0.1.1";
src = fetchFromGitHub {
owner = "Luz";
repo = "hexdino";
rev = "de5b5d7042129f57e0ab36416a06476126bce389";
sha256 = "11mz07735gxqfamjcjjmxya6swlvr1p77sgd377zjcmd6z54gwyf";
repo = pname;
rev = version;
sha256 = "1n8gizawx8h58hpyyqivp7vwy7yhn6scipl5rrbvkpnav8qpmk1r";
};
cargoSha256 = "1hpndmpk1zlfvb4r95m13yvnsbjkwgw4pb9ala2d5yzfp38225nm";
cargoSha256 = "01869b1d7gbsprcxxj7h9z16pvnzb02j2hywh97gfq5x96gnmkz3";
buildInputs = [ ncurses ];

@ -5,7 +5,7 @@
}:
{ meta
, name
, pname
, product
, productShort ? product
, src
@ -17,7 +17,7 @@ let
loname = lib.toLower productShort;
in
stdenvNoCC.mkDerivation {
inherit meta src version;
inherit pname meta src version;
desktopName = product;
installPhase = ''
runHook preInstall
@ -32,6 +32,5 @@ in
runHook postInstall
'';
nativeBuildInputs = [ undmg ];
pname = lib.concatStringsSep "-" (lib.init (lib.splitString "-" name));
sourceRoot = ".";
}

@ -24,9 +24,9 @@ let
# Sorted alphabetically
buildClion = { name, version, src, license, description, wmClass, ... }:
buildClion = { pname, version, src, license, description, wmClass, ... }:
(mkJetBrainsProduct {
inherit name version src wmClass jdk;
inherit pname version src wmClass jdk;
product = "CLion";
meta = with lib; {
homepage = "https://www.jetbrains.com/clion/";
@ -62,9 +62,9 @@ let
'';
});
buildDataGrip = { name, version, src, license, description, wmClass, ... }:
buildDataGrip = { pname, version, src, license, description, wmClass, ... }:
(mkJetBrainsProduct {
inherit name version src wmClass jdk;
inherit pname version src wmClass jdk;
product = "DataGrip";
meta = with lib; {
homepage = "https://www.jetbrains.com/datagrip/";
@ -78,9 +78,9 @@ let
};
});
buildGoland = { name, version, src, license, description, wmClass, ... }:
buildGoland = { pname, version, src, license, description, wmClass, ... }:
(mkJetBrainsProduct {
inherit name version src wmClass jdk;
inherit pname version src wmClass jdk;
product = "Goland";
meta = with lib; {
homepage = "https://www.jetbrains.com/go/";
@ -106,9 +106,9 @@ let
'';
});
buildIdea = { name, version, src, license, description, wmClass, product, ... }:
buildIdea = { pname, version, src, license, description, wmClass, product, ... }:
(mkJetBrainsProduct {
inherit name version src wmClass jdk product;
inherit pname version src wmClass jdk product;
productShort = "IDEA";
extraLdPath = [ zlib ];
extraWrapperArgs = [
@ -129,9 +129,9 @@ let
};
});
buildMps = { name, version, src, license, description, wmClass, product, ... }:
buildMps = { pname, version, src, license, description, wmClass, product, ... }:
(mkJetBrainsProduct rec {
inherit name version src wmClass jdk product;
inherit pname version src wmClass jdk product;
productShort = "MPS";
meta = with lib; {
homepage = "https://www.jetbrains.com/mps/";
@ -146,9 +146,9 @@ let
};
});
buildPhpStorm = { name, version, src, license, description, wmClass, ... }:
buildPhpStorm = { pname, version, src, license, description, wmClass, ... }:
(mkJetBrainsProduct {
inherit name version src wmClass jdk;
inherit pname version src wmClass jdk;
product = "PhpStorm";
meta = with lib; {
homepage = "https://www.jetbrains.com/phpstorm/";
@ -162,9 +162,9 @@ let
};
});
buildPycharm = { name, version, src, license, description, wmClass, product, ... }:
buildPycharm = { pname, version, src, license, description, wmClass, product, ... }:
(mkJetBrainsProduct {
inherit name version src wmClass jdk product;
inherit pname version src wmClass jdk product;
productShort = "PyCharm";
meta = with lib; {
homepage = "https://www.jetbrains.com/pycharm/";
@ -186,9 +186,9 @@ let
};
});
buildRider = { name, version, src, license, description, wmClass, ... }:
buildRider = { pname, version, src, license, description, wmClass, ... }:
(mkJetBrainsProduct {
inherit name version src wmClass jdk;
inherit pname version src wmClass jdk;
product = "Rider";
meta = with lib; {
homepage = "https://www.jetbrains.com/rider/";
@ -211,9 +211,9 @@ let
'');
});
buildRubyMine = { name, version, src, license, description, wmClass, ... }:
buildRubyMine = { pname, version, src, license, description, wmClass, ... }:
(mkJetBrainsProduct {
inherit name version src wmClass jdk;
inherit pname version src wmClass jdk;
product = "RubyMine";
meta = with lib; {
homepage = "https://www.jetbrains.com/ruby/";
@ -223,9 +223,9 @@ let
};
});
buildWebStorm = { name, version, src, license, description, wmClass, ... }:
buildWebStorm = { pname, version, src, license, description, wmClass, ... }:
(mkJetBrainsProduct {
inherit name version src wmClass jdk;
inherit pname version src wmClass jdk;
product = "WebStorm";
meta = with lib; {
homepage = "https://www.jetbrains.com/webstorm/";
@ -251,7 +251,7 @@ in
# Sorted alphabetically
clion = buildClion rec {
name = "clion-${version}";
pname = "clion";
version = products.clion.version;
description = "C/C++ IDE. New. Intelligent. Cross-platform";
license = lib.licenses.unfree;
@ -264,7 +264,7 @@ in
};
datagrip = buildDataGrip rec {
name = "datagrip-${version}";
pname = "datagrip";
version = products.datagrip.version;
description = "Your Swiss Army Knife for Databases and SQL";
license = lib.licenses.unfree;
@ -277,7 +277,7 @@ in
};
goland = buildGoland rec {
name = "goland-${version}";
pname = "goland";
version = products.goland.version;
description = "Up and Coming Go IDE";
license = lib.licenses.unfree;
@ -290,7 +290,7 @@ in
};
idea-community = buildIdea rec {
name = "idea-community-${version}";
pname = "idea-community";
product = "IntelliJ IDEA CE";
version = products.idea-community.version;
description = "Integrated Development Environment (IDE) by Jetbrains, community edition";
@ -304,7 +304,7 @@ in
};
idea-ultimate = buildIdea rec {
name = "idea-ultimate-${version}";
pname = "idea-ultimate";
product = "IntelliJ IDEA";
version = products.idea-ultimate.version;
description = "Integrated Development Environment (IDE) by Jetbrains, requires paid license";
@ -318,7 +318,7 @@ in
};
mps = buildMps rec {
name = "mps-${version}";
pname = "mps";
product = "MPS ${products.mps.version-major-minor}";
version = products.mps.version;
description = "Create your own domain-specific language";
@ -332,7 +332,7 @@ in
};
phpstorm = buildPhpStorm rec {
name = "phpstorm-${version}";
pname = "phpstorm";
version = products.phpstorm.version;
description = "Professional IDE for Web and PHP developers";
license = lib.licenses.unfree;
@ -345,7 +345,7 @@ in
};
pycharm-community = buildPycharm rec {
name = "pycharm-community-${version}";
pname = "pycharm-community";
product = "PyCharm CE";
version = products.pycharm-community.version;
description = "PyCharm Community Edition";
@ -359,7 +359,7 @@ in
};
pycharm-professional = buildPycharm rec {
name = "pycharm-professional-${version}";
pname = "pycharm-professional";
product = "PyCharm";
version = products.pycharm-professional.version;
description = "PyCharm Professional Edition";
@ -373,7 +373,7 @@ in
};
rider = buildRider rec {
name = "rider-${version}";
pname = "rider";
version = products.rider.version;
description = "A cross-platform .NET IDE based on the IntelliJ platform and ReSharper";
license = lib.licenses.unfree;
@ -386,7 +386,7 @@ in
};
ruby-mine = buildRubyMine rec {
name = "ruby-mine-${version}";
pname = "ruby-mine";
version = products.ruby-mine.version;
description = "The Most Intelligent Ruby and Rails IDE";
license = lib.licenses.unfree;
@ -399,7 +399,7 @@ in
};
webstorm = buildWebStorm rec {
name = "webstorm-${version}";
pname = "webstorm";
version = products.webstorm.version;
description = "Professional IDE for Web and JavaScript development";
license = lib.licenses.unfree;

@ -3,30 +3,29 @@
, vmopts ? null
}:
{ name, product, productShort ? product, version, src, wmClass, jdk, meta, extraLdPath ? [], extraWrapperArgs ? [] }@args:
{ pname, product, productShort ? product, version, src, wmClass, jdk, meta, extraLdPath ? [], extraWrapperArgs ? [] }@args:
with lib;
let loName = toLower productShort;
hiName = toUpper productShort;
mainProgram = concatStringsSep "-" (init (splitString "-" name));
vmoptsName = loName
+ lib.optionalString stdenv.hostPlatform.is64bit "64"
+ ".vmoptions";
in
with stdenv; lib.makeOverridable mkDerivation (rec {
inherit name src;
meta = args.meta // { inherit mainProgram; };
inherit pname version src;
meta = args.meta // { mainProgram = pname; };
desktopItem = makeDesktopItem {
name = mainProgram;
exec = mainProgram;
name = pname;
exec = pname;
comment = lib.replaceChars ["\n"] [" "] meta.longDescription;
desktopName = product;
genericName = meta.description;
categories = [ "Development" ];
icon = mainProgram;
icon = pname;
startupWMClass = wmClass;
};
@ -62,16 +61,16 @@ with stdenv; lib.makeOverridable mkDerivation (rec {
installPhase = ''
runHook preInstall
mkdir -p $out/{bin,$name,share/pixmaps,libexec/${name}}
cp -a . $out/$name
ln -s $out/$name/bin/${loName}.png $out/share/pixmaps/${mainProgram}.png
mv bin/fsnotifier* $out/libexec/${name}/.
mkdir -p $out/{bin,$pname,share/pixmaps,libexec/${pname}}
cp -a . $out/$pname
ln -s $out/$pname/bin/${loName}.png $out/share/pixmaps/${pname}.png
mv bin/fsnotifier* $out/libexec/${pname}/.
jdk=${jdk.home}
item=${desktopItem}
makeWrapper "$out/$name/bin/${loName}.sh" "$out/bin/${mainProgram}" \
--prefix PATH : "$out/libexec/${name}:${lib.makeBinPath [ jdk coreutils gnugrep which git ]}" \
makeWrapper "$out/$pname/bin/${loName}.sh" "$out/bin/${pname}" \
--prefix PATH : "$out/libexec/${pname}:${lib.makeBinPath [ jdk coreutils gnugrep which git ]}" \
--prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath ([
# Some internals want libstdc++.so.6
stdenv.cc.cc.lib libsecret e2fsprogs

@ -32,7 +32,8 @@ rec {
'';
sizedLogo = size: stdenv.mkDerivation {
name = ''octave-logo-${octave.version}-${size}x${size}.png'';
pname = "octave-logo-${size}x${size}.png";
inherit (octave) version;
src = octave.src;

@ -1,4 +1,4 @@
{ lib, buildGoModule, fetchFromGitHub, installShellFiles }:
{ lib, buildGoModule, fetchFromGitHub, installShellFiles, callPackage }:
buildGoModule rec {
pname = "micro";
@ -24,6 +24,8 @@ buildGoModule rec {
install -Dt $out/share/applications assets/packaging/micro.desktop
'';
passthru.tests.expect = callPackage ./test-with-expect.nix {};
meta = with lib; {
homepage = "https://micro-editor.github.io";
description = "Modern and intuitive terminal-based text editor";

@ -0,0 +1,30 @@
{ micro, expect, runCommand, writeScript, runtimeShell }:
let expect-script = writeScript "expect-script" ''
#!${expect}/bin/expect -f
spawn micro file.txt
expect "file.txt"
send "Hello world!"
expect "Hello world!"
# Send ctrl-q (exit)
send "\021"
expect "Save changes to file.txt before closing?"
send "y"
expect eof
''; in
runCommand "micro-test-expect"
{
nativeBuildInputs = [ micro expect ];
passthru = { inherit expect-script; };
} ''
# Micro really wants a writable $HOME for its config directory.
export HOME=$(pwd)
expect -f ${expect-script}
grep "Hello world!" file.txt
touch $out
''

@ -2,7 +2,7 @@
qmake, qtbase, qtxmlpatterns, qtsvg, qtscxml, qtquick1, libGLU }:
stdenv.mkDerivation rec {
name = "qxmledit-${version}" ;
pname = "qxmledit" ;
version = "0.9.15" ;
src = fetchFromGitHub ( lib.importJSON ./qxmledit.json ) ;
nativeBuildInputs = [ qmake ] ;

@ -2,13 +2,13 @@
stdenv.mkDerivation rec {
pname = "fceux";
version = "2.6.3";
version = "2.6.4";
src = fetchFromGitHub {
owner = "TASEmulators";
repo = pname;
rev = "${pname}-${version}";
sha256 = "sha256-jNR9AB8s2S9ehYsompkV2GOLsaXIQzldeQ1WRCxdDG0=";
sha256 = "sha256-Q6r/iBlmi0z40+U6OLZCahS0io4IBBGZMP1mJH7szRM=";
};
nativeBuildInputs = [ cmake pkg-config wrapQtAppsHook ];

@ -17,13 +17,13 @@
buildDotnetModule rec {
pname = "ryujinx";
version = "1.1.76"; # Based off of the official github actions builds: https://github.com/Ryujinx/Ryujinx/actions/workflows/release.yml
version = "1.1.77"; # Based off of the official github actions builds: https://github.com/Ryujinx/Ryujinx/actions/workflows/release.yml
src = fetchFromGitHub {
owner = "Ryujinx";
repo = "Ryujinx";
rev = "e2ffa5a125fcbe8a25c73d8e04c08c08ef378860";
sha256 = "1rmiyjqwlsbzh9q7d12n72ka9adaby2rfcbn75sf47p5857yi3p9";
rev = "df70442c46e7ee133b1fb79dc23ddd134e618085";
sha256 = "1m9msp7kxsj7251l2yjcfzrb4k1lisk9sip7acm22pxmi1a7gw73";
};
dotnet-sdk = dotnetCorePackages.sdk_6_0;

@ -1,5 +1,5 @@
{ stdenv, lib, pkgArches, callPackage, makeSetupHook,
name, version, src, mingwGccs, monos, geckos, platforms,
pname, version, src, mingwGccs, monos, geckos, platforms,
bison, flex, fontforge, makeWrapper, pkg-config,
autoconf, hexdump, perl, nixosTests,
supportFlags,
@ -13,7 +13,7 @@ with import ./util.nix { inherit lib; };
let
patches' = patches;
prevName = name;
prevName = pname;
prevPlatforms = platforms;
prevConfigFlags = configureFlags;
setupHookDarwin = makeSetupHook {
@ -42,9 +42,9 @@ stdenv.mkDerivation ((lib.optionalAttrs (buildScript != null) {
make loader/wine64-preloader NIX_LDFLAGS="" NIX_LDFLAGS_${stdenv.cc.suffixSalt}=""
'';
}) // rec {
inherit src;
inherit version src;
name = if supportFlags.waylandSupport then "${prevName}-wayland" else prevName;
pname = prevName + lib.optionalString supportFlags.waylandSupport "wayland";
# Fixes "Compiler cannot create executables" building wineWow with mingwSupport
strictDeps = true;

@ -9,7 +9,7 @@ let
vkd3d_i686 = pkgsi686Linux.callPackage ./vkd3d.nix { inherit moltenvk; };
in with src; {
wine32 = pkgsi686Linux.callPackage ./base.nix {
name = "wine-${version}";
pname = "wine";
inherit src version supportFlags patches moltenvk;
pkgArches = [ pkgsi686Linux ];
vkd3dArches = lib.optionals supportFlags.vkd3dSupport [ vkd3d_i686 ];
@ -19,7 +19,7 @@ in with src; {
platforms = [ "i686-linux" "x86_64-linux" ];
};
wine64 = callPackage ./base.nix {
name = "wine64-${version}";
pname = "wine64";
inherit src version supportFlags patches moltenvk;
pkgArches = [ pkgs ];
vkd3dArches = lib.optionals supportFlags.vkd3dSupport [ vkd3d ];
@ -30,7 +30,7 @@ in with src; {
platforms = [ "x86_64-linux" "x86_64-darwin" ];
};
wineWow = callPackage ./base.nix {
name = "wine-wow-${version}";
pname = "wine-wow";
inherit src version supportFlags patches moltenvk;
stdenv = stdenv_32bit;
pkgArches = [ pkgs pkgsi686Linux ];

@ -5,7 +5,7 @@
}:
stdenv.mkDerivation rec {
name = "grass";
pname = "grass";
version = "7.8.6";
src = with lib; fetchFromGitHub {

@ -11,11 +11,11 @@
stdenv.mkDerivation rec {
pname = "drawio";
version = "16.5.1";
version = "17.2.1";
src = fetchurl {
url = "https://github.com/jgraph/drawio-desktop/releases/download/v${version}/drawio-x86_64-${version}.rpm";
sha256 = "a8ebf2560820d2d05677b9b16fc863f555dde8235b3e34acd7916eee3544eaa9";
sha256 = "28019774a18f6e74c0d126346ae3551b5eb9c73aae13fe87f6d49120c183697a";
};
nativeBuildInputs = [

@ -23,7 +23,6 @@ stdenv.mkDerivation rec {
meta = with lib; {
description = "A simple and fast image viewer for X";
homepage = "http://lxde.sourceforge.net/gpicview/";
repositories.git = "git://lxde.git.sourceforge.net/gitroot/lxde/gpicview";
license = licenses.gpl2;
maintainers = with maintainers; [ lovek323 ];
platforms = platforms.unix;

@ -9,8 +9,8 @@
applytransforms = callPackage ./extensions/applytransforms { };
hexmap = stdenv.mkDerivation {
name = "hexmap";
version = "2020-06-06";
pname = "hexmap";
version = "unstable-2020-06-06";
src = fetchFromGitHub {
owner = "lifelike";

@ -4,14 +4,12 @@
}:
stdenv.mkDerivation rec {
p_name = "mtPaint";
ver_maj = "3.50";
ver_min = "01";
name = "${p_name}-${ver_maj}.${ver_min}";
pname = "mtPaint";
version = "3.50.01";
src = fetchFromGitHub {
owner = "wjaguar";
repo = p_name;
repo = "mtPaint";
rev = "a4675ff5cd9fcd57d291444cb9f332b48f11243f";
sha256 = "04wqxz8i655gz5rnz90cksy8v6m2jhcn1j8rzhqpp5xhawlmq24y";
};

@ -66,7 +66,6 @@ mkDerivation rec {
description = "Qt-based image viewer";
maintainers = with lib.maintainers; [ mindavi ];
license = licenses.gpl3Plus;
repositories.git = "https://github.com/nomacs/nomacs.git";
inherit (qtbase.meta) platforms;
};
}

@ -0,0 +1,107 @@
{ lib
, stdenv
, fetchurl
, makeWrapper
, libX11
, libXext
, libXrandr
, freetype
, fontconfig
, libXrender
, libXinerama
, autoPatchelfHook
, libglvnd
, openal
, imagemagick
, makeDesktopItem
}:
let
version = "4.0";
arch =
if stdenv.hostPlatform.system == "x86_64-linux" then
"x64"
else if stdenv.hostPlatform.system == "i686-linux" then
"x86"
else
throw "Unsupported platform ${stdenv.hostPlatform.system}";
desktopItem = makeDesktopItem {
name = "Heaven";
exec = "heaven";
genericName = "A GPU Stress test tool from the UNIGINE";
icon = "Heaven";
desktopName = "Heaven Benchmark";
};
in
stdenv.mkDerivation
{
pname = "unigine-heaven";
inherit version;
src = fetchurl {
url = "https://assets.unigine.com/d/Unigine_Heaven-${version}.run";
sha256 = "19rndwwxnb9k2nw9h004hyrmr419471s0fp25yzvvc6rkd521c0v";
};
installPhase =
''
sh $src --target $name
mkdir -p $out/lib/unigine/heaven/bin
mkdir -p $out/bin
mkdir -p $out/share/applications/
mkdir -p $out/share/icons/hicolor
install -m 0755 $name/bin/browser_${arch} $out/lib/unigine/heaven/bin
install -m 0755 $name/bin/libApp{Stereo,Surround,Wall}_${arch}.so $out/lib/unigine/heaven/bin
install -m 0755 $name/bin/libGPUMonitor_${arch}.so $out/lib/unigine/heaven/bin
install -m 0755 $name/bin/libQt{Core,Gui,Network,WebKit,Xml}Unigine_${arch}.so.4 $out/lib/unigine/heaven/bin
install -m 0755 $name/bin/libUnigine_${arch}.so $out/lib/unigine/heaven/bin
install -m 0755 $name/bin/heaven_${arch} $out/lib/unigine/heaven/bin
install -m 0755 $name/heaven $out/bin/heaven
cp -R $name/data $name/documentation $out/lib/unigine/heaven
wrapProgram $out/bin/heaven --prefix LD_LIBRARY_PATH : ${libglvnd}/lib:$out/bin:${openal}/lib --run "cd $out/lib/unigine/heaven/"
convert $out/lib/unigine/heaven/data/launcher/icon.png -resize 128x128 $out/share/icons/Heaven.png
for RES in 16 24 32 48 64 128 256
do
mkdir -p $out/share/icons/hicolor/"$RES"x"$RES"/apps
convert $out/lib/unigine/heaven/data/launcher/icon.png -resize "$RES"x"$RES" $out/share/icons/hicolor/"$RES"x"$RES"/apps/Heaven.png
done
ln -s ${desktopItem}/share/applications/* $out/share/applications
'';
nativeBuildInputs =
[
autoPatchelfHook
makeWrapper
imagemagick
];
buildInputs =
[
libX11
stdenv.cc.cc
libXext
libXrandr
freetype
fontconfig
libXrender
libXinerama
];
dontUnpack = true;
meta =
{
description = "The Unigine Heaven GPU benchmarking tool";
homepage = "https://benchmark.unigine.com/heaven";
license = lib.licenses.unfree;
maintainers = [ lib.maintainers.BarinovMaxim ];
platforms = [ "x86_64-linux" "i686-linux" ];
};
}

@ -10,9 +10,9 @@ in
stdenv.mkDerivation rec {
version = "0.4.8.2016";
name = "xournal-" + version;
pname = "xournal";
src = fetchurl {
url = "mirror://sourceforge/xournal/${name}.tar.gz";
url = "mirror://sourceforge/xournal/xournal-${version}.tar.gz";
sha256 = "09i88v3wacmx7f96dmq0l3afpyv95lh6jrx16xzm0jd1szdrhn5j";
};
@ -30,7 +30,7 @@ stdenv.mkDerivation rec {
+ lib.optionalString (!isGdkQuartzBackend) " -lX11";
desktopItem = makeDesktopItem {
name = name;
name = "xournal-${version}";
exec = "xournal";
icon = "xournal";
desktopName = "Xournal";

@ -2,11 +2,11 @@
stdenv.mkDerivation {
pname = "avrdudess";
version = "2.2.20140102";
version = "2.13";
src = fetchurl {
url = "http://blog.zakkemble.co.uk/download/avrdudess_20140102.zip";
sha256 = "18llpvjsfhypzijrvfbzmcg3g141f307mzsrg11wcdxh9syxqak6";
url = "https://github.com/ZakKemble/AVRDUDESS/releases/download/v2.13/AVRDUDESS-2.13-portable.zip";
sha256 = "0fpvc19fb14ppqfb2yg821szmhyanxcp5chfldf8yh51f64zihv9";
};
nativeBuildInputs = [ unzip ];
@ -36,7 +36,8 @@ stdenv.mkDerivation {
meta = with lib; {
description = "GUI for AVRDUDE (AVR microcontroller programmer)";
homepage = "https://github.com/zkemble/AVRDUDESS";
homepage = "https://blog.zakkemble.net/avrdudess-a-gui-for-avrdude/";
changelog = "https://github.com/ZakKemble/AVRDUDESS/blob/v${version}/Changelog.txt";
license = licenses.gpl3;
platforms = platforms.linux;
maintainers = [ maintainers.bjornfor ];

@ -1,10 +1,8 @@
{ lib, stdenv, fetchsvn, libxml2, gtk2, curl, pkg-config } :
let
stdenv.mkDerivation rec {
pname = "gosmore";
version = "31801";
in
stdenv.mkDerivation {
name = "gosmore-r${version}";
# the gosmore svn repository does not lock revision numbers of its externals
# so we explicitly disable them to avoid breaking the hash
# especially as the externals appear to be unused

@ -3,8 +3,8 @@
}:
stdenv.mkDerivation rec {
name = "lighthouse-${date}";
date = "2016-07-20";
pname = "lighthouse";
version = "unstable-2016-07-20";
src = fetchFromGitHub {
owner = "emgram769";

@ -2,7 +2,6 @@
let
version = "0.9.3-3";
name = "mucommander-${version}";
src = fetchFromGitHub {
owner = "mucommander";
@ -34,8 +33,8 @@ let
# fake build to pre-download deps into fixed-output derivation
deps = stdenv.mkDerivation {
name = "${name}-deps";
inherit src postPatch;
pname = "mucommander-deps";
inherit version src postPatch;
nativeBuildInputs = [ gradle_6 perl ];
buildPhase = ''
export GRADLE_USER_HOME=$(mktemp -d)
@ -53,7 +52,8 @@ let
};
in stdenv.mkDerivation {
inherit name src postPatch;
pname = "mucommander";
inherit version src postPatch;
nativeBuildInputs = [ gradle_6 perl makeWrapper ];
buildPhase = ''

@ -82,7 +82,6 @@ in stdenv.mkDerivation rec {
meta = with lib; {
homepage = "https://mupdf.com";
repositories.git = "git://git.ghostscript.com/mupdf.git";
description = "Lightweight PDF, XPS, and E-book viewer and toolkit written in portable C";
license = licenses.agpl3Plus;
maintainers = with maintainers; [ vrthra fpletz ];

@ -111,7 +111,6 @@ stdenv.mkDerivation rec {
meta = with lib; {
homepage = "https://mupdf.com";
repositories.git = "git://git.ghostscript.com/mupdf.git";
description = "Lightweight PDF, XPS, and E-book viewer and toolkit written in portable C";
license = licenses.agpl3Plus;
maintainers = with maintainers; [ vrthra fpletz ];

@ -49,7 +49,6 @@ stdenv.mkDerivation rec {
It uses a layered approach to connect all of the parts.
'';
homepage = "https://networkupstools.org/";
repositories.git = "https://github.com/networkupstools/nut.git";
platforms = platforms.linux;
maintainers = [ maintainers.pierron ];
license = with licenses; [ gpl1Plus gpl2Plus gpl3Plus ];

@ -49,8 +49,9 @@ let
desktopName = "Obsidian";
comment = "Knowledge base";
icon = "obsidian";
exec = "obsidian";
exec = "obsidian %u";
categories = [ "Office" ];
mimeTypes = [ "x-scheme-handler/obsidian" ];
};
inherit pname version src;

@ -34,6 +34,47 @@ let
(mkOverride "markdown" "3.1.1" "2e50876bcdd74517e7b71f3e7a76102050edec255b3983403f1a63e7c8a41e7a")
(mkOverride "markupsafe" "1.1.1" "29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b")
# black uses hash, not sha256 identifier. Newer black version requires newer click version
(
self: super: {
black = super.black.overridePythonAttrs (oldAttrs: rec {
version = "21.12b0";
src = oldAttrs.src.override {
inherit version;
hash = "sha256-d7gPaTpWni5SeVhFljTxjfmwuiYluk4MLV2lvkLm8rM=";
};
doCheck = false;
});
}
)
# tests need network
(
self: super: {
curio = super.curio.overridePythonAttrs (oldAttrs: rec {
disabledTests = [
"test_timeout"
"test_ssl_outgoing"
];
});
}
)
# tests need network
(
self: super: {
trio = super.trio.overridePythonAttrs (oldAttrs: rec {
disabledTests = [
"test_local_address_real"
];
disabledTestPaths = [
"trio/tests/test_exports.py"
"trio/tests/test_socket.py"
];
});
}
)
# Requires flask<2, cannot mkOverride because tests need to be disabled
(
self: super: {
@ -400,7 +441,7 @@ let
homepage = "https://octoprint.org/";
description = "The snappy web interface for your 3D printer";
license = licenses.agpl3Only;
maintainers = with maintainers; [ abbradar gebner WhittlesJr ];
maintainers = with maintainers; [ abbradar gebner WhittlesJr gador ];
};
};
}

@ -1,9 +1,7 @@
{ lib, python2Packages, fetchurl, xpdf }:
let
py = python2Packages;
in
py.buildPythonApplication rec {
name = "pdfdiff-${version}";
python2Packages.buildPythonApplication rec {
pname = "pdfdiff";
version = "0.92";
src = fetchurl {

@ -3,13 +3,12 @@
, webkitgtk, discount, json-glib }:
stdenv.mkDerivation rec {
name = "${product}-${version}";
product = "pdfpc";
pname = "pdfpc";
version = "4.5.0";
src = fetchFromGitHub {
repo = product;
owner = product;
repo = "pdfpc";
owner = "pdfpc";
rev = "v${version}";
sha256 = "0bmy51w6ypz927hxwp5g7wapqvzqmsi3w32rch6i3f94kg1152ck";
};

@ -1,12 +1,11 @@
{ lib, stdenv, fetchurl, qmake4Hook, unzip, qt4 }:
stdenv.mkDerivation rec {
name = "${project}-${version}";
project = "qmetro";
pname = "qmetro";
version = "0.7.1";
src = fetchurl {
url = "mirror://sourceforge/${project}/${name}.zip";
url = "mirror://sourceforge/qmetro/qmetro-${version}.zip";
sha256 = "1zdj87lzcr43gr2h05g17z31pd22n5kxdwbvx7rx656rmhv0sjq5";
};

@ -1,10 +1,8 @@
{ lib, stdenv, mkDerivation, fetchgit, zlib, libGLU, libX11, qtbase, qtwebkit, qtserialport, wrapQtAppsHook }:
let
name = "sleepyhead-${version}";
mkDerivation {
pname = "sleepyhead";
version = "1.0.0-beta-git";
in mkDerivation {
inherit name;
src = fetchgit {
url = "https://gitlab.com/sleepyhead/sleepyhead-code.git";

@ -1,30 +1,19 @@
{lib, stdenv, fetchhg}:
let
s =
rec {
baseName = "slmenu";
version = "hg-${date}";
date = "2012-02-01";
name = "${baseName}-${version}";
stdenv.mkDerivation {
pname = "slmenu";
version = "hg-2012-02-01";
src = fetchhg {
url = "https://bitbucket.org/rafaelgg/slmenu/";
rev = "7e74fa5db73e8b018da48d50dbbaf11cb5c62d13";
sha256 = "0zb7mm8344d3xmvrl62psazcabfk75pp083jqkmywdsrikgjagv6";
};
buildInputs = [
];
in
stdenv.mkDerivation {
inherit (s) name version;
inherit buildInputs;
src = fetchhg {
inherit (s) url sha256;
};
makeFlags = [ "PREFIX=$(out)" ];
meta = {
inherit (s) version;
meta = with lib; {
description = "A console dmenu-like tool";
license = lib.licenses.mit;
maintainers = [lib.maintainers.raskin];
platforms = lib.platforms.linux;
license = licenses.mit;
maintainers = with maintainers; [ raskin ];
platforms = platforms.linux;
};
}

@ -13,15 +13,15 @@
}:
python3Packages.buildPythonApplication rec {
name = "tuhi";
pname = "tuhi";
version = "0.5";
format = "other";
src = fetchFromGitHub {
owner = "tuhiproject";
repo = name;
rev = "${version}";
repo = "tuhi";
rev = version;
sha256 = "17kggm9c423vj7irxx248fjc8sxvkp9w1mgawlx1snrii817p3db";
};

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save