Merge 7c3df50c30 into haskell-updates

This commit is contained in:
nixpkgs-ci[bot] 2025-04-24 00:19:47 +00:00 committed by GitHub
commit d5802b9fdb
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
495 changed files with 6556 additions and 4505 deletions

View file

@ -214,7 +214,7 @@ stdenv.mkDerivation {
You can rely on applications depending on the library setting the necessary environment variables but that is often easy to miss. Instead we recommend to patch the paths in the source code whenever possible. Here are some examples: You can rely on applications depending on the library setting the necessary environment variables but that is often easy to miss. Instead we recommend to patch the paths in the source code whenever possible. Here are some examples:
- []{#ssec-gnome-common-issues-unwrappable-package-gnome-shell-ext} [Replacing a `GI_TYPELIB_PATH` in GNOME Shell extension](https://github.com/NixOS/nixpkgs/blob/7bb8f05f12ca3cff9da72b56caa2f7472d5732bc/pkgs/desktops/gnome-3/core/gnome-shell-extensions/default.nix#L21-L24) we are using `substituteAll` to include the path to a typelib into a patch. - []{#ssec-gnome-common-issues-unwrappable-package-gnome-shell-ext} [Replacing a `GI_TYPELIB_PATH` in GNOME Shell extension](https://github.com/NixOS/nixpkgs/blob/e981466fbb08e6231a1377539ff17fbba3270fda/pkgs/by-name/gn/gnome-shell-extensions/package.nix#L25-L32) we are using `replaceVars` to include the path to a typelib into a patch.
- []{#ssec-gnome-common-issues-unwrappable-package-gsettings} The following examples are hardcoding GSettings schema paths. To get the schema paths we use the functions - []{#ssec-gnome-common-issues-unwrappable-package-gsettings} The following examples are hardcoding GSettings schema paths. To get the schema paths we use the functions
@ -222,7 +222,7 @@ You can rely on applications depending on the library setting the necessary envi
* `glib.makeSchemaPath` Takes a package output like `$out` and a derivation name. You should use this if the schemas you need to hardcode are in the same derivation. * `glib.makeSchemaPath` Takes a package output like `$out` and a derivation name. You should use this if the schemas you need to hardcode are in the same derivation.
[]{#ssec-gnome-common-issues-unwrappable-package-gsettings-vala} [Hard-coding GSettings schema path in Vala plug-in (dynamically loaded library)](https://github.com/NixOS/nixpkgs/blob/7bb8f05f12ca3cff9da72b56caa2f7472d5732bc/pkgs/desktops/pantheon/apps/elementary-files/default.nix#L78-L86) here, `substituteAll` cannot be used since the schema comes from the same package preventing us from pass its path to the function, probably due to a [Nix bug](https://github.com/NixOS/nix/issues/1846). []{#ssec-gnome-common-issues-unwrappable-package-gsettings-vala} [Hard-coding GSettings schema path in Vala plug-in (dynamically loaded library)](https://github.com/NixOS/nixpkgs/blob/7bb8f05f12ca3cff9da72b56caa2f7472d5732bc/pkgs/desktops/pantheon/apps/elementary-files/default.nix#L78-L86) here, `replaceVars` cannot be used since the schema comes from the same package preventing us from pass its path to the function, probably due to a [Nix bug](https://github.com/NixOS/nix/issues/1846).
[]{#ssec-gnome-common-issues-unwrappable-package-gsettings-c} [Hard-coding GSettings schema path in C library](https://github.com/NixOS/nixpkgs/blob/29c120c065d03b000224872251bed93932d42412/pkgs/development/libraries/glib-networking/default.nix#L31-L34) nothing special other than using [Coccinelle patch](https://github.com/NixOS/nixpkgs/pull/67957#issuecomment-527717467) to generate the patch itself. []{#ssec-gnome-common-issues-unwrappable-package-gsettings-c} [Hard-coding GSettings schema path in C library](https://github.com/NixOS/nixpkgs/blob/29c120c065d03b000224872251bed93932d42412/pkgs/development/libraries/glib-networking/default.nix#L31-L34) nothing special other than using [Coccinelle patch](https://github.com/NixOS/nixpkgs/pull/67957#issuecomment-527717467) to generate the patch itself.

View file

@ -214,7 +214,7 @@ code, while others choose not to.
In Nix, there are multiple approaches to building a Composer-based project. In Nix, there are multiple approaches to building a Composer-based project.
One such method is the `php.buildComposerProject` helper function, which serves One such method is the `php.buildComposerProject2` helper function, which serves
as a wrapper around `mkDerivation`. as a wrapper around `mkDerivation`.
Using this function, you can build a PHP project that includes both a Using this function, you can build a PHP project that includes both a
@ -249,19 +249,19 @@ To customize the PHP version, you can specify the `php` attribute. Similarly, if
you wish to modify the Composer version, use the `composer` attribute. It is you wish to modify the Composer version, use the `composer` attribute. It is
important to note that both attributes should be of the `derivation` type. important to note that both attributes should be of the `derivation` type.
Here's an example of working code example using `php.buildComposerProject`: Here's an example of working code example using `php.buildComposerProject2`:
```nix ```nix
{ php, fetchFromGitHub }: { php, fetchFromGitHub }:
php.buildComposerProject (finalAttrs: { php.buildComposerProject2 (finalAttrs: {
pname = "php-app"; pname = "php-app";
version = "1.0.0"; version = "1.0.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "git-owner"; owner = "git-owner";
repo = "git-repo"; repo = "git-repo";
rev = finalAttrs.version; tag = finalAttrs.version;
hash = "sha256-VcQRSss2dssfkJ+iUb5qT+FJ10GHiFDzySigcmuVI+8="; hash = "sha256-VcQRSss2dssfkJ+iUb5qT+FJ10GHiFDzySigcmuVI+8=";
}; };

View file

@ -30,13 +30,12 @@ substitute {
``` ```
::: :::
## `pkgs.substituteAll` {#pkgs-substituteall} ## `pkgs.replaceVars` {#pkgs-replacevars}
`pkgs.substituteAll` substitutes all instances of `@varName@` (`@`s included) in file `src` with the value of the corresponding environment variable. `pkgs.replaceVars <src> <replacements>` replaces all instances of `@varName@` (`@`s included) in file `src` with the respective value in the attribute set `replacements`.
As this uses the [`substituteAll`] (#fun-substitute) function, its limitations regarding variable names that will or will not be replaced also apply here.
:::{.example #ex-pkgs-substituteAll} :::{.example #ex-pkgs-replace-vars}
# Usage of `pkgs.substituteAll` # Usage of `pkgs.replaceVars`
If `say-goodbye.sh` contains the following: If `say-goodbye.sh` contains the following:
@ -51,16 +50,14 @@ the following derivation will make substitutions to `@bash@`, `@hello@`, and `@g
```nix ```nix
{ {
substituteAll, replaceVars,
bash, bash,
hello, hello,
}: }:
substituteAll { replaceVars ./say-goodbye.sh {
src = ./say-goodbye.sh; inherit bash hello;
env = { greeting = "goodbye";
inherit bash hello; unchanged = null;
greeting = "goodbye";
};
} }
``` ```
@ -72,31 +69,37 @@ such that `$out` will result in something like the following:
echo @unchanged@ echo @unchanged@
/nix/store/566f5isbvw014h7knmzmxa5l6hshx43k-hello-2.12.1/bin/hello --greeting goodbye /nix/store/566f5isbvw014h7knmzmxa5l6hshx43k-hello-2.12.1/bin/hello --greeting goodbye
``` ```
Note that, in contrast to the old `substituteAll`, `unchanged = null` must explicitly be set.
Any unreferenced `@...@` pattern in the source file will throw an error.
::: :::
## `pkgs.substituteAllFiles` {#pkgs-substituteallfiles} ## `pkgs.replaceVarsWith` {#pkgs-replacevarswith}
`pkgs.substituteAllFiles` replaces `@varName@` with the value of the environment variable `varName`. `pkgs.replaceVarsWith` works the same way as [pkgs.replaceVars](#pkgs-replacevars), but additionally allows more options.
It expects `src` to be a directory and requires a `files` argument that specifies which files will be subject to replacements; only these files will be placed in `$out`.
As it also uses the `substituteAll` function, it is subject to the same limitations on environment variables as discussed in [pkgs.substituteAll](#pkgs-substituteall). :::{.example #ex-pkgs-replace-vars-with}
# Usage of `pkgs.replaceVarsWith`
:::{.example #ex-pkgs-substitute-all-files} With the example file `say-goodbye.sh`, consider:
# Usage of `pkgs.substituteAllFiles`
If the current directory contains `{foo,bar,baz}.txt` and the following `default.nix`
```nix ```nix
{ substituteAllFiles }: { replaceVarsWith }:
substituteAllFiles { replaceVarsWith {
src = ./.; src = ./say-goodbye.sh;
files = [
"foo.txt" replacements = {
"bar.txt" inherit bash hello;
]; greeting = "goodbye";
hello = "there"; unchanged = null;
};
name = "say-goodbye";
dir = "bin";
isExecutable = true;
meta.mainProgram = "say-goodbye";
} }
``` ```
in the resulting derivation, every instance of `@hello@` will be replaced with `there` in `$out/foo.txt` and `$out/bar.txt`; `baz.txt` will not be processed nor will it appear in `$out`. This will make the resulting file executable, put it in `bin/say-goodbye` and set `meta` attributes respectively.
::: :::

View file

@ -42,7 +42,7 @@ shows the status of tests for the `nixpkgs-unstable` channel.
The tests are conducted by a cluster called [Hydra](https://nixos.org/hydra/), The tests are conducted by a cluster called [Hydra](https://nixos.org/hydra/),
which also builds binary packages from the Nix expressions in Nixpkgs for which also builds binary packages from the Nix expressions in Nixpkgs for
`x86_64-linux`, `i686-linux` and `x86_64-darwin`. `x86_64-linux`, `aarch64-linux`, `x86_64-darwin` and `aarch64-darwin`.
The binaries are made available via a [binary cache](https://cache.nixos.org). The binaries are made available via a [binary cache](https://cache.nixos.org).
The current Nix expressions of the channels are available in the The current Nix expressions of the channels are available in the

View file

@ -8,6 +8,14 @@
"ex-build-helpers-extendMkDerivation": [ "ex-build-helpers-extendMkDerivation": [
"index.html#ex-build-helpers-extendMkDerivation" "index.html#ex-build-helpers-extendMkDerivation"
], ],
"ex-pkgs-replace-vars": [
"index.html#ex-pkgs-replace-vars",
"index.html#ex-pkgs-substituteAll",
"index.html#ex-pkgs-substitute-all-files"
],
"ex-pkgs-replace-vars-with": [
"index.html#ex-pkgs-replace-vars-with"
],
"ex-shfmt": [ "ex-shfmt": [
"index.html#ex-shfmt" "index.html#ex-shfmt"
], ],
@ -35,6 +43,14 @@
"no-broken-symlinks.sh": [ "no-broken-symlinks.sh": [
"index.html#no-broken-symlinks.sh" "index.html#no-broken-symlinks.sh"
], ],
"pkgs-replacevars": [
"index.html#pkgs-replacevars",
"index.html#pkgs-substituteall",
"index.html#pkgs-substituteallfiles"
],
"pkgs-replacevarswith": [
"index.html#pkgs-replacevarswith"
],
"preface": [ "preface": [
"index.html#preface" "index.html#preface"
], ],
@ -4193,18 +4209,6 @@
"ex-pkgs-substitute": [ "ex-pkgs-substitute": [
"index.html#ex-pkgs-substitute" "index.html#ex-pkgs-substitute"
], ],
"pkgs-substituteall": [
"index.html#pkgs-substituteall"
],
"ex-pkgs-substituteAll": [
"index.html#ex-pkgs-substituteAll"
],
"pkgs-substituteallfiles": [
"index.html#pkgs-substituteallfiles"
],
"ex-pkgs-substitute-all-files": [
"index.html#ex-pkgs-substitute-all-files"
],
"part-development": [ "part-development": [
"index.html#part-development" "index.html#part-development"
], ],

View file

@ -98,6 +98,8 @@
- `cassandra_3_0` and `cassandra_3_11` have been removed as they have reached end-of-life. Please update to `cassandra_4`. See the [changelog](https://github.com/apache/cassandra/blob/cassandra-4.0.17/NEWS.txt) for more information about the upgrade process. - `cassandra_3_0` and `cassandra_3_11` have been removed as they have reached end-of-life. Please update to `cassandra_4`. See the [changelog](https://github.com/apache/cassandra/blob/cassandra-4.0.17/NEWS.txt) for more information about the upgrade process.
- `mariadb_105` has been removed as it has reached end-of-life in 2025-06. Please update to `mariadb_106`.
- NetBox was updated to `>= 4.2.0`. Have a look at the breaking changes - NetBox was updated to `>= 4.2.0`. Have a look at the breaking changes
of the [4.1 release](https://github.com/netbox-community/netbox/releases/tag/v4.1.0) of the [4.1 release](https://github.com/netbox-community/netbox/releases/tag/v4.1.0)
and the [4.2 release](https://github.com/netbox-community/netbox/releases/tag/v4.2.0), and the [4.2 release](https://github.com/netbox-community/netbox/releases/tag/v4.2.0),
@ -113,6 +115,8 @@
- All support for 32bit Darwin systems has been dropped. - All support for 32bit Darwin systems has been dropped.
- `substituteAll` and `substituteAllFiles` have been deprecated in favor of `replaceVars` and will be removed in the next release.
- Default ICU version updated from 74 to 76 - Default ICU version updated from 74 to 76
- Apache Kafka was updated to `>= 4.0.0`. Please note that this is the first release which operates - Apache Kafka was updated to `>= 4.0.0`. Please note that this is the first release which operates
@ -192,6 +196,8 @@
- `mkBinaryCache` now defaults to using `zstd` compression for the binary caches it creates. The previous `xz` compression method can be used by passing `compression = "xz";`. - `mkBinaryCache` now defaults to using `zstd` compression for the binary caches it creates. The previous `xz` compression method can be used by passing `compression = "xz";`.
- `nodejs_18` package was removed due to upstream End-of-Life in April 2025.
- `nodePackages."@commitlint/config-conventional"` has been removed, as it is a library, and projects should depend on it instead. - `nodePackages."@commitlint/config-conventional"` has been removed, as it is a library, and projects should depend on it instead.
- zigbee2mqtt is now available in version 2.x as `zigbee2mqtt_2`. In NixOS 25.11 we'll remove `zigbee2mqtt_1` and default to `zigbee2mqtt_2`. See the [breaking changes](https://github.com/Koenkk/zigbee2mqtt/discussions/24198) announcement for 2.0.0. - zigbee2mqtt is now available in version 2.x as `zigbee2mqtt_2`. In NixOS 25.11 we'll remove `zigbee2mqtt_1` and default to `zigbee2mqtt_2`. See the [breaking changes](https://github.com/Koenkk/zigbee2mqtt/discussions/24198) announcement for 2.0.0.
@ -252,7 +258,7 @@
- `nodePackages.meshcommander` has been removed, as the package was deprecated by Intel. - `nodePackages.meshcommander` has been removed, as the package was deprecated by Intel.
- The default version of `z3` has been updated from 4.8 to 4.13. There are still a few packages that need specific older versions; those will continue to be maintained as long as other packages depend on them but may be removed in the future. - The default version of `z3` has been updated from 4.8 to 4.14, and all old versions have been dropped. Note that `fstar` still depends on specific versions, and maintains them as overrides.
- `prometheus` has been updated from 2.55.0 to 3.1.0. - `prometheus` has been updated from 2.55.0 to 3.1.0.
Read the [release blog post](https://prometheus.io/blog/2024/11/14/prometheus-3-0/) and Read the [release blog post](https://prometheus.io/blog/2024/11/14/prometheus-3-0/) and

View file

@ -301,9 +301,9 @@ rec {
Nix has an [attribute selection operator](https://nixos.org/manual/nix/stable/language/operators#attribute-selection) which is sufficient for such queries, as long as the number of attributes is static. For example: Nix has an [attribute selection operator](https://nixos.org/manual/nix/stable/language/operators#attribute-selection) which is sufficient for such queries, as long as the number of attributes is static. For example:
```nix ```nix
x.a.b == getAttrByPath ["a" "b"] x x.a.b == getAttrFromPath ["a" "b"] x
# and # and
x.${f p}."example.com" == getAttrByPath [ (f p) "example.com" ] x x.${f p}."example.com" == getAttrFromPath [ (f p) "example.com" ] x
``` ```
# Inputs # Inputs

View file

@ -279,6 +279,7 @@ let
naturalSort naturalSort
compareLists compareLists
take take
takeEnd
drop drop
dropEnd dropEnd
sublist sublist
@ -347,6 +348,7 @@ let
toSentenceCase toSentenceCase
addContextFrom addContextFrom
splitString splitString
splitStringBy
removePrefix removePrefix
removeSuffix removeSuffix
versionOlder versionOlder

View file

@ -1462,6 +1462,40 @@ rec {
*/ */
take = count: sublist 0 count; take = count: sublist 0 count;
/**
Return the last (at most) N elements of a list.
# Inputs
`count`
: Maximum number of elements to pick
`list`
: Input list
# Type
```
takeEnd :: int -> [a] -> [a]
```
# Examples
:::{.example}
## `lib.lists.takeEnd` usage example
```nix
takeEnd 2 [ "a" "b" "c" "d" ]
=> [ "c" "d" ]
takeEnd 2 [ ]
=> [ ]
```
:::
*/
takeEnd = n: xs: drop (max 0 (length xs - n)) xs;
/** /**
Remove the first (at most) N elements of a list. Remove the first (at most) N elements of a list.

View file

@ -1592,6 +1592,97 @@ rec {
in in
map (addContextFrom s) splits; map (addContextFrom s) splits;
/**
Splits a string into substrings based on a predicate that examines adjacent characters.
This function provides a flexible way to split strings by checking pairs of characters
against a custom predicate function. Unlike simpler splitting functions, this allows
for context-aware splitting based on character transitions and patterns.
# Inputs
`predicate`
: Function that takes two arguments (previous character and current character)
and returns true when the string should be split at the current position.
For the first character, previous will be "" (empty string).
`keepSplit`
: Boolean that determines whether the splitting character should be kept as
part of the result. If true, the character will be included at the beginning
of the next substring; if false, it will be discarded.
`str`
: The input string to split.
# Return
A list of substrings from the original string, split according to the predicate.
# Type
```
splitStringBy :: (string -> string -> bool) -> bool -> string -> [string]
```
# Examples
:::{.example}
## `lib.strings.splitStringBy` usage example
Split on periods and hyphens, discarding the separators:
```nix
splitStringBy (prev: curr: builtins.elem curr [ "." "-" ]) false "foo.bar-baz"
=> [ "foo" "bar" "baz" ]
```
Split on transitions from lowercase to uppercase, keeping the uppercase characters:
```nix
splitStringBy (prev: curr: builtins.match "[a-z]" prev != null && builtins.match "[A-Z]" curr != null) true "fooBarBaz"
=> [ "foo" "Bar" "Baz" ]
```
Handle leading separators correctly:
```nix
splitStringBy (prev: curr: builtins.elem curr [ "." ]) false ".foo.bar.baz"
=> [ "" "foo" "bar" "baz" ]
```
Handle trailing separators correctly:
```nix
splitStringBy (prev: curr: builtins.elem curr [ "." ]) false "foo.bar.baz."
=> [ "foo" "bar" "baz" "" ]
```
:::
*/
splitStringBy =
predicate: keepSplit: str:
let
len = stringLength str;
# Helper function that processes the string character by character
go =
pos: currentPart: result:
# Base case: reached end of string
if pos == len then
result ++ [ currentPart ]
else
let
currChar = substring pos 1 str;
prevChar = if pos > 0 then substring (pos - 1) 1 str else "";
isSplit = predicate prevChar currChar;
in
if isSplit then
# Split here - add current part to results and start a new one
let
newResult = result ++ [ currentPart ];
newCurrentPart = if keepSplit then currChar else "";
in
go (pos + 1) newCurrentPart newResult
else
# Keep building current part
go (pos + 1) (currentPart + currChar) result;
in
if len == 0 then [ (addContextFrom str "") ] else map (addContextFrom str) (go 0 "" [ ]);
/** /**
Return a string without the specified prefix, if the prefix matches. Return a string without the specified prefix, if the prefix matches.

View file

@ -631,6 +631,101 @@ runTests {
]; ];
}; };
testSplitStringBySimpleDelimiter = {
expr = strings.splitStringBy (
prev: curr:
builtins.elem curr [
"."
"-"
]
) false "foo.bar-baz";
expected = [
"foo"
"bar"
"baz"
];
};
testSplitStringByLeadingDelimiter = {
expr = strings.splitStringBy (prev: curr: builtins.elem curr [ "." ]) false ".foo.bar.baz";
expected = [
""
"foo"
"bar"
"baz"
];
};
testSplitStringByTrailingDelimiter = {
expr = strings.splitStringBy (prev: curr: builtins.elem curr [ "." ]) false "foo.bar.baz.";
expected = [
"foo"
"bar"
"baz"
""
];
};
testSplitStringByMultipleConsecutiveDelimiters = {
expr = strings.splitStringBy (prev: curr: builtins.elem curr [ "." ]) false "foo...bar";
expected = [
"foo"
""
""
"bar"
];
};
testSplitStringByKeepingSplitChar = {
expr = strings.splitStringBy (prev: curr: builtins.elem curr [ "." ]) true "foo.bar.baz";
expected = [
"foo"
".bar"
".baz"
];
};
testSplitStringByCaseTransition = {
expr = strings.splitStringBy (
prev: curr: builtins.match "[a-z]" prev != null && builtins.match "[A-Z]" curr != null
) true "fooBarBaz";
expected = [
"foo"
"Bar"
"Baz"
];
};
testSplitStringByEmptyString = {
expr = strings.splitStringBy (prev: curr: builtins.elem curr [ "." ]) false "";
expected = [ "" ];
};
testSplitStringByComplexPredicate = {
expr = strings.splitStringBy (
prev: curr:
prev != ""
&& curr != ""
&& builtins.match "[0-9]" prev != null
&& builtins.match "[a-z]" curr != null
) true "123abc456def";
expected = [
"123"
"abc456"
"def"
];
};
testSplitStringByUpperCaseStart = {
expr = strings.splitStringBy (prev: curr: builtins.match "[A-Z]" curr != null) true "FooBarBaz";
expected = [
""
"Foo"
"Bar"
"Baz"
];
};
testEscapeShellArg = { testEscapeShellArg = {
expr = strings.escapeShellArg "esc'ape\nme"; expr = strings.escapeShellArg "esc'ape\nme";
expected = "'esc'\\''ape\nme'"; expected = "'esc'\\''ape\nme'";
@ -1262,6 +1357,69 @@ runTests {
) )
]; ];
testTakeEnd =
let
inherit (lib) takeEnd;
in
testAllTrue [
(
takeEnd 0 [
1
2
3
] == [ ]
)
(
takeEnd 1 [
1
2
3
] == [ 3 ]
)
(
takeEnd 2 [
1
2
3
] == [
2
3
]
)
(
takeEnd 3 [
1
2
3
] == [
1
2
3
]
)
(
takeEnd 4 [
1
2
3
] == [
1
2
3
]
)
(takeEnd 0 [ ] == [ ])
(takeEnd 1 [ ] == [ ])
(
takeEnd (-1) [
1
2
3
] == [ ]
)
(takeEnd (-1) [ ] == [ ])
];
testDrop = testDrop =
let let
inherit (lib) drop; inherit (lib) drop;

View file

@ -2129,6 +2129,11 @@
githubId = 11493130; githubId = 11493130;
name = "Asbjørn Olling"; name = "Asbjørn Olling";
}; };
aschleck = {
name = "April Schleck";
github = "aschleck";
githubId = 115766;
};
ascii17 = { ascii17 = {
name = "Allen Conlon"; name = "Allen Conlon";
email = "software@conlon.dev"; email = "software@conlon.dev";
@ -2513,6 +2518,7 @@
}; };
awwpotato = { awwpotato = {
email = "awwpotato@voidq.com"; email = "awwpotato@voidq.com";
matrix = "@awwpotato:envs.net";
github = "awwpotato"; github = "awwpotato";
githubId = 153149335; githubId = 153149335;
name = "awwpotato"; name = "awwpotato";
@ -8483,6 +8489,12 @@
githubId = 12715461; githubId = 12715461;
name = "Anders Bo Rasmussen"; name = "Anders Bo Rasmussen";
}; };
fvckgrimm = {
email = "nixpkgs@grimm.wtf";
github = "fvckgrimm";
githubId = 55907409;
name = "Grimm";
};
fwc = { fwc = {
github = "fwc"; github = "fwc";
githubId = 29337229; githubId = 29337229;
@ -12835,6 +12847,12 @@
githubId = 1915; githubId = 1915;
name = "Asherah Connor"; name = "Asherah Connor";
}; };
kiyotoko = {
email = "karl.zschiebsch@gmail.com";
github = "Kiyotoko";
githubId = 49951907;
name = "Karl Zschiebsch";
};
kjeremy = { kjeremy = {
email = "kjeremy@gmail.com"; email = "kjeremy@gmail.com";
name = "Jeremy Kolb"; name = "Jeremy Kolb";
@ -13883,12 +13901,6 @@
githubId = 74221543; githubId = 74221543;
name = "Moritz Goltdammer"; name = "Moritz Goltdammer";
}; };
linuxmobile = {
email = "bdiez19@gmail.com";
github = "linuxmobile";
githubId = 10554636;
name = "Braian A. Diez";
};
linuxwhata = { linuxwhata = {
email = "linuxwhata@qq.com"; email = "linuxwhata@qq.com";
matrix = "@lwa:envs.net"; matrix = "@lwa:envs.net";
@ -18061,6 +18073,12 @@
githubId = 817073; githubId = 817073;
name = "Yc. Shen"; name = "Yc. Shen";
}; };
onnimonni = {
email = "onni@flaky.build";
github = "onnimonni";
githubId = 5691777;
name = "Onni Hakala";
};
onny = { onny = {
email = "onny@project-insanity.org"; email = "onny@project-insanity.org";
github = "onny"; github = "onny";
@ -20392,6 +20410,11 @@
githubId = 4196789; githubId = 4196789;
name = "Nathan Ringo"; name = "Nathan Ringo";
}; };
remko = {
github = "remko";
githubId = 12300;
name = "Remko Tronçon";
};
remyvv = { remyvv = {
name = "Remy van Velthuijsen"; name = "Remy van Velthuijsen";
email = "remy@remysplace.de"; email = "remy@remysplace.de";
@ -26312,6 +26335,13 @@
github = "x3rAx"; github = "x3rAx";
githubId = 2268851; githubId = 2268851;
}; };
x807x = {
name = "x807x";
email = "s10855168@gmail.com";
matrix = "@x807x:matrix.org";
github = "x807x";
githubId = 86676478;
};
xanderio = { xanderio = {
name = "Alexander Sieg"; name = "Alexander Sieg";
email = "alex@xanderio.de"; email = "alex@xanderio.de";

View file

@ -2,15 +2,30 @@
Nixpkgs contains a variety of modules to build custom images for different virtualization platforms and cloud providers, such as e.g. `amazon-image.nix` and `proxmox-lxc.nix`. Nixpkgs contains a variety of modules to build custom images for different virtualization platforms and cloud providers, such as e.g. `amazon-image.nix` and `proxmox-lxc.nix`.
While those can be imported individually, `system.build.images` provides an attribute set mapping variant names to image derivations. Available variants are defined - end extendable - in `image.modules`, an attribute set mapping variant names to a list of NixOS modules. While those can be imported directly, `system.build.images` provides an attribute set mapping variant names to image derivations. Available variants are defined - end extendable - in `image.modules`, an attribute set mapping variant names to NixOS modules.
All of those images can be built via both, their `system.build.image` attribute, and the CLI `nixos-rebuild build-image`. To build i.e. an Amazon image from your existing NixOS configuration: All of those images can be built via both, their `system.build.image` attribute and the `nixos-rebuild build-image` command.
For example, to build an Amazon image from your existing NixOS configuration, run:
```ShellSession ```ShellSession
$ nixos-rebuild build-image --image-variant amazon $ nixos-rebuild build-image --image-variant amazon
$ ls result [...]
nixos-image-amazon-25.05pre-git-x86_64-linux.vhd nix-support Done. The disk image can be found in /nix/store/[hash]-nixos-image-amazon-25.05pre-git-x86_64-linux/nixos-image-amazon-25.05pre-git-x86_64-linux.vpc
``` ```
To get a list of all variants available, run `nixos-rebuild build-image` without arguments. To get a list of all variants available, run `nixos-rebuild build-image` without arguments.
::: {.example #ex-nixos-rebuild-build-image-customize}
## Customize specific image variants {#sec-image-nixos-rebuild-build-image-customize}
The `image.modules` option can be used to set specific options per image variant, in a similar fashion as [specialisations](options.html#opt-specialisation) for generic NixOS configurations.
E.g. images for the cloud provider Linode use `grub2` as a bootloader by default. If you are using `systemd-boot` on other platforms and want to disable it for Linode only, you could use the following options:
``` nix
image.modules.linode = {
boot.loader.systemd-boot.enable = lib.mkForce false;
};
```

View file

@ -161,6 +161,9 @@
"ex-config": [ "ex-config": [
"index.html#ex-config" "index.html#ex-config"
], ],
"ex-nixos-rebuild-build-image-customize": [
"index.html#ex-nixos-rebuild-build-image-customize"
],
"sec-installation-additional-notes": [ "sec-installation-additional-notes": [
"index.html#sec-installation-additional-notes" "index.html#sec-installation-additional-notes"
], ],
@ -215,6 +218,9 @@
"sec-image-nixos-rebuild-build-image": [ "sec-image-nixos-rebuild-build-image": [
"index.html#sec-image-nixos-rebuild-build-image" "index.html#sec-image-nixos-rebuild-build-image"
], ],
"sec-image-nixos-rebuild-build-image-customize": [
"index.html#sec-image-nixos-rebuild-build-image-customize"
],
"sec-image-repart": [ "sec-image-repart": [
"index.html#sec-image-repart" "index.html#sec-image-repart"
], ],

View file

@ -160,6 +160,8 @@
- [GlitchTip](https://glitchtip.com/), an open source Sentry API compatible error tracking platform. Available as [services.glitchtip](#opt-services.glitchtip.enable). - [GlitchTip](https://glitchtip.com/), an open source Sentry API compatible error tracking platform. Available as [services.glitchtip](#opt-services.glitchtip.enable).
- [`yarr`](https://github.com/nkanaev/yarr), a small, web-based feed aggregator and RSS reader. Available as [services.yarr](#opt-services.yarr.enable).
- [Stash](https://github.com/stashapp/stash), An organizer for your adult videos/images, written in Go. Available as [services.stash](#opt-services.stash.enable). - [Stash](https://github.com/stashapp/stash), An organizer for your adult videos/images, written in Go. Available as [services.stash](#opt-services.stash.enable).
- [vsmartcard-vpcd](https://frankmorgner.github.io/vsmartcard/virtualsmartcard/README.html), a virtual smart card driver. Available as [services.vsmartcard-vpcd](#opt-services.vsmartcard-vpcd.enable). - [vsmartcard-vpcd](https://frankmorgner.github.io/vsmartcard/virtualsmartcard/README.html), a virtual smart card driver. Available as [services.vsmartcard-vpcd](#opt-services.vsmartcard-vpcd.enable).

View file

@ -536,8 +536,7 @@
./services/desktops/deepin/dde-api.nix ./services/desktops/deepin/dde-api.nix
./services/desktops/deepin/app-services.nix ./services/desktops/deepin/app-services.nix
./services/desktops/deepin/dde-daemon.nix ./services/desktops/deepin/dde-daemon.nix
./services/desktops/dleyna-renderer.nix ./services/desktops/dleyna.nix
./services/desktops/dleyna-server.nix
./services/desktops/espanso.nix ./services/desktops/espanso.nix
./services/desktops/flatpak.nix ./services/desktops/flatpak.nix
./services/desktops/geoclue2.nix ./services/desktops/geoclue2.nix
@ -929,6 +928,7 @@
./services/misc/weechat.nix ./services/misc/weechat.nix
./services/misc/workout-tracker.nix ./services/misc/workout-tracker.nix
./services/misc/xmrig.nix ./services/misc/xmrig.nix
./services/misc/yarr.nix
./services/misc/ytdl-sub.nix ./services/misc/ytdl-sub.nix
./services/misc/zoneminder.nix ./services/misc/zoneminder.nix
./services/misc/zookeeper.nix ./services/misc/zookeeper.nix

View file

@ -1,29 +0,0 @@
# dleyna-renderer service.
{
config,
lib,
pkgs,
...
}:
{
###### interface
options = {
services.dleyna-renderer = {
enable = lib.mkOption {
type = lib.types.bool;
default = false;
description = ''
Whether to enable dleyna-renderer service, a DBus service
for handling DLNA renderers.
'';
};
};
};
###### implementation
config = lib.mkIf config.services.dleyna-renderer.enable {
environment.systemPackages = [ pkgs.dleyna-renderer ];
services.dbus.packages = [ pkgs.dleyna-renderer ];
};
}

View file

@ -1,29 +0,0 @@
# dleyna-server service.
{
config,
lib,
pkgs,
...
}:
{
###### interface
options = {
services.dleyna-server = {
enable = lib.mkOption {
type = lib.types.bool;
default = false;
description = ''
Whether to enable dleyna-server service, a DBus service
for handling DLNA servers.
'';
};
};
};
###### implementation
config = lib.mkIf config.services.dleyna-server.enable {
environment.systemPackages = [ pkgs.dleyna-server ];
services.dbus.packages = [ pkgs.dleyna-server ];
};
}

View file

@ -0,0 +1,33 @@
{
config,
lib,
pkgs,
...
}:
{
imports = [
(lib.mkRenamedOptionModule [ "services" "dleyna-server" ] [ "services" "dleyna" ])
(lib.mkRenamedOptionModule [ "services" "dleyna-renderer" ] [ "services" "dleyna" ])
];
###### interface
options = {
services.dleyna = {
enable = lib.mkOption {
type = lib.types.bool;
default = false;
description = ''
Whether to enable dleyna-renderer and dleyna-server service,
a DBus service for handling DLNA servers and renderers.
'';
};
};
};
###### implementation
config = lib.mkIf config.services.dleyna.enable {
environment.systemPackages = [ pkgs.dleyna ];
services.dbus.packages = [ pkgs.dleyna ];
};
}

View file

@ -73,7 +73,8 @@ in
serviceConfig = { serviceConfig = {
Type = "notify"; Type = "notify";
ExecStart = "${pkgs.runtimeShell} -c 'source ${config.system.build.setEnvironment}; exec ${cfg.package}/bin/emacs --fg-daemon'"; ExecStart = "${pkgs.runtimeShell} -c 'source ${config.system.build.setEnvironment}; exec ${cfg.package}/bin/emacs --fg-daemon'";
ExecStop = "${cfg.package}/bin/emacsclient --eval (kill-emacs)"; # Emacs exits with exit code 15 (SIGTERM), when stopped by systemd.
SuccessExitStatus = 15;
Restart = "always"; Restart = "always";
}; };

View file

@ -143,6 +143,8 @@ in
enable = lib.mkEnableOption "Maddy, a free an open source mail server"; enable = lib.mkEnableOption "Maddy, a free an open source mail server";
package = lib.mkPackageOption pkgs "maddy" { };
user = lib.mkOption { user = lib.mkOption {
default = "maddy"; default = "maddy";
type = with lib.types; uniq str; type = with lib.types; uniq str;
@ -386,7 +388,7 @@ in
systemd = { systemd = {
packages = [ pkgs.maddy ]; packages = [ cfg.package ];
services = { services = {
maddy = { maddy = {
serviceConfig = { serviceConfig = {
@ -402,16 +404,16 @@ in
script = '' script = ''
${lib.optionalString (cfg.ensureAccounts != [ ]) '' ${lib.optionalString (cfg.ensureAccounts != [ ]) ''
${lib.concatMapStrings (account: '' ${lib.concatMapStrings (account: ''
if ! ${pkgs.maddy}/bin/maddyctl imap-acct list | grep "${account}"; then if ! ${cfg.package}/bin/maddyctl imap-acct list | grep "${account}"; then
${pkgs.maddy}/bin/maddyctl imap-acct create ${account} ${cfg.package}/bin/maddyctl imap-acct create ${account}
fi fi
'') cfg.ensureAccounts} '') cfg.ensureAccounts}
''} ''}
${lib.optionalString (cfg.ensureCredentials != { }) '' ${lib.optionalString (cfg.ensureCredentials != { }) ''
${lib.concatStringsSep "\n" ( ${lib.concatStringsSep "\n" (
lib.mapAttrsToList (name: cfg: '' lib.mapAttrsToList (name: credentials: ''
if ! ${pkgs.maddy}/bin/maddyctl creds list | grep "${name}"; then if ! ${cfg.package}/bin/maddyctl creds list | grep "${name}"; then
${pkgs.maddy}/bin/maddyctl creds create --password $(cat ${lib.escapeShellArg cfg.passwordFile}) ${name} ${cfg.package}/bin/maddyctl creds create --password $(cat ${lib.escapeShellArg credentials.passwordFile}) ${name}
fi fi
'') cfg.ensureCredentials '') cfg.ensureCredentials
)} )}
@ -486,7 +488,7 @@ in
}; };
environment.systemPackages = [ environment.systemPackages = [
pkgs.maddy cfg.package
]; ];
}; };
} }

View file

@ -0,0 +1,118 @@
{
config,
lib,
pkgs,
...
}:
let
inherit (lib)
types
mkIf
mkOption
mkEnableOption
mkPackageOption
optionalString
;
cfg = config.services.yarr;
in
{
meta.maintainers = with lib.maintainers; [ christoph-heiss ];
options.services.yarr = {
enable = mkEnableOption "Yet another rss reader";
package = mkPackageOption pkgs "yarr" { };
environmentFile = mkOption {
type = types.nullOr types.path;
default = null;
description = ''
Environment file for specifying additional settings such as secrets.
See `yarr -help` for all available options.
'';
};
address = mkOption {
type = types.str;
default = "localhost";
description = "Address to run server on.";
};
port = mkOption {
type = types.port;
default = 7070;
description = "Port to run server on.";
};
baseUrl = mkOption {
type = types.nullOr types.str;
default = null;
description = "Base path of the service url.";
};
authFilePath = mkOption {
type = types.nullOr types.path;
default = null;
description = "Path to a file containing username:password. `null` means no authentication required to use the service.";
};
};
config = mkIf cfg.enable {
systemd.services.yarr = {
description = "Yet another rss reader";
after = [ "network-online.target" ];
wants = [ "network-online.target" ];
wantedBy = [ "multi-user.target" ];
environment.XDG_CONFIG_HOME = "/var/lib/yarr/.config";
serviceConfig = {
Type = "simple";
Restart = "on-failure";
StateDirectory = "yarr";
StateDirectoryMode = "0700";
WorkingDirectory = "/var/lib/yarr";
EnvironmentFile = cfg.environmentFile;
LoadCredential = mkIf (cfg.authFilePath != null) "authfile:${cfg.authFilePath}";
DynamicUser = true;
DevicePolicy = "closed";
LockPersonality = "yes";
MemoryDenyWriteExecute = true;
NoNewPrivileges = true;
PrivateDevices = true;
PrivateMounts = true;
PrivateTmp = 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;
UMask = "0077";
ExecStart = ''
${lib.getExe cfg.package} \
-db storage.db \
-addr "${cfg.address}:${toString cfg.port}" \
${optionalString (cfg.baseUrl != null) "-base ${cfg.baseUrl}"} \
${optionalString (cfg.authFilePath != null) "-auth-file /run/credentials/yarr.service/authfile"}
'';
};
};
};
}

View file

@ -509,9 +509,27 @@ in
upstreams.dependency-track.servers."localhost:${toString cfg.port}" = { }; upstreams.dependency-track.servers."localhost:${toString cfg.port}" = { };
virtualHosts.${cfg.nginx.domain} = { virtualHosts.${cfg.nginx.domain} = {
locations = { locations = {
"/".alias = "${cfg.package.frontend}/dist/"; "/" = {
alias = "${cfg.package.frontend}/dist/";
index = "index.html";
tryFiles = "$uri $uri/ /index.html";
extraConfig = ''
location ~ (index\.html)$ {
add_header Cache-Control "max-age=0, no-cache, no-store, must-revalidate";
add_header Pragma "no-cache";
add_header Expires 0;
}
'';
};
"/api".proxyPass = "http://dependency-track"; "/api".proxyPass = "http://dependency-track";
"= /static/config.json".alias = frontendConfigFile; "= /static/config.json" = {
alias = frontendConfigFile;
extraConfig = ''
add_header Cache-Control "max-age=0, no-cache, no-store, must-revalidate";
add_header Pragma "no-cache";
add_header Expires 0;
'';
};
}; };
}; };
}; };

View file

@ -489,7 +489,7 @@ in
environment = env; environment = env;
path = with pkgs; [ path = with pkgs; [
nodejs_18 nodejs_20
yarn yarn
ffmpeg-headless ffmpeg-headless
openssl openssl
@ -945,7 +945,7 @@ in
}) })
(lib.attrsets.setAttrByPath (lib.attrsets.setAttrByPath
[ cfg.user "packages" ] [ cfg.user "packages" ]
[ peertubeEnv pkgs.nodejs_18 pkgs.yarn pkgs.ffmpeg-headless ] [ peertubeEnv pkgs.nodejs_20 pkgs.yarn pkgs.ffmpeg-headless ]
) )
(lib.mkIf cfg.redis.enableUnixSocket { (lib.mkIf cfg.redis.enableUnixSocket {
${config.services.peertube.user}.extraGroups = [ "redis-peertube" ]; ${config.services.peertube.user}.extraGroups = [ "redis-peertube" ];

View file

@ -151,7 +151,7 @@ in
WorkingDirectory = "/var/lib/${cfg.stateDirectoryName}"; WorkingDirectory = "/var/lib/${cfg.stateDirectoryName}";
DynamicUser = true; DynamicUser = true;
PrivateTmp = true; PrivateTmp = true;
ExecStart = "${pkgs.nodejs_18}/bin/node ${pkgs.wiki-js}/server"; ExecStart = "${pkgs.nodejs_20}/bin/node ${pkgs.wiki-js}/server";
}; };
}; };
}; };

View file

@ -245,8 +245,7 @@ in
services.system-config-printer.enable = config.services.printing.enable; services.system-config-printer.enable = config.services.printing.enable;
# For BCC's Sharing panel. # For BCC's Sharing panel.
services.dleyna-renderer.enable = mkDefault true; services.dleyna.enable = mkDefault true;
services.dleyna-server.enable = mkDefault true;
services.gnome.gnome-user-share.enable = mkDefault true; services.gnome.gnome-user-share.enable = mkDefault true;
services.gnome.rygel.enable = mkDefault true; services.gnome.rygel.enable = mkDefault true;

View file

@ -282,8 +282,7 @@ in
programs.dconf.enable = true; programs.dconf.enable = true;
security.polkit.enable = true; security.polkit.enable = true;
services.accounts-daemon.enable = true; services.accounts-daemon.enable = true;
services.dleyna-renderer.enable = mkDefault true; services.dleyna.enable = mkDefault true;
services.dleyna-server.enable = mkDefault true;
services.power-profiles-daemon.enable = mkDefault true; services.power-profiles-daemon.enable = mkDefault true;
services.gnome.at-spi2-core.enable = true; services.gnome.at-spi2-core.enable = true;
services.gnome.evolution-data-server.enable = true; services.gnome.evolution-data-server.enable = true;

View file

@ -13,7 +13,7 @@ let
${cfg.loadScript} ${cfg.loadScript}
''; '';
packages = epkgs: cfg.extraPackages epkgs ++ [ epkgs.exwm ]; packages = epkgs: cfg.extraPackages epkgs ++ [ epkgs.exwm ];
exwm-emacs = pkgs.emacs.pkgs.withPackages packages; exwm-emacs = cfg.package.pkgs.withPackages packages;
in in
{ {
@ -38,6 +38,10 @@ in
file. file.
''; '';
}; };
package = mkPackageOption pkgs "Emacs" {
default = "emacs";
example = [ "emacs-gtk" ];
};
extraPackages = mkOption { extraPackages = mkOption {
type = types.functionTo (types.listOf types.package); type = types.functionTo (types.listOf types.package);
default = epkgs: [ ]; default = epkgs: [ ];

View file

@ -948,7 +948,7 @@ in
nomad = runTest ./nomad.nix; nomad = runTest ./nomad.nix;
non-default-filesystems = handleTest ./non-default-filesystems.nix { }; non-default-filesystems = handleTest ./non-default-filesystems.nix { };
non-switchable-system = runTest ./non-switchable-system.nix; non-switchable-system = runTest ./non-switchable-system.nix;
noto-fonts = handleTest ./noto-fonts.nix { }; noto-fonts = runTest ./noto-fonts.nix;
noto-fonts-cjk-qt-default-weight = handleTest ./noto-fonts-cjk-qt-default-weight.nix { }; noto-fonts-cjk-qt-default-weight = handleTest ./noto-fonts-cjk-qt-default-weight.nix { };
novacomd = handleTestOn [ "x86_64-linux" ] ./novacomd.nix { }; novacomd = handleTestOn [ "x86_64-linux" ] ./novacomd.nix { };
npmrc = handleTest ./npmrc.nix { }; npmrc = handleTest ./npmrc.nix { };
@ -1478,6 +1478,7 @@ in
xterm = runTest ./xterm.nix; xterm = runTest ./xterm.nix;
xxh = runTest ./xxh.nix; xxh = runTest ./xxh.nix;
yabar = runTest ./yabar.nix; yabar = runTest ./yabar.nix;
yarr = runTest ./yarr.nix;
ydotool = handleTest ./ydotool.nix { }; ydotool = handleTest ./ydotool.nix { };
yggdrasil = runTest ./yggdrasil.nix; yggdrasil = runTest ./yggdrasil.nix;
your_spotify = runTest ./your_spotify.nix; your_spotify = runTest ./your_spotify.nix;

View file

@ -115,7 +115,7 @@ in
self.node.wait_for_text(text) self.node.wait_for_text(text)
self.send(*keys) self.send(*keys)
Server = namedtuple('Server', ('node', 'name', 'address', 'port', 'welcome', 'attacker', 'victim', 'coredump_delay')) Server = namedtuple('Server', ('node', 'name', 'address', 'port', 'welcome', 'player1', 'player2'))
# Clients and their in-game names # Clients and their in-game names
clients = ( clients = (
@ -125,9 +125,9 @@ in
# Server configs. # Server configs.
servers = ( servers = (
Server(server, 'high-rubber', 'server', 4534, 'NixOS Smoke Test Server', 'SmOoThIcE', 'Arduino', 8), Server(server, 'high-rubber', 'server', 4534, 'NixOS Smoke Test Server', 'SmOoThIcE', 'Arduino'),
Server(server, 'sty', 'server', 4535, 'NixOS Smoke Test sty+ct+ap Server', 'Arduino', 'SmOoThIcE', 8), Server(server, 'sty', 'server', 4535, 'NixOS Smoke Test sty+ct+ap Server', 'Arduino', 'SmOoThIcE'),
Server(server, 'trunk', 'server', 4536, 'NixOS Smoke Test 0.4 Server', 'Arduino', 'SmOoThIcE', 8) Server(server, 'trunk', 'server', 4536, 'NixOS Smoke Test 0.4 Server', 'Arduino', 'SmOoThIcE')
) )
""" """
@ -146,8 +146,55 @@ in
client.node.screenshot(f"screen_{client.name}_{screenshot_idx}") client.node.screenshot(f"screen_{client.name}_{screenshot_idx}")
return screenshot_idx + 1 return screenshot_idx + 1
# Wait for the servers to come up. """
Sets up a client, waiting for the given barrier on completion.
"""
def client_setup(client, servers, barrier):
client.node.wait_for_x()
# Configure Armagetron so we skip the tutorial.
client.node.succeed(
run("mkdir -p ~/.armagetronad/var"),
run(f"echo 'PLAYER_1 {client.name}' >> ~/.armagetronad/var/autoexec.cfg"),
run("echo 'FIRST_USE 0' >> ~/.armagetronad/var/autoexec.cfg")
)
for idx, srv in enumerate(servers):
client.node.succeed(
run(f"echo 'BOOKMARK_{idx+1}_ADDRESS {srv.address}' >> ~/.armagetronad/var/autoexec.cfg"),
run(f"echo 'BOOKMARK_{idx+1}_NAME {srv.name}' >> ~/.armagetronad/var/autoexec.cfg"),
run(f"echo 'BOOKMARK_{idx+1}_PORT {srv.port}' >> ~/.armagetronad/var/autoexec.cfg")
)
# Start Armagetron. Use the recording mode since it skips the splashscreen.
client.node.succeed(run("cd; ulimit -c unlimited; armagetronad --record test.aarec >&2 & disown"))
client.node.wait_until_succeeds(
run(
"${xdo "create_new_win-select_main_window" ''
search --onlyvisible --name "Armagetron Advanced"
windowfocus --sync
windowactivate --sync
''}"
)
)
# Get into the multiplayer menu.
client.send_on('Armagetron Advanced', 'ret')
client.send_on('Play Game', 'ret')
# Online > LAN > Network Setup > Mates > Server Bookmarks
client.send_on('Multiplayer', 'down', 'down', 'down', 'down', 'ret')
barrier.wait()
# Start everything.
start_all() start_all()
# Get to the Server Bookmarks screen on both clients. This takes a while so do it asynchronously.
barrier = threading.Barrier(len(clients) + 1, timeout=600)
for client in clients:
threading.Thread(target=client_setup, args=(client, servers, barrier)).start()
# Wait for the servers to come up.
for srv in servers: for srv in servers:
srv.node.wait_for_unit(f"armagetronad-{srv.name}") srv.node.wait_for_unit(f"armagetronad-{srv.name}")
srv.node.wait_until_succeeds(f"ss --numeric --udp --listening | grep -q {srv.port}") srv.node.wait_until_succeeds(f"ss --numeric --udp --listening | grep -q {srv.port}")
@ -167,55 +214,7 @@ in
f"journalctl -u armagetronad-{srv.name} -e | grep -q 'Admin: Testing again!'" f"journalctl -u armagetronad-{srv.name} -e | grep -q 'Admin: Testing again!'"
) )
""" # Wait for the client setup to complete.
Sets up a client, waiting for the given barrier on completion.
"""
def client_setup(client, servers, barrier):
client.node.wait_for_x()
# Configure Armagetron.
client.node.succeed(
run("mkdir -p ~/.armagetronad/var"),
run(f"echo 'PLAYER_1 {client.name}' >> ~/.armagetronad/var/autoexec.cfg")
)
for idx, srv in enumerate(servers):
client.node.succeed(
run(f"echo 'BOOKMARK_{idx+1}_ADDRESS {srv.address}' >> ~/.armagetronad/var/autoexec.cfg"),
run(f"echo 'BOOKMARK_{idx+1}_NAME {srv.name}' >> ~/.armagetronad/var/autoexec.cfg"),
run(f"echo 'BOOKMARK_{idx+1}_PORT {srv.port}' >> ~/.armagetronad/var/autoexec.cfg")
)
# Start Armagetron.
client.node.succeed(run("ulimit -c unlimited; armagetronad >&2 & disown"))
client.node.wait_until_succeeds(
run(
"${xdo "create_new_win-select_main_window" ''
search --onlyvisible --name "Armagetron Advanced"
windowfocus --sync
windowactivate --sync
''}"
)
)
# Get through the tutorial.
client.send_on('Language Settings', 'ret')
client.send_on('First Setup', 'ret')
client.send_on('Welcome to Armagetron Advanced', 'ret')
client.send_on('round 1', 'esc')
client.send_on('Menu', 'up', 'up', 'ret')
client.send_on('We hope you', 'ret')
client.send_on('Armagetron Advanced', 'ret')
client.send_on('Play Game', 'ret')
# Online > LAN > Network Setup > Mates > Server Bookmarks
client.send_on('Multiplayer', 'down', 'down', 'down', 'down', 'ret')
barrier.wait()
# Get to the Server Bookmarks screen on both clients. This takes a while so do it asynchronously.
barrier = threading.Barrier(len(clients) + 1, timeout=240)
for client in clients:
threading.Thread(target=client_setup, args=(client, servers, barrier)).start()
barrier.wait() barrier.wait()
# Main testing loop. Iterates through each server bookmark and connects to them in sequence. # Main testing loop. Iterates through each server bookmark and connects to them in sequence.
@ -245,18 +244,14 @@ in
f"journalctl -u armagetronad-{srv.name} -e | grep -q 'Go (round 1 of 10)'" f"journalctl -u armagetronad-{srv.name} -e | grep -q 'Go (round 1 of 10)'"
) )
# Wait a bit # Wait for the players to die by running into the wall.
srv.node.sleep(srv.coredump_delay) player1 = next(client for client in clients if client.name == srv.player1)
player2 = next(client for client in clients if client.name == srv.player2)
# Turn the attacker player's lightcycle left
attacker = next(client for client in clients if client.name == srv.attacker)
victim = next(client for client in clients if client.name == srv.victim)
attacker.send('left')
screenshot_idx = take_screenshots(screenshot_idx)
# Wait for coredump.
srv.node.wait_until_succeeds( srv.node.wait_until_succeeds(
f"journalctl -u armagetronad-{srv.name} -e | grep -q '{attacker.name} core dumped {victim.name}'" f"journalctl -u armagetronad-{srv.name} -e | grep -q '{player1.name}.*lost 4 points'"
)
srv.node.wait_until_succeeds(
f"journalctl -u armagetronad-{srv.name} -e | grep -q '{player2.name}.*lost 4 points'"
) )
screenshot_idx = take_screenshots(screenshot_idx) screenshot_idx = take_screenshots(screenshot_idx)

View file

@ -45,22 +45,27 @@ import ./make-test-python.nix (
}; };
}; };
testScript = '' testScript =
import json # python
''
import json
start_all() start_all()
server.wait_for_unit("dependency-track.service") server.wait_for_unit("dependency-track.service")
server.wait_until_succeeds( server.wait_until_succeeds(
"journalctl -o cat -u dependency-track.service | grep 'Dependency-Track is ready'" "journalctl -o cat -u dependency-track.service | grep 'Dependency-Track is ready'"
)
server.wait_for_open_port(${toString dependencyTrackPort})
with subtest("version api returns correct version"):
version = json.loads(
server.succeed("curl http://localhost/api/version")
) )
assert version["version"] == "${pkgs.dependency-track.version}" server.wait_for_open_port(${toString dependencyTrackPort})
'';
with subtest("version api returns correct version"):
version = json.loads(
server.succeed("curl http://localhost/api/version")
)
assert version["version"] == "${pkgs.dependency-track.version}"
with subtest("nginx serves frontend"):
server.succeed("curl http://localhost/ | grep \"<title>Dependency-Track</title>\"")
'';
} }
) )

View file

@ -22,6 +22,7 @@ import ./make-test-python.nix (
]; ];
services.netdata = { services.netdata = {
enable = true; enable = true;
package = pkgs.netdataCloud;
python.recommendedPythonPackages = true; python.recommendedPythonPackages = true;
configDir."apps_groups.conf" = pkgs.writeText "apps_groups.conf" '' configDir."apps_groups.conf" = pkgs.writeText "apps_groups.conf" ''
@ -32,35 +33,25 @@ import ./make-test-python.nix (
}; };
testScript = '' testScript = ''
start_all() start_all()
netdata.wait_for_unit("netdata.service") netdata.wait_for_unit("netdata.service")
# wait for the service to listen before sending a request # wait for the service to listen before sending a request
netdata.wait_for_open_port(19999) netdata.wait_for_open_port(19999)
# check if the netdata main page loads. # check if the netdata main page loads.
netdata.succeed("curl --fail http://localhost:19999/") netdata.succeed("curl --fail http://127.0.0.1:19999")
netdata.succeed("sleep 4") netdata.succeed("sleep 4")
# check if netdata can read disk ops for root owned processes. # check if netdata api shows correct os
# if > 0, successful. verifies both netdata working and url = "http://127.0.0.1:19999/api/v3/info"
# apps.plugin has elevated capabilities. filter = '.agents[0].application.os.os | . == "NixOS"'
url = "http://localhost:19999/api/v1/data?chart=user.root_disk_physical_io"
filter = '[.data[range(10)][2]] | add | . < 0'
cmd = f"curl -s {url} | jq -e '{filter}'" cmd = f"curl -s {url} | jq -e '{filter}'"
netdata.wait_until_succeeds(cmd) netdata.wait_until_succeeds(cmd)
# check if the control socket is available # check if the control socket is available
netdata.succeed("sudo netdatacli ping") netdata.succeed("sudo netdatacli ping")
# check that custom groups in apps_groups.conf are used.
# if > 0, successful. verifies that user-specified apps_group.conf
# is used.
url = "http://localhost:19999/api/v1/data?chart=app.netdata_test_cpu_utilization"
filter = '[.data[range(10)][2]] | add | . > 0'
cmd = f"curl -s {url} | jq -e '{filter}'"
netdata.wait_until_succeeds(cmd, timeout=30)
''; '';
} }
) )

View file

@ -1,13 +1,14 @@
import ./make-test-python.nix ( { lib, ... }:
{ pkgs, lib, ... }: {
{ name = "noto-fonts";
name = "noto-fonts"; meta.maintainers = with lib.maintainers; [
meta.maintainers = with lib.maintainers; [ nickcao
nickcao midchildan
midchildan ];
];
nodes.machine = { nodes.machine =
{ pkgs, ... }:
{
imports = [ ./common/x11.nix ]; imports = [ ./common/x11.nix ];
environment.systemPackages = [ pkgs.gedit ]; environment.systemPackages = [ pkgs.gedit ];
fonts = { fonts = {
@ -36,24 +37,23 @@ import ./make-test-python.nix (
}; };
}; };
testScript = testScript =
# extracted from http://www.clagnut.com/blog/2380/ # extracted from http://www.clagnut.com/blog/2380/
let let
testText = builtins.toFile "test.txt" '' testText = builtins.toFile "test.txt" ''
the quick brown fox jumps over the lazy dog the quick brown fox jumps over the lazy dog
Eĥoŝanĝo ĉiuĵaŭde. Eĥoŝanĝo ĉiuĵaŭde.
'';
in
''
machine.wait_for_x()
machine.succeed("gedit ${testText} >&2 &")
machine.wait_for_window(".* - gedit")
machine.sleep(10)
machine.screenshot("screen")
''; '';
} in
) ''
machine.wait_for_x()
machine.succeed("gedit ${testText} >&2 &")
machine.wait_for_window(".* - gedit")
machine.sleep(10)
machine.screenshot("screen")
'';
}

19
nixos/tests/yarr.nix Normal file
View file

@ -0,0 +1,19 @@
{ lib, pkgs, ... }:
{
name = "yarr";
meta.maintainers = with lib.maintainers; [ christoph-heiss ];
nodes.machine =
{ pkgs, ... }:
{
services.yarr.enable = true;
};
testScript = ''
machine.start()
machine.wait_for_unit("yarr.service")
machine.wait_for_open_port(7070)
machine.succeed("curl -sSf http://localhost:7070 | grep '<title>yarr!</title>'")
'';
}

View file

@ -49,13 +49,13 @@ let
in in
stdenv.mkDerivation (finalAttrs: { stdenv.mkDerivation (finalAttrs: {
pname = "clementine"; pname = "clementine";
version = "1.4.1-37-g3369f3085"; version = "1.4.1-38-g1fc7fe0e1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "clementine-player"; owner = "clementine-player";
repo = "Clementine"; repo = "Clementine";
tag = finalAttrs.version; tag = finalAttrs.version;
hash = "sha256-zwt4PkCXVYJn8IsZL0JEJLX1LiAvDrNdhh0s2oDxGgY="; hash = "sha256-KV3au25iZ2W9tufNbaI0+UCeLjoJR5Um1U3Gmlk0O2s=";
}; };
nativeBuildInputs = [ nativeBuildInputs = [

View file

@ -15,11 +15,11 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "drumkv1"; pname = "drumkv1";
version = "1.3.0"; version = "1.3.1";
src = fetchurl { src = fetchurl {
url = "mirror://sourceforge/drumkv1/drumkv1-${version}.tar.gz"; url = "mirror://sourceforge/drumkv1/drumkv1-${version}.tar.gz";
hash = "sha256-WcWhq1Li9dfj0piyW6F0mdfzcK+nvk5Rtl8pQZTYyt8="; hash = "sha256-CzboTrMRxPr5O6caKrxW9X9uSi5Su5LRSQpwJBMGkGI=";
}; };
buildInputs = [ buildInputs = [

View file

@ -18,11 +18,11 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "samplv1"; pname = "samplv1";
version = "1.3.0"; version = "1.3.1";
src = fetchurl { src = fetchurl {
url = "mirror://sourceforge/samplv1/samplv1-${version}.tar.gz"; url = "mirror://sourceforge/samplv1/samplv1-${version}.tar.gz";
hash = "sha256-ZmRsiFDqJsG28FiFR/RbeXkeeLn2HBfImKQM5PaRF78="; hash = "sha256-DcMtNGiMJ9YfTKZLns+3mBKHbkG3Ven3IJAU/qSDyh0=";
}; };
nativeBuildInputs = [ nativeBuildInputs = [

View file

@ -66,7 +66,11 @@
zlib, zlib,
# Boolean flags # Boolean flags
withNativeCompilation ? stdenv.buildPlatform.canExecute stdenv.hostPlatform,
# FIXME: Native compilation breaks build and runtime on macOS 15.4;
# see <https://github.com/NixOS/nixpkgs/issues/395169>.
withNativeCompilation ?
stdenv.buildPlatform.canExecute stdenv.hostPlatform && !stdenv.hostPlatform.isDarwin,
noGui ? false, noGui ? false,
srcRepo ? true, srcRepo ? true,
withAcl ? false, withAcl ? false,

View file

@ -19,11 +19,11 @@
mkDerivation rec { mkDerivation rec {
pname = "okteta"; pname = "okteta";
version = "0.26.20"; version = "0.26.21";
src = fetchurl { src = fetchurl {
url = "mirror://kde/stable/okteta/${version}/src/${pname}-${version}.tar.xz"; url = "mirror://kde/stable/okteta/${version}/src/${pname}-${version}.tar.xz";
sha256 = "sha256-lKGjIeNxdBqmlsXvZTe8BnRirt+VrxwX/9CCQVVUuow="; sha256 = "sha256-tuYvcfcxdX1nzTR603rEYIgXLEjnZH3mDRJUD/BVRJs=";
}; };
nativeBuildInputs = [ nativeBuildInputs = [

View file

@ -33,7 +33,7 @@
zip, zip,
git, git,
makeWrapper, makeWrapper,
electron_33, electron_34,
server ? false, # build server version server ? false, # build server version
pam, pam,
nixosTests, nixosTests,
@ -42,7 +42,7 @@
let let
# Note: we shouldn't use the latest electron here, since the node-abi dependency might # Note: we shouldn't use the latest electron here, since the node-abi dependency might
# need to be updated every time the latest electron gets a new abi version number # need to be updated every time the latest electron gets a new abi version number
electron = electron_33; electron = electron_34;
mathJaxSrc = fetchzip { mathJaxSrc = fetchzip {
url = "https://s3.amazonaws.com/rstudio-buildtools/mathjax-27.zip"; url = "https://s3.amazonaws.com/rstudio-buildtools/mathjax-27.zip";

View file

@ -20,6 +20,7 @@
qtbase, qtbase,
qtsvg, qtsvg,
qtmacextras, qtmacextras,
fetchpatch,
ghostscriptX ? null, ghostscriptX ? null,
extraFonts ? false, extraFonts ? false,
chineseFonts ? false, chineseFonts ? false,
@ -79,6 +80,14 @@ stdenv.mkDerivation {
qtmacextras qtmacextras
]; ];
patches = [
(fetchpatch {
name = "fix-compile-clang-19.5.patch";
url = "https://github.com/texmacs/texmacs/commit/e72783b023f22eaa0456d2e4cc76ae509d963672.patch";
hash = "sha256-oJCiXWTY89BdxwbgtFvfThid0WM83+TAUThSihfr0oA=";
})
];
cmakeFlags = lib.optionals stdenv.hostPlatform.isDarwin [ cmakeFlags = lib.optionals stdenv.hostPlatform.isDarwin [
(lib.cmakeFeature "TEXMACS_GUI" "Qt") (lib.cmakeFeature "TEXMACS_GUI" "Qt")
(lib.cmakeFeature "CMAKE_INSTALL_PREFIX" "./TeXmacs.app/Contents/Resources") (lib.cmakeFeature "CMAKE_INSTALL_PREFIX" "./TeXmacs.app/Contents/Resources")

View file

@ -14937,6 +14937,19 @@ final: prev: {
meta.hydraPlatforms = [ ]; meta.hydraPlatforms = [ ];
}; };
unimpaired-which-key-nvim = buildVimPlugin {
pname = "unimpaired-which-key.nvim";
version = "2024-08-16";
src = fetchFromGitHub {
owner = "afreakk";
repo = "unimpaired-which-key.nvim";
rev = "c35f413a631e2d2a29778cc390e4d2da28fc2727";
sha256 = "11skr474c9drq25823rx1jxcv5d57si0085zw60nq3wxmx999cg3";
};
meta.homepage = "https://github.com/afreakk/unimpaired-which-key.nvim/";
meta.hydraPlatforms = [ ];
};
unison = buildVimPlugin { unison = buildVimPlugin {
pname = "unison"; pname = "unison";
version = "2025-04-18"; version = "2025-04-18";

View file

@ -15,7 +15,9 @@ vimUtils.buildVimPlugin {
hash = "sha256-EUwuIFFe4tmw8u6RqEvOLL0Yi8J5cLBQx7ICxnmkT4k="; hash = "sha256-EUwuIFFe4tmw8u6RqEvOLL0Yi8J5cLBQx7ICxnmkT4k=";
}; };
passthru.updateScript = nix-update-script { }; passthru.updateScript = nix-update-script {
extraArgs = [ "--version=branch" ];
};
meta = { meta = {
homepage = "https://gitlab.com/schrieveslaach/sonarlint.nvim"; homepage = "https://gitlab.com/schrieveslaach/sonarlint.nvim";

View file

@ -1145,6 +1145,7 @@ https://github.com/altermo/ultimate-autopair.nvim/,HEAD,
https://github.com/SirVer/ultisnips/,, https://github.com/SirVer/ultisnips/,,
https://github.com/mbbill/undotree/,, https://github.com/mbbill/undotree/,,
https://github.com/chrisbra/unicode.vim/,, https://github.com/chrisbra/unicode.vim/,,
https://github.com/afreakk/unimpaired-which-key.nvim/,HEAD,
https://github.com/tummetott/unimpaired.nvim/,HEAD, https://github.com/tummetott/unimpaired.nvim/,HEAD,
https://github.com/unisonweb/unison/,, https://github.com/unisonweb/unison/,,
https://github.com/Shougo/unite.vim/,, https://github.com/Shougo/unite.vim/,,

View file

@ -7,8 +7,8 @@ vscode-utils.buildVscodeMarketplaceExtension {
mktplcRef = { mktplcRef = {
publisher = "ms-pyright"; publisher = "ms-pyright";
name = "pyright"; name = "pyright";
version = "1.1.399"; version = "1.1.400";
hash = "sha256-dKkx01NVbg0f6+LkZPs1/djqJjOAY/BjROEr4455Shc="; hash = "sha256-Twpsxtr6fUSDgCfMYFJF3asgaKLB/axIvOZRItuFyig=";
}; };
meta = { meta = {

View file

@ -65,6 +65,23 @@ let
source ${./update-lib.sh} source ${./update-lib.sh}
''; '';
# Needed for wine versions < 10.2 to fix compatibility with binutils 2.44
# https://github.com/NixOS/nixpkgs/issues/399714
# https://bugs.winehq.org/show_bug.cgi?id=57819
# https://gitlab.winehq.org/wine/wine/-/merge_requests/7328
patches-binutils-2_44-fix-wine-older-than-10_2 = [
(pkgs.fetchpatch {
name = "ntdll-use-signed-type";
url = "https://gitlab.winehq.org/wine/wine/-/commit/fd59962827a715d321f91c9bdb43f3e61f9ebbc.patch";
hash = "sha256-PvFom9NJ32XZO1gYor9Cuk8+eaRFvmG572OAtNx1tks=";
})
(pkgs.fetchpatch {
name = "winebuild-avoid using-idata-section";
url = "https://gitlab.winehq.org/wine/wine/-/commit/c9519f68ea04915a60704534ab3afec5ec1b8fd7.patch";
hash = "sha256-vA58SfAgCXoCT+NB4SRHi85AnI4kj9S2deHGp4L36vI=";
})
];
inherit (pkgs) writeShellScript; inherit (pkgs) writeShellScript;
in in
rec { rec {
@ -96,7 +113,7 @@ rec {
patches = [ patches = [
# Also look for root certificates at $NIX_SSL_CERT_FILE # Also look for root certificates at $NIX_SSL_CERT_FILE
./cert-path.patch ./cert-path.patch
]; ] ++ patches-binutils-2_44-fix-wine-older-than-10_2;
updateScript = writeShellScript "update-wine-stable" ('' updateScript = writeShellScript "update-wine-stable" (''
${updateScriptPreamble} ${updateScriptPreamble}
@ -118,7 +135,11 @@ rec {
version = "10.5"; version = "10.5";
url = "https://dl.winehq.org/wine/source/10.x/wine-${version}.tar.xz"; url = "https://dl.winehq.org/wine/source/10.x/wine-${version}.tar.xz";
hash = "sha256-wDbsHvR2dHdKX5lFgwIuni62j+j8GLOox55oWzvsibw="; hash = "sha256-wDbsHvR2dHdKX5lFgwIuni62j+j8GLOox55oWzvsibw=";
inherit (stable) patches;
patches = [
# Also look for root certificates at $NIX_SSL_CERT_FILE
./cert-path.patch
];
# see https://gitlab.winehq.org/wine/wine-staging # see https://gitlab.winehq.org/wine/wine-staging
staging = fetchFromGitLab { staging = fetchFromGitLab {
@ -177,7 +198,11 @@ rec {
version = "9.21"; version = "9.21";
url = "https://dl.winehq.org/wine/source/9.x/wine-${version}.tar.xz"; url = "https://dl.winehq.org/wine/source/9.x/wine-${version}.tar.xz";
hash = "sha256-REK0f/2bLqRXEA427V/U5vTYKdnbeaJeYFF1qYjKL/8="; hash = "sha256-REK0f/2bLqRXEA427V/U5vTYKdnbeaJeYFF1qYjKL/8=";
inherit (stable) patches;
patches = [
# Also look for root certificates at $NIX_SSL_CERT_FILE
./cert-path.patch
] ++ patches-binutils-2_44-fix-wine-older-than-10_2;
# see https://gitlab.winehq.org/wine/wine-staging # see https://gitlab.winehq.org/wine/wine-staging
staging = fetchFromGitLab { staging = fetchFromGitLab {

View file

@ -27,9 +27,6 @@
SDL2, SDL2,
SDL2_mixer, SDL2_mixer,
wayland-protocols, wayland-protocols,
Carbon,
CoreServices,
OpenCL,
callPackage, callPackage,
nixosTests, nixosTests,
@ -46,6 +43,15 @@ stdenv.mkDerivation (finalAttrs: {
hash = "sha256-8rGnW+VtqNJYqUqQDp0yOVIQd7w+cq7PIpqqIQPhkbE="; hash = "sha256-8rGnW+VtqNJYqUqQDp0yOVIQd7w+cq7PIpqqIQPhkbE=";
}; };
prePatch = lib.optionalString stdenv.hostPlatform.isDarwin ''
# Disable code signing on macOS
substituteInPlace cmake/macros.cmake --replace-fail "codesign" "true"
substituteInPlace cmake/system/apple.cmake --replace-fail "if(APPLE)" "if(false)"
# calls otool -L on /usr/lib/libSystem.B.dylib and fails because it doesn't exist
substituteInPlace cmake/applebundle.cmake --replace-fail 'fixup_bundle("''${TARGET_BUNDLE_DIR}" "" "")' ""
'';
nativeBuildInputs = [ nativeBuildInputs = [
cmake cmake
pkg-config pkg-config
@ -73,15 +79,8 @@ stdenv.mkDerivation (finalAttrs: {
SDL2_mixer SDL2_mixer
] ]
++ lib.optional stdenv.hostPlatform.isLinux wayland-protocols ++ lib.optional stdenv.hostPlatform.isLinux wayland-protocols
++ lib.optionals stdenv.hostPlatform.isDarwin [
Carbon
CoreServices
OpenCL
]
++ lib.optional (!stdenv.hostPlatform.isDarwin) opencl-headers; ++ lib.optional (!stdenv.hostPlatform.isDarwin) opencl-headers;
cmakeFlags = lib.optional stdenv.hostPlatform.isDarwin "-DCORESERVICES_LIB=${CoreServices}";
# error: "The plain signature for target_link_libraries has already been used" # error: "The plain signature for target_link_libraries has already been used"
doCheck = false; doCheck = false;
@ -89,17 +88,27 @@ stdenv.mkDerivation (finalAttrs: {
gtest gtest
]; ];
# Set the data directory for each executable. We cannot set it at build time postInstall =
# with the PKGDATADIR cmake variable because each executable needs a specific if stdenv.hostPlatform.isDarwin then
# one. ''
# This is not needed on darwin, since on that platform data files are saved mkdir -p $out/Applications
# in *.app/Contents/Resources/ too, and are picked up automatically. mv $out/*.app $out/Applications/
postInstall = lib.optionalString (!stdenv.hostPlatform.isDarwin) ''
for prog in $out/bin/*; do mkdir -p $out/bin
wrapProgram "$prog" \ ln -s $out/Applications/vengi-voxconvert.app/Contents/MacOS/vengi-voxconvert $out/bin/vengi-voxconvert
--set CORE_PATH $out/share/$(basename "$prog")/ ''
done else
''; # Set the data directory for each executable. We cannot set it at build time
# with the PKGDATADIR cmake variable because each executable needs a specific
# one.
# This is not needed on darwin, since on that platform data files are saved
# in *.app/Contents/Resources/ too, and are picked up automatically.
''
for prog in $out/bin/*; do
wrapProgram "$prog" \
--set CORE_PATH $out/share/$(basename "$prog")/
done
'';
passthru.tests = { passthru.tests = {
voxconvert-roundtrip = callPackage ./test-voxconvert-roundtrip.nix { }; voxconvert-roundtrip = callPackage ./test-voxconvert-roundtrip.nix { };
@ -124,6 +133,5 @@ stdenv.mkDerivation (finalAttrs: {
]; ];
maintainers = with maintainers; [ fgaz ]; maintainers = with maintainers; [ fgaz ];
platforms = platforms.all; platforms = platforms.all;
broken = stdenv.hostPlatform.isDarwin;
}; };
}) })

View file

@ -180,13 +180,13 @@ rec {
gammastep = mkRedshift rec { gammastep = mkRedshift rec {
pname = "gammastep"; pname = "gammastep";
version = "2.0.9"; version = "2.0.11";
src = fetchFromGitLab { src = fetchFromGitLab {
owner = "chinstrap"; owner = "chinstrap";
repo = pname; repo = pname;
rev = "v${version}"; rev = "v${version}";
hash = "sha256-EdVLBBIEjMu+yy9rmcxQf4zdW47spUz5SbBDbhmLjOU="; hash = "sha256-c8JpQLHHLYuzSC9bdymzRTF6dNqOLwYqgwUOpKcgAEU=";
}; };
meta = redshift.meta // { meta = redshift.meta // {

View file

@ -38,14 +38,14 @@
}: }:
stdenv.mkDerivation (finalAttrs: { stdenv.mkDerivation (finalAttrs: {
version = "1.7.5"; version = "1.7.6";
pname = "syncthingtray"; pname = "syncthingtray";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "Martchus"; owner = "Martchus";
repo = "syncthingtray"; repo = "syncthingtray";
rev = "v${finalAttrs.version}"; rev = "v${finalAttrs.version}";
hash = "sha256-/1X+wbVwLu0+SOMaVDJejBA+Z3szgs8IDtAZ9Yj7hXs="; hash = "sha256-vJIHDp91T9oMtUT7bsSCxj6XkvT4bLMol9wEr19Wkig=";
}; };
buildInputs = buildInputs =

View file

@ -1,10 +1,10 @@
{ {
"chromium": { "chromium": {
"version": "135.0.7049.95", "version": "135.0.7049.114",
"chromedriver": { "chromedriver": {
"version": "135.0.7049.96", "version": "135.0.7049.115",
"hash_darwin": "sha256-MmL/hQGPk/kGBtbXSekE+lHktucPCv3HFr8VYTnff5w=", "hash_darwin": "sha256-fEqjiSP6p//NY8HCi409sftXlK6CVvzsw2oZbSgTgJ4=",
"hash_darwin_aarch64": "sha256-TGiVrAYgeLGniGBZ2dHUBk6Hg996ouBSJHZm9hXExQ4=" "hash_darwin_aarch64": "sha256-K1jH+yxYio8yyxZ7M15QhOQ9fu2VhjeaevS8zM5D8Lk="
}, },
"deps": { "deps": {
"depot_tools": { "depot_tools": {
@ -20,8 +20,8 @@
"DEPS": { "DEPS": {
"src": { "src": {
"url": "https://chromium.googlesource.com/chromium/src.git", "url": "https://chromium.googlesource.com/chromium/src.git",
"rev": "de2eb485a1951079e63bdb57ce25544d2dc79c15", "rev": "63fd8a7d9d09e41ba37b84386c85d5f249f848f7",
"hash": "sha256-6ydyJWsDawt0bfYAFHotTB9ujmIYsqUUpNwB6q6RNQE=", "hash": "sha256-U6OJHocA6vI36QCU8UITUsVlentm210CwdThCwlDw5E=",
"recompress": true "recompress": true
}, },
"src/third_party/clang-format/script": { "src/third_party/clang-format/script": {

View file

@ -10,13 +10,13 @@
buildMozillaMach rec { buildMozillaMach rec {
pname = "firefox-devedition"; pname = "firefox-devedition";
binaryName = pname; binaryName = pname;
version = "138.0b5"; version = "138.0b9";
applicationName = "Firefox Developer Edition"; applicationName = "Firefox Developer Edition";
requireSigning = false; requireSigning = false;
branding = "browser/branding/aurora"; branding = "browser/branding/aurora";
src = fetchurl { src = fetchurl {
url = "mirror://mozilla/devedition/releases/${version}/source/firefox-${version}.source.tar.xz"; url = "mirror://mozilla/devedition/releases/${version}/source/firefox-${version}.source.tar.xz";
sha512 = "07da38a6aa19de812539ba9b286d5189607ef45e7d8665a0f42facdcf7b3f7854561ad3cb54dce7e049199574b7d6dff01dba03763730e49306efb82833270fb"; sha512 = "cf737b8c394150430cda512a84ebdf04426db0c413863eb37a327c44fc952db7de1be07956aaded3ddb769480fb307a102c1f4f7dab4ba8a38f2371fdd35a961";
}; };
meta = { meta = {

View file

@ -71,7 +71,7 @@ let
in in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "vivaldi"; pname = "vivaldi";
version = "7.3.3635.7"; version = "7.3.3635.11";
suffix = suffix =
{ {
@ -84,8 +84,8 @@ stdenv.mkDerivation rec {
url = "https://downloads.vivaldi.com/${branch}/vivaldi-${branch}_${version}-1_${suffix}.deb"; url = "https://downloads.vivaldi.com/${branch}/vivaldi-${branch}_${version}-1_${suffix}.deb";
hash = hash =
{ {
aarch64-linux = "sha256-E/tvarNTUm0VZMxFM/FcZKM3U/psTyq4bJl2r6orpeY="; aarch64-linux = "sha256-w1/wWP3lZUQ5tBvv6XOCkoR1OCoByURBEvaaemsY19U=";
x86_64-linux = "sha256-8Jy7L5BSWZVIFizW11pOfXhgeT9rP1Z2T0aDmC79fbQ="; x86_64-linux = "sha256-kJNFPXiZekjofGtKFbGc85c8yQymhntkCBuhylwQBpE=";
} }
.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}"); .${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}");
}; };

View file

@ -7,10 +7,10 @@
mkFranzDerivation rec { mkFranzDerivation rec {
pname = "franz"; pname = "franz";
name = "Franz"; name = "Franz";
version = "5.10.0"; version = "5.11.0";
src = fetchurl { src = fetchurl {
url = "https://github.com/meetfranz/franz/releases/download/v${version}/franz_${version}_amd64.deb"; url = "https://github.com/meetfranz/franz/releases/download/v${version}/franz_${version}_amd64.deb";
sha256 = "sha256-zQhZlxr7kyMWx6txDnV+ECBTzVEwnUaBsLWKJy3XYFg="; sha256 = "sha256-4+HeH9lY5/2fswSwzMPM1Idllj01zU7nmlLOMYfcSsU=";
}; };
meta = with lib; { meta = with lib; {
description = "Free messaging app that combines chat & messaging services into one application"; description = "Free messaging app that combines chat & messaging services into one application";

View file

@ -38,11 +38,11 @@
stdenv.mkDerivation (finalAttrs: { stdenv.mkDerivation (finalAttrs: {
pname = "gnunet"; pname = "gnunet";
version = "0.24.0"; version = "0.24.1";
src = fetchurl { src = fetchurl {
url = "mirror://gnu/gnunet/gnunet-${finalAttrs.version}.tar.gz"; url = "mirror://gnu/gnunet/gnunet-${finalAttrs.version}.tar.gz";
hash = "sha256-BoUvn0gz5ssGvu3fhyerlMQ4U69yOnY4etdxYS4WPFc="; hash = "sha256-xPj50l06APgHCVg7h6qDEtAUVAkLc6QTtD7H7HwHujk=";
}; };
enableParallelBuilding = true; enableParallelBuilding = true;

View file

@ -1,39 +1,45 @@
{ {
fetchurl, fetchFromGitHub,
lib, lib,
stdenv, stdenv,
gtk, gtk,
pkg-config, pkg-config,
libgsf, libgsf,
libofx, libofx,
autoreconfHook,
intltool, intltool,
wrapGAppsHook3, wrapGAppsHook3,
libsoup_2_4,
adwaita-icon-theme, adwaita-icon-theme,
nix-update-script,
}: }:
stdenv.mkDerivation rec { stdenv.mkDerivation (finalAttrs: {
pname = "grisbi"; pname = "grisbi";
version = "2.0.5"; version = "3.0.4";
src = fetchurl { src = fetchFromGitHub {
url = "mirror://sourceforge/grisbi/${pname}-${version}.tar.bz2"; owner = "grisbi";
sha256 = "sha256-vTrbq/xLTfwF7/YtKzZFiiSw8A0HzzWin2ry8gPHej8="; repo = "grisbi";
tag = "upstream_version_${lib.replaceStrings [ "." ] [ "_" ] finalAttrs.version}";
hash = "sha256-3E57M/XE4xyo3ppVceDA4OFDnVicosCY8ikE2gDJoUQ=";
}; };
nativeBuildInputs = [ nativeBuildInputs = [
pkg-config pkg-config
wrapGAppsHook3 wrapGAppsHook3
intltool intltool
autoreconfHook
]; ];
buildInputs = [ buildInputs = [
gtk gtk
libgsf libgsf
libofx libofx
libsoup_2_4
adwaita-icon-theme adwaita-icon-theme
]; ];
passthru.updateScript = nix-update-script { };
meta = with lib; { meta = with lib; {
description = "Personnal accounting application"; description = "Personnal accounting application";
mainProgram = "grisbi"; mainProgram = "grisbi";
@ -50,4 +56,4 @@ stdenv.mkDerivation rec {
maintainers = with maintainers; [ layus ]; maintainers = with maintainers; [ layus ];
platforms = platforms.linux; platforms = platforms.linux;
}; };
} })

View file

@ -8,13 +8,13 @@
let let
pname = "mendeley"; pname = "mendeley";
version = "2.132.0"; version = "2.132.1";
executableName = "${pname}-reference-manager"; executableName = "${pname}-reference-manager";
src = fetchurl { src = fetchurl {
url = "https://static.mendeley.com/bin/desktop/mendeley-reference-manager-${version}-x86_64.AppImage"; url = "https://static.mendeley.com/bin/desktop/mendeley-reference-manager-${version}-x86_64.AppImage";
hash = "sha256-d4B+rVwWHKLVgY/aK3E6i6CyQKD4TsxZ/XyKbbCrQE0="; hash = "sha256-FzniIT3foLbXGQ6Rnmea9MmBs0mXAFDgwv0iu9eX3lM=";
}; };
appimageContents = appimageTools.extractType2 { appimageContents = appimageTools.extractType2 {

View file

@ -4,7 +4,7 @@
fetchFromGitHub, fetchFromGitHub,
python, python,
makeWrapper, makeWrapper,
eigen, eigen_3_4_0,
fftw, fftw,
libtiff, libtiff,
libpng, libpng,
@ -18,41 +18,8 @@
libXext, libXext,
less, less,
withGui ? true, withGui ? true,
fetchFromGitLab,
fetchpatch,
}: }:
let
# reverts 'eigen: 3.4.0 -> 3.4.0-unstable-2022-05-19'
# https://github.com/NixOS/nixpkgs/commit/d298f046edabc84b56bd788e11eaf7ed72f8171c
eigen' = (
eigen.overrideAttrs (old: rec {
version = "3.4.0";
src = fetchFromGitLab {
owner = "libeigen";
repo = "eigen";
tag = version;
hash = "sha256-1/4xMetKMDOgZgzz3WMxfHUEpmdAm52RqZvz6i0mLEw=";
};
patches = (old.patches or [ ]) ++ [
# Fixes e.g. onnxruntime on aarch64-darwin:
# https://hydra.nixos.org/build/248915128/nixlog/1,
# originally suggested in https://github.com/NixOS/nixpkgs/pull/258392.
#
# The patch is from
# ["Fix vectorized reductions for Eigen::half"](https://gitlab.com/libeigen/eigen/-/merge_requests/699)
# which is two years old,
# but Eigen hasn't had a release in two years either:
# https://gitlab.com/libeigen/eigen/-/issues/2699.
(fetchpatch {
url = "https://gitlab.com/libeigen/eigen/-/commit/d0e3791b1a0e2db9edd5f1d1befdb2ac5a40efe0.patch";
hash = "sha256-8qiNpuYehnoiGiqy0c3Mcb45pwrmc6W4rzCxoLDSvj0=";
})
];
})
);
in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "mrtrix"; pname = "mrtrix";
version = "3.0.4-unstable-2025-04-09"; version = "3.0.4-unstable-2025-04-09";
@ -74,7 +41,7 @@ stdenv.mkDerivation rec {
buildInputs = buildInputs =
[ [
ants ants
eigen' eigen_3_4_0
python python
fftw fftw
libtiff libtiff
@ -113,7 +80,7 @@ stdenv.mkDerivation rec {
configurePhase = '' configurePhase = ''
runHook preConfigure runHook preConfigure
export EIGEN_CFLAGS="-isystem ${eigen'}/include/eigen3" export EIGEN_CFLAGS="-isystem ${eigen_3_4_0}/include/eigen3"
unset LD # similar to https://github.com/MRtrix3/mrtrix3/issues/1519 unset LD # similar to https://github.com/MRtrix3/mrtrix3/issues/1519
./configure ${lib.optionalString (!withGui) "-nogui"}; ./configure ${lib.optionalString (!withGui) "-nogui"};
runHook postConfigure runHook postConfigure

View file

@ -6,13 +6,13 @@
enableHO ? false, enableHO ? false,
}: }:
stdenv.mkDerivation rec { stdenv.mkDerivation (finalAttrs: {
pname = "eprover"; pname = "eprover";
version = "3.1"; version = "3.2";
src = fetchurl { src = fetchurl {
url = "https://wwwlehre.dhbw-stuttgart.de/~sschulz/WORK/E_DOWNLOAD/V_${version}/E.tgz"; url = "https://wwwlehre.dhbw-stuttgart.de/~sschulz/WORK/E_DOWNLOAD/V_${finalAttrs.version}/E.tgz";
hash = "sha256-+E2z7JAkiNXhZrWRXFbhI5f9NmB0Q4eixab4GlAFqYY="; hash = "sha256-B0yOX8MGJHY0HOeQ/RWtgATTIta2YnhEvSdoqIML1K4=";
}; };
buildInputs = [ which ]; buildInputs = [ which ];
@ -20,6 +20,7 @@ stdenv.mkDerivation rec {
preConfigure = '' preConfigure = ''
sed -e 's/ *CC *= *gcc$//' -i Makefile.vars sed -e 's/ *CC *= *gcc$//' -i Makefile.vars
''; '';
configureFlags = configureFlags =
[ [
"--exec-prefix=$(out)" "--exec-prefix=$(out)"
@ -29,13 +30,13 @@ stdenv.mkDerivation rec {
"--enable-ho" "--enable-ho"
]; ];
meta = with lib; { meta = {
description = "Automated theorem prover for full first-order logic with equality"; description = "Automated theorem prover for full first-order logic with equality";
homepage = "http://www.eprover.org/"; homepage = "http://www.eprover.org/";
license = licenses.gpl2; license = lib.licenses.gpl2;
maintainers = with maintainers; [ maintainers = with lib.maintainers; [
raskin raskin
]; ];
platforms = platforms.all; platforms = lib.platforms.all;
}; };
} })

View file

@ -1,26 +0,0 @@
diff --git a/src/util/lp/lp_core_solver_base.h b/src/util/lp/lp_core_solver_base.h
index 4c17df2..4c3c311 100644
--- a/src/util/lp/lp_core_solver_base.h
+++ b/src/util/lp/lp_core_solver_base.h
@@ -600,8 +600,6 @@ public:
out << " \n";
}
- bool column_is_free(unsigned j) const { return this->m_column_type[j] == free; }
-
bool column_has_upper_bound(unsigned j) const {
switch(m_column_types[j]) {
case column_type::free_column:
diff --git a/src/util/lp/static_matrix_def.h b/src/util/lp/static_matrix_def.h
index 7949573..2f1cb42 100644
--- a/src/util/lp/static_matrix_def.h
+++ b/src/util/lp/static_matrix_def.h
@@ -86,7 +86,7 @@ static_matrix<T, X>::static_matrix(static_matrix const &A, unsigned * /* basis *
init_row_columns(m, m);
while (m--) {
for (auto & col : A.m_columns[m]){
- set(col.var(), m, A.get_value_of_column_cell(col));
+ set(col.var(), m, A.get_column_cell(col));
}
}
}

View file

@ -1,216 +0,0 @@
{
lib,
stdenv,
fetchFromGitHub,
fetchpatch,
python,
fixDarwinDylibNames,
javaBindings ? false,
ocamlBindings ? false,
pythonBindings ? true,
jdk ? null,
ocaml ? null,
findlib ? null,
zarith ? null,
writeScript,
replaceVars,
}:
assert javaBindings -> jdk != null;
assert ocamlBindings -> ocaml != null && findlib != null && zarith != null;
let
common =
{
version,
sha256,
patches ? [ ],
tag ? "z3",
doCheck ? true,
}:
stdenv.mkDerivation rec {
pname = "z3";
inherit version sha256 patches;
src = fetchFromGitHub {
owner = "Z3Prover";
repo = "z3";
rev = "${tag}-${version}";
sha256 = sha256;
};
strictDeps = true;
nativeBuildInputs =
[ python ]
++ lib.optional stdenv.hostPlatform.isDarwin fixDarwinDylibNames
++ lib.optional javaBindings jdk
++ lib.optionals ocamlBindings [
ocaml
findlib
];
propagatedBuildInputs = [ python.pkgs.setuptools ] ++ lib.optionals ocamlBindings [ zarith ];
enableParallelBuilding = true;
postPatch =
lib.optionalString ocamlBindings ''
export OCAMLFIND_DESTDIR=$ocaml/lib/ocaml/${ocaml.version}/site-lib
mkdir -p $OCAMLFIND_DESTDIR/stublibs
''
+
lib.optionalString
((lib.versionAtLeast python.version "3.12") && (lib.versionOlder version "4.8.14"))
''
# See https://github.com/Z3Prover/z3/pull/5729. This is a specialization of this patch for 4.8.5.
for file in scripts/mk_util.py src/api/python/CMakeLists.txt; do
substituteInPlace "$file" \
--replace-fail "distutils.sysconfig.get_python_lib()" "sysconfig.get_path('purelib')" \
--replace-fail "distutils.sysconfig" "sysconfig"
done
'';
configurePhase =
lib.concatStringsSep " " (
[ "${python.pythonOnBuildForHost.interpreter} scripts/mk_make.py --prefix=$out" ]
++ lib.optional javaBindings "--java"
++ lib.optional ocamlBindings "--ml"
++ lib.optional pythonBindings "--python --pypkgdir=$out/${python.sitePackages}"
)
+ "\n"
+ "cd build";
inherit doCheck;
checkPhase = ''
make -j $NIX_BUILD_CORES test
./test-z3 -a
'';
postInstall =
''
mkdir -p $dev $lib
mv $out/lib $lib/lib
mv $out/include $dev/include
''
+ lib.optionalString pythonBindings ''
mkdir -p $python/lib
mv $lib/lib/python* $python/lib/
ln -sf $lib/lib/libz3${stdenv.hostPlatform.extensions.sharedLibrary} $python/${python.sitePackages}/z3/lib/libz3${stdenv.hostPlatform.extensions.sharedLibrary}
''
+ lib.optionalString javaBindings ''
mkdir -p $java/share/java
mv com.microsoft.z3.jar $java/share/java
moveToOutput "lib/libz3java.${stdenv.hostPlatform.extensions.sharedLibrary}" "$java"
'';
doInstallCheck = true;
installCheckPhase = ''
$out/bin/z3 -version 2>&1 | grep -F "Z3 version $version"
'';
outputs =
[
"out"
"lib"
"dev"
"python"
]
++ lib.optional javaBindings "java"
++ lib.optional ocamlBindings "ocaml";
meta = with lib; {
description = "High-performance theorem prover and SMT solver";
mainProgram = "z3";
homepage = "https://github.com/Z3Prover/z3";
changelog = "https://github.com/Z3Prover/z3/releases/tag/z3-${version}";
license = licenses.mit;
platforms = platforms.unix;
maintainers = with maintainers; [
thoughtpolice
ttuegel
numinit
];
};
};
static-matrix-def-patch = fetchpatch {
# clang / gcc fixes. fixes typos in some member names
name = "gcc-15-fixes.patch";
url = "https://github.com/Z3Prover/z3/commit/2ce89e5f491fa817d02d8fdce8c62798beab258b.patch";
includes = [ "src/math/lp/static_matrix_def.h" ];
hash = "sha256-rEH+UzylzyhBdtx65uf8QYj5xwuXOyG6bV/4jgKkXGo=";
};
static-matrix-patch = fetchpatch {
# clang / gcc fixes. fixes typos in some member names
name = "gcc-15-fixes.patch";
url = "https://github.com/Z3Prover/z3/commit/2ce89e5f491fa817d02d8fdce8c62798beab258b.patch";
includes = [ "src/@dir@/lp/static_matrix.h" ];
stripLen = 3;
extraPrefix = "src/@dir@/";
hash = "sha256-+H1/VJPyI0yq4M/61ay8SRCa6OaoJ/5i+I3zVTAPUVo=";
};
# replace @dir@ in the path of the given list of patches
fixupPatches = dir: map (patch: replaceVars patch { inherit dir; });
in
{
z3_4_14 = common {
version = "4.14.1";
sha256 = "sha256-pTsDzf6Frk4mYAgF81wlR5Kb1x56joFggO5Fa3G2s70=";
};
z3_4_13 = common {
version = "4.13.4";
sha256 = "sha256-8hWXCr6IuNVKkOegEmWooo5jkdmln9nU7wI8T882BSE=";
};
z3_4_12 = common {
version = "4.12.6";
sha256 = "sha256-X4wfPWVSswENV0zXJp/5u9SQwGJWocLKJ/CNv57Bt+E=";
patches =
fixupPatches "math" [
./lower-bound-typo.diff
static-matrix-patch
]
++ [
static-matrix-def-patch
];
};
z3_4_11 = common {
version = "4.11.2";
sha256 = "sha256-OO0wtCvSKwGxnKvu+AfXe4mEzv4nofa7A00BjX+KVjc=";
patches =
fixupPatches "math" [
./lower-bound-typo.diff
static-matrix-patch
./tail-matrix.diff
]
++ [
static-matrix-def-patch
];
};
z3_4_8 = common {
version = "4.8.17";
sha256 = "sha256-BSwjgOU9EgCcm18Zx0P9mnoPc9ZeYsJwEu0ffnACa+8=";
patches =
fixupPatches "math" [
./lower-bound-typo.diff
static-matrix-patch
./tail-matrix.diff
]
++ [
static-matrix-def-patch
];
};
z3_4_8_5 = common {
tag = "Z3";
version = "4.8.5";
sha256 = "sha256-ytG5O9HczbIVJAiIGZfUXC/MuYH7d7yLApaeTRlKXoc=";
patches =
fixupPatches "util" [
./lower-bound-typo.diff
static-matrix-patch
./tail-matrix.diff
]
++ [
./4-8-5-typos.diff
];
};
}

View file

@ -1,13 +0,0 @@
diff --git a/src/@dir@/lp/column_info.h b/src/@dir@/lp/column_info.h
index 1dc0c60..9cbeea6 100644
--- a/src/@dir@/lp/column_info.h
+++ b/src/@dir@/lp/column_info.h
@@ -47,7 +47,7 @@ public:
m_lower_bound_is_strict == c.m_lower_bound_is_strict &&
m_upper_bound_is_set == c.m_upper_bound_is_set&&
m_upper_bound_is_strict == c.m_upper_bound_is_strict&&
- (!m_lower_bound_is_set || m_lower_bound == c.m_low_bound) &&
+ (!m_lower_bound_is_set || m_lower_bound == c.m_lower_bound) &&
(!m_upper_bound_is_set || m_upper_bound == c.m_upper_bound) &&
m_cost == c.m_cost &&
m_is_fixed == c.m_is_fixed &&

View file

@ -1,12 +0,0 @@
diff --git a/src/@dir@/lp/tail_matrix.h b/src/@dir@/lp/tail_matrix.h
index 2047e8c..c84340e 100644
--- a/src/@dir@/lp/tail_matrix.h
+++ b/src/@dir@/lp/tail_matrix.h
@@ -43,7 +43,6 @@ public:
const tail_matrix & m_A;
unsigned m_row;
ref_row(const tail_matrix& m, unsigned row): m_A(m), m_row(row) {}
- T operator[](unsigned j) const { return m_A.get_elem(m_row, j);}
};
ref_row operator[](unsigned i) const { return ref_row(*this, i);}
};

View file

@ -11,13 +11,13 @@
buildPythonApplication rec { buildPythonApplication rec {
pname = "git-machete"; pname = "git-machete";
version = "3.34.0"; version = "3.34.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "virtuslab"; owner = "virtuslab";
repo = pname; repo = pname;
rev = "v${version}"; rev = "v${version}";
hash = "sha256-2Or4L3wrvqW7bvrJcgvK7rGqjqiob6k8CZc/XauguLo="; hash = "sha256-CllaviW7pqLD9XD4oSHyW2nG4lObkPWFseXZbtkNUQI=";
}; };
nativeBuildInputs = [ installShellFiles ]; nativeBuildInputs = [ installShellFiles ];

View file

@ -1,7 +1,6 @@
{ {
lib, lib,
stdenv, stdenv,
mkDerivation,
fetchFromGitHub, fetchFromGitHub,
alsa-lib, alsa-lib,
ffmpeg, ffmpeg,
@ -16,22 +15,24 @@
pkg-config, pkg-config,
libpulseaudio, libpulseaudio,
libv4l, libv4l,
pipewire,
qtbase, qtbase,
qttools, qttools,
wrapQtAppsHook,
cmake, cmake,
ninja, ninja,
nix-update-script, unstableGitUpdater,
}: }:
mkDerivation { stdenv.mkDerivation {
pname = "simplescreenrecorder"; pname = "simplescreenrecorder";
version = "0.4.4-unstable-2024-08-13"; version = "0.4.4-unstable-2025-01-25";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "MaartenBaert"; owner = "MaartenBaert";
repo = "ssr"; repo = "ssr";
rev = "4e3ba13dd212fc4213fe0911f371bc7d34033b8d"; rev = "c50e83eea53f45eff503af58e6c86d0e928222f3";
hash = "sha256-jBZkyrZOrUljWgO8U4SZOTCu3sOm83unQ7vyv+KkAuE="; hash = "sha256-pTgIooEOIYwOrSuXD0L5S7J7IsUIyzRuEX2ZziiIiAM=";
}; };
cmakeFlags = [ cmakeFlags = [
@ -52,7 +53,9 @@ mkDerivation {
pkg-config pkg-config
cmake cmake
ninja ninja
wrapQtAppsHook
]; ];
buildInputs = [ buildInputs = [
alsa-lib alsa-lib
ffmpeg ffmpeg
@ -65,12 +68,13 @@ mkDerivation {
libGL libGL
libpulseaudio libpulseaudio
libv4l libv4l
pipewire
qtbase qtbase
qttools qttools
qtx11extras qtx11extras
]; ];
passthru.updateScript = nix-update-script { }; passthru.updateScript = unstableGitUpdater { };
meta = with lib; { meta = with lib; {
description = "Screen recorder for Linux"; description = "Screen recorder for Linux";

View file

@ -37,6 +37,9 @@ lib.extendMkDerivation {
"buildGoModule: vendorHash is missing" "buildGoModule: vendorHash is missing"
), ),
# The go.sum file to track which can cause rebuilds.
goSum ? null,
# Whether to delete the vendor folder supplied with the source. # Whether to delete the vendor folder supplied with the source.
deleteVendor ? false, deleteVendor ? false,
@ -69,13 +72,24 @@ lib.extendMkDerivation {
vendorHash vendorHash
deleteVendor deleteVendor
proxyVendor proxyVendor
goSum
; ;
goModules = goModules =
if (finalAttrs.vendorHash == null) then if (finalAttrs.vendorHash == null) then
"" ""
else else
(stdenv.mkDerivation { (stdenv.mkDerivation {
name = "${finalAttrs.name or "${finalAttrs.pname}-${finalAttrs.version}"}-go-modules"; name =
let
prefix = "${finalAttrs.name or "${finalAttrs.pname}-${finalAttrs.version}"}-";
# If "goSum" is supplied then it can cause "goModules" to rebuild.
# Attach the hash name of the "go.sum" file so we can rebuild when it changes.
suffix = lib.optionalString (
finalAttrs.goSum != null
) "-${(lib.removeSuffix "-go.sum" (lib.removePrefix "${builtins.storeDir}/" finalAttrs.goSum))}";
in
"${prefix}go-modules${suffix}";
nativeBuildInputs = (finalAttrs.nativeBuildInputs or [ ]) ++ [ nativeBuildInputs = (finalAttrs.nativeBuildInputs or [ ]) ++ [
go go
@ -83,7 +97,7 @@ lib.extendMkDerivation {
cacert cacert
]; ];
inherit (finalAttrs) src modRoot; inherit (finalAttrs) src modRoot goSum;
# The following inheritance behavior is not trivial to expect, and some may # The following inheritance behavior is not trivial to expect, and some may
# argue it's not ideal. Changing it may break vendor hashes in Nixpkgs and # argue it's not ideal. Changing it may break vendor hashes in Nixpkgs and

View file

@ -2,27 +2,32 @@
args: args:
stdenv.mkDerivation ( # TODO(@wolfgangwalther): Remove substituteAllFiles after 25.05 branch-off.
{ lib.warn
name = if args ? name then args.name else baseNameOf (toString args.src); "substituteAllFiles is deprecated and will be removed in 25.11. Use replaceVars for each file instead."
builder = builtins.toFile "builder.sh" '' (
set -o pipefail stdenv.mkDerivation (
{
name = if args ? name then args.name else baseNameOf (toString args.src);
builder = builtins.toFile "builder.sh" ''
set -o pipefail
eval "$preInstall" eval "$preInstall"
args= args=
pushd "$src" pushd "$src"
echo -ne "${lib.concatStringsSep "\\0" args.files}" | xargs -0 -n1 -I {} -- find {} -type f -print0 | while read -d "" line; do echo -ne "${lib.concatStringsSep "\\0" args.files}" | xargs -0 -n1 -I {} -- find {} -type f -print0 | while read -d "" line; do
mkdir -p "$out/$(dirname "$line")" mkdir -p "$out/$(dirname "$line")"
substituteAll "$line" "$out/$line" substituteAll "$line" "$out/$line"
done done
popd popd
eval "$postInstall" eval "$postInstall"
''; '';
preferLocalBuild = true; preferLocalBuild = true;
allowSubstitutes = false; allowSubstitutes = false;
} }
// args // args
) )
)

View file

@ -6,21 +6,24 @@ let
isInvalidArgName = x: builtins.match "^[a-z][a-zA-Z0-9_]*$" x == null; isInvalidArgName = x: builtins.match "^[a-z][a-zA-Z0-9_]*$" x == null;
invalidArgs = builtins.filter isInvalidArgName (builtins.attrNames args); invalidArgs = builtins.filter isInvalidArgName (builtins.attrNames args);
in in
if invalidArgs == [ ] then # TODO(@wolfgangwalther): Remove substituteAll, the nix function, after 25.05 branch-off.
stdenvNoCC.mkDerivation ( lib.warn "substituteAll is deprecated and will be removed in 25.11. Use replaceVars instead." (
{ if invalidArgs == [ ] then
name = if args ? name then args.name else baseNameOf (toString args.src); stdenvNoCC.mkDerivation (
builder = ./substitute-all.sh; {
inherit (args) src; name = if args ? name then args.name else baseNameOf (toString args.src);
preferLocalBuild = true; builder = ./substitute-all.sh;
allowSubstitutes = false; inherit (args) src;
} preferLocalBuild = true;
// args allowSubstitutes = false;
) }
else // args
throw '' )
Argument names for `pkgs.substituteAll` must: else
- start with a lower case ASCII letter throw ''
- only contain ASCII letters, digits and underscores Argument names for `pkgs.substituteAll` must:
Found invalid argument names: ${lib.concatStringsSep ", " invalidArgs}. - start with a lower case ASCII letter
'' - only contain ASCII letters, digits and underscores
Found invalid argument names: ${lib.concatStringsSep ", " invalidArgs}.
''
)

View file

@ -22,17 +22,17 @@
buildGoModule rec { buildGoModule rec {
pname = "aaaaxy"; pname = "aaaaxy";
version = "1.6.64"; version = "1.6.176";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "divVerent"; owner = "divVerent";
repo = pname; repo = pname;
rev = "v${version}"; rev = "v${version}";
hash = "sha256-0geit1ZDsNOPhpdmOeT1xSnQ3oitMiMY14zoGG8hsGU="; hash = "sha256-LukI+FgM2gtKp2/3ySJ0FT6lTlBYTh400GFC5NK7S8I=";
fetchSubmodules = true; fetchSubmodules = true;
}; };
vendorHash = "sha256-1osdAkUMmkBoLpKhoESUh2URMi3OYhLfRs+N9fDnnKQ="; vendorHash = "sha256-bw2Zk4vHzVaXdKwYJF+DkfJefxJlZKlFlh5LGcgkZBY=";
buildInputs = [ buildInputs = [
alsa-lib alsa-lib

View file

@ -0,0 +1,63 @@
{
lib,
fetchFromGitHub,
swiftPackages,
swift,
swiftpm,
nix-update-script,
}:
let
inherit (swiftPackages) stdenv;
in
stdenv.mkDerivation (finalAttrs: {
pname = "age-plugin-se";
version = "0.1.4";
src = fetchFromGitHub {
owner = "remko";
repo = "age-plugin-se";
tag = "v${finalAttrs.version}";
hash = "sha256-sg73DzlW4aXNbIIePZox4JkF10OfsMtPw0q/0DWwgDk=";
};
nativeBuildInputs = [
swift
swiftpm
];
postPatch =
let
swift-crypto = fetchFromGitHub {
owner = "apple";
repo = "swift-crypto";
# FIXME: Update to a newer version once https://github.com/NixOS/nixpkgs/issues/343210 is fixed
# This is the last version to support swift tools 5.8 which is newest version supported by nixpkgs:
# https://github.com/apple/swift-crypto/commit/35703579f63c2518fc929a1ce49805ba6134137c
tag = "3.7.1";
hash = "sha256-zxmHxTryAezgqU5qjXlFFThJlfUsPxb1KRBan4DSm9A=";
};
in
''
ln -s ${swift-crypto} swift-crypto
substituteInPlace Package.swift --replace-fail 'url: "https://github.com/apple/swift-crypto.git"' 'path: "./swift-crypto"), //'
'';
makeFlags = [
"PREFIX=$(out)"
"RELEASE=1"
];
passthru.updateScript = nix-update-script { };
meta = {
description = "Age plugin for Apple's Secure Enclave";
homepage = "https://github.com/remko/age-plugin-se/";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [
onnimonni
remko
];
mainProgram = "age-plugin-se";
platforms = lib.platforms.darwin;
};
})

View file

@ -4,6 +4,7 @@
fetchFromGitHub, fetchFromGitHub,
installShellFiles, installShellFiles,
age-plugin-tpm, age-plugin-tpm,
age-plugin-se,
age-plugin-sss, age-plugin-sss,
age-plugin-ledger, age-plugin-ledger,
age-plugin-yubikey, age-plugin-yubikey,
@ -59,6 +60,7 @@ buildGoModule (final: {
passthru.plugins = { passthru.plugins = {
inherit inherit
age-plugin-tpm age-plugin-tpm
age-plugin-se
age-plugin-sss age-plugin-sss
age-plugin-ledger age-plugin-ledger
age-plugin-yubikey age-plugin-yubikey

View file

@ -7,16 +7,16 @@
buildNpmPackage rec { buildNpmPackage rec {
pname = "all-the-package-names"; pname = "all-the-package-names";
version = "2.0.2129"; version = "2.0.2137";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "nice-registry"; owner = "nice-registry";
repo = "all-the-package-names"; repo = "all-the-package-names";
tag = "v${version}"; tag = "v${version}";
hash = "sha256-aq4WxaeMprw9ohcwd9HuiWq5GUpW6dI3FSudMyUo6Fg="; hash = "sha256-1HabSjZUHjPWkKZc+Xeh11bzb6ycQ1V7GS/XGycFoKc=";
}; };
npmDepsHash = "sha256-WM2FO/qsDcXaV/2oqBlRGXc+VHaPUxFVg1DF6F0iGso="; npmDepsHash = "sha256-zSGpKDcmBYod81wCeoSzOqse1zSao4aURngh55wq6CA=";
passthru.updateScript = nix-update-script { }; passthru.updateScript = nix-update-script { };

View file

@ -8,11 +8,11 @@
stdenv.mkDerivation (finalAttrs: { stdenv.mkDerivation (finalAttrs: {
pname = "allure"; pname = "allure";
version = "2.33.0"; version = "2.34.0";
src = fetchurl { src = fetchurl {
url = "https://github.com/allure-framework/allure2/releases/download/${finalAttrs.version}/allure-${finalAttrs.version}.tgz"; url = "https://github.com/allure-framework/allure2/releases/download/${finalAttrs.version}/allure-${finalAttrs.version}.tgz";
hash = "sha256-ZRAvIBF89LFYWfmO/bPqL85/XQ9l0TRGOs/uQ9no7tA="; hash = "sha256-1R4x8LjUv4ZQXfFeJ1HkHml3sRLhb1tRV3UqApVEo7U=";
}; };
dontConfigure = true; dontConfigure = true;

View file

@ -0,0 +1,59 @@
{
lib,
rustPlatform,
fetchFromGitHub,
pkg-config,
libxkbcommon,
sqlite,
zlib,
wayland,
}:
let
libwifi = fetchFromGitHub {
owner = "Ragnt";
repo = "libwifi";
rev = "71268e1898ad88b8b5d709e186836db417b33e81";
hash = "sha256-2X/TZyLX9Tb54c6Sdla4bsWdq05NU72MVSuPvNfxySk=";
};
in
rustPlatform.buildRustPackage (finalAttrs: {
pname = "angryoxide";
version = "0.8.32";
src = fetchFromGitHub {
owner = "Ragnt";
repo = "AngryOxide";
tag = "v${finalAttrs.version}";
hash = "sha256-Sla5lvyqZho9JE4QVS9r0fx5+DVlU90c8OSfO4/f0B4=";
};
postPatch = ''
rm -r libs/libwifi
ln -s ${libwifi} libs/libwifi
'';
useFetchCargoVendor = true;
cargoHash = "sha256-mry4l0a7DZOWkrChU40OVRCBjKwI39cyZtvEBA5tro0=";
nativeBuildInputs = [
pkg-config
];
buildInputs = [
libxkbcommon
sqlite
wayland
zlib
];
meta = {
description = "802.11 Attack Tool";
changelog = "https://github.com/Ragnt/AngryOxide/releases/tag/v${finalAttrs.version}";
homepage = "https://github.com/Ragnt/AngryOxide/";
license = lib.licenses.gpl3Only;
maintainers = with lib.maintainers; [ fvckgrimm ];
mainProgram = "angryoxide";
platforms = lib.platforms.linux;
};
})

View file

@ -34,14 +34,14 @@ let
in in
stdenv.mkDerivation (finalAttrs: { stdenv.mkDerivation (finalAttrs: {
pname = "anydesk"; pname = "anydesk";
version = "6.4.2"; version = "6.4.3";
src = fetchurl { src = fetchurl {
urls = [ urls = [
"https://download.anydesk.com/linux/anydesk-${finalAttrs.version}-amd64.tar.gz" "https://download.anydesk.com/linux/anydesk-${finalAttrs.version}-amd64.tar.gz"
"https://download.anydesk.com/linux/generic-linux/anydesk-${finalAttrs.version}-amd64.tar.gz" "https://download.anydesk.com/linux/generic-linux/anydesk-${finalAttrs.version}-amd64.tar.gz"
]; ];
hash = "sha256-KJTyIMuKNLymD/DsitN+Rgro7lgkY13fmkFNxsEUkWU="; hash = "sha256-P90BPUayKG+uYszIQkbYcBg1vObQvueq67HU+su+GSI=";
}; };
buildInputs = buildInputs =

View file

@ -6,12 +6,12 @@
}: }:
buildNpmPackage rec { buildNpmPackage rec {
pname = "ares-cli"; pname = "ares-cli";
version = "3.2.0"; version = "3.2.1";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "webos-tools"; owner = "webos-tools";
repo = "cli"; repo = "cli";
rev = "v${version}"; rev = "v${version}";
hash = "sha256-tSnmIDDDEhhQBrjZ5bujmCaYpetTjpdCGUjKomue+Bc="; hash = "sha256-L8suZDtXVchVyvp7KCv0UaceJqqGBdfopd5tZzwj3MY=";
}; };
postPatch = '' postPatch = ''
@ -19,7 +19,7 @@ buildNpmPackage rec {
''; '';
dontNpmBuild = true; dontNpmBuild = true;
npmDepsHash = "sha256-eTuAi+32pK8rGQ5UDWesDFvlkjWj/ERevD+aYXYYr0Q="; npmDepsHash = "sha256-ATIxe/sulfOpz5KiWauDAPZrlfUOFyiTa+5ECFbVd+0=";
passthru.updateScript = nix-update-script { }; passthru.updateScript = nix-update-script { };

View file

@ -8,17 +8,17 @@
buildGoModule rec { buildGoModule rec {
pname = "argocd"; pname = "argocd";
version = "2.14.9"; version = "2.14.10";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "argoproj"; owner = "argoproj";
repo = "argo-cd"; repo = "argo-cd";
rev = "v${version}"; rev = "v${version}";
hash = "sha256-L8ipYgMpL6IhPh/fSanNywzUMDJQfMZc7pyYr2dtbAw="; hash = "sha256-Z+xSA0LrvXHHmNg7+i53Y1mSYnLYURZUglXRKvkld14=";
}; };
proxyVendor = true; # darwin/linux hash mismatch proxyVendor = true; # darwin/linux hash mismatch
vendorHash = "sha256-j+uwLG9/r9dlK9JWrQmJdgBOqgZs/aIvkh1Sg81dm1I="; vendorHash = "sha256-Xm9J08pxzm3fPQjMA6NDu+DPJGsvtUvj+n/qrOZ9BE4=";
# Set target as ./cmd per cli-local # Set target as ./cmd per cli-local
# https://github.com/argoproj/argo-cd/blob/master/Makefile#L227 # https://github.com/argoproj/argo-cd/blob/master/Makefile#L227

View file

@ -7,13 +7,13 @@
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "atasm"; pname = "atasm";
version = "1.26"; version = "1.27";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "CycoPH"; owner = "CycoPH";
repo = "atasm"; repo = "atasm";
rev = "V${version}"; rev = "V${version}";
hash = "sha256-W9I1Wf2IVBy2l+jyrAOmlpO59uZM1SkBLuNcu2fXI1M="; hash = "sha256-owr0mqib3zXMYcYliseCIkHp41nevpIPCC6nTqouAkA=";
}; };
makefile = "Makefile"; makefile = "Makefile";

View file

@ -0,0 +1,340 @@
{
"!comment": "This is a nixpkgs Gradle dependency lockfile. For more details, refer to the Gradle section in the nixpkgs manual.",
"!version": 1,
"https://plugins.gradle.org/m2": {
"com/google/code/gson#gson-parent/2.8.9": {
"pom": "sha256-sW4CbmNCfBlyrQ/GhwPsN5sVduQRuknDL6mjGrC7z/s="
},
"com/google/code/gson#gson/2.8.9": {
"jar": "sha256-05mSkYVd5JXJTHQ3YbirUXbP6r4oGlqw2OjUUyb9cD4=",
"pom": "sha256-r97W5qaQ+/OtSuZa2jl/CpCl9jCzA9G3QbnJeSb91N4="
},
"org/jetbrains/intellij/deps#trove4j/1.0.20200330": {
"jar": "sha256-xf1yW/+rUYRr88d9sTg8YKquv+G3/i8A0j/ht98KQ50=",
"pom": "sha256-h3IcuqZaPJfYsbqdIHhA8WTJ/jh1n8nqEP/iZWX40+k="
},
"org/jetbrains/kotlin#kotlin-build-statistics/2.0.21": {
"jar": "sha256-gBILdN8DYz1veeCIZBMe7jt6dIb2wF0vLtyGg3U8VNo=",
"pom": "sha256-/iTcYG/sg+yY3Qi8i7HPmeVAXejpF8URnVoMt++sVZ0="
},
"org/jetbrains/kotlin#kotlin-build-tools-api/2.0.21": {
"jar": "sha256-j8orSvbEzyRWXZp/ZMMXhIlRjQSeEGmB22cY7yLK4Y4=",
"pom": "sha256-zL2XaTA2Y0gWKVGY5JRFNPr7c9d4+M1NQ588h7CQ9JQ="
},
"org/jetbrains/kotlin#kotlin-compiler-embeddable/2.0.21": {
"jar": "sha256-n6jN0d4NzP/hVMmX1CPsa19TzW2Rd+OnepsN4D+xvIE=",
"pom": "sha256-vUZWpG7EGCUuW8Xhwg6yAp+yqODjzJTu3frH6HyM1bY="
},
"org/jetbrains/kotlin#kotlin-compiler-runner/2.0.21": {
"jar": "sha256-COYFvoEGD/YS0K65QFihm8SsmWJcNcRhxsCzAlYOkQQ=",
"pom": "sha256-+Wdq1JVBFLgc39CR6bW0J7xkkc+pRIRmjWU9TRkCPm0="
},
"org/jetbrains/kotlin#kotlin-daemon-client/2.0.21": {
"jar": "sha256-Nx6gjk8DaILMjgZP/PZEWZDfREKVuh7GiSjnzCtbwBU=",
"pom": "sha256-8oY4JGtQVSC/6TXxXz7POeS6VSb6RcjzKsfeejEjdAA="
},
"org/jetbrains/kotlin#kotlin-daemon-embeddable/2.0.21": {
"jar": "sha256-saCnPFAi+N0FpjjGt2sr1zYYGKHzhg/yZEEzsd0r2wM=",
"pom": "sha256-jbZ7QN1gJaLtBpKU8sm8+2uW2zFZz+927deEHCZq+/A="
},
"org/jetbrains/kotlin#kotlin-gradle-plugin-annotations/2.0.21": {
"jar": "sha256-W0cHoy5GfvvhIsMY/2q9yhei/H2Mg/ZgN8mhILbcvC8=",
"pom": "sha256-P+CLlUN7C074sWt39hqImzn1xGt+lx1N+63mbUQOodg="
},
"org/jetbrains/kotlin#kotlin-gradle-plugin-api/2.0.21": {
"jar": "sha256-Uur1LOMDtSneZ6vDusE+TxNZY1dUPfqDHE1y0tYxDlA=",
"module": "sha256-z29dNExVVVS/rGQFHq0AhcvUM4Z2uqP8h7UD6eSrvjQ=",
"pom": "sha256-gV5yqZ4ZFD1mLSTkYlKlnOdWMC18W9/FlIF9fMexI3g="
},
"org/jetbrains/kotlin#kotlin-gradle-plugin-idea-proto/2.0.21": {
"jar": "sha256-UzVXQrV7qOFvvfCiBDn4s0UnYHHtsUTns9puYL42MYg=",
"pom": "sha256-OMyaLLf55K/UOcMQdvgzFThIsfftITMgCDXRtCDfbqs="
},
"org/jetbrains/kotlin#kotlin-gradle-plugin-idea/2.0.21": {
"jar": "sha256-wfTqDBkmfx7tR0tUGwdxXEkWes+/AnqKL9B8u8gbjnI=",
"module": "sha256-YqcNAg27B4BkexFVGIBHE+Z2BkBa6XoQ2P2jgpOI0Uk=",
"pom": "sha256-1GjmNf3dsw9EQEuFixCyfcVm6Z1bVIusEMIjOp7OF74="
},
"org/jetbrains/kotlin#kotlin-gradle-plugin-model/2.0.21": {
"jar": "sha256-lR13mJs1cAljH/HvsSsBYczzKcUpxUalKfih0x+bwDw=",
"module": "sha256-6qn9n4b71E/2BwoZfce90ZgPDUHo20myUoA9A6pMVaw=",
"pom": "sha256-5RVeYOyr2v1kUmVKaYALyyp37n0fxucH+tOo5p8HTCw="
},
"org/jetbrains/kotlin#kotlin-gradle-plugin/2.0.21": {
"module": "sha256-D5iXoGwHo+h9ZHExzDSQofctGuVMEH8T9yJp1TRLCHo=",
"pom": "sha256-RenM7OM+TY36mUHMkS81RYIBqdPwQ3IMMket3lf0f/Y="
},
"org/jetbrains/kotlin#kotlin-gradle-plugin/2.0.21/gradle85": {
"jar": "sha256-nfXH/xOx/GislFDKY8UxEYkdb2R73ewPQ5iz5yJb9tk="
},
"org/jetbrains/kotlin#kotlin-gradle-plugins-bom/2.0.21": {
"module": "sha256-8JRUh/5RlZ/fi2oUQXB6Ke1fGsMaIxx/3r4sPd0i/fE=",
"pom": "sha256-Z1AT1Mvu4JyIkgriuiRvmfKKeJuHT2NASeAS+j7r9Mg="
},
"org/jetbrains/kotlin#kotlin-klib-commonizer-api/2.0.21": {
"jar": "sha256-R1eJEWW2mPvazo9NpvK8DpiOrvnvNnE1SIZajycGmv0=",
"pom": "sha256-Y/6HvSI1sSlAnHIqCbYsIKe3eueQGeIgMSSK9zawPFQ="
},
"org/jetbrains/kotlin#kotlin-native-utils/2.0.21": {
"jar": "sha256-ResIo5Kfl8SKkpEsliV3nRVAvG8/IS+56UYg0DJrzAA=",
"pom": "sha256-ZpB3PnZJ0dD61V0GCaTiHh68mF3Q+iYenG/9OJhnBh0="
},
"org/jetbrains/kotlin#kotlin-tooling-core/2.0.21": {
"jar": "sha256-W28UhUj+ngdN9R9CJTREM78DdaxbOf/NPXvX1/YC1ik=",
"pom": "sha256-MiVe/o/PESl703OozHf4sYXXOYTpGxieeRZlKb36XVo="
},
"org/jetbrains/kotlin#kotlin-util-io/2.0.21": {
"jar": "sha256-Dv7kwg8+f5ErMceWxOR/nRTqaIA+x+1OXU8kJY46ph4=",
"pom": "sha256-4gD5F2fbCFJsjZSt3OB7kPNCVBSwTs/XzPjkHJ8QmKA="
},
"org/jetbrains/kotlin#kotlin-util-klib/2.0.21": {
"jar": "sha256-oTtziWVUtI5L702KRjDqfpQBSaxMrcysBpFGORRlSeo=",
"pom": "sha256-724nWZiUO5b1imSWQIUyDxAxdNYJ7GakqUnmASPHmPU="
},
"org/jetbrains/kotlin/jvm#org.jetbrains.kotlin.jvm.gradle.plugin/2.0.21": {
"pom": "sha256-Jk8V5sp1XIU/oPWvEPa9GgHwmLKsDPmOHP05kBF/tjo="
},
"org/jetbrains/kotlinx#kotlinx-coroutines-bom/1.6.4": {
"pom": "sha256-qyYUhV+6ZqqKQlFNvj1aiEMV/+HtY/WTLnEKgAYkXOE="
},
"org/jetbrains/kotlinx#kotlinx-coroutines-core-jvm/1.6.4": {
"jar": "sha256-wkyLsnuzIMSpOHFQGn5eDGFgdjiQexl672dVE9TIIL4=",
"module": "sha256-DZTIpBSD58Jwfr1pPhsTV6hBUpmM6FVQ67xUykMho6c=",
"pom": "sha256-Cdlg+FkikDwuUuEmsX6fpQILQlxGnsYZRLPAGDVUciQ="
},
"org/sonatype/oss#oss-parent/7": {
"pom": "sha256-tR+IZ8kranIkmVV/w6H96ne9+e9XRyL+kM5DailVlFQ="
}
},
"https://repo.maven.apache.org/maven2": {
"com/google/code/gson#gson-parent/2.11.0": {
"pom": "sha256-issfO3Km8CaRasBzW62aqwKT1Sftt7NlMn3vE6k2e3o="
},
"com/google/code/gson#gson/2.11.0": {
"jar": "sha256-V5KNblpu3rKr03cKj5W6RNzkXzsjt6ncKzCcWBVSp4s=",
"pom": "sha256-wOVHvqmYiI5uJcWIapDnYicryItSdTQ90sBd7Wyi42A="
},
"com/google/errorprone#error_prone_annotations/2.27.0": {
"jar": "sha256-JMkjNyxY410LnxagKJKbua7cd1IYZ8J08r0HNd9bofU=",
"pom": "sha256-TKWjXWEjXhZUmsNG0eNFUc3w/ifoSqV+A8vrJV6k5do="
},
"com/google/errorprone#error_prone_parent/2.27.0": {
"pom": "sha256-+oGCnQSVWd9pJ/nJpv1rvQn4tQ5tRzaucsgwC2w9dlQ="
},
"com/sun/mail#all/1.6.2": {
"pom": "sha256-S36Dqpt31l4AfpfLUPm4nNt1T6rxZBHl/ZTR49q3brM="
},
"com/sun/mail#javax.mail/1.6.2": {
"jar": "sha256-RbUV5xBJRMCeRbnHuxzl3/ZASGN0hS3SsugMw3Ut+hE=",
"pom": "sha256-xCKcBbWDbwAlITY9NDXz0HJmJ0RUi/F+fnreyv5ouf0="
},
"info/picocli#picocli/4.6.1": {
"jar": "sha256-Km4DMQ2xSfihHrBYqnjndcIp74FjM8loc3l2LSKDOtY=",
"pom": "sha256-sQOC7VBz9mKP84EayWFEkbHv8wLDz55Cmo81P2w75M8="
},
"javax/activation#activation/1.1": {
"jar": "sha256-KIHHnJ1u8BxY5ivuoT6dGsi4uqFvL8GYrW5ndt79zdM=",
"pom": "sha256-1JDlQKEVBLnXFxixyF/vez3mgCNhKQgkU5sHbVj6qKA="
},
"net/java#jvnet-parent/1": {
"pom": "sha256-KBRAgRJo5l2eJms8yJgpfiFOBPCXQNA4bO60qJI9Y78="
},
"org/apiguardian#apiguardian-api/1.1.2": {
"jar": "sha256-tQlEisUG1gcxnxglN/CzXXEAdYLsdBgyofER5bW3Czg=",
"module": "sha256-4IAoExN1s1fR0oc06aT7QhbahLJAZByz7358fWKCI/w=",
"pom": "sha256-MjVQgdEJCVw9XTdNWkO09MG3XVSemD71ByPidy5TAqA="
},
"org/ini4j#ini4j/0.5.4": {
"jar": "sha256-qtYGNe7lZyVO0p8Y+xjA+eTE2s9RyCKRKCAxg7s14t0=",
"pom": "sha256-XMYUkRJoPvybUbn9k3h307NQPfboBdMHHOTbOb41mY8="
},
"org/jetbrains#annotations/13.0": {
"jar": "sha256-rOKhDcji1f00kl7KwD5JiLLA+FFlDJS4zvSbob0RFHg=",
"pom": "sha256-llrrK+3/NpgZvd4b96CzuJuCR91pyIuGN112Fju4w5c="
},
"org/jetbrains/intellij/deps#trove4j/1.0.20200330": {
"jar": "sha256-xf1yW/+rUYRr88d9sTg8YKquv+G3/i8A0j/ht98KQ50=",
"pom": "sha256-h3IcuqZaPJfYsbqdIHhA8WTJ/jh1n8nqEP/iZWX40+k="
},
"org/jetbrains/kotlin#kotlin-build-common/2.0.21": {
"jar": "sha256-cLmHScMJc9O3YhCL37mROSB4swhzCKzTwa0zqg9GIV0=",
"pom": "sha256-qNP7huk2cgYkCh2+6LMBCteRP+oY+9Rtv2EB+Yvj4V0="
},
"org/jetbrains/kotlin#kotlin-build-tools-api/2.0.21": {
"jar": "sha256-j8orSvbEzyRWXZp/ZMMXhIlRjQSeEGmB22cY7yLK4Y4=",
"pom": "sha256-zL2XaTA2Y0gWKVGY5JRFNPr7c9d4+M1NQ588h7CQ9JQ="
},
"org/jetbrains/kotlin#kotlin-build-tools-impl/2.0.21": {
"jar": "sha256-um6iTa7URxf1AwcqkcWbDafpyvAAK9DsG+dzKUwSfcs=",
"pom": "sha256-epPI22tqqFtPyvD0jKcBa5qEzSOWoGUreumt52eaTkE="
},
"org/jetbrains/kotlin#kotlin-compiler-embeddable/2.0.21": {
"jar": "sha256-n6jN0d4NzP/hVMmX1CPsa19TzW2Rd+OnepsN4D+xvIE=",
"pom": "sha256-vUZWpG7EGCUuW8Xhwg6yAp+yqODjzJTu3frH6HyM1bY="
},
"org/jetbrains/kotlin#kotlin-compiler-runner/2.0.21": {
"jar": "sha256-COYFvoEGD/YS0K65QFihm8SsmWJcNcRhxsCzAlYOkQQ=",
"pom": "sha256-+Wdq1JVBFLgc39CR6bW0J7xkkc+pRIRmjWU9TRkCPm0="
},
"org/jetbrains/kotlin#kotlin-daemon-client/2.0.21": {
"jar": "sha256-Nx6gjk8DaILMjgZP/PZEWZDfREKVuh7GiSjnzCtbwBU=",
"pom": "sha256-8oY4JGtQVSC/6TXxXz7POeS6VSb6RcjzKsfeejEjdAA="
},
"org/jetbrains/kotlin#kotlin-daemon-embeddable/2.0.21": {
"jar": "sha256-saCnPFAi+N0FpjjGt2sr1zYYGKHzhg/yZEEzsd0r2wM=",
"pom": "sha256-jbZ7QN1gJaLtBpKU8sm8+2uW2zFZz+927deEHCZq+/A="
},
"org/jetbrains/kotlin#kotlin-klib-commonizer-embeddable/2.0.21": {
"jar": "sha256-2Gv0M4pthBzM37v/LaBb0DpJw9uMP5erhed+AhrQhFs=",
"pom": "sha256-esgfO7B8TWqo+pj/WjmaR6vRzhx4bU8/rZbvKBIL34o="
},
"org/jetbrains/kotlin#kotlin-native-prebuilt/2.0.21": {
"pom": "sha256-Gv4wJE4ZR67Wy+01BBrTbFnw6nZK/bxv/56agY7loEE="
},
"org/jetbrains/kotlin#kotlin-reflect/1.6.10": {
"jar": "sha256-MnesECrheq0QpVq+x1/1aWyNEJeQOWQ0tJbnUIeFQgM=",
"pom": "sha256-V5BVJCdKAK4CiqzMJyg/a8WSWpNKBGwcxdBsjuTW1ak="
},
"org/jetbrains/kotlin#kotlin-script-runtime/2.0.21": {
"jar": "sha256-nBEfjQit5FVWYnLVYZIa3CsstrekzO442YKcXjocpqM=",
"pom": "sha256-lbLpKa+hBxvZUv0Tey5+gdBP4bu4G3V+vtBrIW5aRSQ="
},
"org/jetbrains/kotlin#kotlin-scripting-common/2.0.21": {
"jar": "sha256-+H3rKxTQaPmcuhghfYCvhUgcApxzGthwRFjprdnKIPg=",
"pom": "sha256-hP6ezqjlV+/6iFbJAhMlrWPCHZ0TEh6q6xGZ9qZYZXU="
},
"org/jetbrains/kotlin#kotlin-scripting-compiler-embeddable/2.0.21": {
"jar": "sha256-JBPCMP3YzUfrvronPk35TPO0TLPsldLLNUcsk3aMnxw=",
"pom": "sha256-1Ch6fUD4+Birv3zJhH5/OSeC0Ufb7WqEQORzvE9r8ug="
},
"org/jetbrains/kotlin#kotlin-scripting-compiler-impl-embeddable/2.0.21": {
"jar": "sha256-btD6W+slRmiDmJtWQfNoCUeSYLcBRTVQL9OHzmx7qDM=",
"pom": "sha256-0ysb8kupKaL6MqbjRDIPp7nnvgbON/z3bvOm3ITiNrE="
},
"org/jetbrains/kotlin#kotlin-scripting-jvm/2.0.21": {
"jar": "sha256-iEJ/D3pMR4RfoiIdKfbg4NfL5zw+34vKMLTYs6M2p3w=",
"pom": "sha256-opCFi++0KZc09RtT7ZqUFaKU55um/CE8BMQnzch5nA0="
},
"org/jetbrains/kotlin#kotlin-stdlib/2.0.21": {
"jar": "sha256-8xzFPxBafkjAk2g7vVQ3Vh0SM5IFE3dLRwgFZBvtvAk=",
"module": "sha256-gf1tGBASSH7jJG7/TiustktYxG5bWqcpcaTd8b0VQe0=",
"pom": "sha256-/LraTNLp85ZYKTVw72E3UjMdtp/R2tHKuqYFSEA+F9o="
},
"org/jetbrains/kotlin#kotlin-stdlib/2.0.21/all": {
"jar": "sha256-UP+t6yC00kVqUmWVpPep6FiJaCcVBz5s26Gx2A461Fg="
},
"org/jetbrains/kotlin#kotlin-test-junit5/2.0.21": {
"jar": "sha256-rEfeYZt9h+K/339u7Gpiph0b3AwyV0DfUhhrFBk2cT0=",
"module": "sha256-pJ3WSbaBmpF2wNksgkT2sD6Q4xvXpTO3oJGsud6wleQ=",
"pom": "sha256-rdbbLWF1KU0hNI3eEMyqHeUWNT9uQHp24FNbS1RcJ30="
},
"org/jetbrains/kotlin#kotlin-test/2.0.21": {
"jar": "sha256-qJeyjGo+qOyPAO12aUGgwN+ZPX9lkIh1h5ho4IzriYU=",
"module": "sha256-1GaHPese5eDSFPdNDVC5BCGQZV+eUBRW/Qk72SCkL40=",
"pom": "sha256-6jadb0j7+WeUIXBPuf9tTM4mA3iZUKl8pd5bLsH5c4o="
},
"org/jetbrains/kotlin#kotlin-test/2.0.21/all": {
"jar": "sha256-2iho+pWj+4814rTjMcouKTIUhnAZZex2a66CD5jgJ3w="
},
"org/jetbrains/kotlin/kotlin-native-prebuilt/2.0.21/kotlin-native-prebuilt-2.0.21-linux-x86_64": {
"tar.gz": "sha256-8SXMZFcnRldupsPfHmVklSr9dpJcJNdc/4X4zdRG/ls="
},
"org/jetbrains/kotlinx#kotlinx-coroutines-bom/1.6.4": {
"pom": "sha256-qyYUhV+6ZqqKQlFNvj1aiEMV/+HtY/WTLnEKgAYkXOE="
},
"org/jetbrains/kotlinx#kotlinx-coroutines-core-jvm/1.6.4": {
"jar": "sha256-wkyLsnuzIMSpOHFQGn5eDGFgdjiQexl672dVE9TIIL4=",
"module": "sha256-DZTIpBSD58Jwfr1pPhsTV6hBUpmM6FVQ67xUykMho6c=",
"pom": "sha256-Cdlg+FkikDwuUuEmsX6fpQILQlxGnsYZRLPAGDVUciQ="
},
"org/jsoup#jsoup/1.18.1": {
"jar": "sha256-O7Ww7AKZir5FpR83185nwwaLTM1KtjyWWSnsUHTWTpE=",
"pom": "sha256-xN46hPu17vS9IpjW3pgcbNlyKHlQXINz4bZ/EdHK8n0="
},
"org/junit#junit-bom/5.10.1": {
"module": "sha256-IbCvz//i7LN3D16wCuehn+rulOdx+jkYFzhQ2ueAZ7c=",
"pom": "sha256-IcSwKG9LIAaVd/9LIJeKhcEArIpGtvHIZy+6qzN7w/I="
},
"org/junit#junit-bom/5.8.1": {
"module": "sha256-a4LLpSoTSxPBmC8M+WIsbUhTcdQLmJJG8xJOOwpbGFQ=",
"pom": "sha256-733Ef45KFoZPR3lyjofteFOYGeT7iSdoqdprjvkD+GM="
},
"org/junit/jupiter#junit-jupiter-api/5.10.1": {
"jar": "sha256-YNXDmMMtxwObmSglFK1gZAYdhBfPlZofa9IDjMkHyRM=",
"module": "sha256-+H9zEVSfSf4k5igqEWXpB+AXqR6XnK2r/fm/VMP3EG8=",
"pom": "sha256-PK9ZSxPa5xB1EN2Zj02en6J3MFzcohMh/dWRmdyHzz0="
},
"org/junit/jupiter#junit-jupiter-api/5.8.1": {
"jar": "sha256-zjN0p++6YF4tK2mj/vkBNAMrqz7MPthXmkhxscLEcpw=",
"module": "sha256-DWnbwja33Kq0ynNpqlYOmwqbvvf5WIgv+0hTPLunwJ0=",
"pom": "sha256-d61+1KYwutH8h0agpuZ1wj+2lAsnq2LMyzTk/Pz+Ob8="
},
"org/junit/jupiter#junit-jupiter-engine/5.10.1": {
"jar": "sha256-ApMN/klfk/5wsmVQrOOij34bkAyEQmwuRibOAgxygtY=",
"module": "sha256-VBIeWCzLLUYl7J+lRnlDbJA/oFPHQJe75F/fud22f7g=",
"pom": "sha256-MHCG3F5wjLdZAQhoXAQOCOCK3g7UlUkwsvM8BttT6l4="
},
"org/junit/jupiter#junit-jupiter-engine/5.8.1": {
"module": "sha256-aHkP7DP5ew7IQM9HrEDuDHLgVvEiyg88ZkZ0M0mTdpk=",
"pom": "sha256-qjIKMYpyceMyYsSA/POZZbmobap2Zm63dTQrgOnN1F4="
},
"org/junit/platform#junit-platform-commons/1.10.1": {
"jar": "sha256-fZhV7j8/cfAV6xR5VZv5I3gyQ8JPv72LKb7Y6AmbVnI=",
"module": "sha256-VtNwYvzicEHwtaNfOTxoyK0jr+NLLTDvjgewT8EZ1N0=",
"pom": "sha256-Su81pl6VGRWhPZ920fr/CaeMND5SJC+vNSBDtwx/bzA="
},
"org/junit/platform#junit-platform-commons/1.8.1": {
"jar": "sha256-+k+mjIvVTdDLScP8vpsuQvTaa+2+fnzPKgXxoeYJtZM=",
"module": "sha256-aY/QVBrLfv/GZZhI/Qx91QEKSfFfDBy6Q+U1gH+Q9ms=",
"pom": "sha256-4ZcoLlLnANEriJie3FSJh0aTUC5KqJB6zwgpgBq6bUQ="
},
"org/junit/platform#junit-platform-engine/1.10.1": {
"jar": "sha256-uqSORw1t7nNpoKiCDFHaicFGMnntpuE6ME0R9Fkix2A=",
"module": "sha256-KXiTcRuSz0lfdH41o6rLSDELHRNBpFzYTSP5QxxS4p0=",
"pom": "sha256-3X1k/Zr2eJywPFDCWGyRW7hrHizIwH+5dPHbDvhhZA0="
},
"org/junit/platform#junit-platform-engine/1.8.1": {
"module": "sha256-2fQgpkU5o+32D4DfDG/XIrdQcldEx5ykD30lrlbKS6Q=",
"pom": "sha256-hqrU5ld1TkOgDfIm3VTIrsHsarZTP1ASGQfkZi3i5fI="
},
"org/junit/platform#junit-platform-launcher/1.10.1": {
"jar": "sha256-3tQUxQTojQInAzEHGWkIThsv2bz4RD811E2ixuMwG8I=",
"module": "sha256-3ZcDx0TqC54Vv4yeP+vM/B40cBalXXHvf/qbC8TEBRI=",
"pom": "sha256-unroFwQMcqPCbTY6R/wTZIoc0MZOmjgYDd6YGKG1DjM="
},
"org/opentest4j#opentest4j/1.2.0": {
"jar": "sha256-WIEt5giY2Xb7ge87YtoFxmBMGP1KJJ9QRCgkefwoavI=",
"pom": "sha256-qW5nGBbB/4gDvex0ySQfAlvfsnfaXStO4CJmQFk2+ZQ="
},
"org/opentest4j#opentest4j/1.3.0": {
"jar": "sha256-SOLfY2yrZWPO1k3N/4q7I1VifLI27wvzdZhoLd90Lxs=",
"module": "sha256-SL8dbItdyU90ZSvReQD2VN63FDUCSM9ej8onuQkMjg0=",
"pom": "sha256-m/fP/EEPPoNywlIleN+cpW2dQ72TfjCUhwbCMqlDs1U="
},
"org/slf4j#slf4j-api/1.6.6": {
"pom": "sha256-cxmZMiteIokinNntRiTJQexXG3xh0qJ9alB+9zuXyho="
},
"org/slf4j#slf4j-api/1.7.32": {
"jar": "sha256-NiT4R0wa9G11+YvAl9eGSjI8gbOAiqQ2iabhxgHAJ74=",
"pom": "sha256-ABzeWzxrqRBwQlz+ny5pXkrri8KQotTNllMRJ6skT+U="
},
"org/slf4j#slf4j-parent/1.6.6": {
"pom": "sha256-QrjCR2CP2OENW2Zs98gKW1nSseEoRQ97bZ0sIM+2sxs="
},
"org/slf4j#slf4j-parent/1.7.32": {
"pom": "sha256-WrNJ0PTHvAjtDvH02ThssZQKL01vFSFQ4W277MC4PHA="
},
"org/slf4j#slf4j-simple/1.7.32": {
"jar": "sha256-0v3XtzyiAZogYtFFoNhheaWPmMjD41ynxzWieztWIcM=",
"pom": "sha256-VVTmGS0A/7oRfST9+HBIj50DkABH6Lq1XgDugzgvQdg="
},
"org/xerial#sqlite-jdbc/3.47.0.0": {
"jar": "sha256-k9R8AGN3xHb497RdANIGBrd9WVFCPzRu9WtbCBNhwtM=",
"pom": "sha256-3SmXElydGbywbhuMYYZoJWi8iqHfmOguXp9Litbx/X0="
},
"org/zeroturnaround#zt-zip/1.14": {
"jar": "sha256-lkDsuPjrnDFVsVbtu0BJyT3uXaKz31U6UdlGmK+3aNk=",
"pom": "sha256-esRAYySqeauHFiEV/lpCdp4yB8eCFbvCMZ2ZNeNV5hg="
}
}
}

View file

@ -0,0 +1,68 @@
{
lib,
jre,
gradle_8,
makeWrapper,
stdenv,
fetchFromGitLab,
}:
let
gradle = gradle_8;
in
stdenv.mkDerivation (finalAttrs: {
pname = "bandcamp-collection-downloader";
version = "0-unstable-2024-10-29";
src = fetchFromGitLab {
domain = "framagit.org";
owner = "Ezwen";
repo = "bandcamp-collection-downloader";
rev = "fe8a98d92d776d194be196b6860f55e194a999f8";
hash = "sha256-OaloKYlENq2kSzC8jvt4JJ7PsxLuqUuOdnYoazW5YUE=";
};
nativeBuildInputs = [
gradle
makeWrapper
];
mitmCache = gradle.fetchDeps {
inherit (finalAttrs) pname;
data = ./deps.json;
};
# this is required for using mitm-cache on Darwin
__darwinAllowLocalNetworking = true;
# tests want to talk to bandcamp
doCheck = false;
gradleBuildTask = "fatjar";
installPhase = ''
runHook preInstall
mkdir -p $out/bin
mkdir -p $out/share/bandcamp-collection-downloader
cp build/libs/bandcamp-collection-downloader.jar $out/share/bandcamp-collection-downloader/bandcamp-collection-downloader.jar
makeWrapper ${lib.getExe jre} $out/bin/bandcamp-collection-downloader \
--add-flags "-jar $out/share/bandcamp-collection-downloader/bandcamp-collection-downloader.jar"
runHook postInstall
'';
meta = {
description = "Tool to automatically download purchased music from bandcamp";
license = lib.licenses.agpl3Only;
homepage = "https://framagit.org/Ezwen/bandcamp-collection-downloader";
maintainers = [ lib.maintainers.shelvacu ];
mainProgram = "bandcamp-collection-downloader";
platforms = lib.platforms.all;
sourceProvenance = with lib.sourceTypes; [
fromSource
binaryBytecode # mitm cache
];
};
})

View file

@ -27,12 +27,12 @@ appimageTools.wrapType2 {
# disable creating a desktop file and icon in the home folder during runtime # disable creating a desktop file and icon in the home folder during runtime
linuxConfigFilename=$out/resources/app/build/main/linux-*.mjs linuxConfigFilename=$out/resources/app/build/main/linux-*.mjs
echo "export function registerLinuxConfig() {}" > $linuxConfigFilename echo "export function registerLinuxConfig() {}" > $linuxConfigFilename
substituteInPlace $out/beepertexts.desktop --replace-fail "AppRun" "beeper"
''; '';
extraInstallCommands = '' extraInstallCommands = ''
install -Dm 644 ${appimageContents}/beepertexts.png $out/share/icons/hicolor/512x512/apps/beepertexts.png install -Dm 644 ${appimageContents}/beepertexts.png $out/share/icons/hicolor/512x512/apps/beepertexts.png
install -Dm 644 ${appimageContents}/beepertexts.desktop -t $out/share/applications/ install -Dm 644 ${appimageContents}/beepertexts.desktop -t $out/share/applications/
substituteInPlace $out/share/applications/beepertexts.desktop --replace-fail "AppRun" "beeper"
. ${makeWrapper}/nix-support/setup-hook . ${makeWrapper}/nix-support/setup-hook
wrapProgram $out/bin/beeper \ wrapProgram $out/bin/beeper \

View file

@ -0,0 +1,32 @@
{
lib,
fetchurl,
appimageTools,
openal,
}:
let
version = "1.2988.0";
pname = "beyond-all-reason";
src = fetchurl {
url = "https://github.com/beyond-all-reason/BYAR-Chobby/releases/download/v${version}/Beyond-All-Reason-${version}.AppImage";
hash = "sha256-ZJW5BdxxqyrM2TJTO0SBp4BXt3ILyi77EZx73X8hqJE=";
};
in
appimageTools.wrapType2 {
inherit pname version src;
extraPkgs = pkgs: [ openal ];
meta = {
homepage = "https://www.beyondallreason.info/";
downloadPage = "https://www.beyondallreason.info/download";
changelog = "https://github.com/beyond-all-reason/BYAR-Chobby/releases/tag/v${version}";
description = "Free Real Time Strategy Game with a grand scale and full physical simulation in a sci-fi setting";
license = lib.licenses.gpl2Plus;
platforms = [ "x86_64-linux" ];
maintainers = with lib.maintainers; [
kiyotoko
];
};
}

View file

@ -112,12 +112,12 @@ in
stdenv'.mkDerivation (finalAttrs: { stdenv'.mkDerivation (finalAttrs: {
pname = "blender"; pname = "blender";
version = "4.4.0"; version = "4.4.1";
srcs = fetchzip { srcs = fetchzip {
name = "source"; name = "source";
url = "https://download.blender.org/source/blender-${finalAttrs.version}.tar.xz"; url = "https://download.blender.org/source/blender-${finalAttrs.version}.tar.xz";
hash = "sha256-pAzOayAPyRYgTixAyg2prkUtI70uFulRuBYhgU9ZNw4="; hash = "sha256-5MsJ7UFpwwtaq905CiTkas/qPYOaeiacSSl3qu9h5w0=";
}; };
patches = [ ] ++ lib.optional stdenv.hostPlatform.isDarwin ./darwin.patch; patches = [ ] ++ lib.optional stdenv.hostPlatform.isDarwin ./darwin.patch;

View file

@ -3,7 +3,7 @@
stdenv, stdenv,
fetchFromGitHub, fetchFromGitHub,
substituteAll, replaceVars,
# nativeBuildInputs # nativeBuildInputs
cmake, cmake,
@ -41,8 +41,7 @@ stdenv.mkDerivation (finalAttrs: {
patches = [ patches = [
# prevent CMake from trying to download some libraries from the internet # prevent CMake from trying to download some libraries from the internet
(substituteAll { (replaceVars ./cmake_dont_fetch_enkits.patch {
src = ./cmake_dont_fetch_enkits.patch;
enkits_src = fetchFromGitHub { enkits_src = fetchFromGitHub {
owner = "dougbinks"; owner = "dougbinks";
repo = "enkiTS"; repo = "enkiTS";

View file

@ -219,6 +219,7 @@ stdenv.mkDerivation (finalAttrs: {
$ETN 'test_qt' # we don't include svg or webp support $ETN 'test_qt' # we don't include svg or webp support
$ETN 'test_import_of_all_python_modules' # explores actual file paths, gets confused $ETN 'test_import_of_all_python_modules' # explores actual file paths, gets confused
$ETN 'test_websocket_basic' # flakey $ETN 'test_websocket_basic' # flakey
${lib.optionalString stdenv.hostPlatform.isAarch64 "$ETN 'test_piper'"} # https://github.com/microsoft/onnxruntime/issues/10038
${lib.optionalString (!unrarSupport) "$ETN 'test_unrar'"} ${lib.optionalString (!unrarSupport) "$ETN 'test_unrar'"}
) )

View file

@ -8,13 +8,13 @@
stdenvNoCC.mkDerivation { stdenvNoCC.mkDerivation {
pname = "candy-icons"; pname = "candy-icons";
version = "0-unstable-2025-04-02"; version = "0-unstable-2025-04-14";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "EliverLara"; owner = "EliverLara";
repo = "candy-icons"; repo = "candy-icons";
rev = "063a64161ec8f0fcb019e54db9be8a0f9a4be9ed"; rev = "2ba176007c40957b43d26b7a9be2c9f23a480e98";
hash = "sha256-T9j5OCPpuaZRktsfN8b8n0G3osjti8hXmAwD4MaADBU="; hash = "sha256-6eWxf13ZBknN7IeLICpmDXu4GdxubkGJ9D4/ZEuOvfs=";
}; };
nativeBuildInputs = [ gtk3 ]; nativeBuildInputs = [ gtk3 ];

View file

@ -0,0 +1,122 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 4
[[package]]
name = "anyhow"
version = "1.0.98"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487"
[[package]]
name = "autocfg"
version = "1.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26"
[[package]]
name = "cargo-ament-build"
version = "0.1.9"
dependencies = [
"anyhow",
"cargo-manifest",
"pico-args",
]
[[package]]
name = "cargo-manifest"
version = "0.2.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cf5acda331466fdea759172dbc2fb9e650e382dbca6a8dd3f576d9aeeac76da6"
dependencies = [
"serde",
"serde_derive",
"toml",
]
[[package]]
name = "hashbrown"
version = "0.12.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
[[package]]
name = "indexmap"
version = "1.9.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99"
dependencies = [
"autocfg",
"hashbrown",
]
[[package]]
name = "pico-args"
version = "0.4.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "db8bcd96cb740d03149cbad5518db9fd87126a10ab519c011893b1754134c468"
[[package]]
name = "proc-macro2"
version = "1.0.94"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a31971752e70b8b2686d7e46ec17fb38dad4051d94024c88df49b667caea9c84"
dependencies = [
"unicode-ident",
]
[[package]]
name = "quote"
version = "1.0.40"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d"
dependencies = [
"proc-macro2",
]
[[package]]
name = "serde"
version = "1.0.219"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6"
dependencies = [
"serde_derive",
]
[[package]]
name = "serde_derive"
version = "1.0.219"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "syn"
version = "2.0.100"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b09a44accad81e1ba1cd74a32461ba89dee89095ba17b32f5d03683b1b1fc2a0"
dependencies = [
"proc-macro2",
"quote",
"unicode-ident",
]
[[package]]
name = "toml"
version = "0.5.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234"
dependencies = [
"indexmap",
"serde",
]
[[package]]
name = "unicode-ident"
version = "1.0.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512"

View file

@ -0,0 +1,36 @@
{
lib,
rustPlatform,
fetchFromGitHub,
pkg-config,
nix-update-script,
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "cargo-ament-build";
version = "0.1.9";
src = fetchFromGitHub {
owner = "ros2-rust";
repo = "cargo-ament-build";
tag = "v${finalAttrs.version}";
hash = "sha256-5D0eB3GCQLgVYuYkHMTkboruiYSAaWy3qZjF/hVpRP0=";
};
cargoLock.lockFile = ./Cargo.lock;
postPatch = ''
ln -s ${./Cargo.lock} Cargo.lock
'';
nativeBuildInputs = [ pkg-config ];
passthru.updateScript = nix-update-script { };
meta = {
description = "Cargo plugin for use with colcon workspaces";
homepage = "https://github.com/ros2-rust/cargo-ament-build";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ guelakais ];
};
})

View file

@ -0,0 +1,34 @@
{
lib,
rustPlatform,
fetchFromGitLab,
versionCheckHook,
nix-update-script,
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "cargo-sonar";
version = "1.3.0";
src = fetchFromGitLab {
owner = "woshilapin";
repo = "cargo-sonar";
tag = finalAttrs.version;
hash = "sha256-f319hi6mrnlHTvsn7kN2wFHyamXtplLZ8A6TN0+H3jY=";
};
useFetchCargoVendor = true;
cargoHash = "sha256-KLw6kAR2pF5RFhRDfsL093K+jk3oiSHLZ2CQvrBuhWY=";
doInstallCheck = true;
nativeInstallCheckInputs = [ versionCheckHook ];
passthru.updateScript = nix-update-script { };
meta = {
description = "Utility to produce some Sonar-compatible format from different Rust tools like cargo-clippy cargo-audit or cargo-outdated";
mainProgram = "cargo-sonar";
homepage = "https://gitlab.com/woshilapin/cargo-sonar";
license = [ lib.licenses.mit ];
maintainers = [ lib.maintainers.jonboh ];
};
})

View file

@ -6,13 +6,13 @@
buildGoModule rec { buildGoModule rec {
pname = "cdncheck"; pname = "cdncheck";
version = "1.1.14"; version = "1.1.15";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "projectdiscovery"; owner = "projectdiscovery";
repo = "cdncheck"; repo = "cdncheck";
tag = "v${version}"; tag = "v${version}";
hash = "sha256-VbFpZilrPR7Ajs1FY0a+qlkBnwvh+F18fmIf2oYlIFE="; hash = "sha256-iIK/MnhX+1mZCHeGPEsdUO8T4HOpSA3Fy0fnjgVzG5g=";
}; };
vendorHash = "sha256-/1REkZ5+sz/H4T4lXhloz7fu5cLv1GoaD3dlttN+Qd4="; vendorHash = "sha256-/1REkZ5+sz/H4T4lXhloz7fu5cLv1GoaD3dlttN+Qd4=";

View file

@ -6,18 +6,18 @@
buildGoModule rec { buildGoModule rec {
pname = "chamber"; pname = "chamber";
version = "3.1.1"; version = "3.1.2";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "segmentio"; owner = "segmentio";
repo = pname; repo = pname;
rev = "v${version}"; rev = "v${version}";
sha256 = "sha256-1ySOlP0sFk3+IRt/zstZK6lEE2pzoVSiZz3wFxdesgc="; sha256 = "sha256-9+I/zH4sHlLQkEn+fCboI3vCjYjlk+hdYnWuxq47r5I=";
}; };
env.CGO_ENABLED = 0; env.CGO_ENABLED = 0;
vendorHash = "sha256-KlouLjW9hVKFi9uz34XHd4CzNOiyO245QNygkB338YQ="; vendorHash = "sha256-IjCBf1h6r+EDLfgGqP/VfsHaD5oPkIR33nYBAcb6SLY=";
ldflags = [ ldflags = [
"-s" "-s"

View file

@ -14,13 +14,13 @@
stdenvNoCC.mkDerivation (finalAttrs: { stdenvNoCC.mkDerivation (finalAttrs: {
pname = "cherry-studio"; pname = "cherry-studio";
version = "1.1.10"; version = "1.2.4";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "CherryHQ"; owner = "CherryHQ";
repo = "cherry-studio"; repo = "cherry-studio";
tag = "v${finalAttrs.version}"; tag = "v${finalAttrs.version}";
hash = "sha256-rTIUBlQemYOAT0NRS80FcZfEc1Q9jUmlMU5YW99z0QE="; hash = "sha256-vBE3yKNuL8yAuZrR5DrT+n1idmPor3ygPD1qMGGGgps=";
}; };
yarnOfflineCache = stdenvNoCC.mkDerivation { yarnOfflineCache = stdenvNoCC.mkDerivation {
@ -50,7 +50,7 @@ stdenvNoCC.mkDerivation (finalAttrs: {
''; '';
outputHashMode = "recursive"; outputHashMode = "recursive";
outputHash = "sha256-GVIa8/rNdYTcPYqaRZp8VGKeh0IiNttXzJEVvCpCAQo="; outputHash = "sha256-A0YuGvNCsrYzp/oZ4Ob1Sp9HFc+psa9Yv5fb/8rQqZY=";
}; };
nativeBuildInputs = [ nativeBuildInputs = [

View file

@ -9,13 +9,13 @@
buildGoModule rec { buildGoModule rec {
pname = "cilium-cli"; pname = "cilium-cli";
version = "0.18.2"; version = "0.18.3";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "cilium"; owner = "cilium";
repo = "cilium-cli"; repo = "cilium-cli";
tag = "v${version}"; tag = "v${version}";
hash = "sha256-/R91MFE7JYutq8mOKpzLNPlt42R86dOZGJs4EOkLfKU="; hash = "sha256-9+nNZEXjSoNB/Ftn/CtoBcR/uaD71C1jzDEaEG3Wpb4=";
}; };
nativeBuildInputs = [ installShellFiles ]; nativeBuildInputs = [ installShellFiles ];

View file

@ -2,7 +2,7 @@
lib, lib,
buildNpmPackage, buildNpmPackage,
fetchFromGitHub, fetchFromGitHub,
nodejs_18, nodejs_20,
installShellFiles, installShellFiles,
makeWrapper, makeWrapper,
stdenv, stdenv,
@ -13,7 +13,7 @@ buildNpmPackage rec {
version = "3.12.0"; version = "3.12.0";
nodejs = nodejs_18; nodejs = nodejs_20;
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "CleverCloud"; owner = "CleverCloud";

View file

@ -28,11 +28,11 @@ let
in in
stdenv.mkDerivation rec { stdenv.mkDerivation rec {
pname = "clightning"; pname = "clightning";
version = "24.11.1"; version = "25.02.1";
src = fetchurl { src = fetchurl {
url = "https://github.com/ElementsProject/lightning/releases/download/v${version}/clightning-v${version}.zip"; url = "https://github.com/ElementsProject/lightning/releases/download/v${version}/clightning-v${version}.zip";
hash = "sha256-FdrD+FA0t90oJnXjUA8oalU7DDjUv70fAteNxbhscgk="; hash = "sha256-0eRLc/bR4sjnNIKzhkX9yVCAoypf1TVhpa884mmVC54=";
}; };
# when building on darwin we need cctools to provide the correct libtool # when building on darwin we need cctools to provide the correct libtool
@ -95,11 +95,6 @@ stdenv.mkDerivation rec {
stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isx86_64 stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isx86_64
) "-Wno-error=gnu-folding-constant"; ) "-Wno-error=gnu-folding-constant";
# The `clnrest` plugin requires a Python environment to run
postInstall = ''
rm -r $out/libexec/c-lightning/plugins/clnrest
'';
meta = with lib; { meta = with lib; {
description = "Bitcoin Lightning Network implementation in C"; description = "Bitcoin Lightning Network implementation in C";
longDescription = '' longDescription = ''

View file

@ -6,17 +6,17 @@
rustPlatform.buildRustPackage rec { rustPlatform.buildRustPackage rec {
pname = "clock-rs"; pname = "clock-rs";
version = "0.1.214"; version = "0.1.215";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "Oughie"; owner = "Oughie";
repo = "clock-rs"; repo = "clock-rs";
tag = "v${version}"; tag = "v${version}";
sha256 = "sha256-D0Wywl20TFIy8aQ9UkcI6T+5huyRuCCPc+jTeXsZd8g="; sha256 = "sha256-uDEvJqaaBNRxohYqHE6qfqUF07ynRvGwJKWbYfgPEvg=";
}; };
useFetchCargoVendor = true; useFetchCargoVendor = true;
cargoHash = "sha256-W4m4JffqNwebGWYNsMF6U0bDroqXJAixmcmqcqYjyzw="; cargoHash = "sha256-Zry6mkOUdEgC95Y3U3RCXPJUsmaSoRPlHvUThI92GQU=";
meta = { meta = {
description = "Modern, digital clock that effortlessly runs in your terminal"; description = "Modern, digital clock that effortlessly runs in your terminal";

View file

@ -9,16 +9,16 @@
buildGoModule rec { buildGoModule rec {
pname = "clusterctl"; pname = "clusterctl";
version = "1.9.6"; version = "1.10.0";
src = fetchFromGitHub { src = fetchFromGitHub {
owner = "kubernetes-sigs"; owner = "kubernetes-sigs";
repo = "cluster-api"; repo = "cluster-api";
rev = "v${version}"; rev = "v${version}";
hash = "sha256-XXtVGIpoR2JfkR7urfHuh6xKoIvsF42NV+4yjxb8nls="; hash = "sha256-04ytG4U8Luc5yh5VAbS1AQpjjapKsWWZSSB3IU5Rf6U=";
}; };
vendorHash = "sha256-SdLeME6EFraGUXE1zUdEfxTETUKLDmecYpWEg5DE4PQ="; vendorHash = "sha256-iProsOETP9ahyemF2tHUVmoiqjG+ghjZkHb6PAhygb4=";
subPackages = [ "cmd/clusterctl" ]; subPackages = [ "cmd/clusterctl" ];

View file

@ -23,10 +23,10 @@ let
hash = hash =
{ {
x86_64-linux = "sha256-iFJRdECSmFZt63yVkozaZeIT0MP8vfW3G5SvuE8/wZw="; x86_64-linux = "sha256-wZl6wlR+K53rGeQ75ZVzmzKpiBnp6/UCTNx/iOHscug=";
aarch64-linux = "sha256-JJxjYFgaj2f6RQRszWfxG26SjTokhoGDZjqbg7HGoV0="; aarch64-linux = "sha256-2wslvQlvhbaxZ9lwGh4UTBo0yHjSLcOZ8mxMQETY7kY=";
x86_64-darwin = "sha256-27bhqNIw3Aceq8u0UthR5Ju20SQiGVMCfUZiHbzC6wk="; x86_64-darwin = "sha256-+34thUKUWV4P29Ak547fT5AKkaw/tgV9AMe+UT6GmD4=";
aarch64-darwin = "sha256-wajMCeRaOzXSJgb5z8i+ed+2w0xWTm0I2Wb3hTq1LqY="; aarch64-darwin = "sha256-GkAh18MlZP4D+fpxZtAgXEPYSb3iiRycN/0sQm2oJnE=";
} }
.${system} or throwSystem; .${system} or throwSystem;
@ -35,7 +35,7 @@ let
in in
stdenv.mkDerivation (finalAttrs: { stdenv.mkDerivation (finalAttrs: {
pname = "codeium"; pname = "codeium";
version = "1.42.4"; version = "1.46.0";
src = fetchurl { src = fetchurl {
name = "${finalAttrs.pname}-${finalAttrs.version}.gz"; name = "${finalAttrs.pname}-${finalAttrs.version}.gz";
url = "https://github.com/Exafunction/codeium/releases/download/language-server-v${finalAttrs.version}/language_server_${plat}.gz"; url = "https://github.com/Exafunction/codeium/releases/download/language-server-v${finalAttrs.version}/language_server_${plat}.gz";

View file

@ -23,7 +23,7 @@ update_version_and_hashes() {
# Update version number, using '#' as delimiter # Update version number, using '#' as delimiter
sed -i "/${channel} = {/,/};/{ sed -i "/${channel} = {/,/};/{
s#^\(\s*\)version = .*#\1version = \"$version\";# s#^\(\s*\)version = .*#\1version = \"$version\";#
}" ./default.nix }" ./package.nix
# Update hashes for each architecture # Update hashes for each architecture
for ARCH in "${!ARCHS[@]}"; do for ARCH in "${!ARCHS[@]}"; do
@ -37,7 +37,7 @@ update_version_and_hashes() {
# Update the Nix file with the new hash, using '#' as delimiter and preserving indentation # Update the Nix file with the new hash, using '#' as delimiter and preserving indentation
sed -i "/${channel} = {/,/};/{ sed -i "/${channel} = {/,/};/{
s#^\(\s*\)${ARCH} = .*#\1${ARCH} = \"${SRI_HASH}\";# s#^\(\s*\)${ARCH} = .*#\1${ARCH} = \"${SRI_HASH}\";#
}" ./default.nix }" ./package.nix
done done
} }

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