Merge staging-next into staging
This commit is contained in:
commit
8357b101a5
@ -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.
|
||||||
|
@ -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 {
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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:
|
||||||
|
|
||||||
|
@ -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";
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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} - - -"
|
||||||
|
@ -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;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
|
@ -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";
|
||||||
|
@ -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
|
||||||
|
128
nixos/modules/services/networking/https-dns-proxy.nix
Normal file
128
nixos/modules/services/networking/https-dns-proxy.nix
Normal 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";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
@ -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
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -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 ];
|
||||||
})
|
})
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
'';
|
'';
|
||||||
|
@ -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) {
|
||||||
|
@ -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";
|
||||||
|
@ -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]}
|
||||||
|
@ -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 {};
|
||||||
|
@ -38,7 +38,6 @@ let
|
|||||||
} // extraConfig);
|
} // extraConfig);
|
||||||
in
|
in
|
||||||
makeTest {
|
makeTest {
|
||||||
inherit iso;
|
|
||||||
name = "boot-" + name;
|
name = "boot-" + name;
|
||||||
nodes = { };
|
nodes = { };
|
||||||
testScript =
|
testScript =
|
||||||
|
@ -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 {
|
||||||
}
|
}
|
||||||
'';
|
'';
|
||||||
|
@ -48,7 +48,7 @@ let
|
|||||||
sudo
|
sudo
|
||||||
ceph
|
ceph
|
||||||
xfsprogs
|
xfsprogs
|
||||||
netcat-openbsd
|
libressl.nc
|
||||||
];
|
];
|
||||||
|
|
||||||
boot.kernelModules = [ "xfs" ];
|
boot.kernelModules = [ "xfs" ];
|
||||||
|
@ -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
|
||||||
|
@ -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
16
nixos/tests/earlyoom.nix
Normal 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")
|
||||||
|
'';
|
||||||
|
})
|
@ -20,7 +20,7 @@ import ./make-test-python.nix (
|
|||||||
nodes = {
|
nodes = {
|
||||||
|
|
||||||
server =
|
server =
|
||||||
{ ... }:
|
{ config, ... }:
|
||||||
{
|
{
|
||||||
networking.firewall.allowedTCPPorts = [ 80 ];
|
networking.firewall.allowedTCPPorts = [ 80 ];
|
||||||
|
|
||||||
|
@ -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
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -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
45
nixos/tests/moonraker.nix
Normal 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)
|
||||||
|
'';
|
||||||
|
})
|
@ -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
|
||||||
|
@ -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")
|
||||||
|
@ -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" ];
|
||||||
|
@ -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")
|
||||||
|
@ -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 = ''
|
||||||
|
@ -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;
|
||||||
|
|
||||||
|
@ -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";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -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 {
|
||||||
|
@ -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 {
|
||||||
|
@ -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 {
|
||||||
|
@ -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";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -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";
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -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}";
|
||||||
|
@ -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";
|
||||||
|
@ -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 {
|
||||||
|
@ -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";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -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; {
|
||||||
|
@ -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 = [
|
||||||
|
@ -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";
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -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";
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -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 = [
|
||||||
|
@ -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";
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
|
@ -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
|
||||||
|
@ -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";
|
||||||
|
@ -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 {
|
||||||
|
@ -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 {
|
||||||
|
@ -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 {
|
||||||
|
@ -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";
|
||||||
|
@ -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 = ''
|
||||||
|
@ -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",
|
||||||
|
@ -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 ];
|
||||||
|
|
||||||
|
@ -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 = ".";
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
|
@ -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
|
||||||
|
@ -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;
|
||||||
|
|
||||||
|
@ -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";
|
||||||
|
30
pkgs/applications/editors/micro/test-with-expect.nix
Normal file
30
pkgs/applications/editors/micro/test-with-expect.nix
Normal 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
|
||||||
|
''
|
@ -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 ] ;
|
||||||
|
@ -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 ];
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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 ];
|
||||||
|
@ -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 {
|
||||||
|
@ -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 = [
|
||||||
|
@ -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;
|
||||||
|
@ -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";
|
||||||
|
@ -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";
|
||||||
};
|
};
|
||||||
|
@ -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;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
107
pkgs/applications/graphics/unigine-heaven/default.nix
Normal file
107
pkgs/applications/graphics/unigine-heaven/default.nix
Normal 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" ];
|
||||||
|
};
|
||||||
|
}
|
@ -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";
|
||||||
|
@ -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 ];
|
||||||
|
@ -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
|
||||||
|
@ -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";
|
||||||
|
@ -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 = ''
|
||||||
|
@ -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 ];
|
||||||
|
@ -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 ];
|
||||||
|
@ -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 ];
|
||||||
|
@ -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;
|
||||||
|
@ -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 ];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -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 {
|
||||||
|
@ -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";
|
||||||
};
|
};
|
||||||
|
@ -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";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -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";
|
||||||
|
@ -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;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -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
Loading…
Reference in New Issue
Block a user