Merge remote-tracking branch 'origin/staging-next' into staging
Conflicts: - pkgs/tools/misc/watchlog/default.nix
This commit is contained in:
@@ -58,7 +58,7 @@ jobs:
|
||||
|
||||
if [[ "$mergeable" == "null" ]]; then
|
||||
if (( retryCount == 0 )); then
|
||||
echo "Not retrying anymore, probably GitHub is having internal issues"
|
||||
echo "Not retrying anymore. It's likely that GitHub is having internal issues: check https://www.githubstatus.com/"
|
||||
exit 1
|
||||
else
|
||||
(( retryCount -= 1 )) || true
|
||||
|
||||
@@ -869,7 +869,7 @@ It produces packages that cannot be built automatically.
|
||||
fetchtorrent {
|
||||
config = { peer-limit-global = 100; };
|
||||
url = "magnet:?xt=urn:btih:dd8255ecdc7ca55fb0bbf81323d87062db1f6d1c";
|
||||
sha256 = "";
|
||||
hash = "";
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
@@ -114,7 +114,7 @@ flutter322.buildFlutterApplication {
|
||||
owner = "canonical";
|
||||
repo = "firmware-updater";
|
||||
rev = "6e7dbdb64e344633ea62874b54ff3990bd3b8440";
|
||||
sha256 = "sha256-s5mwtr5MSPqLMN+k851+pFIFFPa0N1hqz97ys050tFA=";
|
||||
hash = "sha256-s5mwtr5MSPqLMN+k851+pFIFFPa0N1hqz97ys050tFA=";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
|
||||
|
||||
@@ -194,7 +194,7 @@ This helper has the same arguments as `buildDotnetModule`, with a few difference
|
||||
|
||||
* `pname` and `version` are required, and will be used to find the NuGet package of the tool
|
||||
* `nugetName` can be used to override the NuGet package name that will be downloaded, if it's different from `pname`
|
||||
* `nugetSha256` is the hash of the fetched NuGet package. Set this to `lib.fakeHash256` for the first build, and it will error out, giving you the proper hash. Also remember to update it during version updates (it will not error out if you just change the version while having a fetched package in `/nix/store`)
|
||||
* `nugetHash` is the hash of the fetched NuGet package. `nugetSha256` is also supported, but not recommended. Set this to `lib.fakeHash` for the first build, and it will error out, giving you the proper hash. Also remember to update it during version updates (it will not error out if you just change the version while having a fetched package in `/nix/store`)
|
||||
* `dotnet-runtime` is set to `dotnet-sdk` by default. When changing this, remember that .NET tools fetched from NuGet require an SDK.
|
||||
|
||||
Here is an example of packaging `pbm`, an unfree binary without source available:
|
||||
@@ -205,7 +205,7 @@ buildDotnetGlobalTool {
|
||||
pname = "pbm";
|
||||
version = "1.3.1";
|
||||
|
||||
nugetSha256 = "sha256-ZG2HFyKYhVNVYd2kRlkbAjZJq88OADe3yjxmLuxXDUo=";
|
||||
nugetHash = "sha256-ZG2HFyKYhVNVYd2kRlkbAjZJq88OADe3yjxmLuxXDUo=";
|
||||
|
||||
meta = {
|
||||
homepage = "https://cmd.petabridge.com/index.html";
|
||||
@@ -241,15 +241,15 @@ $ nuget-to-nix out > deps.nix
|
||||
Which `nuget-to-nix` will generate an output similar to below
|
||||
```nix
|
||||
{ fetchNuGet }: [
|
||||
(fetchNuGet { pname = "FosterFramework"; version = "0.1.15-alpha"; sha256 = "0pzsdfbsfx28xfqljcwy100xhbs6wyx0z1d5qxgmv3l60di9xkll"; })
|
||||
(fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-x64"; version = "8.0.1"; sha256 = "1gjz379y61ag9whi78qxx09bwkwcznkx2mzypgycibxk61g11da1"; })
|
||||
(fetchNuGet { pname = "Microsoft.NET.ILLink.Tasks"; version = "8.0.1"; sha256 = "1drbgqdcvbpisjn8mqfgba1pwb6yri80qc4mfvyczqwrcsj5k2ja"; })
|
||||
(fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-x64"; version = "8.0.1"; sha256 = "1g5b30f4l8a1zjjr3b8pk9mcqxkxqwa86362f84646xaj4iw3a4d"; })
|
||||
(fetchNuGet { pname = "SharpGLTF.Core"; version = "1.0.0-alpha0031"; sha256 = "0ln78mkhbcxqvwnf944hbgg24vbsva2jpih6q3x82d3h7rl1pkh6"; })
|
||||
(fetchNuGet { pname = "SharpGLTF.Runtime"; version = "1.0.0-alpha0031"; sha256 = "0lvb3asi3v0n718qf9y367km7qpkb9wci38y880nqvifpzllw0jg"; })
|
||||
(fetchNuGet { pname = "Sledge.Formats"; version = "1.2.2"; sha256 = "1y0l66m9rym0p1y4ifjlmg3j9lsmhkvbh38frh40rpvf1axn2dyh"; })
|
||||
(fetchNuGet { pname = "Sledge.Formats.Map"; version = "1.1.5"; sha256 = "1bww60hv9xcyxpvkzz5q3ybafdxxkw6knhv97phvpkw84pd0jil6"; })
|
||||
(fetchNuGet { pname = "System.Numerics.Vectors"; version = "4.5.0"; sha256 = "1kzrj37yzawf1b19jq0253rcs8hsq1l2q8g69d7ipnhzb0h97m59"; })
|
||||
(fetchNuGet { pname = "FosterFramework"; version = "0.1.15-alpha"; hash = "sha256-lM6eYgOGjl1fx6WFD7rnRi/YAQieM0mx60h0p5dr+l8="; })
|
||||
(fetchNuGet { pname = "Microsoft.AspNetCore.App.Runtime.linux-x64"; version = "8.0.1"; hash = "sha256-QbUQXjCzr8j8u/5X0af9jE++EugdoxMhT08F49MZX74="; })
|
||||
(fetchNuGet { pname = "Microsoft.NET.ILLink.Tasks"; version = "8.0.1"; hash = "sha256-SopZpGaZ48/8dpUwDFDM3ix+g1rP4Yqs1PGuzRp+K7c="; })
|
||||
(fetchNuGet { pname = "Microsoft.NETCore.App.Runtime.linux-x64"; version = "8.0.1"; hash = "sha256-jajBI5GqG2IIcsIMgxTHfXbMapoXrZGl/EEhShwYq7w="; })
|
||||
(fetchNuGet { pname = "SharpGLTF.Core"; version = "1.0.0-alpha0031"; hash = "sha256-Bs4baD5wNIH6wAbGK4Xaem0i3luQkOQs37izBWdFx1I="; })
|
||||
(fetchNuGet { pname = "SharpGLTF.Runtime"; version = "1.0.0-alpha0031"; hash = "sha256-TwJO6b8ubmwBQh6NyHha8+JT5zHDJ4dROBbsEbUaa1M="; })
|
||||
(fetchNuGet { pname = "Sledge.Formats"; version = "1.2.2"; hash = "sha256-0Ddhuwpu3wwIzA4NuPaEVdMkx6tUukh8uKD6nKoxFPg="; })
|
||||
(fetchNuGet { pname = "Sledge.Formats.Map"; version = "1.1.5"; hash = "sha256-hkYJ2iWIz7vhPWlDOw2fvTenlh+4/D/37Z71tCEwnK8="; })
|
||||
(fetchNuGet { pname = "System.Numerics.Vectors"; version = "4.5.0"; hash = "sha256-qdSTIFgf2htPS+YhLGjAGiLN8igCYJnCCo6r78+Q+c8="; })
|
||||
]
|
||||
```
|
||||
|
||||
|
||||
+1
-1
@@ -66,7 +66,7 @@ let
|
||||
|
||||
# TODO: For consistency, all builtins should also be available from a sub-library;
|
||||
# these are the only ones that are currently not
|
||||
inherit (builtins) addErrorContext isPath trace;
|
||||
inherit (builtins) addErrorContext isPath trace typeOf unsafeGetAttrPos;
|
||||
inherit (self.trivial) id const pipe concat or and xor bitAnd bitOr bitXor
|
||||
bitNot boolToString mergeAttrs flip mapNullable inNixShell isFloat min max
|
||||
importJSON importTOML warn warnIf warnIfNot throwIf throwIfNot checkListOfEnum
|
||||
|
||||
+53
-41
@@ -2,6 +2,7 @@
|
||||
|
||||
let
|
||||
inherit (lib)
|
||||
addErrorContext
|
||||
all
|
||||
any
|
||||
attrByPath
|
||||
@@ -13,13 +14,16 @@ let
|
||||
elem
|
||||
filter
|
||||
foldl'
|
||||
functionArgs
|
||||
getAttrFromPath
|
||||
genericClosure
|
||||
head
|
||||
id
|
||||
imap1
|
||||
isAttrs
|
||||
isBool
|
||||
isFunction
|
||||
isInOldestRelease
|
||||
isList
|
||||
isString
|
||||
length
|
||||
@@ -32,9 +36,17 @@ let
|
||||
optionalString
|
||||
recursiveUpdate
|
||||
reverseList sort
|
||||
seq
|
||||
setAttrByPath
|
||||
substring
|
||||
throwIfNot
|
||||
trace
|
||||
typeOf
|
||||
types
|
||||
unsafeGetAttrPos
|
||||
warn
|
||||
warnIf
|
||||
zipAttrs
|
||||
zipAttrsWith
|
||||
;
|
||||
inherit (lib.options)
|
||||
@@ -89,8 +101,8 @@ let
|
||||
}:
|
||||
let
|
||||
withWarnings = x:
|
||||
lib.warnIf (evalModulesArgs?args) "The args argument to evalModules is deprecated. Please set config._module.args instead."
|
||||
lib.warnIf (evalModulesArgs?check) "The check argument to evalModules is deprecated. Please set config._module.check instead."
|
||||
warnIf (evalModulesArgs?args) "The args argument to evalModules is deprecated. Please set config._module.args instead."
|
||||
warnIf (evalModulesArgs?check) "The check argument to evalModules is deprecated. Please set config._module.check instead."
|
||||
x;
|
||||
|
||||
legacyModules =
|
||||
@@ -265,9 +277,9 @@ let
|
||||
let
|
||||
optText = showOption (prefix ++ firstDef.prefix);
|
||||
defText =
|
||||
builtins.addErrorContext
|
||||
addErrorContext
|
||||
"while evaluating the error message for definitions for `${optText}', which is an option that does not exist"
|
||||
(builtins.addErrorContext
|
||||
(addErrorContext
|
||||
"while evaluating a definition from `${firstDef.file}'"
|
||||
( showDefs [ firstDef ])
|
||||
);
|
||||
@@ -298,7 +310,7 @@ let
|
||||
else throw baseMsg
|
||||
else null;
|
||||
|
||||
checked = builtins.seq checkUnmatched;
|
||||
checked = seq checkUnmatched;
|
||||
|
||||
extendModules = extendArgs@{
|
||||
modules ? [],
|
||||
@@ -312,7 +324,7 @@ let
|
||||
prefix = extendArgs.prefix or evalModulesArgs.prefix or [];
|
||||
});
|
||||
|
||||
type = lib.types.submoduleWith {
|
||||
type = types.submoduleWith {
|
||||
inherit modules specialArgs class;
|
||||
};
|
||||
|
||||
@@ -344,8 +356,8 @@ let
|
||||
else
|
||||
throw (
|
||||
"Could not load a value as a module, because it is of type ${lib.strings.escapeNixString m._type}"
|
||||
+ lib.optionalString (fallbackFile != unknownModule) ", in file ${toString fallbackFile}."
|
||||
+ lib.optionalString (m._type == "configuration") " If you do intend to import this configuration, please only import the modules that make up the configuration. You may have to create a `let` binding, file or attribute to give yourself access to the relevant modules.\nWhile loading a configuration into the module system is a very sensible idea, it can not be done cleanly in practice."
|
||||
+ optionalString (fallbackFile != unknownModule) ", in file ${toString fallbackFile}."
|
||||
+ optionalString (m._type == "configuration") " If you do intend to import this configuration, please only import the modules that make up the configuration. You may have to create a `let` binding, file or attribute to give yourself access to the relevant modules.\nWhile loading a configuration into the module system is a very sensible idea, it can not be done cleanly in practice."
|
||||
# Extended explanation: That's because a finalized configuration is more than just a set of modules. For instance, it has its own `specialArgs` that, by the nature of `specialArgs` can't be loaded through `imports` or the the `modules` argument. So instead, we have to ask you to extract the relevant modules and use those instead. This way, we keep the module system comparatively simple, and hopefully avoid a bad surprise down the line.
|
||||
)
|
||||
else if isList m then
|
||||
@@ -415,7 +427,7 @@ let
|
||||
moduleKey = file: m:
|
||||
if isString m
|
||||
then
|
||||
if builtins.substring 0 1 m == "/"
|
||||
if substring 0 1 m == "/"
|
||||
then m
|
||||
else toString modulesPath + "/" + m
|
||||
|
||||
@@ -433,11 +445,11 @@ let
|
||||
|
||||
else if isAttrs m
|
||||
then throw "Module `${file}` contains a disabledModules item that is an attribute set, presumably a module, that does not have a `key` attribute. This means that the module system doesn't have any means to identify the module that should be disabled. Make sure that you've put the correct value in disabledModules: a string path relative to modulesPath, a path value, or an attribute set with a `key` attribute."
|
||||
else throw "Each disabledModules item must be a path, string, or a attribute set with a key attribute, or a value supported by toString. However, one of the disabledModules items in `${toString file}` is none of that, but is of type ${builtins.typeOf m}.";
|
||||
else throw "Each disabledModules item must be a path, string, or a attribute set with a key attribute, or a value supported by toString. However, one of the disabledModules items in `${toString file}` is none of that, but is of type ${typeOf m}.";
|
||||
|
||||
disabledKeys = concatMap ({ file, disabled }: map (moduleKey file) disabled) disabled;
|
||||
keyFilter = filter (attrs: ! elem attrs.key disabledKeys);
|
||||
in map (attrs: attrs.module) (builtins.genericClosure {
|
||||
in map (attrs: attrs.module) (genericClosure {
|
||||
startSet = keyFilter modules;
|
||||
operator = attrs: keyFilter attrs.modules;
|
||||
});
|
||||
@@ -475,7 +487,7 @@ let
|
||||
}
|
||||
else
|
||||
# shorthand syntax
|
||||
lib.throwIfNot (isAttrs m) "module ${file} (${key}) does not look like a module."
|
||||
throwIfNot (isAttrs m) "module ${file} (${key}) does not look like a module."
|
||||
{ _file = toString m._file or file;
|
||||
_class = m._class or null;
|
||||
key = toString m.key or key;
|
||||
@@ -485,10 +497,10 @@ let
|
||||
config = addFreeformType (removeAttrs m ["_class" "_file" "key" "disabledModules" "require" "imports" "freeformType"]);
|
||||
};
|
||||
|
||||
applyModuleArgsIfFunction = key: f: args@{ config, options, lib, ... }:
|
||||
applyModuleArgsIfFunction = key: f: args@{ config, ... }:
|
||||
if isFunction f then applyModuleArgs key f args else f;
|
||||
|
||||
applyModuleArgs = key: f: args@{ config, options, lib, ... }:
|
||||
applyModuleArgs = key: f: args@{ config, ... }:
|
||||
let
|
||||
# Module arguments are resolved in a strict manner when attribute set
|
||||
# deconstruction is used. As the arguments are now defined with the
|
||||
@@ -503,10 +515,10 @@ let
|
||||
# not their values. The values are forwarding the result of the
|
||||
# evaluation of the option.
|
||||
context = name: ''while evaluating the module argument `${name}' in "${key}":'';
|
||||
extraArgs = builtins.mapAttrs (name: _:
|
||||
builtins.addErrorContext (context name)
|
||||
extraArgs = mapAttrs (name: _:
|
||||
addErrorContext (context name)
|
||||
(args.${name} or config._module.args.${name})
|
||||
) (lib.functionArgs f);
|
||||
) (functionArgs f);
|
||||
|
||||
# Note: we append in the opposite order such that we can add an error
|
||||
# context on the explicit arguments of "args" too. This update
|
||||
@@ -547,16 +559,16 @@ let
|
||||
(n: concatLists)
|
||||
(map
|
||||
(module: let subtree = module.options; in
|
||||
if !(builtins.isAttrs subtree) then
|
||||
if !(isAttrs subtree) then
|
||||
throw ''
|
||||
An option declaration for `${builtins.concatStringsSep "." prefix}' has type
|
||||
`${builtins.typeOf subtree}' rather than an attribute set.
|
||||
An option declaration for `${concatStringsSep "." prefix}' has type
|
||||
`${typeOf subtree}' rather than an attribute set.
|
||||
Did you mean to define this outside of `options'?
|
||||
''
|
||||
else
|
||||
mapAttrs
|
||||
(n: option:
|
||||
[{ inherit (module) _file; pos = builtins.unsafeGetAttrPos n subtree; options = option; }]
|
||||
[{ inherit (module) _file; pos = unsafeGetAttrPos n subtree; options = option; }]
|
||||
)
|
||||
subtree
|
||||
)
|
||||
@@ -565,17 +577,17 @@ let
|
||||
# The root of any module definition must be an attrset.
|
||||
checkedConfigs =
|
||||
assert
|
||||
lib.all
|
||||
all
|
||||
(c:
|
||||
# TODO: I have my doubts that this error would occur when option definitions are not matched.
|
||||
# The implementation of this check used to be tied to a superficially similar check for
|
||||
# options, so maybe that's why this is here.
|
||||
isAttrs c.config || throw ''
|
||||
In module `${c.file}', you're trying to define a value of type `${builtins.typeOf c.config}'
|
||||
In module `${c.file}', you're trying to define a value of type `${typeOf c.config}'
|
||||
rather than an attribute set for the option
|
||||
`${builtins.concatStringsSep "." prefix}'!
|
||||
`${concatStringsSep "." prefix}'!
|
||||
|
||||
This usually happens if `${builtins.concatStringsSep "." prefix}' has option
|
||||
This usually happens if `${concatStringsSep "." prefix}' has option
|
||||
definitions inside that are not matched. Please check how to properly define
|
||||
this option by e.g. referring to `man 5 configuration.nix'!
|
||||
''
|
||||
@@ -667,7 +679,7 @@ let
|
||||
let
|
||||
nonOptions = filter (m: !isOption m.options) decls;
|
||||
in
|
||||
throw "The option `${showOption loc}' in module `${(lib.head optionDecls)._file}' would be a parent of the following options, but its type `${(lib.head optionDecls).options.type.description or "<no description>"}' does not support nested options.\n${
|
||||
throw "The option `${showOption loc}' in module `${(head optionDecls)._file}' would be a parent of the following options, but its type `${(head optionDecls).options.type.description or "<no description>"}' does not support nested options.\n${
|
||||
showRawDecls loc nonOptions
|
||||
}"
|
||||
else
|
||||
@@ -806,7 +818,7 @@ let
|
||||
"The type `types.${opt.type.name}' of option `${showOption loc}' defined in ${showFiles opt.declarations} is deprecated. ${opt.type.deprecationMessage}";
|
||||
|
||||
in warnDeprecation opt //
|
||||
{ value = builtins.addErrorContext "while evaluating the option `${showOption loc}':" value;
|
||||
{ value = addErrorContext "while evaluating the option `${showOption loc}':" value;
|
||||
inherit (res.defsFinal') highestPrio;
|
||||
definitions = map (def: def.value) res.defsFinal;
|
||||
files = map (def: def.file) res.defsFinal;
|
||||
@@ -822,7 +834,7 @@ let
|
||||
let
|
||||
# Process mkMerge and mkIf properties.
|
||||
defs' = concatMap (m:
|
||||
map (value: { inherit (m) file; inherit value; }) (builtins.addErrorContext "while evaluating definitions from `${m.file}':" (dischargeProperties m.value))
|
||||
map (value: { inherit (m) file; inherit value; }) (addErrorContext "while evaluating definitions from `${m.file}':" (dischargeProperties m.value))
|
||||
) defs;
|
||||
|
||||
# Process mkOverride properties.
|
||||
@@ -972,12 +984,12 @@ let
|
||||
mergeAttrDefinitionsWithPrio = opt:
|
||||
let
|
||||
defsByAttr =
|
||||
lib.zipAttrs (
|
||||
lib.concatLists (
|
||||
lib.concatMap
|
||||
zipAttrs (
|
||||
concatLists (
|
||||
concatMap
|
||||
({ value, ... }@def:
|
||||
map
|
||||
(lib.mapAttrsToList (k: value: { ${k} = def // { inherit value; }; }))
|
||||
(mapAttrsToList (k: value: { ${k} = def // { inherit value; }; }))
|
||||
(pushDownProperties value)
|
||||
)
|
||||
opt.definitionsWithLocations
|
||||
@@ -985,9 +997,9 @@ let
|
||||
);
|
||||
in
|
||||
assert opt.type.name == "attrsOf" || opt.type.name == "lazyAttrsOf";
|
||||
lib.mapAttrs
|
||||
mapAttrs
|
||||
(k: v:
|
||||
let merging = lib.mergeDefinitions (opt.loc ++ [k]) opt.type.nestedTypes.elemType v;
|
||||
let merging = mergeDefinitions (opt.loc ++ [k]) opt.type.nestedTypes.elemType v;
|
||||
in {
|
||||
value = merging.mergedValue;
|
||||
inherit (merging.defsFinal') highestPrio;
|
||||
@@ -1023,9 +1035,9 @@ let
|
||||
mkForce = mkOverride 50;
|
||||
mkVMOverride = mkOverride 10; # used by ‘nixos-rebuild build-vm’
|
||||
|
||||
defaultPriority = lib.warnIf (lib.isInOldestRelease 2305) "lib.modules.defaultPriority is deprecated, please use lib.modules.defaultOverridePriority instead." defaultOverridePriority;
|
||||
defaultPriority = warnIf (isInOldestRelease 2305) "lib.modules.defaultPriority is deprecated, please use lib.modules.defaultOverridePriority instead." defaultOverridePriority;
|
||||
|
||||
mkFixStrictness = lib.warn "lib.mkFixStrictness has no effect and will be removed. It returns its argument unmodified, so you can just remove any calls." id;
|
||||
mkFixStrictness = warn "lib.mkFixStrictness has no effect and will be removed. It returns its argument unmodified, so you can just remove any calls." id;
|
||||
|
||||
mkOrder = priority: content:
|
||||
{ _type = "order";
|
||||
@@ -1121,7 +1133,7 @@ let
|
||||
inherit from to;
|
||||
visible = false;
|
||||
warn = true;
|
||||
use = builtins.trace "Obsolete option `${showOption from}' is used. It was renamed to `${showOption to}'.";
|
||||
use = trace "Obsolete option `${showOption from}' is used. It was renamed to `${showOption to}'.";
|
||||
};
|
||||
|
||||
mkRenamedOptionModuleWith = {
|
||||
@@ -1139,8 +1151,8 @@ let
|
||||
}: doRename {
|
||||
inherit from to;
|
||||
visible = false;
|
||||
warn = lib.isInOldestRelease sinceRelease;
|
||||
use = lib.warnIf (lib.isInOldestRelease sinceRelease)
|
||||
warn = isInOldestRelease sinceRelease;
|
||||
use = warnIf (isInOldestRelease sinceRelease)
|
||||
"Obsolete option `${showOption from}' is used. It was renamed to `${showOption to}'.";
|
||||
};
|
||||
|
||||
@@ -1372,8 +1384,8 @@ let
|
||||
config = lib.importTOML file;
|
||||
};
|
||||
|
||||
private = lib.mapAttrs
|
||||
(k: lib.warn "External use of `lib.modules.${k}` is deprecated. If your use case isn't covered by non-deprecated functions, we'd like to know more and perhaps support your use case well, instead of providing access to these low level functions. In this case please open an issue in https://github.com/nixos/nixpkgs/issues/.")
|
||||
private = mapAttrs
|
||||
(k: warn "External use of `lib.modules.${k}` is deprecated. If your use case isn't covered by non-deprecated functions, we'd like to know more and perhaps support your use case well, instead of providing access to these low level functions. In this case please open an issue in https://github.com/nixos/nixpkgs/issues/.")
|
||||
{
|
||||
inherit
|
||||
applyModuleArgsIfFunction
|
||||
|
||||
@@ -94,6 +94,8 @@ checkConfigOutput '^true$' config.result ./module-argument-default.nix
|
||||
# gvariant
|
||||
checkConfigOutput '^true$' config.assertion ./gvariant.nix
|
||||
|
||||
checkConfigOutput '"ok"' config.result ./specialArgs-lib.nix
|
||||
|
||||
# https://github.com/NixOS/nixpkgs/pull/131205
|
||||
# We currently throw this error already in `config`, but throwing in `config.wrong1` would be acceptable.
|
||||
checkConfigError 'It seems as if you.re trying to declare an option by placing it into .config. rather than .options.' config.wrong1 ./error-mkOption-in-config.nix
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
{ config, lib, ... }:
|
||||
|
||||
{
|
||||
options = {
|
||||
result = lib.mkOption { };
|
||||
weird = lib.mkOption {
|
||||
type = lib.types.submoduleWith {
|
||||
# I generally recommend against overriding lib, because that leads to
|
||||
# slightly incompatible dialects of the module system.
|
||||
# Nonetheless, it's worth guarding the property that the module system
|
||||
# evaluates with a completely custom lib, as a matter of separation of
|
||||
# concerns.
|
||||
specialArgs.lib = { };
|
||||
modules = [ ];
|
||||
};
|
||||
};
|
||||
};
|
||||
config.weird = args@{ ... /* note the lack of a `lib` argument */ }:
|
||||
assert args.lib == { };
|
||||
assert args.specialArgs == { lib = { }; };
|
||||
{
|
||||
options.foo = lib.mkOption { };
|
||||
config.foo = lib.mkIf true "alright";
|
||||
};
|
||||
config.result =
|
||||
assert config.weird.foo == "alright";
|
||||
"ok";
|
||||
}
|
||||
@@ -2420,14 +2420,6 @@
|
||||
githubId = 7118777;
|
||||
keys = [ { fingerprint = "E9A3 7864 2165 28CE 507C CA82 72EA BF75 C331 CD25"; } ];
|
||||
};
|
||||
Benjamin-L = {
|
||||
name = "Benjamin Lee";
|
||||
email = "benjamin@computer.surgery";
|
||||
matrix = "@benjamin:computer.surgery";
|
||||
github = "Benjamin-L";
|
||||
githubId = 6504174;
|
||||
keys = [ { fingerprint = "9D84 09A0 44FC 1EEB AE2D FA30 FB96 24E2 885D 55A4"; } ];
|
||||
};
|
||||
benkuhn = {
|
||||
email = "ben@ben-kuhn.com";
|
||||
github = "ben-kuhn";
|
||||
@@ -2985,12 +2977,6 @@
|
||||
githubId = 2379774;
|
||||
name = "Sean Buckley";
|
||||
};
|
||||
buffet = {
|
||||
email = "niclas@countingsort.com";
|
||||
github = "buffet";
|
||||
githubId = 33751841;
|
||||
name = "Niclas Meyer";
|
||||
};
|
||||
bugworm = {
|
||||
email = "bugworm@zoho.com";
|
||||
github = "bugworm";
|
||||
@@ -5101,6 +5087,12 @@
|
||||
githubId = 56017218;
|
||||
keys = [ { fingerprint = "E6F4 BFB4 8DE3 893F 68FC A15F FF5F 4B30 A41B BAC8"; } ];
|
||||
};
|
||||
Djabx = {
|
||||
email = "alexandre@badez.eu";
|
||||
github = "Djabx";
|
||||
githubId = 69534;
|
||||
name = "Alexandre Badez";
|
||||
};
|
||||
djacu = {
|
||||
email = "daniel.n.baker@gmail.com";
|
||||
github = "djacu";
|
||||
@@ -8049,6 +8041,12 @@
|
||||
name = "Nova Witterick";
|
||||
keys = [ { fingerprint = "4304 6B43 8D83 078E 3DF7 10D6 DEB0 E15C 6D2A 5A7C"; } ];
|
||||
};
|
||||
heywoodlh = {
|
||||
email = "nixpkgs@heywoodlh.io";
|
||||
github = "heywoodlh";
|
||||
githubId = 18178614;
|
||||
name = "Spencer Heywood";
|
||||
};
|
||||
hh = {
|
||||
email = "hh@m-labs.hk";
|
||||
github = "HarryMakes";
|
||||
@@ -8966,6 +8964,13 @@
|
||||
github = "jali-clarke";
|
||||
githubId = 17733984;
|
||||
};
|
||||
jamalam = {
|
||||
email = "james@jamalam.tech";
|
||||
name = "jamalam";
|
||||
github = "Jamalam360";
|
||||
githubId = 56727311;
|
||||
keys = [ { fingerprint = "B1B2 2BA0 FC39 D4B4 2240 5F55 D86C D68E 8DB2 E368"; } ];
|
||||
};
|
||||
james-atkins = {
|
||||
name = "James Atkins";
|
||||
github = "james-atkins";
|
||||
@@ -11435,6 +11440,13 @@
|
||||
githubId = 101508537;
|
||||
name = "Yuchen He";
|
||||
};
|
||||
LilleAila = {
|
||||
name = "Olai";
|
||||
email = "olai@olai.dev";
|
||||
github = "LilleAila";
|
||||
githubId = 67327023;
|
||||
keys = [ { fingerprint = "8185 29F9 BB4C 33F0 69BB 9782 D1AC CDCF 2B9B 9799"; } ];
|
||||
};
|
||||
lillycham = {
|
||||
email = "lillycat332@gmail.com";
|
||||
github = "lillycat332";
|
||||
@@ -14699,12 +14711,6 @@
|
||||
github = "nullishamy";
|
||||
githubId = 99221043;
|
||||
};
|
||||
nullx76 = {
|
||||
email = "nix@xirion.net";
|
||||
github = "NULLx76";
|
||||
githubId = 1809198;
|
||||
name = "Victor Roest";
|
||||
};
|
||||
numinit = {
|
||||
email = "me@numin.it";
|
||||
github = "numinit";
|
||||
@@ -19511,13 +19517,6 @@
|
||||
githubId = 28858039;
|
||||
name = "Tuomas Mäkinen";
|
||||
};
|
||||
tadeokondrak = {
|
||||
email = "me@tadeo.ca";
|
||||
github = "tadeokondrak";
|
||||
githubId = 4098453;
|
||||
name = "Tadeo Kondrak";
|
||||
keys = [ { fingerprint = "0F2B C0C7 E77C 5B42 AC5B 4C18 FBE6 07FC C495 16D3"; } ];
|
||||
};
|
||||
tadfisher = {
|
||||
email = "tadfisher@gmail.com";
|
||||
github = "tadfisher";
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
|
||||
- [AMDVLK](https://github.com/GPUOpen-Drivers/AMDVLK), AMD's open source Vulkan driver, is now available to be configured as `hardware.amdgpu.amdvlk` option.
|
||||
This also allows configuring runtime settings of AMDVLK and enabling experimental features.
|
||||
- The `moonlight-qt` package ([Moonlight game streaming](https://moonlight-stream.org/)) now has HDR support on Linux systems.
|
||||
|
||||
## New Services {#sec-release-24.11-new-services}
|
||||
|
||||
@@ -19,10 +20,14 @@
|
||||
|
||||
- [Flood](https://flood.js.org/), a beautiful WebUI for various torrent clients. Available as [services.flood](options.html#opt-services.flood).
|
||||
|
||||
- [Eintopf](https://eintopf.info), community event and calendar web application. Available as [services.eintopf](options.html#opt-services.eintopf).
|
||||
|
||||
- [Renovate](https://github.com/renovatebot/renovate), a dependency updating tool for various git forges and language ecosystems. Available as [services.renovate](#opt-services.renovate.enable).
|
||||
|
||||
- [wg-access-server](https://github.com/freifunkMUC/wg-access-server/), an all-in-one WireGuard VPN solution with a web ui for connecting devices. Available at [services.wg-access-server](#opt-services.wg-access-server.enable).
|
||||
|
||||
- [Envision](https://gitlab.com/gabmus/envision), a UI for building, configuring and running Monado, the open source OpenXR runtime. Available as [programs.envision](#opt-programs.envision.enable).
|
||||
|
||||
- [Playerctld](https://github.com/altdesktop/playerctl), a daemon to track media player activity. Available as [services.playerctld](option.html#opt-services.playerctld).
|
||||
|
||||
## Backward Incompatibilities {#sec-release-24.11-incompatibilities}
|
||||
@@ -87,6 +92,10 @@
|
||||
|
||||
- `services.ddclient.use` has been deprecated: `ddclient` now supports separate IPv4 and IPv6 configuration. Use `services.ddclient.usev4` and `services.ddclient.usev6` instead.
|
||||
|
||||
- `teleport` has been upgraded from major version 15 to major version 16.
|
||||
Refer to upstream [upgrade instructions](https://goteleport.com/docs/management/operations/upgrading/)
|
||||
and [release notes for v16](https://goteleport.com/docs/changelog/#1600-061324).
|
||||
|
||||
- `vaultwarden` lost the capability to bind to privileged ports. If you rely on
|
||||
this behavior, override the systemd unit to allow `CAP_NET_BIND_SERVICE` in
|
||||
your local configuration.
|
||||
@@ -172,6 +181,10 @@
|
||||
- The `services.prometheus.exporters.minio` option has been removed, as it's upstream implementation was broken and unmaintained.
|
||||
Minio now has built-in [Prometheus metrics exposure](https://min.io/docs/minio/linux/operations/monitoring/collect-minio-metrics-using-prometheus.html), which can be used instead.
|
||||
|
||||
- The `services.patroni.raft` option has been removed, as Raft has been [deprecated by upstream since 3.0.0](https://github.com/patroni/patroni/blob/master/docs/releases.rst#version-300)
|
||||
|
||||
- `services.roundcube.maxAttachmentSize` will multiply the value set with `1.37` to offset overhead introduced by the base64 encoding applied to attachments.
|
||||
|
||||
## Other Notable Changes {#sec-release-24.11-notable-changes}
|
||||
|
||||
<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
|
||||
@@ -195,6 +208,9 @@
|
||||
The derivation now installs "impl" headers selectively instead of by a wildcard.
|
||||
Use `imgui.src` if you just want to access the unpacked sources.
|
||||
|
||||
- `security.pam.u2f` now follows RFC42.
|
||||
All module options are now settable through the freeform `.settings`.
|
||||
|
||||
- Cinnamon has been updated to 6.2.
|
||||
- Following Mint 22 defaults, the Cinnamon module no longer ships geary and hexchat by default.
|
||||
- Nemo is now built with gtk-layer-shell support, note that for now it will be expected to see nemo-desktop
|
||||
|
||||
@@ -180,6 +180,7 @@
|
||||
./programs/dublin-traceroute.nix
|
||||
./programs/ecryptfs.nix
|
||||
./programs/environment.nix
|
||||
./programs/envision.nix
|
||||
./programs/evince.nix
|
||||
./programs/extra-container.nix
|
||||
./programs/fcast-receiver.nix
|
||||
@@ -1369,6 +1370,7 @@
|
||||
./services/web-apps/documize.nix
|
||||
./services/web-apps/dokuwiki.nix
|
||||
./services/web-apps/dolibarr.nix
|
||||
./services/web-apps/eintopf.nix
|
||||
./services/web-apps/engelsystem.nix
|
||||
./services/web-apps/ethercalc.nix
|
||||
./services/web-apps/filesender.nix
|
||||
|
||||
@@ -6,12 +6,4 @@
|
||||
{
|
||||
boot.initrd.availableKernelModules = [ "virtio_net" "virtio_pci" "virtio_mmio" "virtio_blk" "virtio_scsi" "9p" "9pnet_virtio" ];
|
||||
boot.initrd.kernelModules = [ "virtio_balloon" "virtio_console" "virtio_rng" ];
|
||||
|
||||
boot.initrd.postDeviceCommands = lib.mkIf (!config.boot.initrd.systemd.enable)
|
||||
''
|
||||
# Set the system time from the hardware clock to work around a
|
||||
# bug in qemu-kvm > 1.5.2 (where the VM clock is initialised
|
||||
# to the *boot time* of the host).
|
||||
hwclock -s
|
||||
'';
|
||||
}
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
cfg = config.programs.envision;
|
||||
in
|
||||
{
|
||||
|
||||
options = {
|
||||
programs.envision = {
|
||||
enable = lib.mkEnableOption "envision";
|
||||
|
||||
package = lib.mkPackageOption pkgs "envision" {};
|
||||
|
||||
openFirewall = lib.mkEnableOption "the default ports in the firewall for the WiVRn server" // {
|
||||
default = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
services.avahi = {
|
||||
enable = true;
|
||||
publish = {
|
||||
enable = true;
|
||||
userServices = true;
|
||||
};
|
||||
};
|
||||
|
||||
environment.systemPackages = [ cfg.package ];
|
||||
|
||||
networking.firewall = lib.mkIf cfg.openFirewall {
|
||||
allowedTCPPorts = [ 9757 ];
|
||||
allowedUDPPorts = [ 9757 ];
|
||||
};
|
||||
};
|
||||
|
||||
meta.maintainers = pkgs.envision.meta.maintainers;
|
||||
}
|
||||
+111
-82
@@ -7,6 +7,13 @@ with lib;
|
||||
|
||||
let
|
||||
|
||||
moduleSettingsType = with types; attrsOf (nullOr (oneOf [ bool str int pathInStore ]));
|
||||
moduleSettingsDescription = ''
|
||||
Boolean values render just the key if true, and nothing if false.
|
||||
Null values are ignored.
|
||||
All other values are rendered as key-value pairs.
|
||||
'';
|
||||
|
||||
mkRulesTypeOption = type: mkOption {
|
||||
# These options are experimental and subject to breaking changes without notice.
|
||||
description = ''
|
||||
@@ -71,12 +78,12 @@ let
|
||||
'';
|
||||
};
|
||||
settings = mkOption {
|
||||
type = with types; attrsOf (nullOr (oneOf [ bool str int pathInStore ]));
|
||||
type = moduleSettingsType;
|
||||
default = {};
|
||||
description = ''
|
||||
Settings to add as `module-arguments`.
|
||||
|
||||
Boolean values render just the key if true, and nothing if false. Null values are ignored. All other values are rendered as key-value pairs.
|
||||
${moduleSettingsDescription}
|
||||
'';
|
||||
};
|
||||
};
|
||||
@@ -660,11 +667,7 @@ let
|
||||
(let p11 = config.security.pam.p11; in { name = "p11"; enable = cfg.p11Auth; control = p11.control; modulePath = "${pkgs.pam_p11}/lib/security/pam_p11.so"; args = [
|
||||
"${pkgs.opensc}/lib/opensc-pkcs11.so"
|
||||
]; })
|
||||
(let u2f = config.security.pam.u2f; in { name = "u2f"; enable = cfg.u2fAuth; control = u2f.control; modulePath = "${pkgs.pam_u2f}/lib/security/pam_u2f.so"; settings = {
|
||||
inherit (u2f) debug interactive cue origin;
|
||||
authfile = u2f.authFile;
|
||||
appid = u2f.appId;
|
||||
}; })
|
||||
(let u2f = config.security.pam.u2f; in { name = "u2f"; enable = cfg.u2fAuth; control = u2f.control; modulePath = "${pkgs.pam_u2f}/lib/security/pam_u2f.so"; inherit (u2f) settings; })
|
||||
(let ussh = config.security.pam.ussh; in { name = "ussh"; enable = config.security.pam.ussh.enable && cfg.usshAuth; control = ussh.control; modulePath = "${pkgs.pam_ussh}/lib/security/pam_ussh.so"; settings = {
|
||||
ca_file = ussh.caFile;
|
||||
authorized_principals = ussh.authorizedPrincipals;
|
||||
@@ -952,6 +955,12 @@ in
|
||||
imports = [
|
||||
(mkRenamedOptionModule [ "security" "pam" "enableU2F" ] [ "security" "pam" "u2f" "enable" ])
|
||||
(mkRenamedOptionModule [ "security" "pam" "enableSSHAgentAuth" ] [ "security" "pam" "sshAgentAuth" "enable" ])
|
||||
(mkRenamedOptionModule [ "security" "pam" "u2f" "authFile" ] [ "security" "pam" "u2f" "settings" "authfile" ])
|
||||
(mkRenamedOptionModule [ "security" "pam" "u2f" "appId" ] [ "security" "pam" "u2f" "settings" "appid" ])
|
||||
(mkRenamedOptionModule [ "security" "pam" "u2f" "origin" ] [ "security" "pam" "u2f" "settings" "origin" ])
|
||||
(mkRenamedOptionModule [ "security" "pam" "u2f" "debug" ] [ "security" "pam" "u2f" "settings" "debug" ])
|
||||
(mkRenamedOptionModule [ "security" "pam" "u2f" "interactive" ] [ "security" "pam" "u2f" "settings" "interactive" ])
|
||||
(mkRenamedOptionModule [ "security" "pam" "u2f" "cue" ] [ "security" "pam" "u2f" "settings" "cue" ])
|
||||
];
|
||||
|
||||
###### interface
|
||||
@@ -1144,57 +1153,6 @@ in
|
||||
'';
|
||||
};
|
||||
|
||||
authFile = mkOption {
|
||||
default = null;
|
||||
type = with types; nullOr path;
|
||||
description = ''
|
||||
By default `pam-u2f` module reads the keys from
|
||||
{file}`$XDG_CONFIG_HOME/Yubico/u2f_keys` (or
|
||||
{file}`$HOME/.config/Yubico/u2f_keys` if XDG variable is
|
||||
not set).
|
||||
|
||||
If you want to change auth file locations or centralize database (for
|
||||
example use {file}`/etc/u2f-mappings`) you can set this
|
||||
option.
|
||||
|
||||
File format is:
|
||||
`username:first_keyHandle,first_public_key: second_keyHandle,second_public_key`
|
||||
This file can be generated using {command}`pamu2fcfg` command.
|
||||
|
||||
More information can be found [here](https://developers.yubico.com/pam-u2f/).
|
||||
'';
|
||||
};
|
||||
|
||||
appId = mkOption {
|
||||
default = null;
|
||||
type = with types; nullOr str;
|
||||
description = ''
|
||||
By default `pam-u2f` module sets the application
|
||||
ID to `pam://$HOSTNAME`.
|
||||
|
||||
When using {command}`pamu2fcfg`, you can specify your
|
||||
application ID with the `-i` flag.
|
||||
|
||||
More information can be found [here](https://developers.yubico.com/pam-u2f/Manuals/pam_u2f.8.html)
|
||||
'';
|
||||
};
|
||||
|
||||
origin = mkOption {
|
||||
default = null;
|
||||
type = with types; nullOr str;
|
||||
description = ''
|
||||
By default `pam-u2f` module sets the origin
|
||||
to `pam://$HOSTNAME`.
|
||||
Setting origin to an host independent value will allow you to
|
||||
reuse credentials across machines
|
||||
|
||||
When using {command}`pamu2fcfg`, you can specify your
|
||||
application ID with the `-o` flag.
|
||||
|
||||
More information can be found [here](https://developers.yubico.com/pam-u2f/Manuals/pam_u2f.8.html)
|
||||
'';
|
||||
};
|
||||
|
||||
control = mkOption {
|
||||
default = "sufficient";
|
||||
type = types.enum [ "required" "requisite" "sufficient" "optional" ];
|
||||
@@ -1209,33 +1167,104 @@ in
|
||||
'';
|
||||
};
|
||||
|
||||
debug = mkOption {
|
||||
default = false;
|
||||
type = types.bool;
|
||||
description = ''
|
||||
Debug output to stderr.
|
||||
'';
|
||||
};
|
||||
settings = mkOption {
|
||||
type = types.submodule {
|
||||
freeformType = moduleSettingsType;
|
||||
|
||||
interactive = mkOption {
|
||||
default = false;
|
||||
type = types.bool;
|
||||
description = ''
|
||||
Set to prompt a message and wait before testing the presence of a U2F device.
|
||||
Recommended if your device doesn’t have a tactile trigger.
|
||||
'';
|
||||
};
|
||||
options = {
|
||||
authfile = mkOption {
|
||||
default = null;
|
||||
type = with types; nullOr path;
|
||||
description = ''
|
||||
By default `pam-u2f` module reads the keys from
|
||||
{file}`$XDG_CONFIG_HOME/Yubico/u2f_keys` (or
|
||||
{file}`$HOME/.config/Yubico/u2f_keys` if XDG variable is
|
||||
not set).
|
||||
|
||||
cue = mkOption {
|
||||
default = false;
|
||||
type = types.bool;
|
||||
description = ''
|
||||
By default `pam-u2f` module does not inform user
|
||||
that he needs to use the u2f device, it just waits without a prompt.
|
||||
If you want to change auth file locations or centralize database (for
|
||||
example use {file}`/etc/u2f-mappings`) you can set this
|
||||
option.
|
||||
|
||||
If you set this option to `true`,
|
||||
`cue` option is added to `pam-u2f`
|
||||
module and reminder message will be displayed.
|
||||
File format is:
|
||||
`username:first_keyHandle,first_public_key: second_keyHandle,second_public_key`
|
||||
This file can be generated using {command}`pamu2fcfg` command.
|
||||
|
||||
More information can be found [here](https://developers.yubico.com/pam-u2f/).
|
||||
'';
|
||||
};
|
||||
|
||||
appid = mkOption {
|
||||
default = null;
|
||||
type = with types; nullOr str;
|
||||
description = ''
|
||||
By default `pam-u2f` module sets the application
|
||||
ID to `pam://$HOSTNAME`.
|
||||
|
||||
When using {command}`pamu2fcfg`, you can specify your
|
||||
application ID with the `-i` flag.
|
||||
|
||||
More information can be found [here](https://developers.yubico.com/pam-u2f/Manuals/pam_u2f.8.html)
|
||||
'';
|
||||
};
|
||||
|
||||
origin = mkOption {
|
||||
default = null;
|
||||
type = with types; nullOr str;
|
||||
description = ''
|
||||
By default `pam-u2f` module sets the origin
|
||||
to `pam://$HOSTNAME`.
|
||||
Setting origin to an host independent value will allow you to
|
||||
reuse credentials across machines
|
||||
|
||||
When using {command}`pamu2fcfg`, you can specify your
|
||||
application ID with the `-o` flag.
|
||||
|
||||
More information can be found [here](https://developers.yubico.com/pam-u2f/Manuals/pam_u2f.8.html)
|
||||
'';
|
||||
};
|
||||
|
||||
debug = mkOption {
|
||||
default = false;
|
||||
type = types.bool;
|
||||
description = ''
|
||||
Debug output to stderr.
|
||||
'';
|
||||
};
|
||||
|
||||
interactive = mkOption {
|
||||
default = false;
|
||||
type = types.bool;
|
||||
description = ''
|
||||
Set to prompt a message and wait before testing the presence of a U2F device.
|
||||
Recommended if your device doesn’t have a tactile trigger.
|
||||
'';
|
||||
};
|
||||
|
||||
cue = mkOption {
|
||||
default = false;
|
||||
type = types.bool;
|
||||
description = ''
|
||||
By default `pam-u2f` module does not inform user
|
||||
that he needs to use the u2f device, it just waits without a prompt.
|
||||
|
||||
If you set this option to `true`,
|
||||
`cue` option is added to `pam-u2f`
|
||||
module and reminder message will be displayed.
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
default = { };
|
||||
example = {
|
||||
authfile = "/etc/u2f_keys";
|
||||
authpending_file = "";
|
||||
userpresence = 0;
|
||||
pinverification = 1;
|
||||
};
|
||||
description = ''
|
||||
Options to pass to the PAM module.
|
||||
|
||||
${moduleSettingsDescription}
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
@@ -10,6 +10,15 @@ let
|
||||
configFile = format.generate configFileName cfg.settings;
|
||||
in
|
||||
{
|
||||
imports = [
|
||||
(lib.mkRemovedOptionModule [ "services" "patroni" "raft" ] ''
|
||||
Raft has been deprecated by upstream.
|
||||
'')
|
||||
(lib.mkRemovedOptionModule [ "services" "patroni" "raftPort" ] ''
|
||||
Raft has been deprecated by upstream.
|
||||
'')
|
||||
];
|
||||
|
||||
options.services.patroni = {
|
||||
|
||||
enable = mkEnableOption "Patroni";
|
||||
@@ -68,7 +77,7 @@ in
|
||||
type = types.path;
|
||||
default = "/var/lib/patroni";
|
||||
description = ''
|
||||
Folder where Patroni data will be written, used by Raft as well if enabled.
|
||||
Folder where Patroni data will be written, this is where the pgpass password file will be written.
|
||||
'';
|
||||
};
|
||||
|
||||
@@ -120,22 +129,6 @@ in
|
||||
'';
|
||||
};
|
||||
|
||||
raft = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
This will configure Patroni to use its own RAFT implementation instead of using a dedicated DCS.
|
||||
'';
|
||||
};
|
||||
|
||||
raftPort = mkOption {
|
||||
type = types.port;
|
||||
default = 5010;
|
||||
description = ''
|
||||
The port on which RAFT listens.
|
||||
'';
|
||||
};
|
||||
|
||||
softwareWatchdog = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
@@ -178,12 +171,6 @@ in
|
||||
connect_address = "${cfg.nodeIp}:${toString cfg.restApiPort}";
|
||||
};
|
||||
|
||||
raft = mkIf cfg.raft {
|
||||
data_dir = "${cfg.dataDir}/raft";
|
||||
self_addr = "${cfg.nodeIp}:5010";
|
||||
partner_addrs = map (ip: ip + ":5010") cfg.otherNodesIps;
|
||||
};
|
||||
|
||||
postgresql = {
|
||||
listen = "${cfg.nodeIp}:${toString cfg.postgresqlPort}";
|
||||
connect_address = "${cfg.nodeIp}:${toString cfg.postgresqlPort}";
|
||||
@@ -235,7 +222,7 @@ in
|
||||
KillMode = "process";
|
||||
}
|
||||
(mkIf (cfg.postgresqlDataDir == "/var/lib/postgresql/${cfg.postgresqlPackage.psqlSchema}" && cfg.dataDir == "/var/lib/patroni") {
|
||||
StateDirectory = "patroni patroni/raft postgresql postgresql/${cfg.postgresqlPackage.psqlSchema}";
|
||||
StateDirectory = "patroni postgresql postgresql/${cfg.postgresqlPackage.psqlSchema}";
|
||||
StateDirectoryMode = "0750";
|
||||
})
|
||||
];
|
||||
@@ -251,7 +238,6 @@ in
|
||||
environment.systemPackages = [
|
||||
pkgs.patroni
|
||||
cfg.postgresqlPackage
|
||||
(mkIf cfg.raft pkgs.python310Packages.pysyncobj)
|
||||
];
|
||||
|
||||
environment.etc."${configFileName}".source = configFile;
|
||||
|
||||
@@ -137,8 +137,10 @@ let
|
||||
"--builds-dir ${service.buildsDir}"
|
||||
++ optional (service.cloneUrl != null)
|
||||
"--clone-url ${service.cloneUrl}"
|
||||
++ optional (service.preCloneScript != null)
|
||||
"--pre-clone-script ${service.preCloneScript}"
|
||||
++ optional (service.preGetSourcesScript != null)
|
||||
"--pre-get-sources-script ${service.preGetSourcesScript}"
|
||||
++ optional (service.postGetSourcesScript != null)
|
||||
"--post-get-sources-script ${service.postGetSourcesScript}"
|
||||
++ optional (service.preBuildScript != null)
|
||||
"--pre-build-script ${service.preBuildScript}"
|
||||
++ optional (service.postBuildScript != null)
|
||||
@@ -495,13 +497,20 @@ in {
|
||||
Whitelist allowed services.
|
||||
'';
|
||||
};
|
||||
preCloneScript = mkOption {
|
||||
preGetSourcesScript = mkOption {
|
||||
type = types.nullOr types.path;
|
||||
default = null;
|
||||
description = ''
|
||||
Runner-specific command script executed before code is pulled.
|
||||
'';
|
||||
};
|
||||
postGetSourcesScript = mkOption {
|
||||
type = types.nullOr types.path;
|
||||
default = null;
|
||||
description = ''
|
||||
Runner-specific command script executed after code is pulled.
|
||||
'';
|
||||
};
|
||||
preBuildScript = mkOption {
|
||||
type = types.nullOr types.path;
|
||||
default = null;
|
||||
|
||||
@@ -6,7 +6,7 @@ let
|
||||
cfg = config.services.monetdb;
|
||||
|
||||
in {
|
||||
meta.maintainers = with maintainers; [ StillerHarpo primeos ];
|
||||
meta.maintainers = with maintainers; [ StillerHarpo ];
|
||||
|
||||
###### interface
|
||||
options = {
|
||||
|
||||
@@ -93,13 +93,17 @@ in
|
||||
maxAttachmentSize = mkOption {
|
||||
type = types.int;
|
||||
default = 18;
|
||||
apply = configuredMaxAttachmentSize: "${toString (configuredMaxAttachmentSize * 1.37)}M";
|
||||
description = ''
|
||||
The maximum attachment size in MB.
|
||||
|
||||
Note: Since roundcube only uses 70% of max upload values configured in php
|
||||
30% is added automatically to [](#opt-services.roundcube.maxAttachmentSize).
|
||||
[upstream issue comment]: https://github.com/roundcube/roundcubemail/issues/7979#issuecomment-808879209
|
||||
::: {.note}
|
||||
Since there is some overhead in base64 encoding applied to attachments, + 37% will be added
|
||||
to the value set in this option in order to offset the overhead. For example, setting
|
||||
`maxAttachmentSize` to `100` would result in `137M` being the real value in the configuration.
|
||||
See [upstream issue comment] for more details on the motivations behind this.
|
||||
:::
|
||||
'';
|
||||
apply = configuredMaxAttachmentSize: "${toString (configuredMaxAttachmentSize * 1.3)}M";
|
||||
};
|
||||
|
||||
configureNginx = lib.mkOption {
|
||||
|
||||
@@ -62,6 +62,9 @@ in
|
||||
description = "DICT.org Dictionary Server";
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
environment = { LOCALE_ARCHIVE = "/run/current-system/sw/lib/locale/locale-archive"; };
|
||||
# Work around the fact that dictd doesn't handle SIGTERM; it terminates
|
||||
# with code 143 instead of exiting with code 0.
|
||||
serviceConfig.SuccessExitStatus = [ 143 ];
|
||||
serviceConfig.Type = "forking";
|
||||
script = "${pkgs.dict}/sbin/dictd -s -c ${dictdb}/share/dictd/dictd.conf --locale en_US.UTF-8";
|
||||
};
|
||||
|
||||
@@ -9,6 +9,7 @@ in
|
||||
|
||||
options.services.jellyseerr = {
|
||||
enable = mkEnableOption ''Jellyseerr, a requests manager for Jellyfin'';
|
||||
package = mkPackageOption pkgs "jellyseerr" { };
|
||||
|
||||
openFirewall = mkOption {
|
||||
type = types.bool;
|
||||
@@ -32,10 +33,10 @@ in
|
||||
serviceConfig = {
|
||||
Type = "exec";
|
||||
StateDirectory = "jellyseerr";
|
||||
WorkingDirectory = "${pkgs.jellyseerr}/libexec/jellyseerr/deps/jellyseerr";
|
||||
WorkingDirectory = "${cfg.package}/libexec/jellyseerr/deps/jellyseerr";
|
||||
DynamicUser = true;
|
||||
ExecStart = "${pkgs.jellyseerr}/bin/jellyseerr";
|
||||
BindPaths = [ "/var/lib/jellyseerr/:${pkgs.jellyseerr}/libexec/jellyseerr/deps/jellyseerr/config/" ];
|
||||
ExecStart = lib.getExe cfg.package;
|
||||
BindPaths = [ "/var/lib/jellyseerr/:${cfg.package}/libexec/jellyseerr/deps/jellyseerr/config/" ];
|
||||
Restart = "on-failure";
|
||||
ProtectHome = true;
|
||||
ProtectSystem = "strict";
|
||||
|
||||
@@ -96,48 +96,48 @@ let
|
||||
};
|
||||
|
||||
TIMELINE_LIMIT_HOURLY = mkOption {
|
||||
type = types.str;
|
||||
default = "10";
|
||||
type = types.int;
|
||||
default = 10;
|
||||
description = ''
|
||||
Limits for timeline cleanup.
|
||||
'';
|
||||
};
|
||||
|
||||
TIMELINE_LIMIT_DAILY = mkOption {
|
||||
type = types.str;
|
||||
default = "10";
|
||||
type = types.int;
|
||||
default = 10;
|
||||
description = ''
|
||||
Limits for timeline cleanup.
|
||||
'';
|
||||
};
|
||||
|
||||
TIMELINE_LIMIT_WEEKLY = mkOption {
|
||||
type = types.str;
|
||||
default = "0";
|
||||
type = types.int;
|
||||
default = 0;
|
||||
description = ''
|
||||
Limits for timeline cleanup.
|
||||
'';
|
||||
};
|
||||
|
||||
TIMELINE_LIMIT_MONTHLY = mkOption {
|
||||
type = types.str;
|
||||
default = "10";
|
||||
type = types.int;
|
||||
default = 10;
|
||||
description = ''
|
||||
Limits for timeline cleanup.
|
||||
'';
|
||||
};
|
||||
|
||||
TIMELINE_LIMIT_QUARTERLY = mkOption {
|
||||
type = types.str;
|
||||
default = "0";
|
||||
type = types.int;
|
||||
default = 0;
|
||||
description = ''
|
||||
Limits for timeline cleanup.
|
||||
'';
|
||||
};
|
||||
|
||||
TIMELINE_LIMIT_YEARLY = mkOption {
|
||||
type = types.str;
|
||||
default = "10";
|
||||
type = types.int;
|
||||
default = 10;
|
||||
description = ''
|
||||
Limits for timeline cleanup.
|
||||
'';
|
||||
@@ -353,4 +353,6 @@ in
|
||||
) (attrNames cfg.configs);
|
||||
}
|
||||
);
|
||||
|
||||
meta.maintainers = with lib.maintainers; [ Djabx ];
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{ config, pkgs, lib, ... }:
|
||||
{ config, pkgs, lib, utils, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
@@ -54,7 +54,11 @@ in
|
||||
Type = "simple";
|
||||
User = cfg.user;
|
||||
Group = cfg.group;
|
||||
ExecStart = "${cfg.package}/bin/NzbDrone -nobrowser -data='${cfg.dataDir}'";
|
||||
ExecStart = utils.escapeSystemdExecArgs [
|
||||
(lib.getExe cfg.package)
|
||||
"-nobrowser"
|
||||
"-data=${cfg.dataDir}"
|
||||
];
|
||||
Restart = "on-failure";
|
||||
};
|
||||
};
|
||||
|
||||
@@ -28,6 +28,16 @@ in
|
||||
'';
|
||||
};
|
||||
|
||||
frequency = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
default = "*:0/5";
|
||||
description = ''
|
||||
Run cloudflare-dyndns with the given frequency (see
|
||||
{manpage}`systemd.time(7)` for the format).
|
||||
If null, do not run automatically.
|
||||
'';
|
||||
};
|
||||
|
||||
proxied = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
@@ -67,7 +77,6 @@ in
|
||||
description = "CloudFlare Dynamic DNS Client";
|
||||
after = [ "network.target" ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
startAt = "*:0/5";
|
||||
|
||||
environment = {
|
||||
CLOUDFLARE_DOMAINS = toString cfg.domains;
|
||||
@@ -88,6 +97,8 @@ in
|
||||
in
|
||||
"${pkgs.cloudflare-dyndns}/bin/cloudflare-dyndns ${toString args}";
|
||||
};
|
||||
} // optionalAttrs (cfg.frequency != null) {
|
||||
startAt = cfg.frequency;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -266,6 +266,13 @@ let
|
||||
else if builtins.isList x then "{ ${lib.concatMapStringsSep ", " toLua x} }"
|
||||
else throw "Invalid Lua value";
|
||||
|
||||
settingsToLua = prefix: settings: generators.toKeyValue {
|
||||
listsAsDuplicateKeys = false;
|
||||
mkKeyValue = k: generators.mkKeyValueDefault {
|
||||
mkValueString = toLua;
|
||||
} " = " (prefix + k);
|
||||
} (filterAttrs (k: v: v != null) settings);
|
||||
|
||||
createSSLOptsStr = o: ''
|
||||
ssl = {
|
||||
cafile = "/etc/ssl/certs/ca-bundle.crt";
|
||||
@@ -418,15 +425,26 @@ let
|
||||
httpUploadPath = mkOption {
|
||||
type = types.str;
|
||||
description = ''
|
||||
Directory where the uploaded files will be stored. By
|
||||
default, uploaded files are put in a sub-directory of the
|
||||
default Prosody storage path (usually /var/lib/prosody).
|
||||
Directory where the uploaded files will be stored when the http_upload module is used.
|
||||
By default, uploaded files are put in a sub-directory of the default Prosody storage path (usually /var/lib/prosody).
|
||||
'';
|
||||
default = "/var/lib/prosody";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
httpFileShareOpts = { ... }: {
|
||||
freeformType = with types;
|
||||
let atom = oneOf [ int bool str (listOf atom) ]; in
|
||||
attrsOf (nullOr atom) // {
|
||||
description = "int, bool, string or list of them";
|
||||
};
|
||||
options.domain = mkOption {
|
||||
type = with types; nullOr str;
|
||||
description = "Domain name for a http_file_share service.";
|
||||
};
|
||||
};
|
||||
|
||||
vHostOpts = { ... }: {
|
||||
|
||||
options = {
|
||||
@@ -650,7 +668,7 @@ in
|
||||
|
||||
uploadHttp = mkOption {
|
||||
description = ''
|
||||
Configures the Prosody builtin HTTP server to handle user uploads.
|
||||
Configures the old Prosody builtin HTTP server to handle user uploads.
|
||||
'';
|
||||
type = types.nullOr (types.submodule uploadHttpOpts);
|
||||
default = null;
|
||||
@@ -659,6 +677,17 @@ in
|
||||
};
|
||||
};
|
||||
|
||||
httpFileShare = mkOption {
|
||||
description = ''
|
||||
Configures the http_file_share module to handle user uploads.
|
||||
'';
|
||||
type = types.nullOr (types.submodule httpFileShareOpts);
|
||||
default = null;
|
||||
example = {
|
||||
domain = "uploads.my-xmpp-example-host.org";
|
||||
};
|
||||
};
|
||||
|
||||
muc = mkOption {
|
||||
type = types.listOf (types.submodule mucOpts);
|
||||
default = [ ];
|
||||
@@ -751,11 +780,10 @@ in
|
||||
You need to setup at least a MUC domain to comply with
|
||||
XEP-0423.
|
||||
'' + genericErrMsg;}
|
||||
{ assertion = cfg.uploadHttp != null || !cfg.xmppComplianceSuite;
|
||||
{ assertion = cfg.uploadHttp != null || cfg.httpFileShare != null || !cfg.xmppComplianceSuite;
|
||||
message = ''
|
||||
You need to setup the uploadHttp module through
|
||||
config.services.prosody.uploadHttp to comply with
|
||||
XEP-0423.
|
||||
You need to setup the http_upload or http_file_share modules through config.services.prosody.uploadHttp
|
||||
or config.services.prosody.httpFileShare to comply with XEP-0423.
|
||||
'' + genericErrMsg;}
|
||||
];
|
||||
in errors;
|
||||
@@ -764,8 +792,11 @@ in
|
||||
|
||||
environment.etc."prosody/prosody.cfg.lua".text =
|
||||
let
|
||||
httpDiscoItems = optionals (cfg.uploadHttp != null)
|
||||
[{ url = cfg.uploadHttp.domain; description = "HTTP upload endpoint";}];
|
||||
httpDiscoItems = optional (cfg.uploadHttp != null) {
|
||||
url = cfg.uploadHttp.domain; description = "HTTP upload endpoint";
|
||||
} ++ optional (cfg.httpFileShare != null) {
|
||||
url = cfg.httpFileShare.domain; description = "HTTP file share endpoint";
|
||||
};
|
||||
mucDiscoItems = builtins.foldl'
|
||||
(acc: muc: [{ url = muc.domain; description = "${muc.domain} MUC endpoint";}] ++ acc)
|
||||
[]
|
||||
@@ -844,7 +875,6 @@ in
|
||||
'') cfg.muc}
|
||||
|
||||
${ lib.optionalString (cfg.uploadHttp != null) ''
|
||||
-- TODO: think about migrating this to mod-http_file_share instead.
|
||||
Component ${toLua cfg.uploadHttp.domain} "http_upload"
|
||||
http_upload_file_size_limit = ${cfg.uploadHttp.uploadFileSizeLimit}
|
||||
http_upload_expire_after = ${cfg.uploadHttp.uploadExpireAfter}
|
||||
@@ -852,6 +882,11 @@ in
|
||||
http_upload_path = ${toLua cfg.uploadHttp.httpUploadPath}
|
||||
''}
|
||||
|
||||
${lib.optionalString (cfg.httpFileShare != null) ''
|
||||
Component ${toLua cfg.httpFileShare.domain} "http_file_share"
|
||||
${settingsToLua " http_file_share_" (cfg.httpFileShare // { domain = null; })}
|
||||
''}
|
||||
|
||||
${ lib.concatStringsSep "\n" (lib.mapAttrsToList (n: v: ''
|
||||
VirtualHost "${v.domain}"
|
||||
enabled = ${boolToString v.enabled};
|
||||
|
||||
@@ -10,7 +10,7 @@ let
|
||||
'';
|
||||
|
||||
in {
|
||||
meta.maintainers = with maintainers; [ primeos calbrecht jcumming ];
|
||||
meta.maintainers = with maintainers; [ calbrecht jcumming ];
|
||||
|
||||
options = {
|
||||
|
||||
|
||||
@@ -0,0 +1,92 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
with lib;
|
||||
|
||||
let
|
||||
|
||||
cfg = config.services.eintopf;
|
||||
|
||||
in {
|
||||
options.services.eintopf = {
|
||||
|
||||
enable = mkEnableOption "Eintopf community event calendar web app";
|
||||
|
||||
settings = mkOption {
|
||||
type = types.attrsOf types.str;
|
||||
default = { };
|
||||
description = ''
|
||||
Settings to configure web service. See
|
||||
<https://codeberg.org/Klasse-Methode/eintopf/src/branch/main/DEPLOYMENT.md>
|
||||
for available options.
|
||||
'';
|
||||
example = literalExpression ''
|
||||
{
|
||||
EINTOPF_ADDR = ":1234";
|
||||
EINTOPF_ADMIN_EMAIL = "admin@example.org";
|
||||
EINTOPF_TIMEZONE = "Europe/Berlin";
|
||||
}
|
||||
'';
|
||||
};
|
||||
|
||||
secrets = lib.mkOption {
|
||||
type = with types; listOf path;
|
||||
description = ''
|
||||
A list of files containing the various secrets. Should be in the
|
||||
format expected by systemd's `EnvironmentFile` directory.
|
||||
'';
|
||||
default = [ ];
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
|
||||
systemd.services.eintopf = {
|
||||
description = "Community event calendar web app";
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
after = [ "network-online.target" ];
|
||||
wants = [ "network-online.target" ];
|
||||
environment = cfg.settings;
|
||||
serviceConfig = {
|
||||
ExecStart = "${pkgs.eintopf}/bin/eintopf";
|
||||
WorkingDirectory = "/var/lib/eintopf";
|
||||
StateDirectory = "eintopf" ;
|
||||
EnvironmentFile = [ cfg.secrets ];
|
||||
|
||||
# hardening
|
||||
AmbientCapabilities = "";
|
||||
CapabilityBoundingSet = "" ;
|
||||
DevicePolicy = "closed";
|
||||
DynamicUser = true;
|
||||
LockPersonality = true;
|
||||
MemoryDenyWriteExecute = true;
|
||||
NoNewPrivileges = true;
|
||||
PrivateDevices = true;
|
||||
PrivateTmp = true;
|
||||
PrivateUsers = true;
|
||||
ProcSubset = "pid";
|
||||
ProtectClock = true;
|
||||
ProtectControlGroups = true;
|
||||
ProtectHome = true;
|
||||
ProtectHostname = true;
|
||||
ProtectKernelLogs = true;
|
||||
ProtectKernelModules = true;
|
||||
ProtectKernelTunables = true;
|
||||
ProtectProc = "invisible";
|
||||
ProtectSystem = "strict";
|
||||
RemoveIPC = true;
|
||||
RestrictAddressFamilies = [ "AF_INET" "AF_INET6" ];
|
||||
RestrictNamespaces = true;
|
||||
RestrictRealtime = true;
|
||||
RestrictSUIDSGID = true;
|
||||
SystemCallArchitectures = "native";
|
||||
SystemCallFilter = [ "@system-service" "~@privileged" ];
|
||||
UMask = "0077";
|
||||
};
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
meta.maintainers = with lib.maintainers; [ onny ];
|
||||
|
||||
}
|
||||
@@ -91,10 +91,10 @@ let
|
||||
cd ${webroot}
|
||||
sudo=exec
|
||||
if [[ "$USER" != nextcloud ]]; then
|
||||
sudo='exec /run/wrappers/bin/sudo -u nextcloud --preserve-env=NEXTCLOUD_CONFIG_DIR --preserve-env=OC_PASS'
|
||||
sudo='exec /run/wrappers/bin/sudo -u nextcloud'
|
||||
fi
|
||||
export NEXTCLOUD_CONFIG_DIR="${datadir}/config"
|
||||
$sudo \
|
||||
$sudo ${pkgs.coreutils}/bin/env \
|
||||
NEXTCLOUD_CONFIG_DIR="${datadir}/config" \
|
||||
${phpCli} \
|
||||
occ "$@"
|
||||
'';
|
||||
|
||||
@@ -538,25 +538,13 @@ in
|
||||
'';
|
||||
};
|
||||
|
||||
enableMellon = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "Whether to enable the mod_auth_mellon module.";
|
||||
};
|
||||
enableMellon = mkEnableOption "the mod_auth_mellon module";
|
||||
|
||||
enablePHP = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "Whether to enable the PHP module.";
|
||||
};
|
||||
enablePHP = mkEnableOption "the PHP module";
|
||||
|
||||
phpPackage = mkPackageOption pkgs "php" { };
|
||||
|
||||
enablePerl = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = "Whether to enable the Perl module (mod_perl).";
|
||||
};
|
||||
enablePerl = mkEnableOption "the Perl module (mod_perl)";
|
||||
|
||||
phpOptions = mkOption {
|
||||
type = types.lines;
|
||||
|
||||
@@ -119,10 +119,12 @@ let
|
||||
"VNetHeader"
|
||||
"User"
|
||||
"Group"
|
||||
"KeepCarrier"
|
||||
])
|
||||
(assertValueOneOf "MultiQueue" boolValues)
|
||||
(assertValueOneOf "PacketInfo" boolValues)
|
||||
(assertValueOneOf "VNetHeader" boolValues)
|
||||
(assertValueOneOf "KeepCarrier" boolValues)
|
||||
];
|
||||
|
||||
# See https://www.freedesktop.org/software/systemd/man/latest/systemd.netdev.html#%5BIPVTAP%5D%20Section%20Options
|
||||
@@ -632,6 +634,7 @@ let
|
||||
"LinkLocalAddressing"
|
||||
"IPv6LinkLocalAddressGenerationMode"
|
||||
"IPv6StableSecretAddress"
|
||||
"IPv4LLStartAddress"
|
||||
"IPv4LLRoute"
|
||||
"DefaultRouteOnDevice"
|
||||
"LLMNR"
|
||||
@@ -654,12 +657,16 @@ let
|
||||
"IPv6AcceptRA"
|
||||
"IPv6DuplicateAddressDetection"
|
||||
"IPv6HopLimit"
|
||||
"IPv4ReversePathFilter"
|
||||
"IPv4AcceptLocal"
|
||||
"IPv4RouteLocalnet"
|
||||
"IPv4ProxyARP"
|
||||
"IPv6ProxyNDP"
|
||||
"IPv6ProxyNDPAddress"
|
||||
"IPv6SendRA"
|
||||
"DHCPPrefixDelegation"
|
||||
"IPv6MTUBytes"
|
||||
"KeepMaster"
|
||||
"Bridge"
|
||||
"Bond"
|
||||
"VRF"
|
||||
@@ -701,11 +708,15 @@ let
|
||||
(assertMinimum "IPv6DuplicateAddressDetection" 0)
|
||||
(assertInt "IPv6HopLimit")
|
||||
(assertMinimum "IPv6HopLimit" 0)
|
||||
(assertValueOneOf "IPv4ReversePathFilter" ["no" "strict" "loose"])
|
||||
(assertValueOneOf "IPv4AcceptLocal" boolValues)
|
||||
(assertValueOneOf "IPv4RouteLocalnet" boolValues)
|
||||
(assertValueOneOf "IPv4ProxyARP" boolValues)
|
||||
(assertValueOneOf "IPv6ProxyNDP" boolValues)
|
||||
(assertValueOneOf "IPv6SendRA" boolValues)
|
||||
(assertValueOneOf "DHCPPrefixDelegation" boolValues)
|
||||
(assertByteFormat "IPv6MTUBytes")
|
||||
(assertValueOneOf "KeepMaster" boolValues)
|
||||
(assertValueOneOf "ActiveSlave" boolValues)
|
||||
(assertValueOneOf "PrimarySlave" boolValues)
|
||||
(assertValueOneOf "ConfigureWithoutCarrier" boolValues)
|
||||
|
||||
@@ -280,6 +280,7 @@ in {
|
||||
ecryptfs = handleTest ./ecryptfs.nix {};
|
||||
fscrypt = handleTest ./fscrypt.nix {};
|
||||
fastnetmon-advanced = runTest ./fastnetmon-advanced.nix;
|
||||
eintopf = handleTest ./eintopf.nix {};
|
||||
ejabberd = handleTest ./xmpp/ejabberd.nix {};
|
||||
elk = handleTestOn ["x86_64-linux"] ./elk.nix {};
|
||||
emacs-daemon = handleTest ./emacs-daemon.nix {};
|
||||
@@ -535,7 +536,7 @@ in {
|
||||
mailman = handleTest ./mailman.nix {};
|
||||
man = handleTest ./man.nix {};
|
||||
mariadb-galera = handleTest ./mysql/mariadb-galera.nix {};
|
||||
mastodon = discoverTests (import ./web-apps/mastodon { inherit handleTestOn; });
|
||||
mastodon = pkgs.recurseIntoAttrs (handleTest ./web-apps/mastodon { inherit handleTestOn; });
|
||||
pixelfed = discoverTests (import ./web-apps/pixelfed { inherit handleTestOn; });
|
||||
mate = handleTest ./mate.nix {};
|
||||
mate-wayland = handleTest ./mate-wayland.nix {};
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
import ./make-test-python.nix ({ pkgs, ...} : {
|
||||
name = "eintopf";
|
||||
meta = with pkgs.lib.maintainers; {
|
||||
maintainers = [ onny ];
|
||||
};
|
||||
|
||||
nodes = {
|
||||
eintopf = { config, pkgs, ... }: {
|
||||
services.eintopf = {
|
||||
enable = true;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
eintopf.start
|
||||
eintopf.wait_for_unit("eintopf.service")
|
||||
eintopf.wait_for_open_port(3333)
|
||||
eintopf.succeed("curl -sSfL http://eintopf:3333 | grep 'Es sind keine Veranstaltungen eingetragen'")
|
||||
'';
|
||||
})
|
||||
+14
-1
@@ -4,7 +4,7 @@ import ./make-test-python.nix ({ pkgs, lib, ... }: {
|
||||
|
||||
nodes.machine = { pkgs, ... }: {
|
||||
virtualisation.memorySize = 4096;
|
||||
virtualisation.diskSize = 4096;
|
||||
virtualisation.diskSize = 1024 * 6;
|
||||
|
||||
services.mongodb.enable = true;
|
||||
services.elasticsearch.enable = true;
|
||||
@@ -65,9 +65,18 @@ import ./make-test-python.nix ({ pkgs, lib, ... }: {
|
||||
in ''
|
||||
machine.start()
|
||||
machine.wait_for_unit("graylog.service")
|
||||
|
||||
machine.wait_until_succeeds(
|
||||
"journalctl -o cat -u graylog.service | grep 'Started REST API at <127.0.0.1:9000>'"
|
||||
)
|
||||
|
||||
machine.wait_for_open_port(9000)
|
||||
machine.succeed("curl -sSfL http://127.0.0.1:9000/")
|
||||
|
||||
machine.wait_until_succeeds(
|
||||
"journalctl -o cat -u graylog.service | grep 'Graylog server up and running'"
|
||||
)
|
||||
|
||||
session = machine.succeed(
|
||||
"curl -X POST "
|
||||
+ "-sSfL http://127.0.0.1:9000/api/system/sessions "
|
||||
@@ -87,6 +96,10 @@ import ./make-test-python.nix ({ pkgs, lib, ... }: {
|
||||
+ "-H 'x-requested-by: cli' "
|
||||
)
|
||||
|
||||
machine.wait_until_succeeds(
|
||||
"journalctl -o cat -u graylog.service | grep -E 'Input \[GELF UDP/Demo/[[:alnum:]]{24}\] is now RUNNING'"
|
||||
)
|
||||
|
||||
machine.wait_until_succeeds(
|
||||
"test \"$(curl -sSfL 'http://127.0.0.1:9000/api/cluster/inputstates' "
|
||||
+ f"-u {session}:session "
|
||||
|
||||
@@ -282,6 +282,7 @@ in {
|
||||
# Testing any more would require more applications & setup, the fact that it's already being attempted is a good sign
|
||||
machine.send_key("esc")
|
||||
|
||||
machine.sleep(2) # sleep a tiny bit so morph can close & the focus can return to LSS
|
||||
machine.send_key("alt-f4")
|
||||
|
||||
# The ayatana indicators are an important part of the experience, and they hold the only graphical way of exiting the session.
|
||||
|
||||
@@ -7,12 +7,16 @@ import ../make-test-python.nix ({ ... }:
|
||||
{ ... }:
|
||||
{
|
||||
security.pam.u2f = {
|
||||
control = "required";
|
||||
cue = true;
|
||||
debug = true;
|
||||
enable = true;
|
||||
interactive = true;
|
||||
origin = "nixos-test";
|
||||
control = "required";
|
||||
settings = {
|
||||
cue = true;
|
||||
debug = true;
|
||||
interactive = true;
|
||||
origin = "nixos-test";
|
||||
# Freeform option
|
||||
userpresence = 1;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
@@ -20,7 +24,7 @@ import ../make-test-python.nix ({ ... }:
|
||||
''
|
||||
machine.wait_for_unit("multi-user.target")
|
||||
machine.succeed(
|
||||
'egrep "auth required .*/lib/security/pam_u2f.so.*cue.*debug.*interactive.*origin=nixos-test" /etc/pam.d/ -R'
|
||||
'egrep "auth required .*/lib/security/pam_u2f.so.*cue.*debug.*interactive.*origin=nixos-test.*userpresence=1" /etc/pam.d/ -R'
|
||||
)
|
||||
'';
|
||||
})
|
||||
|
||||
@@ -8,7 +8,7 @@ let
|
||||
in
|
||||
{
|
||||
name = "soju";
|
||||
meta.maintainers = with lib.maintainers; [ Benjamin-L ];
|
||||
meta.maintainers = with lib.maintainers; [ ];
|
||||
|
||||
nodes.machine = { ... }: {
|
||||
services.soju = {
|
||||
|
||||
@@ -10,6 +10,7 @@ let
|
||||
packages = with pkgs; {
|
||||
"default" = teleport;
|
||||
"14" = teleport_14;
|
||||
"15" = teleport_15;
|
||||
};
|
||||
|
||||
minimal = package: {
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
{ system ? builtins.currentSystem, handleTestOn }:
|
||||
{ system ? builtins.currentSystem, pkgs, handleTestOn, ... }:
|
||||
let
|
||||
supportedSystems = [ "x86_64-linux" "i686-linux" "aarch64-linux" ];
|
||||
|
||||
in
|
||||
{
|
||||
standard = handleTestOn supportedSystems ./standard.nix { inherit system; };
|
||||
remote-databases = handleTestOn supportedSystems ./remote-databases.nix { inherit system; };
|
||||
standard = handleTestOn supportedSystems ./standard.nix { inherit system pkgs; };
|
||||
remote-databases = handleTestOn supportedSystems ./remote-databases.nix { inherit system pkgs; };
|
||||
}
|
||||
|
||||
@@ -11,14 +11,14 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "callaudiod";
|
||||
version = "0.1.9";
|
||||
version = "0.1.10";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
domain = "gitlab.com";
|
||||
owner = "mobian1";
|
||||
repo = pname;
|
||||
rev = version;
|
||||
sha256 = "sha256-OuWn1DA+4LmN1KwouiqW3kn6CMg8jhm0FiyAgMSi1GI=";
|
||||
sha256 = "sha256-gc66XrrFyhF1TvrDECBfGQc+MiDtqZPxdCn0S/43XQU=";
|
||||
};
|
||||
|
||||
strictDeps = true;
|
||||
|
||||
@@ -860,7 +860,7 @@ let
|
||||
description = "Soothing pastel theme for VSCode";
|
||||
license = lib.licenses.mit;
|
||||
downloadPage = "https://marketplace.visualstudio.com/items?itemName=Catppuccin.catppuccin-vsc";
|
||||
maintainers = [ lib.maintainers.nullx76 ];
|
||||
maintainers = [ ];
|
||||
};
|
||||
};
|
||||
catppuccin-vsc-icons = buildVscodeMarketplaceExtension {
|
||||
@@ -3078,7 +3078,7 @@ let
|
||||
description = "direnv support for Visual Studio Code";
|
||||
license = lib.licenses.bsd0;
|
||||
downloadPage = "https://marketplace.visualstudio.com/items?itemName=mkhl.direnv";
|
||||
maintainers = [ lib.maintainers.nullx76 ];
|
||||
maintainers = [ ];
|
||||
};
|
||||
};
|
||||
|
||||
@@ -3397,8 +3397,8 @@ let
|
||||
mktplcRef = {
|
||||
name = "remote-containers";
|
||||
publisher = "ms-vscode-remote";
|
||||
version = "0.347.0";
|
||||
hash = "sha256-E9H1nPWG5JuzBxbYc/yWd8Y3azEWrd9whGirl0GK7kU=";
|
||||
version = "0.376.0";
|
||||
hash = "sha256-fJ8ZcwGFWXzJZ8UgnzTxR+842vjiU0qCjV/zWzbq/KQ=";
|
||||
};
|
||||
meta = {
|
||||
description = "Open any folder or repository inside a Docker container";
|
||||
|
||||
@@ -30,21 +30,21 @@ let
|
||||
archive_fmt = if stdenv.isDarwin then "zip" else "tar.gz";
|
||||
|
||||
sha256 = {
|
||||
x86_64-linux = "0d0cgsiafmr1wmxqji7mi4hmms7zqql868bcfbq9lmkw96zw85dw";
|
||||
x86_64-darwin = "1zga9zm25h33m42cdnbkpzx5vbcwm9n7036qapq8pgrb23mals7f";
|
||||
aarch64-linux = "0wsdcny0y8xfvdf62qh792ifcq1am8i8xkchh5rscjc3xli6r86s";
|
||||
aarch64-darwin = "13jd39lm667206ga8fqbdb7mdqbkmbgq1l7wid3h4yanz87zbm99";
|
||||
armv7l-linux = "1xpvcypm0xnwjmbj2c1a245yav3nwi0g2k564x91vazfw4nmi7mv";
|
||||
x86_64-linux = "0bzf0mx1rgndpdd4a97kr01xsgsgp86gyscg8js2cvaad4265bmv";
|
||||
x86_64-darwin = "1m7f91cqbbv00difvfqld8fqkj9kvyddihmzi3zyzn4gfkv8gvf0";
|
||||
aarch64-linux = "09mxsk4qkq34yg1sd67cdasfxwdhdzcfij50fv1nl3kdjzp2i0iz";
|
||||
aarch64-darwin = "1jxjzfz6gr0pcp2anwjqwm38ma2i8fnzf5zpscfdklrlbhf438k2";
|
||||
armv7l-linux = "1yp4npgw4dkx8halsr1vm5ll1w4phx67dwd4krz1914mddx7x2kr";
|
||||
}.${system} or throwSystem;
|
||||
in
|
||||
callPackage ./generic.nix rec {
|
||||
# Please backport all compatible updates to the stable release.
|
||||
# This is important for the extension ecosystem.
|
||||
version = "1.90.2";
|
||||
version = "1.91.0";
|
||||
pname = "vscode" + lib.optionalString isInsiders "-insiders";
|
||||
|
||||
# This is used for VS Code - Remote SSH test
|
||||
rev = "5437499feb04f7a586f677b155b039bc2b3669eb";
|
||||
rev = "ea1445cc7016315d0f5728f8e8b12a45dc0a7286";
|
||||
|
||||
executableName = "code" + lib.optionalString isInsiders "-insiders";
|
||||
longName = "Visual Studio Code" + lib.optionalString isInsiders " - Insiders";
|
||||
@@ -68,7 +68,7 @@ in
|
||||
src = fetchurl {
|
||||
name = "vscode-server-${rev}.tar.gz";
|
||||
url = "https://update.code.visualstudio.com/commit:${rev}/server-linux-x64/stable";
|
||||
sha256 = "18npvj29g9xwjyxv3a0fxipk30hgm487cfr3d91dvp5hxhl4dwwr";
|
||||
sha256 = "08mgfrwiji16q8x8kwmw3pdmb0325hfr9pd2fa5g5kmy9gnfw38v";
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
@@ -19,13 +19,13 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "xed-editor";
|
||||
version = "3.6.3";
|
||||
version = "3.6.4";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "linuxmint";
|
||||
repo = "xed";
|
||||
rev = version;
|
||||
sha256 = "sha256-xsNqzicI11dM/DjY00pXaPpQdHA0ltP23g34fMWUoUA=";
|
||||
sha256 = "sha256-EwBcgFHw6Mh+eS5hfTLoywH0dVt/TpNt4y6xQxe/x/Q=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
|
||||
@@ -40,11 +40,7 @@
|
||||
, xz
|
||||
|
||||
# Used in passthru
|
||||
, common-updater-scripts
|
||||
, dolphin-emu
|
||||
, jq
|
||||
, testers
|
||||
, writeShellScript
|
||||
|
||||
# Darwin-only dependencies
|
||||
, CoreBluetooth
|
||||
@@ -56,23 +52,18 @@
|
||||
, VideoToolbox
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "dolphin-emu";
|
||||
version = "5.0-21460";
|
||||
version = "2407";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "dolphin-emu";
|
||||
repo = "dolphin";
|
||||
rev = "a9544510468740b77cf06ef28daaa65fe247fd32";
|
||||
hash = "sha256-mhD7Uaqi8GzHdR7Y81TspvCnrZH2evWuWFgXMQ2c8g0=";
|
||||
rev = "refs/tags/${finalAttrs.version}";
|
||||
hash = "sha256-8W4KyIj+rhDkWnQogjpzlEJVo3HJenfpWKimSyMGN7c=";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
|
||||
patches = [
|
||||
# TODO: Remove when merged https://github.com/dolphin-emu/dolphin/pull/12736
|
||||
./find-minizip-ng.patch
|
||||
];
|
||||
|
||||
strictDeps = true;
|
||||
|
||||
nativeBuildInputs = [
|
||||
@@ -133,8 +124,8 @@ stdenv.mkDerivation rec {
|
||||
|
||||
cmakeFlags = [
|
||||
"-DDISTRIBUTOR=NixOS"
|
||||
"-DDOLPHIN_WC_REVISION=${src.rev}"
|
||||
"-DDOLPHIN_WC_DESCRIBE=${version}"
|
||||
"-DDOLPHIN_WC_REVISION=${finalAttrs.src.rev}"
|
||||
"-DDOLPHIN_WC_DESCRIBE=${finalAttrs.version}"
|
||||
"-DDOLPHIN_WC_BRANCH=master"
|
||||
] ++ lib.optionals stdenv.isDarwin [
|
||||
"-DOSX_USE_DEFAULT_SEARCH_PATH=True"
|
||||
@@ -165,20 +156,10 @@ stdenv.mkDerivation rec {
|
||||
|
||||
passthru = {
|
||||
tests.version = testers.testVersion {
|
||||
package = dolphin-emu;
|
||||
package = finalAttrs.finalPackage;
|
||||
command = "dolphin-emu-nogui --version";
|
||||
version = if stdenv.hostPlatform.isDarwin then "Dolphin 5.0" else version;
|
||||
inherit (finalAttrs) version;
|
||||
};
|
||||
|
||||
updateScript = writeShellScript "dolphin-update-script" ''
|
||||
set -eou pipefail
|
||||
export PATH=${lib.makeBinPath [ curl jq common-updater-scripts ]}
|
||||
|
||||
json="$(curl -s https://dolphin-emu.org/update/latest/beta)"
|
||||
version="$(jq -r '.shortrev' <<< "$json")"
|
||||
rev="$(jq -r '.hash' <<< "$json")"
|
||||
update-source-version dolphin-emu "$version" --rev="$rev"
|
||||
'';
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
@@ -188,6 +169,6 @@ stdenv.mkDerivation rec {
|
||||
branch = "master";
|
||||
license = licenses.gpl2Plus;
|
||||
platforms = platforms.unix;
|
||||
maintainers = with maintainers; [ ];
|
||||
maintainers = with maintainers; [ pbsds ];
|
||||
};
|
||||
}
|
||||
})
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index fb37788513..289a25fa57 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -676,7 +676,7 @@ dolphin_find_optional_system_library_pkgconfig(ZLIB zlib-ng ZLIB::ZLIB Externals
|
||||
|
||||
# https://github.com/zlib-ng/minizip-ng/commit/6c5f265a55f1a12a7a016cd2962feff91cff5d2e
|
||||
add_definitions(-DMZ_COMPAT_VERSION=110) # This macro is for forwards compatibility with 4.0.4+
|
||||
-dolphin_find_optional_system_library_pkgconfig(MINIZIP minizip>=3.0.0 minizip::minizip Externals/minizip)
|
||||
+dolphin_find_optional_system_library_pkgconfig(MINIZIP minizip-ng>=3.0.0 minizip::minizip Externals/minizip)
|
||||
|
||||
dolphin_find_optional_system_library(LZO Externals/LZO)
|
||||
|
||||
@@ -38,14 +38,14 @@ let
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "mame";
|
||||
version = "0.266";
|
||||
version = "0.267";
|
||||
srcVersion = builtins.replaceStrings [ "." ] [ "" ] version;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "mamedev";
|
||||
repo = "mame";
|
||||
rev = "mame${srcVersion}";
|
||||
hash = "sha256-nggpDKcZURwC4SQHiRnF7lJNaAWSniVHvsF/IjAPd9E=";
|
||||
hash = "sha256-H3idND2cC0KSGa9EIEVN2diticfM9r6FwRqQYkWmEM0=";
|
||||
};
|
||||
|
||||
outputs = [ "out" "tools" ];
|
||||
|
||||
@@ -14,14 +14,14 @@
|
||||
|
||||
python3Packages.buildPythonPackage rec {
|
||||
pname = "hydrus";
|
||||
version = "578";
|
||||
version = "580";
|
||||
format = "other";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "hydrusnetwork";
|
||||
repo = "hydrus";
|
||||
rev = "refs/tags/v${version}";
|
||||
hash = "sha256-u2SXhL57iNVjRFqerzc/TByB9ArAJx81mxOjTBVBMkg=";
|
||||
hash = "sha256-QdRItwbgVYgA6PU9Ybimk+/sBe1CHV79ssTrIturVpg=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
@@ -60,6 +60,7 @@ python3Packages.buildPythonPackage rec {
|
||||
lz4
|
||||
numpy
|
||||
opencv4
|
||||
olefile
|
||||
pillow
|
||||
pillow-heif
|
||||
psutil
|
||||
@@ -74,6 +75,7 @@ python3Packages.buildPythonPackage rec {
|
||||
pyyaml
|
||||
qtpy
|
||||
requests
|
||||
show-in-file-manager
|
||||
send2trash
|
||||
service-identity
|
||||
twisted
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
|
||||
python3.pkgs.buildPythonApplication rec {
|
||||
pname = "komikku";
|
||||
version = "1.49.0";
|
||||
version = "1.50.0";
|
||||
|
||||
format = "other";
|
||||
|
||||
@@ -28,7 +28,7 @@ python3.pkgs.buildPythonApplication rec {
|
||||
owner = "valos";
|
||||
repo = "Komikku";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-AMlhhsbwLhofV/Sy/EXuE4l0UAwZf2Gxn9+x3MHno4Y=";
|
||||
hash = "sha256-lyBXMctEL8Z6rscsSDHh7xLhjvnpN2q4qMVV2ek9Cyk=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
{ mkDerivation
|
||||
, substituteAll
|
||||
, lib
|
||||
, extra-cmake-modules
|
||||
, breeze-icons
|
||||
@@ -83,23 +84,25 @@ mkDerivation {
|
||||
wrapGAppsHook3
|
||||
glaxnimate
|
||||
];
|
||||
|
||||
# Both MLT and FFMpeg paths must be set or Kdenlive will complain that it
|
||||
# doesn't find them. See:
|
||||
# https://github.com/NixOS/nixpkgs/issues/83885
|
||||
patches = [ ./dependency-paths.patch ./dependency-paths-glaxnimate.patch ];
|
||||
|
||||
# Needed to replace @glaxnimate@ by its path
|
||||
env = {
|
||||
inherit mediainfo glaxnimate;
|
||||
ffmpeg = ffmpeg-full;
|
||||
mlt = mlt-full;
|
||||
};
|
||||
patches = [
|
||||
(
|
||||
substituteAll {
|
||||
src = ./dependency-paths.patch;
|
||||
inherit mediainfo glaxnimate;
|
||||
ffmpeg = ffmpeg-full;
|
||||
mlt = mlt-full;
|
||||
}
|
||||
)
|
||||
];
|
||||
|
||||
postPatch =
|
||||
# Module Qt5::Concurrent must be included in `find_package` before it is used.
|
||||
''
|
||||
sed -i CMakeLists.txt -e '/find_package(Qt5 REQUIRED/ s|)| Concurrent)|'
|
||||
substituteAllInPlace src/kdenlivesettings.kcfg
|
||||
'';
|
||||
|
||||
dontWrapGApps = true;
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
diff --git a/src/kdenlivesettings.kcfg b/src/kdenlivesettings.kcfg
|
||||
index 86fa5ef..6aeccbe 100644
|
||||
--- a/src/kdenlivesettings.kcfg
|
||||
+++ b/src/kdenlivesettings.kcfg
|
||||
@@ -657,7 +657,7 @@
|
||||
|
||||
<entry name="glaxnimatePath" type="String">
|
||||
<label>Path to the Glaxnimate application.</label>
|
||||
- <default></default>
|
||||
+ <default>@glaxnimate@/bin/glaxnimate</default>
|
||||
</entry>
|
||||
|
||||
<entry name="nice_tasks" type="Bool">
|
||||
@@ -1,6 +1,5 @@
|
||||
diff --git a/src/kdenlivesettings.kcfg b/src/kdenlivesettings.kcfg
|
||||
index 029849e5f..8befe4888 100644
|
||||
--- a/src/kdenlivesettings.kcfg
|
||||
diff -u b/src/kdenlivesettings.kcfg b/src/kdenlivesettings.kcfg
|
||||
--- b/src/kdenlivesettings.kcfg
|
||||
+++ b/src/kdenlivesettings.kcfg
|
||||
@@ -517,7 +517,7 @@
|
||||
<group name="env">
|
||||
@@ -44,3 +43,10 @@ index 029849e5f..8befe4888 100644
|
||||
</entry>
|
||||
|
||||
<entry name="processingthreads" type="Int">
|
||||
@@ -657,5 +657,5 @@
|
||||
<entry name="glaxnimatePath" type="String">
|
||||
<label>Path to the Glaxnimate application.</label>
|
||||
- <default></default>
|
||||
+ <default>@glaxnimate@/bin/glaxnimate</default>
|
||||
</entry>
|
||||
<entry name="nice_tasks" type="Bool">
|
||||
|
||||
@@ -31,7 +31,7 @@ buildPythonApplication rec {
|
||||
mainProgram = "cum";
|
||||
homepage = "https://github.com/Hamuko/cum";
|
||||
license = licenses.asl20;
|
||||
maintainers = with maintainers; [ tadeokondrak ];
|
||||
maintainers = with maintainers; [ ];
|
||||
platforms = platforms.all;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -6,13 +6,13 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "dasel";
|
||||
version = "2.8.0";
|
||||
version = "2.8.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "TomWright";
|
||||
repo = "dasel";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-j9gwE/iLbBM8sdNZgc7hYnKhJEMkLn/g9HVlsKn4moo=";
|
||||
hash = "sha256-vq4lRCsqD2hmQw0yH84Wji5LeJ/aiMGJJIyCDvATA+I=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-edyFs5oURklkqsTF7JA1in3XteSBx/6YEVu4MjIcGN4=";
|
||||
|
||||
@@ -28,7 +28,7 @@ stdenv.mkDerivation rec {
|
||||
mainProgram = "fff";
|
||||
homepage = "https://github.com/dylanaraps/fff";
|
||||
license = licenses.mit;
|
||||
maintainers = [ maintainers.tadeokondrak ];
|
||||
maintainers = [ ];
|
||||
platforms = platforms.all;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@ stdenv.mkDerivation rec {
|
||||
homepage = "https://github.com/buffet/filet";
|
||||
license = licenses.mpl20;
|
||||
platforms = platforms.all;
|
||||
maintainers = with maintainers; [ buffet ];
|
||||
maintainers = with maintainers; [ ];
|
||||
mainProgram = "filet";
|
||||
};
|
||||
}
|
||||
|
||||
@@ -34,5 +34,6 @@ stdenv.mkDerivation rec {
|
||||
license = lib.licenses.gpl3Plus;
|
||||
platforms = lib.platforms.unix;
|
||||
maintainers = [ lib.maintainers.romildo ];
|
||||
mainProgram = "gcal";
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
{ lib, appimageTools, fetchurl }:
|
||||
|
||||
let
|
||||
version = "2.0.0";
|
||||
version = "2.0.4";
|
||||
pname = "lunatask";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://lunatask.app/download/Lunatask-${version}.AppImage";
|
||||
sha256 = "sha256-rRE7VE6Fugqbbv/fTIZGuWDQmTP1tRDiKrb6VcpsBjk=";
|
||||
sha256 = "sha256-U+yelFSulAhgsn5xt45mxC7qGpQwmb3m3lt9nEW6MHU=";
|
||||
};
|
||||
|
||||
appimageContents = appimageTools.extractType2 {
|
||||
|
||||
@@ -75,13 +75,13 @@ let
|
||||
in
|
||||
buildPythonApplication rec {
|
||||
pname = "lutris-unwrapped";
|
||||
version = "0.5.16";
|
||||
version = "0.5.17";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "lutris";
|
||||
repo = "lutris";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-Ed1bhugBe97XmY050A5jCPcnLj0Fd7qPX2p/Ab+YbOE=";
|
||||
hash = "sha256-Tr5k5LU0s75+1B17oK8tlgA6SlS1SHyyLS6UBKadUmw=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ wrapGAppsHook3 gobject-introspection ];
|
||||
@@ -121,7 +121,7 @@ buildPythonApplication rec {
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace lutris/util/magic.py \
|
||||
--replace "'libmagic.so.1'" "'${lib.getLib file}/lib/libmagic.so.1'"
|
||||
--replace '"libmagic.so.1"' "'${lib.getLib file}/lib/libmagic.so.1'"
|
||||
'';
|
||||
|
||||
nativeCheckInputs = [ xvfb-run nose2 flake8 ] ++ requiredTools;
|
||||
|
||||
@@ -1,38 +0,0 @@
|
||||
--- a/app/app.pro 2023-06-24 19:10:00.653377668 +0800
|
||||
+++ b/app/app.pro 2023-06-24 19:20:06.632188299 +0800
|
||||
@@ -49,19 +49,8 @@
|
||||
INCLUDEPATH += $$PWD/../libs/windows/include
|
||||
LIBS += ws2_32.lib winmm.lib dxva2.lib ole32.lib gdi32.lib user32.lib d3d9.lib dwmapi.lib dbghelp.lib
|
||||
}
|
||||
-macx {
|
||||
- INCLUDEPATH += $$PWD/../libs/mac/include
|
||||
- INCLUDEPATH += $$PWD/../libs/mac/Frameworks/SDL2.framework/Versions/A/Headers
|
||||
- INCLUDEPATH += $$PWD/../libs/mac/Frameworks/SDL2_ttf.framework/Versions/A/Headers
|
||||
- LIBS += -L$$PWD/../libs/mac/lib -F$$PWD/../libs/mac/Frameworks
|
||||
-
|
||||
- # QMake doesn't handle framework-style includes correctly on its own
|
||||
- QMAKE_CFLAGS += -F$$PWD/../libs/mac/Frameworks
|
||||
- QMAKE_CXXFLAGS += -F$$PWD/../libs/mac/Frameworks
|
||||
- QMAKE_OBJECTIVE_CFLAGS += -F$$PWD/../libs/mac/Frameworks
|
||||
-}
|
||||
|
||||
-unix:!macx {
|
||||
+unix {
|
||||
CONFIG += link_pkgconfig
|
||||
PKGCONFIG += openssl sdl2 SDL2_ttf opus
|
||||
|
||||
@@ -120,13 +109,12 @@
|
||||
CONFIG += soundio discord-rpc
|
||||
}
|
||||
macx {
|
||||
- LIBS += -lssl -lcrypto -lavcodec.60 -lavutil.58 -lopus -framework SDL2 -framework SDL2_ttf
|
||||
LIBS += -lobjc -framework VideoToolbox -framework AVFoundation -framework CoreVideo -framework CoreGraphics -framework CoreMedia -framework AppKit -framework Metal
|
||||
|
||||
# For libsoundio
|
||||
LIBS += -framework CoreAudio -framework AudioUnit
|
||||
|
||||
- CONFIG += ffmpeg soundio discord-rpc
|
||||
+ CONFIG += ffmpeg soundio
|
||||
}
|
||||
|
||||
SOURCES += \
|
||||
@@ -1,82 +0,0 @@
|
||||
{ stdenv
|
||||
, lib
|
||||
, fetchFromGitHub
|
||||
, wrapQtAppsHook
|
||||
, pkg-config
|
||||
, qmake
|
||||
, qtquickcontrols2
|
||||
, SDL2
|
||||
, SDL2_ttf
|
||||
, libva
|
||||
, libvdpau
|
||||
, libxkbcommon
|
||||
, alsa-lib
|
||||
, libpulseaudio
|
||||
, openssl
|
||||
, libopus
|
||||
, ffmpeg
|
||||
, wayland
|
||||
, darwin
|
||||
}:
|
||||
|
||||
let
|
||||
inherit (darwin.apple_sdk_11_0.frameworks) AVFoundation AppKit AudioUnit VideoToolbox;
|
||||
in
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "moonlight-qt";
|
||||
version = "5.0.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "moonlight-stream";
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-0ONjUqpM1tUnyaEnMgVl7ff6pND7kyqouv2mpgteZP0=";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
|
||||
patches = [ ./darwin.diff ];
|
||||
|
||||
nativeBuildInputs = [
|
||||
wrapQtAppsHook
|
||||
pkg-config
|
||||
qmake
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
qtquickcontrols2
|
||||
SDL2
|
||||
SDL2_ttf
|
||||
openssl
|
||||
libopus
|
||||
ffmpeg
|
||||
] ++ lib.optionals stdenv.isLinux [
|
||||
libva
|
||||
libvdpau
|
||||
libxkbcommon
|
||||
alsa-lib
|
||||
libpulseaudio
|
||||
wayland
|
||||
] ++ lib.optionals stdenv.isDarwin [
|
||||
AVFoundation
|
||||
AppKit
|
||||
AudioUnit
|
||||
VideoToolbox
|
||||
];
|
||||
|
||||
postInstall = lib.optionalString stdenv.isDarwin ''
|
||||
mkdir $out/Applications $out/bin
|
||||
mv app/Moonlight.app $out/Applications
|
||||
rm -r $out/Applications/Moonlight.app/Contents/Frameworks
|
||||
ln -s $out/Applications/Moonlight.app/Contents/MacOS/Moonlight $out/bin/moonlight
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
description = "Play your PC games on almost any device";
|
||||
homepage = "https://moonlight-stream.org";
|
||||
license = licenses.gpl3Plus;
|
||||
maintainers = with maintainers; [ luc65r ];
|
||||
platforms = platforms.all;
|
||||
mainProgram = "moonlight";
|
||||
};
|
||||
}
|
||||
@@ -71,7 +71,7 @@ stdenv.mkDerivation rec {
|
||||
'';
|
||||
homepage = "https://github.com/bkueng/qMasterPassword";
|
||||
license = licenses.gpl3;
|
||||
maintainers = with lib.maintainers; [ tadeokondrak teutat3s ];
|
||||
maintainers = with lib.maintainers; [ teutat3s ];
|
||||
platforms = platforms.all;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -16,7 +16,7 @@ maven.buildMavenPackage rec {
|
||||
hash = "sha256-lg8/diyGhfkUU0w7PEOlxb1WNpJZVDDllxMMsTIU/Cw=";
|
||||
};
|
||||
|
||||
mvnHash = "sha256-yULCBHgctZZU3Deod+nQujssmUy+kgdFdgE3NUuFhOw=";
|
||||
mvnHash = "sha256-CXJm9YlYsYViChFcH9e2P9pxK0q/tLWODOzZPXZ8hK0=";
|
||||
mvnParameters = "compile assembly:single -Dmaven.test.skip=true";
|
||||
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "calls";
|
||||
version = "46.0";
|
||||
version = "46.3";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
domain = "gitlab.gnome.org";
|
||||
@@ -42,7 +42,7 @@ stdenv.mkDerivation rec {
|
||||
repo = pname;
|
||||
rev = "v${version}";
|
||||
fetchSubmodules = true;
|
||||
hash = "sha256-ZUVMK0Ex77EQKTGM0gBDHt8W9l4rHspihYduMcwMGho=";
|
||||
hash = "sha256-J1wuhAXPCvLWzPqMU4alVFFpHoCAzX3wVOP3Bw0wW/o=";
|
||||
};
|
||||
|
||||
outputs = [ "out" "devdoc" ];
|
||||
|
||||
@@ -2,13 +2,13 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "jx";
|
||||
version = "3.10.150";
|
||||
version = "3.10.152";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "jenkins-x";
|
||||
repo = "jx";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-Zck06wbe+hLbecFnfY/udi1s712ilt7j0EdoumohOEI=";
|
||||
sha256 = "sha256-rOpKaVn2D5UMYaVXLRxvwTRzo+nD1H/95FcQSeFgeFo=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-AIaZVkWdNj1Vsrv2k4B5lLE0lOFuiTD7lwS/DikmC14=";
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
(callPackage ./generic.nix { }) {
|
||||
channel = "edge";
|
||||
version = "24.6.3";
|
||||
sha256 = "1mlbb8qkx71anwqi027p9lv10kfck811ikfvc5gpnavfaaiwrrd1";
|
||||
vendorHash = "sha256-nIDbwUvu1e/1ImVQMj4eOaPeFHM7HCcJMFk/ackdJSE=";
|
||||
version = "24.6.4";
|
||||
sha256 = "0pic9jncnal93g4kd8c02yl00jm0s11rax3bzz37l0iljjppxr6c";
|
||||
vendorHash = "sha256-oNEXVyNvdDsEws+8WklYxpxeTOykLEvmvyY8FAIB6HU=";
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
buildGoPackage rec {
|
||||
pname = "ssm-session-manager-plugin";
|
||||
version = "1.2.633.0";
|
||||
version = "1.2.650.0";
|
||||
|
||||
goPackagePath = "github.com/aws/session-manager-plugin";
|
||||
|
||||
@@ -13,7 +13,7 @@ buildGoPackage rec {
|
||||
owner = "aws";
|
||||
repo = "session-manager-plugin";
|
||||
rev = version;
|
||||
hash = "sha256-dwNCTJOxpothAcJSfch2jkxdgXg6xDd/fDQCQo2Xd+8=";
|
||||
hash = "sha256-IcDVt/iE/EYV9Blvl7Gj0UFJcdsUCFdaSQkIto0CKRI=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
|
||||
@@ -31,7 +31,7 @@ buildGoModule rec {
|
||||
description = "Weave Gitops CLI";
|
||||
license = licenses.mpl20;
|
||||
platforms = platforms.linux;
|
||||
maintainers = with maintainers; [ nullx76 ];
|
||||
maintainers = with maintainers; [ ];
|
||||
mainProgram = "gitops";
|
||||
};
|
||||
}
|
||||
|
||||
@@ -33,11 +33,11 @@
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "suricata";
|
||||
version = "7.0.5";
|
||||
version = "7.0.6";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://www.openinfosecfoundation.org/download/${pname}-${version}.tar.gz";
|
||||
hash = "sha256-H/tWgVjyZcCFVEZL+4VOZWjvaDvwMxKSO1HyjFB5Ck4=";
|
||||
hash = "sha256-IYJPf/Egh8DJud4gcZmnWpwxsDA2aIx8ucF48KO1f40=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
# Generated by ./update.sh - do not update manually!
|
||||
# Last updated: 2024-06-17
|
||||
{
|
||||
version = "3.2.9";
|
||||
amd64_url = "https://dldir1.qq.com/qqfile/qq/QQNT/Linux/QQ_3.2.9_240617_amd64_01.deb";
|
||||
arm64_url = "https://dldir1.qq.com/qqfile/qq/QQNT/Linux/QQ_3.2.9_240617_arm64_01.deb";
|
||||
arm64_hash = "sha256-qC3eUc3Hs1nolZJhAds0Qx+tAlD/AR3scGxmcA8dtEw=";
|
||||
amd64_hash = "sha256-ofoelAzbuCgxSHsZciWSVkDFDv+zsW+AzZqjeNlaja0=";
|
||||
version = "3.2.10";
|
||||
amd64_url = "https://dldir1.qq.com/qqfile/qq/QQNT/944f8942/linuxqq_3.2.10-25234_amd64.deb";
|
||||
arm64_url = "https://dldir1.qq.com/qqfile/qq/QQNT/944f8942/linuxqq_3.2.10-25234_arm64.deb";
|
||||
arm64_hash = "sha256-UY9UFbwQjXBd0+52iron1LZQWP/ncUZwylrtDzm5lW8=";
|
||||
amd64_hash = "sha256-CHVX5tBV/w//At2wBjLqgTzayi4NI5i06IDgyW++ha4=";
|
||||
}
|
||||
|
||||
+8
-9
@@ -59,16 +59,15 @@ let
|
||||
cxxStandard = "20";
|
||||
};
|
||||
};
|
||||
mainProgram = if stdenv.isLinux then "telegram-desktop" else "Telegram";
|
||||
in
|
||||
stdenv.mkDerivation rec {
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "telegram-desktop";
|
||||
version = "5.2.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "telegramdesktop";
|
||||
repo = "tdesktop";
|
||||
rev = "v${version}";
|
||||
rev = "v${finalAttrs.version}";
|
||||
fetchSubmodules = true;
|
||||
hash = "sha256-rvd4Ei4MpWiilHCV291UrJkHaUcwth9AWc3PSqjj+EI=";
|
||||
};
|
||||
@@ -200,19 +199,19 @@ stdenv.mkDerivation rec {
|
||||
|
||||
installPhase = lib.optionalString stdenv.isDarwin ''
|
||||
mkdir -p $out/Applications
|
||||
cp -r ${mainProgram}.app $out/Applications
|
||||
ln -s $out/{Applications/${mainProgram}.app/Contents/MacOS,bin}
|
||||
cp -r ${finalAttrs.meta.mainProgram}.app $out/Applications
|
||||
ln -s $out/{Applications/${finalAttrs.meta.mainProgram}.app/Contents/MacOS,bin}
|
||||
'';
|
||||
|
||||
postFixup = lib.optionalString stdenv.isLinux ''
|
||||
# This is necessary to run Telegram in a pure environment.
|
||||
# We also use gappsWrapperArgs from wrapGAppsHook.
|
||||
wrapProgram $out/bin/${mainProgram} \
|
||||
wrapProgram $out/bin/${finalAttrs.meta.mainProgram} \
|
||||
"''${gappsWrapperArgs[@]}" \
|
||||
"''${qtWrapperArgs[@]}" \
|
||||
--suffix PATH : ${lib.makeBinPath [ xdg-utils ]}
|
||||
'' + lib.optionalString stdenv.isDarwin ''
|
||||
wrapQtApp $out/Applications/${mainProgram}.app/Contents/MacOS/${mainProgram}
|
||||
wrapQtApp $out/Applications/${finalAttrs.meta.mainProgram}.app/Contents/MacOS/${finalAttrs.meta.mainProgram}
|
||||
'';
|
||||
|
||||
passthru = {
|
||||
@@ -231,6 +230,6 @@ stdenv.mkDerivation rec {
|
||||
homepage = "https://desktop.telegram.org/";
|
||||
changelog = "https://github.com/telegramdesktop/tdesktop/releases/tag/v${version}";
|
||||
maintainers = with maintainers; [ nickcao ];
|
||||
inherit mainProgram;
|
||||
mainProgram = if stdenv.hostPlatform.isLinux then "telegram-desktop" else "Telegram";
|
||||
};
|
||||
}
|
||||
})
|
||||
|
||||
@@ -71,7 +71,7 @@ buildGoModule rec {
|
||||
meta = with lib; {
|
||||
description = "Email client for your terminal";
|
||||
homepage = "https://aerc-mail.org/";
|
||||
maintainers = with maintainers; [ tadeokondrak ];
|
||||
maintainers = with maintainers; [ ];
|
||||
mainProgram = "aerc";
|
||||
license = licenses.mit;
|
||||
platforms = platforms.unix;
|
||||
|
||||
@@ -22,11 +22,11 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "evolution-ews";
|
||||
version = "3.52.2";
|
||||
version = "3.52.3";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://gnome/sources/${pname}/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
|
||||
hash = "sha256-qVUPG1PUdANt0jmWJ7MRjrO4QxhBztwO3yFFewlhkUE=";
|
||||
hash = "sha256-H9Y4L9X9MAQ4Rc/F3Ew0/gErzINRK2AwFUJQvGGAaMA=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
|
||||
@@ -45,11 +45,11 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "evolution";
|
||||
version = "3.52.2";
|
||||
version = "3.52.3";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://gnome/sources/evolution/${lib.versions.majorMinor version}/${pname}-${version}.tar.xz";
|
||||
hash = "sha256-pIt0EtE+2sdPbAms+mdmVuahLt8AMM3cJgKawE2j5VE=";
|
||||
hash = "sha256-HCL1O1VU4mCkjpF/PWaYNNJOTTrVoSTL4EKipKzkQcU=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
||||
@@ -68,13 +68,13 @@ let
|
||||
in
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "freerdp";
|
||||
version = "3.5.1";
|
||||
version = "3.6.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "FreeRDP";
|
||||
repo = "FreeRDP";
|
||||
rev = finalAttrs.version;
|
||||
hash = "sha256-8yWMnwJbvyUiEuX+2bEim1IeqPx20u9yvNIVe7MC/ZQ=";
|
||||
hash = "sha256-wGfktzy8vrhTZE0ZG+gtsXsCmarXFs/yHcnZFeoFHGY=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
|
||||
@@ -13,11 +13,11 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "appflowy";
|
||||
version = "0.6.1";
|
||||
version = "0.6.2";
|
||||
|
||||
src = fetchzip {
|
||||
url = "https://github.com/AppFlowy-IO/appflowy/releases/download/${version}/AppFlowy-${version}-linux-x86_64.tar.gz";
|
||||
hash = "sha256-a8oupvBtT3sKhboSeS/GbVSauKXx54J4WZd+PyIbuzU=";
|
||||
hash = "sha256-vwhFFSdKlt2Ddikhdr3uyILjTVdgCjMtAW9HeLmT5qU=";
|
||||
stripRoot = false;
|
||||
};
|
||||
|
||||
|
||||
@@ -15,11 +15,11 @@
|
||||
}:
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "ticktick";
|
||||
version = "2.0.20";
|
||||
version = "2.0.30";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://d2atcrkye2ik4e.cloudfront.net/download/linux/linux_deb_x64/${finalAttrs.pname}-${finalAttrs.version}-amd64.deb";
|
||||
hash = "sha256-5w50QMSMmkpuhSOqv3LjrcQQDwaD7pIdKUo+8YUgvpk=";
|
||||
hash = "sha256-oo1ssIU6nYMBoEc888xAiTS7PHuEkoaC7KsPRTwL0ZA=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
||||
@@ -12,13 +12,13 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "treesheets";
|
||||
version = "0-unstable-2024-06-23";
|
||||
version = "0-unstable-2024-06-29";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "aardappel";
|
||||
repo = "treesheets";
|
||||
rev = "91dea2ba714e9b1fb6ab660ddd295653218bdebc";
|
||||
hash = "sha256-pn+Ki60lBL+2sKXnhYEly8/Yi94mhiMDxTnWZi4ZFOk=";
|
||||
rev = "0d3eff693f23929e8b53317b08df9da2d610994f";
|
||||
hash = "sha256-c5HMxFxDD439kKguW8Mwkjmnavh2MSSiODTgrnZcbjo=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
||||
@@ -2,11 +2,11 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "workcraft";
|
||||
version = "3.4.2";
|
||||
version = "3.5.0";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/workcraft/workcraft/releases/download/v${version}/workcraft-v${version}-linux.tar.gz";
|
||||
sha256 = "sha256-+O6fl/+D89L5xrrTaAnBTfw0tFz/CoKLaBa+OHtdnaA=";
|
||||
sha256 = "sha256-ZOmc83OZVHIt/Sq6KQWuG4/xyeaETL8qJmmSjGcqL60=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
|
||||
@@ -2,20 +2,15 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "yices";
|
||||
# We never want X.Y.${odd} versions as they are moving development tags.
|
||||
version = "2.6.4";
|
||||
version = "2.6.5";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "SRI-CSL";
|
||||
repo = "yices2";
|
||||
rev = "Yices-${version}";
|
||||
sha256 = "sha256-qdxh86CkKdm65oHcRgaafTG9GUOoIgTDjeWmRofIpNE=";
|
||||
hash = "sha256-/sKyHkFW5I5kojNIRPEKojzTvfRZiyVIN5VlBIbAV7k=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
# musl has no ldconfig, create symlinks explicitly
|
||||
./linux-no-ldconfig.patch
|
||||
];
|
||||
postPatch = "patchShebangs tests/regress/check.sh";
|
||||
|
||||
nativeBuildInputs = [ autoreconfHook ];
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
--- a/Makefile.build
|
||||
+++ b/Makefile.build
|
||||
@@ -474,8 +474,9 @@ install-darwin: install-default
|
||||
install-solaris: install-default
|
||||
$(LDCONFIG) -n $(DESTDIR)$(libdir) && (cd $(DESTDIR)$(libdir) && $(LN_S) -f libyices.so.$(YICES_VERSION) libyices.so)
|
||||
|
||||
+# avoid ldconfig as it's not present on musl
|
||||
install-linux install-unix: install-default
|
||||
- $(LDCONFIG) -n $(DESTDIR)$(libdir) && (cd $(DESTDIR)$(libdir) && $(LN_S) -f libyices.so.$(YICES_VERSION) libyices.so)
|
||||
+ (cd $(DESTDIR)$(libdir) && $(LN_S) -f libyices.so.$(YICES_VERSION) libyices.so.$(MAJOR).$(MINOR) && $(LN_S) -f libyices.so.$(MAJOR).$(MINOR) libyices.so)
|
||||
|
||||
# on FreeBSD: the library file is libyices.so.X.Y and ldconfig does not take -n
|
||||
# TODO: fix this. We must also create a symbolic link: libyices.so.X in libdir
|
||||
@@ -1,4 +1,12 @@
|
||||
{ lib, stdenv, unzip, fetchurl, electron, makeWrapper, geogebra }:
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
unzip,
|
||||
fetchurl,
|
||||
electron,
|
||||
makeWrapper,
|
||||
geogebra,
|
||||
}:
|
||||
let
|
||||
pname = "geogebra";
|
||||
version = "6-0-794-0";
|
||||
@@ -14,14 +22,17 @@ let
|
||||
calculus in one easy-to-use package.
|
||||
'';
|
||||
homepage = "https://www.geogebra.org/";
|
||||
maintainers = with maintainers; [ voidless sikmir ];
|
||||
maintainers = with maintainers; [
|
||||
voidless
|
||||
sikmir
|
||||
];
|
||||
license = licenses.geogebra;
|
||||
sourceProvenance = with sourceTypes; [
|
||||
binaryBytecode
|
||||
binaryNativeCode # some jars include native binaries
|
||||
binaryNativeCode # some jars include native binaries
|
||||
];
|
||||
platforms = with platforms; linux ++ darwin;
|
||||
hydraPlatforms = [];
|
||||
hydraPlatforms = [ ];
|
||||
};
|
||||
|
||||
linuxPkg = stdenv.mkDerivation {
|
||||
@@ -50,7 +61,9 @@ let
|
||||
installPhase = ''
|
||||
mkdir -p $out/libexec/geogebra/ $out/bin
|
||||
cp -r GeoGebra-linux-x64/{resources,locales} "$out/"
|
||||
makeWrapper ${lib.getBin electron}/bin/electron $out/bin/geogebra --add-flags "$out/resources/app"
|
||||
makeWrapper ${lib.getBin electron}/bin/electron $out/bin/geogebra \
|
||||
--add-flags "$out/resources/app" \
|
||||
--add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations}}"
|
||||
install -Dm644 "${desktopItem}/share/applications/"* \
|
||||
-t $out/share/applications/
|
||||
|
||||
@@ -84,6 +97,4 @@ let
|
||||
};
|
||||
};
|
||||
in
|
||||
if stdenv.isDarwin
|
||||
then darwinPkg
|
||||
else linuxPkg
|
||||
if stdenv.isDarwin then darwinPkg else linuxPkg
|
||||
|
||||
@@ -56,7 +56,7 @@ in maven'.buildMavenPackage {
|
||||
cp -r ${npmPkg} main/webapp/modules/core/3rdparty
|
||||
'';
|
||||
mvnParameters = "-pl !packaging";
|
||||
mvnHash = "sha256-0qsKUMV9M0ZaddR5ust8VikSrsutdxVNNezKqR+F/6M=";
|
||||
mvnHash = "sha256-FD4g0Mshz39N1h8MDAk907PhF5TguWTZ7AXKECHuhzQ=";
|
||||
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
|
||||
|
||||
@@ -64,5 +64,6 @@ python3Packages.buildPythonApplication rec {
|
||||
description = "Sleek and powerful Git GUI";
|
||||
license = licenses.gpl2;
|
||||
maintainers = [ maintainers.bobvanderlinden ];
|
||||
mainProgram = "git-cola";
|
||||
};
|
||||
}
|
||||
|
||||
@@ -19,16 +19,16 @@
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "jujutsu";
|
||||
version = "0.18.0";
|
||||
version = "0.19.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "martinvonz";
|
||||
repo = "jj";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-5KKF85RNCPPaXMxBb7m2XC3EaEo+UcEhBdfMEzNPsAg=";
|
||||
hash = "sha256-coASwU7nMalqvtqukhuRWz52My4e2Zl/7tqHNEvS1Nk=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-MiJuen3Lo7nPaAK30cENw3ACAdoYbHDoiGS05dk5m6U=";
|
||||
cargoHash = "sha256-9SYjC3xL8OGGT56Q/yhH1oWeRT0Z956Yms6DGvCzlUY=";
|
||||
|
||||
cargoBuildFlags = [ "--bin" "jj" ]; # don't install the fake editors
|
||||
useNextest = false; # nextest is the upstream integration framework, but is problematic for test skipping
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
diff --git a/cmake/scripts/linux/Install.cmake b/cmake/scripts/linux/Install.cmake
|
||||
index 9c45c91774..763d6acab4 100644
|
||||
--- a/cmake/scripts/linux/Install.cmake
|
||||
+++ b/cmake/scripts/linux/Install.cmake
|
||||
@@ -199,8 +199,6 @@ install(FILES ${CMAKE_BINARY_DIR}/${CORE_BUILD_DIR}/scripts/${APP_NAME}Config.cm
|
||||
|
||||
if(ENABLE_EVENTCLIENTS)
|
||||
find_package(PythonInterpreter REQUIRED)
|
||||
- execute_process(COMMAND ${PYTHON_EXECUTABLE} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(prefix=''))"
|
||||
- OUTPUT_VARIABLE PYTHON_LIB_PATH OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
# Install kodi-eventclients-common BT python files
|
||||
install(PROGRAMS ${CMAKE_SOURCE_DIR}/tools/EventClients/lib/python/bt/__init__.py
|
||||
${CMAKE_SOURCE_DIR}/tools/EventClients/lib/python/bt/bt.py
|
||||
@@ -1,4 +1,4 @@
|
||||
{ stdenv, lib, fetchFromGitHub, fetchzip
|
||||
{ stdenv, lib, fetchFromGitHub, fetchzip, fetchpatch
|
||||
, autoconf, automake, libtool, makeWrapper
|
||||
, pkg-config, cmake, yasm, python3Packages
|
||||
, libxcrypt, libgcrypt, libgpg-error, libunistring
|
||||
@@ -97,6 +97,10 @@ in stdenv.mkDerivation (finalAttrs: {
|
||||
hash = "sha256-xrFWqgwTkurEwt3/+/e4SCM6Uk9nxuW62SrCFWWqZO0=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
./no-python-lib.patch
|
||||
];
|
||||
|
||||
# make derivations declared in the let binding available here, so
|
||||
# they can be overridden
|
||||
inherit libdvdcss libdvdnav libdvdread groovy
|
||||
@@ -189,6 +193,7 @@ in stdenv.mkDerivation (finalAttrs: {
|
||||
"-DSWIG_EXECUTABLE=${buildPackages.swig}/bin/swig"
|
||||
"-DFLATBUFFERS_FLATC_EXECUTABLE=${buildPackages.flatbuffers}/bin/flatc"
|
||||
"-DPYTHON_EXECUTABLE=${buildPackages.python3Packages.python}/bin/python"
|
||||
"-DPYTHON_LIB_PATH=${python3Packages.python.sitePackages}"
|
||||
# When wrapped KODI_HOME will likely contain symlinks to static assets
|
||||
# that Kodi's built in webserver will cautiously refuse to serve up
|
||||
# (because their realpaths are outside of KODI_HOME and the other
|
||||
|
||||
@@ -12,13 +12,13 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "mpc-qt";
|
||||
version = "23.12";
|
||||
version = "24.06";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "mpc-qt";
|
||||
repo = "mpc-qt";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-v22o5QtCY9Z8bPoIkwypG0oTBEPqPFeKZ8cWO+pKCD0=";
|
||||
hash = "sha256-kEG7B99io3BGjN94nEX1pN10Bcjj21rb46Vcn2OtpN8=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
||||
@@ -377,7 +377,6 @@ stdenv'.mkDerivation (finalAttrs: {
|
||||
fpletz
|
||||
globin
|
||||
ma27
|
||||
tadeokondrak
|
||||
];
|
||||
platforms = lib.platforms.unix;
|
||||
};
|
||||
|
||||
@@ -7,13 +7,13 @@
|
||||
|
||||
buildLua {
|
||||
pname = "memo";
|
||||
version = "0-unstable-2023-10-31";
|
||||
version = "0-unstable-2024-07-02";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "po5";
|
||||
repo = "memo";
|
||||
rev = "6f2b036ef860e130ea584657389e0a7ceb4d954f";
|
||||
hash = "sha256-m8ikXuw7PM4Btg8w7ufLneKA4fnYjMyfVJYueZILMw8=";
|
||||
rev = "43ad5bc37d4ac63a00dd2a8f15b9028789467da7";
|
||||
hash = "sha256-nHJ1x5R4Rw2YjB3Li3ZFbI3ZdLSqddJFzJlni4NjpH0=";
|
||||
};
|
||||
|
||||
passthru.updateScript = unstableGitUpdater { };
|
||||
|
||||
@@ -14,12 +14,12 @@
|
||||
}:
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "vdr-softhddevice";
|
||||
version = "2.3.3";
|
||||
version = "2.3.4";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ua0lnj";
|
||||
repo = "vdr-plugin-softhddevice";
|
||||
sha256 = "sha256-PvSo5qiDMVrL6ylts5leR/3YAqIpIZcmnAqnGopPG94=";
|
||||
sha256 = "sha256-pwA0LBQZ0jYXgBHhboAhyPM/kM7sboGw0O+3OIg5Nz4=";
|
||||
rev = "v${version}";
|
||||
};
|
||||
|
||||
|
||||
@@ -9,14 +9,14 @@ let
|
||||
callPackage
|
||||
(import ./generic.nix rec {
|
||||
pname = "apptainer";
|
||||
version = "1.3.2";
|
||||
version = "1.3.3";
|
||||
projectName = "apptainer";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "apptainer";
|
||||
repo = "apptainer";
|
||||
rev = "refs/tags/v${version}";
|
||||
hash = "sha256-NseigaPmRKDsBk8v7RpYf+uoEGvQHVnqOMO49kP0mQ8=";
|
||||
hash = "sha256-xQZCQa9z1aJ2tVtxMlwcNhlm0EV/nn8OnbfaVZRm4JI=";
|
||||
};
|
||||
|
||||
# Update by running
|
||||
|
||||
@@ -2,11 +2,11 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "virt-what";
|
||||
version = "1.25";
|
||||
version = "1.26";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://people.redhat.com/~rjones/virt-what/files/${pname}-${version}.tar.gz";
|
||||
sha256 = "sha256-1Py0I2Irr75eK7zYS32SrU1YP0d4siW3LEqBrp/Dxz0=";
|
||||
sha256 = "sha256-qoap0xO1yQSK+a2aA4fkr/I4uw6kLzuDARTotQzTFTU=";
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
|
||||
@@ -619,10 +619,14 @@ rec {
|
||||
fakeRootCommands = ''
|
||||
mkdir -p ./home/alice
|
||||
chown 1000 ./home/alice
|
||||
ln -s ${pkgs.hello.overrideAttrs (o: {
|
||||
ln -s ${pkgs.hello.overrideAttrs (finalAttrs: prevAttrs: {
|
||||
# A unique `hello` to make sure that it isn't included via another mechanism by accident.
|
||||
configureFlags = o.configureFlags or [] ++ [ " --program-prefix=layeredImageWithFakeRootCommands-" ];
|
||||
configureFlags = prevAttrs.configureFlags or [] ++ [ " --program-prefix=layeredImageWithFakeRootCommands-" ];
|
||||
doCheck = false;
|
||||
versionCheckProgram = "${builtins.placeholder "out"}/bin/${finalAttrs.meta.mainProgram}";
|
||||
meta = prevAttrs.meta // {
|
||||
mainProgram = "layeredImageWithFakeRootCommands-hello";
|
||||
};
|
||||
})} ./hello
|
||||
'';
|
||||
};
|
||||
|
||||
@@ -5,6 +5,8 @@
|
||||
# Name of the nuget package to install, if different from pname
|
||||
, nugetName ? pname
|
||||
# Hash of the nuget package to install, will be given on first build
|
||||
# nugetHash uses SRI hash and should be preferred
|
||||
, nugetHash ? ""
|
||||
, nugetSha256 ? ""
|
||||
# Additional nuget deps needed by the tool package
|
||||
, nugetDeps ? (_: [])
|
||||
@@ -24,7 +26,7 @@ buildDotnetModule (args // {
|
||||
nugetDeps = mkNugetDeps {
|
||||
name = pname;
|
||||
nugetDeps = { fetchNuGet }: [
|
||||
(fetchNuGet { pname = nugetName; inherit version; sha256 = nugetSha256; })
|
||||
(fetchNuGet { pname = nugetName; inherit version; sha256 = nugetSha256; hash = nugetHash; })
|
||||
] ++ (nugetDeps fetchNuGet);
|
||||
};
|
||||
|
||||
|
||||
@@ -5,15 +5,19 @@ attrs @
|
||||
, version
|
||||
, url ? "https://www.nuget.org/api/v2/package/${pname}/${version}"
|
||||
, sha256 ? ""
|
||||
, hash ? ""
|
||||
, md5 ? ""
|
||||
, ...
|
||||
}:
|
||||
if md5 != "" then
|
||||
throw "fetchnuget does not support md5 anymore, please use sha256"
|
||||
throw "fetchnuget does not support md5 anymore, please use 'hash' attribute with SRI hash"
|
||||
# This is also detected in fetchurl, but we just throw here to avoid confusion
|
||||
else if (sha256 != "" && hash != "") then
|
||||
throw "multiple hashes passed to fetchNuGet"
|
||||
else
|
||||
buildDotnetPackage ({
|
||||
src = fetchurl {
|
||||
inherit url sha256;
|
||||
inherit url sha256 hash;
|
||||
name = "${pname}.${version}.zip";
|
||||
};
|
||||
|
||||
|
||||
@@ -1,11 +1,14 @@
|
||||
{ linkFarmFromDrvs, fetchurl }:
|
||||
{ name, nugetDeps ? import sourceFile, sourceFile ? null }:
|
||||
linkFarmFromDrvs "${name}-nuget-deps" (nugetDeps {
|
||||
fetchNuGet = { pname, version, sha256
|
||||
fetchNuGet = { pname, version, sha256 ? "", hash ? ""
|
||||
, url ? "https://www.nuget.org/api/v2/package/${pname}/${version}" }:
|
||||
fetchurl {
|
||||
name = "${pname}.${version}.nupkg";
|
||||
inherit url sha256;
|
||||
# There is no need to verify whether both sha256 and hash are
|
||||
# valid here, because nuget-to-nix does not generate a deps.nix
|
||||
# containing both.
|
||||
inherit url sha256 hash;
|
||||
};
|
||||
}) // {
|
||||
inherit sourceFile;
|
||||
|
||||
@@ -65,11 +65,11 @@ for package in *; do
|
||||
for source in "${remote_sources[@]}"; do
|
||||
url="${base_addresses[$source]}$package/$version/$package.$version.nupkg"
|
||||
if [[ "$source" == "$used_source" ]]; then
|
||||
sha256="$(nix-hash --type sha256 --flat --base32 "$version/$package.$version".nupkg)"
|
||||
hash="$(nix-hash --type sha256 --flat --sri "$version/$package.$version".nupkg)"
|
||||
found=true
|
||||
break
|
||||
else
|
||||
if sha256=$(nix-prefetch-url "$url" 2>"$tmp"/error); then
|
||||
if hash=$(nix-prefetch-url "$url" 2>"$tmp"/error); then
|
||||
# If multiple remote sources are enabled, nuget will try them all
|
||||
# concurrently and use the one that responds first. We always use the
|
||||
# first source that has the package.
|
||||
@@ -91,9 +91,9 @@ for package in *; do
|
||||
fi
|
||||
|
||||
if [[ "$source" != https://api.nuget.org/v3/index.json ]]; then
|
||||
echo " (fetchNuGet { pname = \"$id\"; version = \"$version\"; sha256 = \"$sha256\"; url = \"$url\"; })"
|
||||
echo " (fetchNuGet { pname = \"$id\"; version = \"$version\"; hash = \"$hash\"; url = \"$url\"; })"
|
||||
else
|
||||
echo " (fetchNuGet { pname = \"$id\"; version = \"$version\"; sha256 = \"$sha256\"; })"
|
||||
echo " (fetchNuGet { pname = \"$id\"; version = \"$version\"; hash = \"$hash\"; })"
|
||||
fi
|
||||
done
|
||||
cd ..
|
||||
|
||||
@@ -108,11 +108,12 @@ let
|
||||
renderAction = name: attrs: renderSection "Desktop Action ${name}" (preprocessAction attrs);
|
||||
actionsRendered = lib.mapAttrsToList renderAction actions;
|
||||
|
||||
extension = if type == "Directory" then "directory" else "desktop";
|
||||
content = [ mainSectionRendered ] ++ actionsRendered;
|
||||
in
|
||||
writeTextFile {
|
||||
name = "${name}.desktop";
|
||||
destination = "/share/applications/${name}.desktop";
|
||||
name = "${name}.${extension}";
|
||||
destination = "/share/applications/${name}.${extension}";
|
||||
text = builtins.concatStringsSep "\n" content;
|
||||
checkPhase = ''${buildPackages.desktop-file-utils}/bin/desktop-file-validate "$target"'';
|
||||
})
|
||||
|
||||
@@ -195,7 +195,7 @@ in ''
|
||||
export CARGO_FEATURE_$feature=1
|
||||
done
|
||||
|
||||
target/build/${crateName}/build_script_build > target/build/${crateName}.opt
|
||||
target/build/${crateName}/build_script_build | tee target/build/${crateName}.opt
|
||||
)
|
||||
|
||||
set +e
|
||||
|
||||
@@ -7,13 +7,13 @@
|
||||
|
||||
stdenvNoCC.mkDerivation {
|
||||
pname = "ananicy-rules-cachyos";
|
||||
version = "0-unstable-2024-06-22";
|
||||
version = "0-unstable-2024-07-03";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "CachyOS";
|
||||
repo = "ananicy-rules";
|
||||
rev = "049badd3263ed2af20c9e98b062f8c31cf74cec6";
|
||||
hash = "sha256-KEFXCaLZL3D7ue4W+MqODg/F633sU8JzDMKM2ebUoD8=";
|
||||
rev = "3f76b3f497e590c4b6a4f9316b212c627631399b";
|
||||
hash = "sha256-qwyqOgv4djIrJn9MlHO/I8zC741b4ORxDMgYZ+Da2eM=";
|
||||
};
|
||||
|
||||
dontConfigure = true;
|
||||
|
||||
@@ -33,11 +33,11 @@
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "apt";
|
||||
version = "2.9.5";
|
||||
version = "2.9.6";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://debian/pool/main/a/apt/apt_${finalAttrs.version}.tar.xz";
|
||||
hash = "sha256-bSstTP+9gxOhHnO8PIb4/5W8Xg3vc1nvrDAz9WMFGJQ=";
|
||||
hash = "sha256-eapV5XBc/WmpMSsf8j17WOUyMu4itk0WozPzrmJmDdc=";
|
||||
};
|
||||
|
||||
# cycle detection; lib can't be split
|
||||
|
||||
@@ -9,11 +9,11 @@
|
||||
|
||||
stdenvNoCC.mkDerivation (finalAttrs: {
|
||||
pname = "arc-browser";
|
||||
version = "1.49.0-51346";
|
||||
version = "1.49.1-51495";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://releases.arc.net/release/Arc-${finalAttrs.version}.dmg";
|
||||
hash = "sha256-XrFDYzRUGCSyM8E+zHK/OZMKWYI9kCxUQ2TI98htPWk=";
|
||||
hash = "sha256-9wuZQgf8uta0ynMRe3GKqORZsCuwhvxjSpGLajCp7N8=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ undmg ];
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user