Merge staging-next into staging

This commit is contained in:
github-actions[bot] 2022-03-25 12:02:05 +00:00 committed by GitHub
commit 8357b101a5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
410 changed files with 3265 additions and 2065 deletions

View file

@ -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. 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` {#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. `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.

View file

@ -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. - 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 ```nix
texlive.combine { texlive.combine {

View file

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

View file

@ -282,11 +282,11 @@ rec {
# Like unifyModuleSyntax, but also imports paths and calls functions if necessary # Like unifyModuleSyntax, but also imports paths and calls functions if necessary
loadModule = args: fallbackFile: fallbackKey: m: loadModule = args: fallbackFile: fallbackKey: m:
if isFunction m || isAttrs m then 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 else if isList m then
let defs = [{ file = fallbackFile; value = m; }]; in 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}" 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 Collects all modules recursively into the form
@ -383,7 +383,7 @@ rec {
config = addFreeformType (addMeta (removeAttrs m ["_file" "key" "disabledModules" "require" "imports" "freeformType"])); 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 let
# Module arguments are resolved in a strict manner when attribute set # Module arguments are resolved in a strict manner when attribute set
# deconstruction is used. As the arguments are now defined with the # deconstruction is used. As the arguments are now defined with the

View file

@ -441,6 +441,25 @@ rec {
isFunction = f: builtins.isFunction f || isFunction = f: builtins.isFunction f ||
(f ? __functor && isFunction (f.__functor 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 /* Convert the given positive integer to a string of its hexadecimal
representation. For example: representation. For example:

View file

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

View file

@ -478,6 +478,15 @@
its reliance on python2. its reliance on python2.
</para> </para>
</listitem> </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> <listitem>
<para> <para>
The <literal>matrix-synapse</literal> service The <literal>matrix-synapse</literal> service

View file

@ -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. - 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. - 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 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 module (`services.matrix-synapse`) now need to be moved into `services.matrix-synapse.settings`. And while not all options you

View file

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

View file

@ -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 '' system.nixos-generate-config.configuration = mkDefault ''
# Edit this configuration file to define what should be installed on # Edit this configuration file to define what should be installed on

View file

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

View file

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

View file

@ -79,6 +79,19 @@ in {
for supported values. 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) warnings = optional (cfg.settings ? update_manager)
''Enabling update_manager is not supported on NixOS and will lead to non-removable warnings in some clients.''; ''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") { users.users = optionalAttrs (cfg.user == "moonraker") {
moonraker = { moonraker = {
group = cfg.group; group = cfg.group;
@ -128,11 +148,31 @@ in {
exec ${pkg}/bin/moonraker -c ${cfg.configDir}/moonraker-temp.cfg exec ${pkg}/bin/moonraker -c ${cfg.configDir}/moonraker-temp.cfg
''; '';
# Needs `ip` command
path = [ pkgs.iproute2 ];
serviceConfig = { serviceConfig = {
WorkingDirectory = cfg.stateDir; WorkingDirectory = cfg.stateDir;
Group = cfg.group; Group = cfg.group;
User = cfg.user; 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;
}
});
'';
}; };
} }

View file

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

View file

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

View file

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

View file

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

View file

@ -5,8 +5,8 @@ let
inherit (lib) inherit (lib)
mkDefault mkEnableOption mkIf mkOption types mkDefault mkEnableOption mkIf mkOption types
mkRemovedOptionModule mkRemovedOptionModule literalExpression
concatStringsSep optional; escapeShellArg concatStringsSep optional optionalString;
in in
{ {
@ -17,10 +17,26 @@ in
type = types.ints.between 1 100; type = types.ints.between 1 100;
default = 10; default = 10;
description = '' description = ''
Minimum of availabe memory (in percent). Minimum available memory (in percent).
If the free memory falls below this threshold and the analog is true for
<option>services.earlyoom.freeSwapThreshold</option> If the available memory falls below this threshold (and the analog is true for
the killing begins. <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; type = types.ints.between 1 100;
default = 10; default = 10;
description = '' description = ''
Minimum of availabe swap space (in percent). Minimum free swap space (in percent) before sending SIGTERM.
If the available swap space falls below this threshold and the analog
is true for <option>services.earlyoom.freeMemThreshold</option> See the description of <xref linkend="opt-services.earlyoom.freeMemThreshold"/>.
the killing begins.
''; '';
}; };
# TODO: remove or warn after 1.7 (https://github.com/rfjakob/earlyoom/commit/7ebc4554) freeSwapKillThreshold = mkOption {
ignoreOOMScoreAdjust = mkOption { type = types.nullOr (types.ints.between 1 100);
type = types.bool; default = null;
default = false;
description = '' 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. local user to DoS your session by spamming notifications.
To actually see the notifications in your GUI session, you need to have To actually see the notifications in your GUI session, you need to have
<literal>systembus-notify</literal> running as your user which this <literal>systembus-notify</literal> running as your user, which this
option handles. option handles by enabling <option>services.systembus-notify</option>.
See <link xlink:href="https://github.com/rfjakob/earlyoom#notifications">README</link> for details. 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 = [ imports = [
@ -76,7 +124,11 @@ in
This option is deprecated and ignored by earlyoom since 1.2. This option is deprecated and ignored by earlyoom since 1.2.
'') '')
(mkRemovedOptionModule [ "services" "earlyoom" "notificationsCommand" ] '' (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"; StandardError = "journal";
ExecStart = concatStringsSep " " ([ ExecStart = concatStringsSep " " ([
"${pkgs.earlyoom}/bin/earlyoom" "${pkgs.earlyoom}/bin/earlyoom"
"-m ${toString cfg.freeMemThreshold}" ("-m ${toString cfg.freeMemThreshold}"
"-s ${toString cfg.freeSwapThreshold}" + 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.enableDebugInfo "-d"
++ optional cfg.enableNotifications "-n" ++ optional cfg.enableNotifications "-n"
++ optional (cfg.killHook != null) "-N ${escapeShellArg cfg.killHook}"
++ cfg.extraArgs
); );
}; };
}; };

View file

@ -519,7 +519,7 @@ in
with plasma5; with kdeApplications; with kdeFrameworks; with plasma5; with kdeApplications; with kdeFrameworks;
[ [
# Basic packages without which Plasma Mobile fails to work properly. # Basic packages without which Plasma Mobile fails to work properly.
plasma-phone-components plasma-mobile
plasma-nano plasma-nano
pkgs.maliit-framework pkgs.maliit-framework
pkgs.maliit-keyboard 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 ];
}) })
]; ];
} }

View file

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

View file

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

View file

@ -1020,12 +1020,14 @@ in
local = "10.0.0.22"; local = "10.0.0.22";
dev = "enp4s0f0"; dev = "enp4s0f0";
type = "tap"; type = "tap";
ttl = 255;
}; };
gre6Tunnel = { gre6Tunnel = {
remote = "fd7a:5634::1"; remote = "fd7a:5634::1";
local = "fd7a:5634::2"; local = "fd7a:5634::2";
dev = "enp4s0f0"; dev = "enp4s0f0";
type = "tun6"; 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 = mkOption {
type = with types; enum [ "tun" "tap" "tun6" "tap6" ]; type = with types; enum [ "tun" "tap" "tun6" "tap6" ];
default = "tap"; default = "tap";

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -15,26 +15,9 @@
with import ../lib/testing-python.nix { inherit system pkgs; }; with import ../lib/testing-python.nix { inherit system pkgs; };
with pkgs.lib; with pkgs.lib;
mapAttrs (channel: chromiumPkg: makeTest rec { let
name = "chromium-${channel}";
meta = {
maintainers = with maintainers; [ aszlig primeos ];
# https://github.com/NixOS/hydra/issues/591#issuecomment-435125621
inherit (chromiumPkg.meta) timeout;
};
enableOCR = true;
user = "alice"; 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" '' startupHTML = pkgs.writeText "chromium-startup.html" ''
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
@ -50,6 +33,25 @@ mapAttrs (channel: chromiumPkg: makeTest rec {
</body> </body>
</html> </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 testScript = let
xdo = name: text: let xdo = name: text: let

View file

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

16
nixos/tests/earlyoom.nix Normal file
View file

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

View file

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

View file

@ -21,9 +21,9 @@ import ./make-test-python.nix ({ pkgs, ... }: {
forceSSL = true; forceSSL = true;
}; };
security.acme.email = "me@example.org";
security.acme.acceptTerms = true; 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
}; };
}; };

View file

@ -1,13 +1,13 @@
# Miscellaneous small tests that don't warrant their own VM run. # 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"; name = "misc";
meta = with pkgs.lib.maintainers; { meta = with pkgs.lib.maintainers; {
maintainers = [ eelco ]; maintainers = [ eelco ];
}; };
foo = pkgs.writeText "foo" "Hello World";
machine = machine =
{ lib, ... }: { lib, ... }:
with lib; with lib;

45
nixos/tests/moonraker.nix Normal file
View file

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

View file

@ -514,12 +514,14 @@ let
local = "192.168.2.1"; local = "192.168.2.1";
remote = "192.168.2.2"; remote = "192.168.2.2";
dev = "eth2"; dev = "eth2";
ttl = 225;
type = "tap"; type = "tap";
}; };
gre6Tunnel = { gre6Tunnel = {
local = "fd00:1234:5678:4::1"; local = "fd00:1234:5678:4::1";
remote = "fd00:1234:5678:4::2"; remote = "fd00:1234:5678:4::2";
dev = "eth3"; dev = "eth3";
ttl = 255;
type = "tun6"; type = "tun6";
}; };
}; };
@ -548,12 +550,14 @@ let
local = "192.168.2.2"; local = "192.168.2.2";
remote = "192.168.2.1"; remote = "192.168.2.1";
dev = "eth1"; dev = "eth1";
ttl = 225;
type = "tap"; type = "tap";
}; };
gre6Tunnel = { gre6Tunnel = {
local = "fd00:1234:5678:4::2"; local = "fd00:1234:5678:4::2";
remote = "fd00:1234:5678:4::1"; remote = "fd00:1234:5678:4::1";
dev = "eth3"; dev = "eth3";
ttl = 255;
type = "tun6"; type = "tun6";
}; };
}; };
@ -573,6 +577,7 @@ let
]; ];
testScript = { ... }: testScript = { ... }:
'' ''
import json
start_all() start_all()
with subtest("Wait for networking to be configured"): with subtest("Wait for networking to be configured"):
@ -591,6 +596,13 @@ let
client1.wait_until_succeeds("ping -c 1 fc00::2") client1.wait_until_succeeds("ping -c 1 fc00::2")
client2.wait_until_succeeds("ping -c 1 fc00::1") 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 vlan = let

View file

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

View file

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

View file

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

View file

@ -4,14 +4,23 @@ import ./make-test-python.nix ({ lib, ... }: {
maintainers = [ ericson2314 ]; maintainers = [ ericson2314 ];
}; };
nixpkgs.overlays = [
(self: super: {
nix = throw "don't want to use this";
})
];
nodes.machine = { ... }: { nodes.machine = { ... }: {
nix.enable = false; 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 = '' testScript = ''

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -2,6 +2,7 @@
, lib , lib
, rustPlatform , rustPlatform
, fetchFromGitLab , fetchFromGitLab
, fetchpatch
, meson , meson
, ninja , ninja
, gettext , gettext
@ -31,6 +32,16 @@ stdenv.mkDerivation rec {
sha256 = "00vy1qkkpn76jdpybsq9qp8s6fh1ih10j73p2x43sl97m5g8944h"; 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 { cargoDeps = rustPlatform.fetchCargoTarball {
inherit src; inherit src;
name = "${pname}-${version}"; name = "${pname}-${version}";

View file

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

View file

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

View file

@ -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 { stdenv.mkDerivation rec {
name = "mid2key-r1"; pname = "mid2key";
version = "1";
src = fetchurl { src = fetchFromGitHub {
url = "http://mid2key.googlecode.com/files/${name}.tar.gz"; owner = "dnschneid";
repo = "mid2key";
rev = "v${version}";
sha256 = "0j2vsjvdgx51nd1qmaa18mcy0yw9pwrhbv2mdwnf913bwsk4y904"; sha256 = "0j2vsjvdgx51nd1qmaa18mcy0yw9pwrhbv2mdwnf913bwsk4y904";
}; };

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -1,6 +1,7 @@
{ lib { lib
, stdenv , stdenv
, fetchurl , fetchurl
, fetchpatch
, meson , meson
, ninja , ninja
, pkg-config , pkg-config
@ -28,6 +29,15 @@ stdenv.mkDerivation rec {
sha256 = "08d5d81rz9sj3m5paw8fwbgxmhlbr7bcjdzpmzj832qvg8smydxf"; 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 = [ nativeBuildInputs = [
meson meson
ninja ninja

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -32,7 +32,8 @@ rec {
''; '';
sizedLogo = size: stdenv.mkDerivation { 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; src = octave.src;

View file

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

View file

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

View file

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

View file

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

View file

@ -17,13 +17,13 @@
buildDotnetModule rec { buildDotnetModule rec {
pname = "ryujinx"; 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 { src = fetchFromGitHub {
owner = "Ryujinx"; owner = "Ryujinx";
repo = "Ryujinx"; repo = "Ryujinx";
rev = "e2ffa5a125fcbe8a25c73d8e04c08c08ef378860"; rev = "df70442c46e7ee133b1fb79dc23ddd134e618085";
sha256 = "1rmiyjqwlsbzh9q7d12n72ka9adaby2rfcbn75sf47p5857yi3p9"; sha256 = "1m9msp7kxsj7251l2yjcfzrb4k1lisk9sip7acm22pxmi1a7gw73";
}; };
dotnet-sdk = dotnetCorePackages.sdk_6_0; dotnet-sdk = dotnetCorePackages.sdk_6_0;

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -34,6 +34,47 @@ let
(mkOverride "markdown" "3.1.1" "2e50876bcdd74517e7b71f3e7a76102050edec255b3983403f1a63e7c8a41e7a") (mkOverride "markdown" "3.1.1" "2e50876bcdd74517e7b71f3e7a76102050edec255b3983403f1a63e7c8a41e7a")
(mkOverride "markupsafe" "1.1.1" "29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b") (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 # Requires flask<2, cannot mkOverride because tests need to be disabled
( (
self: super: { self: super: {
@ -400,7 +441,7 @@ let
homepage = "https://octoprint.org/"; homepage = "https://octoprint.org/";
description = "The snappy web interface for your 3D printer"; description = "The snappy web interface for your 3D printer";
license = licenses.agpl3Only; license = licenses.agpl3Only;
maintainers = with maintainers; [ abbradar gebner WhittlesJr ]; maintainers = with maintainers; [ abbradar gebner WhittlesJr gador ];
}; };
}; };
} }

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

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