Merge remote-tracking branch 'origin/staging-next' into staging
This commit is contained in:
@@ -35,6 +35,8 @@ jobs:
|
||||
into: staging-next
|
||||
- from: staging-next
|
||||
into: staging
|
||||
- from: master
|
||||
into: staging-nixos
|
||||
uses: ./.github/workflows/periodic-merge.yml
|
||||
with:
|
||||
from: ${{ matrix.pairs.from }}
|
||||
|
||||
@@ -55,7 +55,7 @@ jobs:
|
||||
github_token: ${{ steps.app-token.outputs.token }}
|
||||
|
||||
- name: Comment on failure
|
||||
uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 # v4.0.0
|
||||
uses: peter-evans/create-or-update-comment@e8674b075228eee787fea43ef493e45ece1004c9 # v5.0.0
|
||||
if: ${{ failure() }}
|
||||
with:
|
||||
issue-number: 105153
|
||||
|
||||
+30
-8
@@ -430,20 +430,22 @@ gitGraph
|
||||
|
||||
Here's an overview of the different branches:
|
||||
|
||||
| branch | `master` | `staging-next` | `staging` |
|
||||
| --- | --- | --- | --- |
|
||||
| Used for development | ✔️ | ❌ | ✔️ |
|
||||
| Built by Hydra | ✔️ | ✔️ | ❌ |
|
||||
| [Mass rebuilds][mass-rebuild] | ❌ | ⚠️ Only to fix Hydra builds | ✔️ |
|
||||
| Critical security fixes | ✔️ for non-mass-rebuilds | ✔️ for mass-rebuilds | ❌ |
|
||||
| Automatically merged into | `staging-next` | `staging` | - |
|
||||
| Manually merged into | - | `master` | `staging-next` |
|
||||
| branch | `master` | `staging-next` | `staging` | [`staging-nixos`](#test-driver-rebuild) |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| Used for development | ✔️ | ❌ | ✔️ | ✔️ |
|
||||
| Built by Hydra | ✔️ | ✔️ | ❌ | ❌ |
|
||||
| [Mass rebuilds][mass-rebuild] | ❌ | ⚠️ Only to fix Hydra builds | ✔️ | ❌[^1] |
|
||||
| Critical security fixes | ✔️ for non-mass-rebuilds | ✔️ for mass-rebuilds | ❌ | ✔️ |
|
||||
| Automatically merged into | `staging-next` & `staging-nixos` | `staging` | - | - |
|
||||
| Manually merged into | - | `master` | `staging-next` | `master` |
|
||||
|
||||
The staging workflow is used for all stable branches with corresponding names:
|
||||
- `master`/`release-YY.MM`
|
||||
- `staging`/`staging-YY.MM`
|
||||
- `staging-next`/`staging-next-YY.MM`
|
||||
|
||||
[^1]: Except changes that cause no more rebuilds than kernel updates
|
||||
|
||||
# Conventions
|
||||
|
||||
## Branch conventions
|
||||
@@ -495,6 +497,26 @@ In order to help the decision, CI automatically assigns [`rebuild` labels](https
|
||||
As a rule of thumb, if the number of rebuilds is **500 or more**, consider targeting the `staging` branch instead of `master`; if the number is **1000 or more**, the pull request causes a mass rebuild, and should target the `staging` branch.
|
||||
See [previously merged pull requests to the staging branches](https://github.com/NixOS/nixpkgs/issues?q=base%3Astaging+-base%3Astaging-next+is%3Amerged) to get a sense for what changes are considered mass rebuilds.
|
||||
|
||||
Please note that changes to the Linux kernel are an exception to this rule.
|
||||
These PRs go to `staging-nixos`, see [the next section for more context](#changes-rebuilding-all-tests).
|
||||
|
||||
### Changes rebuilding all NixOS tests
|
||||
[test-driver-rebuild]: #changes-rebuilding-all-tests
|
||||
|
||||
Changes causing a rebuild of all NixOS tests get a special [`10.rebuild-nixos-tests`](https://github.com/NixOS/nixpkgs/issues?q=state%3Aopen%20label%3A10.rebuild-nixos-tests) label.
|
||||
These changes pose a significant impact on the build infrastructure.
|
||||
|
||||
Hence, these PRs should either target a `staging`-branch or `staging-nixos`, provided one of following conditions applies:
|
||||
|
||||
* The label `10.rebuild-nixos-tests` is set, or
|
||||
* The PR is a change affecting the Linux kernel.
|
||||
|
||||
The branch gets merged whenever mainline kernel updates or critical security fixes land on the branch.
|
||||
This usually happens on a weekly basis.
|
||||
|
||||
Backports are not handled by such a branch.
|
||||
The relevant PRs from this branch must be backported manually.
|
||||
|
||||
## Commit conventions
|
||||
[commit-conventions]: #commit-conventions
|
||||
|
||||
|
||||
@@ -8,6 +8,7 @@ const typeConfig = {
|
||||
release: ['development', 'primary'],
|
||||
staging: ['development', 'secondary'],
|
||||
'staging-next': ['development', 'secondary'],
|
||||
'staging-nixos': ['development', 'secondary'],
|
||||
'haskell-updates': ['development', 'secondary'],
|
||||
nixos: ['channel'],
|
||||
nixpkgs: ['channel'],
|
||||
@@ -19,6 +20,7 @@ const orderConfig = {
|
||||
master: 0,
|
||||
release: 1,
|
||||
staging: 2,
|
||||
'staging-nixos': 2,
|
||||
'haskell-updates': 3,
|
||||
'staging-next': 4,
|
||||
}
|
||||
|
||||
@@ -882,7 +882,17 @@ This is used with Gitiles repositories. The arguments expected are similar to `f
|
||||
|
||||
## `fetchFromBitbucket` {#fetchfrombitbucket}
|
||||
|
||||
This is used with BitBucket repositories. The arguments expected are very similar to `fetchFromGitHub` above.
|
||||
Used for repositories hosted on Bitbucket (`"bitbucket.org"`) owned by the Australian-based Atlassian Corporation. It requires an `owner` and `repo` argument which are both strings that reference the workspace ID and repository name hosted on Bitbucket cloud as well as either a `tag` or `rev` argument.
|
||||
|
||||
By default, `fetchFromBitbucket` will attempt to download a commit snapshot tarball at the specified `tag` or `rev` at `https://bitbucket.org/<owner>/<repo>/get/<tag-or-rev>.tar.gz`
|
||||
|
||||
However, `fetchFromBitbucket` will automatically switch to using `fetchgit` and fetch from `https://bitbucket.org/<owner>/<repo>.git` in any of these cases:
|
||||
|
||||
- `forceFetchGit`, `leaveDotGit`, `deepClone`, `fetchLFS`, or `fetchSubmodules` are set to `true`
|
||||
- `sparseCheckout` contains any entries (is a non-empty list)
|
||||
- `rootDir` is set to a non-empty string
|
||||
|
||||
When `fetchgit` is used, refer to the `fetchgit` section for documentation of its available options.
|
||||
|
||||
## `fetchFromSavannah` {#fetchfromsavannah}
|
||||
|
||||
|
||||
@@ -105,3 +105,56 @@ $ make -C $dev/lib/modules/*/build M=$(pwd)/drivers/net/ethernet/mellanox module
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
## Maintainer information {#sec-linux-kernel-maintainer-information}
|
||||
|
||||
### Updating kernels {#sec-linux-updates}
|
||||
|
||||
Updating all kernels can be done with the following script:
|
||||
|
||||
```ShellSession
|
||||
$ pkgs/os-specific/linux/kernel/update.sh
|
||||
```
|
||||
|
||||
The change gets submitted like this:
|
||||
|
||||
* File a PR against `staging-nixos`.
|
||||
* Add a `backport release-XX.XX` label for an automated backport.
|
||||
We don't expect many other changes on that branch to require a backport, hence there's no such branch for stable.
|
||||
By using an additional PR, we get the automatic backport against stable without manual cherry-picks.
|
||||
* Merge into `staging-nixos`.
|
||||
* File as PR from `staging-nixos` against `master`.
|
||||
* When all status checks are green, merge.
|
||||
|
||||
### Add a new (major) version of the Linux kernel {#sec-linux-add-new-kernel-version}
|
||||
|
||||
* When running `./pkgs/os-specific/linux/kernel/update.sh`, new kernel majors get discovered automatically.
|
||||
* Prepare all Nix expressions for the new kernel
|
||||
* Instantiate the new kernel in `pkgs/top-level/linux-kernels.nix` in the `kernels`-section.
|
||||
```nix
|
||||
{
|
||||
linux_X_Y = callPackage ../os-specific/linux/kernel/mainline.nix {
|
||||
branch = "X.Y";
|
||||
kernelPatches = [
|
||||
# any new patches required (it makes to look which patches are used by its predecessor)
|
||||
];
|
||||
};
|
||||
}
|
||||
```
|
||||
* Instantiate the package-set in `vanillaPackages`:
|
||||
```nix
|
||||
{
|
||||
linux_X_Y = recurseIntoAttrs (packagesFor kernels.linux_X_Y);
|
||||
}
|
||||
```
|
||||
* Update `linux_latest` to the new attribute.
|
||||
* __SQUASH__ the changes into the `linux: init at …` commit.
|
||||
* If a new hardened is available:
|
||||
* Instantiate a `linux_X_Y_hardened = hardenedKernelsFor kernels.linux_X_Y { };` in `kernels` and
|
||||
`linux_X_Y_hardened = hardenedKernelFor kernels.linux_X_Y { };` in the `packages`-section.
|
||||
* Make sure to remove the hardened variant of the previous kernel version unless it's LTS.
|
||||
We only support the latest and latest LTS version of hardened.
|
||||
* If no new hardened kernel is available:
|
||||
* Keep the previously latest kernel until its mainline counterpart gets removed.
|
||||
After that `linux_hardened` points to the latest LTS supported by hardened.
|
||||
* __SQUASH__ the changes into the `linux_X_Y_hardened: init at …` commit.
|
||||
|
||||
@@ -4294,6 +4294,15 @@
|
||||
"sec-linux-kernel": [
|
||||
"index.html#sec-linux-kernel"
|
||||
],
|
||||
"sec-linux-kernel-maintainer-information": [
|
||||
"index.html#sec-linux-kernel-maintainer-information"
|
||||
],
|
||||
"sec-linux-updates": [
|
||||
"index.html#sec-linux-updates"
|
||||
],
|
||||
"sec-linux-add-new-kernel-version": [
|
||||
"index.html#sec-linux-add-new-kernel-version"
|
||||
],
|
||||
"ex-overriding-kernel-derivation": [
|
||||
"index.html#ex-overriding-kernel-derivation"
|
||||
],
|
||||
|
||||
@@ -146,7 +146,9 @@
|
||||
|
||||
- `tooling-language-server` has been renamed to `deputy` (both the package and binary), following the rename of the upstream project.
|
||||
|
||||
- `fetchtorrent`, when using the "rqbit" backend, erroneously started fetching files into a subdirectory in Nixpkgs 24.11. The original behaviour -- which matches the behaviour using the "transmission" backend -- has now been restored. Users reliant on the erroneous behaviour can temporarily maintain it by adding `flatten = false` to the `fetchtorrent` arguments; Nix will produce an evaluation warning for anyone using `backend = "rqbit"` without `flatten = true`.
|
||||
- `fetchFromBitBucket` has gained a `fetchgit` backend when passing in git-related arguments similar to `fetchFromGitHub`.
|
||||
|
||||
- `fetchtorrent`, when using the "rqbit" backend, erroneously started fetching files into a subdirectory in Nixpkgs 24.11. The original behaviour – which matches the behaviour using the "transmission" backend – has now been restored. Users reliant on the erroneous behaviour can temporarily maintain it by adding `flatten = false` to the `fetchtorrent` arguments; Nix will produce an evaluation warning for anyone using `backend = "rqbit"` without `flatten = true`.
|
||||
|
||||
- `steamcontroller` has been removed due to lack of upstream maintenance. Consider using `sc-controller` instead.
|
||||
|
||||
@@ -227,6 +229,7 @@
|
||||
<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
|
||||
|
||||
- Added `rewriteURL` attribute to the nixpkgs `config`, to allow for rewriting the URLs downloaded by `fetchurl`.
|
||||
- Added `hashedMirrors` attribute to the nixpkgs `config`, to allow for customization of the hashed mirrors used by `fetchurl`.
|
||||
|
||||
- Added `gitConfig` and `gitConfigFile` option to the nixpkgs `config`, to allow for setting a default `gitConfigFile` for all `fetchgit` invocations.
|
||||
|
||||
|
||||
+5
-5
@@ -44,7 +44,7 @@ rec {
|
||||
;
|
||||
|
||||
/**
|
||||
Return an attribute from nested attribute sets.
|
||||
Returns an attribute from nested attribute sets.
|
||||
|
||||
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:
|
||||
|
||||
@@ -111,7 +111,7 @@ rec {
|
||||
attrByPath' 0 set;
|
||||
|
||||
/**
|
||||
Return if an attribute from nested attribute set exists.
|
||||
Returns if an attribute from nested attribute set exists.
|
||||
|
||||
Nix has a [has attribute operator `?`](https://nixos.org/manual/nix/stable/language/operators#has-attribute), which is sufficient for such queries, as long as the number of attributes is static. For example:
|
||||
|
||||
@@ -177,7 +177,7 @@ rec {
|
||||
hasAttrByPath' 0 e;
|
||||
|
||||
/**
|
||||
Return the longest prefix of an attribute path that refers to an existing attribute in a nesting of attribute sets.
|
||||
Returns the longest prefix of an attribute path that refers to an existing attribute in a nesting of attribute sets.
|
||||
|
||||
Can be used after [`mapAttrsRecursiveCond`](#function-library-lib.attrsets.mapAttrsRecursiveCond) to apply a condition,
|
||||
although this will evaluate the predicate function on sibling attributes as well.
|
||||
@@ -504,7 +504,7 @@ rec {
|
||||
updates: value: go 0 true value updates;
|
||||
|
||||
/**
|
||||
Return the specified attributes from a set.
|
||||
Returns the specified attributes from a set.
|
||||
|
||||
# Inputs
|
||||
|
||||
@@ -536,7 +536,7 @@ rec {
|
||||
attrVals = nameList: set: map (x: set.${x}) nameList;
|
||||
|
||||
/**
|
||||
Return the values of all attributes in the given set, sorted by
|
||||
Returns the values of all attributes in the given set, sorted by
|
||||
attribute name.
|
||||
|
||||
# Type
|
||||
|
||||
@@ -73,7 +73,7 @@ let
|
||||
name: default: attrs:
|
||||
attrs.${name} or default;
|
||||
|
||||
# Return the second argument if the first one is true or the empty version
|
||||
# Returns the second argument if the first one is true or the empty version
|
||||
# of the second argument.
|
||||
ifEnable =
|
||||
cond: val:
|
||||
@@ -89,7 +89,7 @@ let
|
||||
else
|
||||
null;
|
||||
|
||||
# Return true only if there is an attribute and it is true.
|
||||
# Returns true only if there is an attribute and it is true.
|
||||
checkFlag =
|
||||
attrSet: name:
|
||||
if name == "true" then
|
||||
|
||||
@@ -119,7 +119,7 @@ rec {
|
||||
x;
|
||||
|
||||
/**
|
||||
Return the fixpoint that `f` converges to when called iteratively, starting
|
||||
Returns the fixpoint that `f` converges to when called iteratively, starting
|
||||
with the input `x`.
|
||||
|
||||
```
|
||||
|
||||
+11
-11
@@ -642,7 +642,7 @@ rec {
|
||||
if index == null then default else elemAt list index;
|
||||
|
||||
/**
|
||||
Return true if function `pred` returns true for at least one
|
||||
Returns true if function `pred` returns true for at least one
|
||||
element of `list`.
|
||||
|
||||
# Inputs
|
||||
@@ -677,7 +677,7 @@ rec {
|
||||
any = builtins.any;
|
||||
|
||||
/**
|
||||
Return true if function `pred` returns true for all elements of
|
||||
Returns true if function `pred` returns true for all elements of
|
||||
`list`.
|
||||
|
||||
# Inputs
|
||||
@@ -777,7 +777,7 @@ rec {
|
||||
optional = cond: elem: if cond then [ elem ] else [ ];
|
||||
|
||||
/**
|
||||
Return a list or an empty list, depending on a boolean value.
|
||||
Returns a list or an empty list, depending on a boolean value.
|
||||
|
||||
# Inputs
|
||||
|
||||
@@ -837,7 +837,7 @@ rec {
|
||||
toList = x: if isList x then x else [ x ];
|
||||
|
||||
/**
|
||||
Return a list of integers from `first` up to and including `last`.
|
||||
Returns a list of integers from `first` up to and including `last`.
|
||||
|
||||
# Inputs
|
||||
|
||||
@@ -871,7 +871,7 @@ rec {
|
||||
range = first: last: if first > last then [ ] else genList (n: first + n) (last - first + 1);
|
||||
|
||||
/**
|
||||
Return a list with `n` copies of an element.
|
||||
Returns a list with `n` copies of an element.
|
||||
|
||||
# Inputs
|
||||
|
||||
@@ -1429,7 +1429,7 @@ rec {
|
||||
map (x: elemAt x 1) (sort less prepared);
|
||||
|
||||
/**
|
||||
Return the first (at most) N elements of a list.
|
||||
Returns the first (at most) N elements of a list.
|
||||
|
||||
# Inputs
|
||||
|
||||
@@ -1463,7 +1463,7 @@ rec {
|
||||
take = count: sublist 0 count;
|
||||
|
||||
/**
|
||||
Return the last (at most) N elements of a list.
|
||||
Returns the last (at most) N elements of a list.
|
||||
|
||||
# Inputs
|
||||
|
||||
@@ -1639,7 +1639,7 @@ rec {
|
||||
throw "lib.lists.removePrefix: First argument is not a list prefix of the second argument";
|
||||
|
||||
/**
|
||||
Return a list consisting of at most `count` elements of `list`,
|
||||
Returns a list consisting of at most `count` elements of `list`,
|
||||
starting at index `start`.
|
||||
|
||||
# Inputs
|
||||
@@ -1737,7 +1737,7 @@ rec {
|
||||
take commonPrefixLength list1;
|
||||
|
||||
/**
|
||||
Return the last element of a list.
|
||||
Returns the last element of a list.
|
||||
|
||||
This function throws an error if the list is empty.
|
||||
|
||||
@@ -1770,7 +1770,7 @@ rec {
|
||||
elemAt list (length list - 1);
|
||||
|
||||
/**
|
||||
Return all elements but the last.
|
||||
Returns all elements but the last.
|
||||
|
||||
This function throws an error if the list is empty.
|
||||
|
||||
@@ -1803,7 +1803,7 @@ rec {
|
||||
take (length list - 1) list;
|
||||
|
||||
/**
|
||||
Return the image of the cross product of some lists by a function.
|
||||
Returns the image of the cross product of some lists by a function.
|
||||
|
||||
# Examples
|
||||
:::{.example}
|
||||
|
||||
+6
-6
@@ -1452,7 +1452,7 @@ let
|
||||
};
|
||||
|
||||
/**
|
||||
Return a definition with file location information.
|
||||
Returns a definition with file location information.
|
||||
*/
|
||||
mkDefinition = args@{ file, value, ... }: args // { _type = "definition"; };
|
||||
|
||||
@@ -1541,7 +1541,7 @@ let
|
||||
};
|
||||
|
||||
/**
|
||||
Return a module that causes a warning to be shown if the
|
||||
Returns a module that causes a warning to be shown if the
|
||||
specified option is defined. For example,
|
||||
|
||||
mkRemovedOptionModule [ "boot" "loader" "grub" "bootDevice" ] "<replacement instructions>"
|
||||
@@ -1589,7 +1589,7 @@ let
|
||||
};
|
||||
|
||||
/**
|
||||
Return a module that causes a warning to be shown if the
|
||||
Returns a module that causes a warning to be shown if the
|
||||
specified "from" option is defined; the defined value is however
|
||||
forwarded to the "to" option. This can be used to rename options
|
||||
while providing backward compatibility. For example,
|
||||
@@ -1645,7 +1645,7 @@ let
|
||||
};
|
||||
|
||||
/**
|
||||
Return a module that causes a warning to be shown if any of the "from"
|
||||
Returns a module that causes a warning to be shown if any of the "from"
|
||||
option is defined; the defined values can be used in the "mergeFn" to set
|
||||
the "to" value.
|
||||
This function can be used to merge multiple options into one that has a
|
||||
@@ -1724,7 +1724,7 @@ let
|
||||
|
||||
/**
|
||||
Single "from" version of mkMergedOptionModule.
|
||||
Return a module that causes a warning to be shown if the "from" option is
|
||||
Returns a module that causes a warning to be shown if the "from" option is
|
||||
defined; the defined value can be used in the "mergeFn" to set the "to"
|
||||
value.
|
||||
This function can be used to change an option into another that has a
|
||||
@@ -1822,7 +1822,7 @@ let
|
||||
mkDerivedConfig = opt: f: mkOverride (opt.highestPrio or defaultOverridePriority) (f opt.value);
|
||||
|
||||
/**
|
||||
Return a module that help declares an option that has been renamed.
|
||||
Returns a module that help declares an option that has been renamed.
|
||||
When a value is defined for the old option, it is forwarded to the `to` option.
|
||||
*/
|
||||
doRename =
|
||||
|
||||
+1
-1
@@ -503,7 +503,7 @@ rec {
|
||||
loc: defs:
|
||||
if defs == [ ] then
|
||||
abort "This case should never happen."
|
||||
# Return early if we only have one element
|
||||
# Returns early if we only have one element
|
||||
# This also makes it work for functions, because the foldl' below would try
|
||||
# to compare the first element with itself, which is false for functions
|
||||
else if length defs == 1 then
|
||||
|
||||
@@ -40,7 +40,7 @@ let
|
||||
isValid
|
||||
;
|
||||
|
||||
# Return the reason why a subpath is invalid, or `null` if it's valid
|
||||
# Returns the reason why a subpath is invalid, or `null` if it's valid
|
||||
subpathInvalidReason =
|
||||
value:
|
||||
if !isString value then
|
||||
|
||||
+4
-4
@@ -1806,7 +1806,7 @@ rec {
|
||||
if len == 0 then [ (addContextFrom str "") ] else map (addContextFrom str) (go 0 "" [ ]);
|
||||
|
||||
/**
|
||||
Return a string without the specified prefix, if the prefix matches.
|
||||
Returns a string without the specified prefix, if the prefix matches.
|
||||
|
||||
# Inputs
|
||||
|
||||
@@ -1857,7 +1857,7 @@ rec {
|
||||
);
|
||||
|
||||
/**
|
||||
Return a string without the specified suffix, if the suffix matches.
|
||||
Returns a string without the specified suffix, if the suffix matches.
|
||||
|
||||
# Inputs
|
||||
|
||||
@@ -1908,7 +1908,7 @@ rec {
|
||||
);
|
||||
|
||||
/**
|
||||
Return true if string `v1` denotes a version older than `v2`.
|
||||
Returns true if string `v1` denotes a version older than `v2`.
|
||||
|
||||
# Inputs
|
||||
|
||||
@@ -1940,7 +1940,7 @@ rec {
|
||||
versionOlder = v1: v2: compareVersions v2 v1 == 1;
|
||||
|
||||
/**
|
||||
Return true if string v1 denotes a version equal to or newer than v2.
|
||||
Returns true if string v1 denotes a version equal to or newer than v2.
|
||||
|
||||
# Inputs
|
||||
|
||||
|
||||
+3
-3
@@ -327,7 +327,7 @@ in
|
||||
f b a;
|
||||
|
||||
/**
|
||||
Return `maybeValue` if not null, otherwise return `default`.
|
||||
Returns `maybeValue` if not null, otherwise return `default`.
|
||||
|
||||
# Inputs
|
||||
|
||||
@@ -529,7 +529,7 @@ in
|
||||
## Integer operations
|
||||
|
||||
/**
|
||||
Return minimum of two numbers.
|
||||
Returns minimum of two numbers.
|
||||
|
||||
# Inputs
|
||||
|
||||
@@ -544,7 +544,7 @@ in
|
||||
min = x: y: if x < y then x else y;
|
||||
|
||||
/**
|
||||
Return maximum of two numbers.
|
||||
Returns maximum of two numbers.
|
||||
|
||||
# Inputs
|
||||
|
||||
|
||||
+1
-1
@@ -289,7 +289,7 @@ let
|
||||
# `optionType`: The option type to parenthesize or not.
|
||||
# The option whose description we're returning.
|
||||
#
|
||||
# Return value
|
||||
# Returns value
|
||||
#
|
||||
# The description of the `optionType`, with parentheses if there may be an
|
||||
# ambiguity.
|
||||
|
||||
@@ -1738,7 +1738,7 @@
|
||||
};
|
||||
annaaurora = {
|
||||
email = "anna@annaaurora.eu";
|
||||
matrix = "@papojari:artemislena.eu";
|
||||
matrix = "@anna:annaaurora.eu";
|
||||
github = "auroraanna";
|
||||
githubId = 81317317;
|
||||
name = "Anna Aurora";
|
||||
@@ -8051,13 +8051,6 @@
|
||||
githubId = 6803717;
|
||||
name = "Ilya Elenskiy";
|
||||
};
|
||||
evils = {
|
||||
email = "evils.devils@protonmail.com";
|
||||
matrix = "@evils:nixos.dev";
|
||||
github = "evils";
|
||||
githubId = 30512529;
|
||||
name = "Evils";
|
||||
};
|
||||
evris99 = {
|
||||
name = "Evrymachos Koukoumakas";
|
||||
github = "evris99";
|
||||
@@ -10347,6 +10340,11 @@
|
||||
github = "higebu";
|
||||
githubId = 733288;
|
||||
};
|
||||
higherorderlogic = {
|
||||
name = "Hol";
|
||||
github = "HigherOrderLogic";
|
||||
githubId = 73709188;
|
||||
};
|
||||
hirenashah = {
|
||||
email = "hiren@hiren.io";
|
||||
github = "hirenashah";
|
||||
@@ -14160,14 +14158,6 @@
|
||||
|
||||
keys = [ { fingerprint = "5A9A 1C9B 2369 8049 3B48 CF5B 81A1 5409 4816 2372"; } ];
|
||||
};
|
||||
l-as = {
|
||||
email = "las@protonmail.ch";
|
||||
matrix = "@Las:matrix.org";
|
||||
github = "L-as";
|
||||
githubId = 22075344;
|
||||
keys = [ { fingerprint = "A093 EA17 F450 D4D1 60A0 1194 AC45 8A7D 1087 D025"; } ];
|
||||
name = "Las Safin";
|
||||
};
|
||||
l0b0 = {
|
||||
email = "victor@engmark.name";
|
||||
github = "l0b0";
|
||||
@@ -21661,6 +21651,11 @@
|
||||
githubId = 77415970;
|
||||
name = "Redhawk";
|
||||
};
|
||||
redianthus = {
|
||||
github = "redianthus";
|
||||
githubId = 16472988;
|
||||
name = "redianthus";
|
||||
};
|
||||
redlonghead = {
|
||||
email = "git@beardit.net";
|
||||
github = "Redlonghead";
|
||||
|
||||
@@ -224,6 +224,8 @@
|
||||
|
||||
- The `services.mysql` module now restarts the database `on-abnormal`, which means that it now will be restarted in certain situations, it wasn't before. For example an OOM-kill.
|
||||
|
||||
- The `services.tt-rss` module and package have been removed as upstream development ceased on 2025-11-01, and the source is no longer available officially.
|
||||
|
||||
- The `services.siproxd` module has been removed as `siproxd` is unmaintained and broken with libosip 5.x.
|
||||
|
||||
- `services.tor.torsocks.enable` no longer defaults to true if Tor and Tor client functionality is enabled.
|
||||
|
||||
@@ -96,7 +96,7 @@ with lib;
|
||||
|
||||
# Create the initrd
|
||||
system.build.netbootRamdisk = pkgs.makeInitrdNG {
|
||||
inherit (config.boot.initrd) compressor;
|
||||
inherit (config.boot.initrd) compressor compressorArgs;
|
||||
prepend = [ "${config.system.build.initialRamdisk}/initrd" ];
|
||||
|
||||
contents = [
|
||||
|
||||
@@ -1705,7 +1705,6 @@
|
||||
./services/web-apps/suwayomi-server.nix
|
||||
./services/web-apps/szurubooru.nix
|
||||
./services/web-apps/trilium.nix
|
||||
./services/web-apps/tt-rss.nix
|
||||
./services/web-apps/umami.nix
|
||||
./services/web-apps/vikunja.nix
|
||||
./services/web-apps/wakapi.nix
|
||||
|
||||
@@ -32,7 +32,7 @@ in
|
||||
owner = "root";
|
||||
group = "root";
|
||||
capabilities = "cap_sys_admin+ep";
|
||||
source = "${package}/bin/gsr-kms-server";
|
||||
source = lib.getExe' package "gsr-kms-server";
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
@@ -266,6 +266,9 @@ in
|
||||
(mkRemovedOptionModule [ "services" "sourcehut" ] ''
|
||||
The sourcehut packages and the corresponding module have been removed due to being broken and unmaintained.
|
||||
'')
|
||||
(mkRemovedOptionModule [ "services" "tt-rss" ] ''
|
||||
The tt-rss package and module have been removed, since upstream development ceased 2025-11-01 and the source is no longer available officially.
|
||||
'')
|
||||
(mkRemovedOptionModule [ "services" "tvheadend" ]
|
||||
"The tvheadend package and the corresponding module have been removed as nobody was willing to maintain them and they were stuck on an unmaintained version that required FFmpeg 4; please see https://github.com/NixOS/nixpkgs/pull/332259 if you are interested in maintaining a newer version."
|
||||
)
|
||||
|
||||
@@ -22,6 +22,8 @@ in
|
||||
package = lib.mkPackageOption pkgs "linyaps" { };
|
||||
|
||||
boxPackage = lib.mkPackageOption pkgs "linyaps-box" { };
|
||||
|
||||
webStoreInstallerPackage = lib.mkPackageOption pkgs "linyaps-web-store-installer" { };
|
||||
};
|
||||
};
|
||||
|
||||
@@ -33,6 +35,7 @@ in
|
||||
systemPackages = [
|
||||
cfg.package
|
||||
cfg.boxPackage
|
||||
cfg.webStoreInstallerPackage
|
||||
];
|
||||
};
|
||||
|
||||
|
||||
@@ -52,6 +52,4 @@ in
|
||||
'';
|
||||
|
||||
};
|
||||
|
||||
meta.maintainers = [ lib.maintainers.evils ];
|
||||
}
|
||||
|
||||
@@ -176,7 +176,4 @@ in
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
meta.maintainers = [ lib.maintainers.evils ];
|
||||
|
||||
}
|
||||
|
||||
@@ -89,7 +89,4 @@ in
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
meta.maintainers = [ lib.maintainers.evils ];
|
||||
|
||||
}
|
||||
|
||||
@@ -58,6 +58,4 @@ in
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
meta.maintainers = [ lib.maintainers.evils ];
|
||||
}
|
||||
|
||||
@@ -232,10 +232,12 @@ in
|
||||
AmbientCapabilities = "";
|
||||
CapabilityBoundingSet = "";
|
||||
LockPersonality = true;
|
||||
MountAPIVFS = true;
|
||||
NoNewPrivileges = true;
|
||||
PrivateDevices = true;
|
||||
PrivateMounts = true;
|
||||
PrivateTmp = true;
|
||||
PrivateUsers = true;
|
||||
ProtectClock = true;
|
||||
ProtectControlGroups = "strict";
|
||||
ProtectHome = true;
|
||||
@@ -243,7 +245,7 @@ in
|
||||
ProtectKernelLogs = true;
|
||||
ProtectKernelModules = true;
|
||||
ProtectKernelTunables = true;
|
||||
ProtectProc = "noaccess";
|
||||
ProtectProc = "invisible";
|
||||
ProtectSystem = "full";
|
||||
RestrictAddressFamilies = [
|
||||
"AF_UNIX"
|
||||
|
||||
@@ -10,6 +10,10 @@ let
|
||||
isPostgresUnixSocket = lib.hasPrefix "/" cfg.database.host;
|
||||
isRedisUnixSocket = lib.hasPrefix "/" cfg.redis.host;
|
||||
|
||||
# convert a Nix attribute path to jq object identifier-index:
|
||||
# https://jqlang.org/manual/#object-identifier-index
|
||||
attrPathToIndex = attrPath: "." + lib.concatStringsSep "." attrPath;
|
||||
|
||||
commonServiceConfig = {
|
||||
Type = "simple";
|
||||
Restart = "on-failure";
|
||||
@@ -147,6 +151,27 @@ in
|
||||
);
|
||||
};
|
||||
|
||||
secretSettings = mkOption {
|
||||
default = { };
|
||||
description = ''
|
||||
Secrets to to be added to the JSON file generated from {option}`settings`, read from files.
|
||||
'';
|
||||
example = lib.literalExpression ''
|
||||
{
|
||||
notifications.smtp.transport.password = "/path/to/secret";
|
||||
oauth.clientSecret = "/path/to/other/secret";
|
||||
}
|
||||
'';
|
||||
type =
|
||||
let
|
||||
inherit (types) attrsOf either path;
|
||||
recursiveType = either (attrsOf recursiveType) path // {
|
||||
description = "nested " + (attrsOf path).description;
|
||||
};
|
||||
in
|
||||
recursiveType;
|
||||
};
|
||||
|
||||
machine-learning = {
|
||||
enable =
|
||||
mkEnableOption "immich's machine-learning functionality to detect faces and search for objects"
|
||||
@@ -352,8 +377,8 @@ in
|
||||
IMMICH_MEDIA_LOCATION = cfg.mediaLocation;
|
||||
IMMICH_MACHINE_LEARNING_URL = "http://localhost:3003";
|
||||
}
|
||||
// lib.optionalAttrs (cfg.settings != null) {
|
||||
IMMICH_CONFIG_FILE = "${format.generate "immich.json" cfg.settings}";
|
||||
// lib.optionalAttrs (cfg.settings != null || cfg.settingsFile != null) {
|
||||
IMMICH_CONFIG_FILE = "/run/immich/config.json";
|
||||
};
|
||||
|
||||
services.immich.machine-learning.environment = {
|
||||
@@ -382,7 +407,24 @@ in
|
||||
postgresqlPackage
|
||||
];
|
||||
|
||||
preStart = mkIf (cfg.settings != null) (
|
||||
''
|
||||
cat '${format.generate "immich-config.json" cfg.settings}' > /run/immich/config.json
|
||||
''
|
||||
+ lib.concatStrings (
|
||||
lib.mapAttrsToListRecursive (attrPath: _: ''
|
||||
tmp="$(mktemp)"
|
||||
${lib.getExe pkgs.jq} --rawfile secret "$CREDENTIALS_DIRECTORY/${attrPathToIndex attrPath}" \
|
||||
'${attrPathToIndex attrPath} = $secret' /run/immich/config.json > "$tmp"
|
||||
mv "$tmp" /run/immich/config.json
|
||||
'') cfg.secretSettings
|
||||
)
|
||||
);
|
||||
|
||||
serviceConfig = commonServiceConfig // {
|
||||
LoadCredential = lib.mapAttrsToListRecursive (
|
||||
attrPath: file: "${attrPathToIndex attrPath}:${file}"
|
||||
) cfg.secretSettings;
|
||||
ExecStart = lib.getExe cfg.package;
|
||||
EnvironmentFile = mkIf (cfg.secretsFile != null) cfg.secretsFile;
|
||||
Slice = "system-immich.slice";
|
||||
|
||||
@@ -1,712 +0,0 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
with lib;
|
||||
let
|
||||
cfg = config.services.tt-rss;
|
||||
|
||||
inherit (cfg) phpPackage;
|
||||
|
||||
configVersion = 26;
|
||||
|
||||
dbPort =
|
||||
if cfg.database.port == null then
|
||||
(if cfg.database.type == "pgsql" then 5432 else 3306)
|
||||
else
|
||||
cfg.database.port;
|
||||
|
||||
poolName = "tt-rss";
|
||||
|
||||
mysqlLocal = cfg.database.createLocally && cfg.database.type == "mysql";
|
||||
pgsqlLocal = cfg.database.createLocally && cfg.database.type == "pgsql";
|
||||
|
||||
tt-rss-config =
|
||||
let
|
||||
password =
|
||||
if (cfg.database.password != null) then
|
||||
"'${(escape [ "'" "\\" ] cfg.database.password)}'"
|
||||
else if (cfg.database.passwordFile != null) then
|
||||
"file_get_contents('${cfg.database.passwordFile}')"
|
||||
else
|
||||
null;
|
||||
in
|
||||
pkgs.writeText "config.php" ''
|
||||
<?php
|
||||
putenv('TTRSS_PHP_EXECUTABLE=${phpPackage}/bin/php');
|
||||
|
||||
putenv('TTRSS_LOCK_DIRECTORY=${cfg.root}/lock');
|
||||
putenv('TTRSS_CACHE_DIR=${cfg.root}/cache');
|
||||
putenv('TTRSS_ICONS_DIR=${cfg.root}/feed-icons');
|
||||
putenv('TTRSS_ICONS_URL=feed-icons');
|
||||
putenv('TTRSS_SELF_URL_PATH=${cfg.selfUrlPath}');
|
||||
|
||||
putenv('TTRSS_MYSQL_CHARSET=UTF8');
|
||||
|
||||
putenv('TTRSS_DB_TYPE=${cfg.database.type}');
|
||||
putenv('TTRSS_DB_HOST=${optionalString (cfg.database.host != null) cfg.database.host}');
|
||||
putenv('TTRSS_DB_USER=${cfg.database.user}');
|
||||
putenv('TTRSS_DB_NAME=${cfg.database.name}');
|
||||
putenv('TTRSS_DB_PASS=' ${optionalString (password != null) ". ${password}"});
|
||||
putenv('TTRSS_DB_PORT=${toString dbPort}');
|
||||
|
||||
putenv('TTRSS_AUTH_AUTO_CREATE=${boolToString cfg.auth.autoCreate}');
|
||||
putenv('TTRSS_AUTH_AUTO_LOGIN=${boolToString cfg.auth.autoLogin}');
|
||||
|
||||
putenv('TTRSS_FEED_CRYPT_KEY=${escape [ "'" "\\" ] cfg.feedCryptKey}');
|
||||
|
||||
|
||||
putenv('TTRSS_SINGLE_USER_MODE=${boolToString cfg.singleUserMode}');
|
||||
|
||||
putenv('TTRSS_SIMPLE_UPDATE_MODE=${boolToString cfg.simpleUpdateMode}');
|
||||
|
||||
# Never check for updates - the running version of the code should
|
||||
# be controlled entirely by the version of TT-RSS active in the
|
||||
# current Nix profile. If TT-RSS updates itself to a version
|
||||
# requiring a database schema upgrade, and then the SystemD
|
||||
# tt-rss.service is restarted, the old code copied from the Nix
|
||||
# store will overwrite the updated version, causing the code to
|
||||
# detect the need for a schema "upgrade" (since the schema version
|
||||
# in the database is different than in the code), but the update
|
||||
# schema operation in TT-RSS will do nothing because the schema
|
||||
# version in the database is newer than that in the code.
|
||||
putenv('TTRSS_CHECK_FOR_UPDATES=false');
|
||||
|
||||
putenv('TTRSS_FORCE_ARTICLE_PURGE=${toString cfg.forceArticlePurge}');
|
||||
putenv('TTRSS_SESSION_COOKIE_LIFETIME=${toString cfg.sessionCookieLifetime}');
|
||||
putenv('TTRSS_ENABLE_GZIP_OUTPUT=${boolToString cfg.enableGZipOutput}');
|
||||
|
||||
putenv('TTRSS_PLUGINS=${builtins.concatStringsSep "," cfg.plugins}');
|
||||
|
||||
putenv('TTRSS_LOG_DESTINATION=${cfg.logDestination}');
|
||||
putenv('TTRSS_CONFIG_VERSION=${toString configVersion}');
|
||||
|
||||
|
||||
putenv('TTRSS_PUBSUBHUBBUB_ENABLED=${boolToString cfg.pubSubHubbub.enable}');
|
||||
putenv('TTRSS_PUBSUBHUBBUB_HUB=${cfg.pubSubHubbub.hub}');
|
||||
|
||||
putenv('TTRSS_SPHINX_SERVER=${cfg.sphinx.server}');
|
||||
putenv('TTRSS_SPHINX_INDEX=${builtins.concatStringsSep "," cfg.sphinx.index}');
|
||||
|
||||
putenv('TTRSS_ENABLE_REGISTRATION=${boolToString cfg.registration.enable}');
|
||||
putenv('TTRSS_REG_NOTIFY_ADDRESS=${cfg.registration.notifyAddress}');
|
||||
putenv('TTRSS_REG_MAX_USERS=${toString cfg.registration.maxUsers}');
|
||||
|
||||
putenv('TTRSS_SMTP_SERVER=${cfg.email.server}');
|
||||
putenv('TTRSS_SMTP_LOGIN=${cfg.email.login}');
|
||||
putenv('TTRSS_SMTP_PASSWORD=${escape [ "'" "\\" ] cfg.email.password}');
|
||||
putenv('TTRSS_SMTP_SECURE=${cfg.email.security}');
|
||||
|
||||
putenv('TTRSS_SMTP_FROM_NAME=${escape [ "'" "\\" ] cfg.email.fromName}');
|
||||
putenv('TTRSS_SMTP_FROM_ADDRESS=${escape [ "'" "\\" ] cfg.email.fromAddress}');
|
||||
putenv('TTRSS_DIGEST_SUBJECT=${escape [ "'" "\\" ] cfg.email.digestSubject}');
|
||||
|
||||
${cfg.extraConfig}
|
||||
'';
|
||||
|
||||
# tt-rss and plugins and themes and config.php
|
||||
servedRoot = pkgs.runCommand "tt-rss-served-root" { } ''
|
||||
cp --no-preserve=mode -r ${pkgs.tt-rss} $out
|
||||
cp ${tt-rss-config} $out/config.php
|
||||
${optionalString (cfg.pluginPackages != [ ]) ''
|
||||
for plugin in ${concatStringsSep " " cfg.pluginPackages}; do
|
||||
cp -r "$plugin"/* "$out/plugins.local/"
|
||||
done
|
||||
''}
|
||||
${optionalString (cfg.themePackages != [ ]) ''
|
||||
for theme in ${concatStringsSep " " cfg.themePackages}; do
|
||||
cp -r "$theme"/* "$out/themes.local/"
|
||||
done
|
||||
''}
|
||||
'';
|
||||
|
||||
in
|
||||
{
|
||||
|
||||
###### interface
|
||||
|
||||
options = {
|
||||
|
||||
services.tt-rss = {
|
||||
|
||||
enable = mkEnableOption "tt-rss";
|
||||
|
||||
root = mkOption {
|
||||
type = types.path;
|
||||
default = "/var/lib/tt-rss";
|
||||
description = ''
|
||||
Root of the application.
|
||||
'';
|
||||
};
|
||||
|
||||
user = mkOption {
|
||||
type = types.str;
|
||||
default = "tt_rss";
|
||||
description = ''
|
||||
User account under which both the update daemon and the web-application run.
|
||||
'';
|
||||
};
|
||||
|
||||
pool = mkOption {
|
||||
type = types.str;
|
||||
default = "${poolName}";
|
||||
description = ''
|
||||
Name of existing phpfpm pool that is used to run web-application.
|
||||
If not specified a pool will be created automatically with
|
||||
default values.
|
||||
'';
|
||||
};
|
||||
|
||||
virtualHost = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
default = "tt-rss";
|
||||
description = ''
|
||||
Name of the nginx virtualhost to use and setup. If null, do not setup any virtualhost.
|
||||
'';
|
||||
};
|
||||
|
||||
database = {
|
||||
type = mkOption {
|
||||
type = types.enum [
|
||||
"pgsql"
|
||||
"mysql"
|
||||
];
|
||||
default = "pgsql";
|
||||
description = ''
|
||||
Database to store feeds. Supported are pgsql and mysql.
|
||||
'';
|
||||
};
|
||||
|
||||
host = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
default = null;
|
||||
description = ''
|
||||
Host of the database. Leave null to use Unix domain socket.
|
||||
'';
|
||||
};
|
||||
|
||||
name = mkOption {
|
||||
type = types.str;
|
||||
default = "tt_rss";
|
||||
description = ''
|
||||
Name of the existing database.
|
||||
'';
|
||||
};
|
||||
|
||||
user = mkOption {
|
||||
type = types.str;
|
||||
default = "tt_rss";
|
||||
description = ''
|
||||
The database user. The user must exist and has access to
|
||||
the specified database.
|
||||
'';
|
||||
};
|
||||
|
||||
password = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
default = null;
|
||||
description = ''
|
||||
The database user's password.
|
||||
'';
|
||||
};
|
||||
|
||||
passwordFile = mkOption {
|
||||
type = types.nullOr types.str;
|
||||
default = null;
|
||||
description = ''
|
||||
The database user's password.
|
||||
'';
|
||||
};
|
||||
|
||||
port = mkOption {
|
||||
type = types.nullOr types.port;
|
||||
default = null;
|
||||
description = ''
|
||||
The database's port. If not set, the default ports will be provided (5432
|
||||
and 3306 for pgsql and mysql respectively).
|
||||
'';
|
||||
};
|
||||
|
||||
createLocally = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = "Create the database and database user locally.";
|
||||
};
|
||||
};
|
||||
|
||||
auth = {
|
||||
autoCreate = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = ''
|
||||
Allow authentication modules to auto-create users in tt-rss internal
|
||||
database when authenticated successfully.
|
||||
'';
|
||||
};
|
||||
|
||||
autoLogin = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = ''
|
||||
Automatically login user on remote or other kind of externally supplied
|
||||
authentication, otherwise redirect to login form as normal.
|
||||
If set to true, users won't be able to set application language
|
||||
and settings profile.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
pubSubHubbub = {
|
||||
hub = mkOption {
|
||||
type = types.str;
|
||||
default = "";
|
||||
description = ''
|
||||
URL to a PubSubHubbub-compatible hub server. If defined, "Published
|
||||
articles" generated feed would automatically become PUSH-enabled.
|
||||
'';
|
||||
};
|
||||
|
||||
enable = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Enable client PubSubHubbub support in tt-rss. When disabled, tt-rss
|
||||
won't try to subscribe to PUSH feed updates.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
sphinx = {
|
||||
server = mkOption {
|
||||
type = types.str;
|
||||
default = "localhost:9312";
|
||||
description = ''
|
||||
Hostname:port combination for the Sphinx server.
|
||||
'';
|
||||
};
|
||||
|
||||
index = mkOption {
|
||||
type = types.listOf types.str;
|
||||
default = [
|
||||
"ttrss"
|
||||
"delta"
|
||||
];
|
||||
description = ''
|
||||
Index names in Sphinx configuration. Example configuration
|
||||
files are available on tt-rss wiki.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
registration = {
|
||||
enable = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Allow users to register themselves. Please be aware that allowing
|
||||
random people to access your tt-rss installation is a security risk
|
||||
and potentially might lead to data loss or server exploit. Disabled
|
||||
by default.
|
||||
'';
|
||||
};
|
||||
|
||||
notifyAddress = mkOption {
|
||||
type = types.str;
|
||||
default = "";
|
||||
description = ''
|
||||
Email address to send new user notifications to.
|
||||
'';
|
||||
};
|
||||
|
||||
maxUsers = mkOption {
|
||||
type = types.int;
|
||||
default = 0;
|
||||
description = ''
|
||||
Maximum amount of users which will be allowed to register on this
|
||||
system. 0 - no limit.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
email = {
|
||||
server = mkOption {
|
||||
type = types.str;
|
||||
default = "";
|
||||
example = "localhost:25";
|
||||
description = ''
|
||||
Hostname:port combination to send outgoing mail. Blank - use system
|
||||
MTA.
|
||||
'';
|
||||
};
|
||||
|
||||
login = mkOption {
|
||||
type = types.str;
|
||||
default = "";
|
||||
description = ''
|
||||
SMTP authentication login used when sending outgoing mail.
|
||||
'';
|
||||
};
|
||||
|
||||
password = mkOption {
|
||||
type = types.str;
|
||||
default = "";
|
||||
description = ''
|
||||
SMTP authentication password used when sending outgoing mail.
|
||||
'';
|
||||
};
|
||||
|
||||
security = mkOption {
|
||||
type = types.enum [
|
||||
""
|
||||
"ssl"
|
||||
"tls"
|
||||
];
|
||||
default = "";
|
||||
description = ''
|
||||
Used to select a secure SMTP connection. Allowed values: ssl, tls,
|
||||
or empty.
|
||||
'';
|
||||
};
|
||||
|
||||
fromName = mkOption {
|
||||
type = types.str;
|
||||
default = "Tiny Tiny RSS";
|
||||
description = ''
|
||||
Name for sending outgoing mail. This applies to password reset
|
||||
notifications, digest emails and any other mail.
|
||||
'';
|
||||
};
|
||||
|
||||
fromAddress = mkOption {
|
||||
type = types.str;
|
||||
default = "";
|
||||
description = ''
|
||||
Address for sending outgoing mail. This applies to password reset
|
||||
notifications, digest emails and any other mail.
|
||||
'';
|
||||
};
|
||||
|
||||
digestSubject = mkOption {
|
||||
type = types.str;
|
||||
default = "[tt-rss] New headlines for last 24 hours";
|
||||
description = ''
|
||||
Subject line for email digests.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
sessionCookieLifetime = mkOption {
|
||||
type = types.int;
|
||||
default = 86400;
|
||||
description = ''
|
||||
Default lifetime of a session (e.g. login) cookie. In seconds,
|
||||
0 means cookie will be deleted when browser closes.
|
||||
'';
|
||||
};
|
||||
|
||||
selfUrlPath = mkOption {
|
||||
type = types.str;
|
||||
description = ''
|
||||
Full URL of your tt-rss installation. This should be set to the
|
||||
location of tt-rss directory, e.g. http://example.org/tt-rss/
|
||||
You need to set this option correctly otherwise several features
|
||||
including PUSH, bookmarklets and browser integration will not work properly.
|
||||
'';
|
||||
example = "http://localhost";
|
||||
};
|
||||
|
||||
feedCryptKey = mkOption {
|
||||
type = types.str;
|
||||
default = "";
|
||||
description = ''
|
||||
Key used for encryption of passwords for password-protected feeds
|
||||
in the database. A string of 24 random characters. If left blank, encryption
|
||||
is not used. Requires mcrypt functions.
|
||||
Warning: changing this key will make your stored feed passwords impossible
|
||||
to decrypt.
|
||||
'';
|
||||
};
|
||||
|
||||
singleUserMode = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
|
||||
description = ''
|
||||
Operate in single user mode, disables all functionality related to
|
||||
multiple users and authentication. Enabling this assumes you have
|
||||
your tt-rss directory protected by other means (e.g. http auth).
|
||||
'';
|
||||
};
|
||||
|
||||
simpleUpdateMode = mkOption {
|
||||
type = types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Enables fallback update mode where tt-rss tries to update feeds in
|
||||
background while tt-rss is open in your browser.
|
||||
If you don't have a lot of feeds and don't want to or can't run
|
||||
background processes while not running tt-rss, this method is generally
|
||||
viable to keep your feeds up to date.
|
||||
Still, there are more robust (and recommended) updating methods
|
||||
available, you can read about them here: <https://tt-rss.org/wiki/UpdatingFeeds>
|
||||
'';
|
||||
};
|
||||
|
||||
forceArticlePurge = mkOption {
|
||||
type = types.int;
|
||||
default = 0;
|
||||
description = ''
|
||||
When this option is not 0, users ability to control feed purging
|
||||
intervals is disabled and all articles (which are not starred)
|
||||
older than this amount of days are purged.
|
||||
'';
|
||||
};
|
||||
|
||||
enableGZipOutput = mkOption {
|
||||
type = types.bool;
|
||||
default = true;
|
||||
description = ''
|
||||
Selectively gzip output to improve wire performance. This requires
|
||||
PHP Zlib extension on the server.
|
||||
Enabling this can break tt-rss in several httpd/php configurations,
|
||||
if you experience weird errors and tt-rss failing to start, blank pages
|
||||
after login, or content encoding errors, disable it.
|
||||
'';
|
||||
};
|
||||
|
||||
phpPackage = lib.mkOption {
|
||||
type = lib.types.package;
|
||||
default = pkgs.php;
|
||||
defaultText = "pkgs.php";
|
||||
description = ''
|
||||
php package to use for php fpm and update daemon.
|
||||
'';
|
||||
};
|
||||
|
||||
plugins = mkOption {
|
||||
type = types.listOf types.str;
|
||||
default = [
|
||||
"auth_internal"
|
||||
"note"
|
||||
];
|
||||
description = ''
|
||||
List of plugins to load automatically for all users.
|
||||
System plugins have to be specified here. Please enable at least one
|
||||
authentication plugin here (auth_*).
|
||||
Users may enable other user plugins from Preferences/Plugins but may not
|
||||
disable plugins specified in this list.
|
||||
Disabling auth_internal in this list would automatically disable
|
||||
reset password link on the login form.
|
||||
'';
|
||||
};
|
||||
|
||||
pluginPackages = mkOption {
|
||||
type = types.listOf types.package;
|
||||
default = [ ];
|
||||
description = ''
|
||||
List of plugins to install. The list elements are expected to
|
||||
be derivations. All elements in this derivation are automatically
|
||||
copied to the `plugins.local` directory.
|
||||
'';
|
||||
};
|
||||
|
||||
themePackages = mkOption {
|
||||
type = types.listOf types.package;
|
||||
default = [ ];
|
||||
description = ''
|
||||
List of themes to install. The list elements are expected to
|
||||
be derivations. All elements in this derivation are automatically
|
||||
copied to the `themes.local` directory.
|
||||
'';
|
||||
};
|
||||
|
||||
logDestination = mkOption {
|
||||
type = types.enum [
|
||||
""
|
||||
"sql"
|
||||
"syslog"
|
||||
];
|
||||
default = "sql";
|
||||
description = ''
|
||||
Log destination to use. Possible values: sql (uses internal logging
|
||||
you can read in Preferences -> System), syslog - logs to system log.
|
||||
Setting this to blank uses PHP logging (usually to http server
|
||||
error.log).
|
||||
'';
|
||||
};
|
||||
|
||||
updateDaemon = {
|
||||
commandFlags = mkOption {
|
||||
type = types.str;
|
||||
default = "--quiet";
|
||||
description = ''
|
||||
Command-line flags passed to the update daemon.
|
||||
The default --quiet flag mutes all logging, including errors.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
extraConfig = mkOption {
|
||||
type = types.lines;
|
||||
default = "";
|
||||
description = ''
|
||||
Additional lines to append to `config.php`.
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
imports = [
|
||||
(mkRemovedOptionModule [ "services" "tt-rss" "checkForUpdates" ] ''
|
||||
This option was removed because setting this to true will cause TT-RSS
|
||||
to be unable to start if an automatic update of the code in
|
||||
services.tt-rss.root leads to a database schema upgrade that is not
|
||||
supported by the code active in the Nix store.
|
||||
'')
|
||||
];
|
||||
|
||||
###### implementation
|
||||
|
||||
config = mkIf cfg.enable {
|
||||
|
||||
assertions = [
|
||||
{
|
||||
assertion = cfg.database.password != null -> cfg.database.passwordFile == null;
|
||||
message = "Cannot set both password and passwordFile";
|
||||
}
|
||||
{
|
||||
assertion =
|
||||
cfg.database.createLocally -> cfg.database.name == cfg.user && cfg.database.user == cfg.user;
|
||||
message = ''
|
||||
When creating a database via NixOS, the db user and db name must be equal!
|
||||
If you already have an existing DB+user and this assertion is new, you can safely set
|
||||
`services.tt-rss.database.createLocally` to `false` because removal of `ensureUsers`
|
||||
and `ensureDatabases` doesn't have any effect.
|
||||
'';
|
||||
}
|
||||
];
|
||||
|
||||
services.phpfpm.pools = mkIf (cfg.pool == "${poolName}") {
|
||||
${poolName} = {
|
||||
inherit (cfg) user;
|
||||
inherit phpPackage;
|
||||
settings = mapAttrs (name: mkDefault) {
|
||||
"listen.owner" = "nginx";
|
||||
"listen.group" = "nginx";
|
||||
"listen.mode" = "0600";
|
||||
"pm" = "dynamic";
|
||||
"pm.max_children" = 75;
|
||||
"pm.start_servers" = 10;
|
||||
"pm.min_spare_servers" = 5;
|
||||
"pm.max_spare_servers" = 20;
|
||||
"pm.max_requests" = 500;
|
||||
"catch_workers_output" = 1;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
# NOTE: No configuration is done if not using virtual host
|
||||
services.nginx = mkIf (cfg.virtualHost != null) {
|
||||
enable = true;
|
||||
virtualHosts = {
|
||||
${cfg.virtualHost} = {
|
||||
root = "${cfg.root}/www";
|
||||
|
||||
locations."/" = {
|
||||
index = "index.php";
|
||||
};
|
||||
|
||||
locations."^~ /feed-icons" = {
|
||||
root = "${cfg.root}";
|
||||
};
|
||||
|
||||
locations."~ \\.php$" = {
|
||||
extraConfig = ''
|
||||
fastcgi_split_path_info ^(.+\.php)(/.+)$;
|
||||
fastcgi_pass unix:${config.services.phpfpm.pools.${cfg.pool}.socket};
|
||||
fastcgi_index index.php;
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
systemd.tmpfiles.rules = [
|
||||
"d '${cfg.root}' 0555 ${cfg.user} tt_rss - -"
|
||||
"d '${cfg.root}/lock' 0755 ${cfg.user} tt_rss - -"
|
||||
"d '${cfg.root}/cache' 0755 ${cfg.user} tt_rss - -"
|
||||
"d '${cfg.root}/cache/upload' 0755 ${cfg.user} tt_rss - -"
|
||||
"d '${cfg.root}/cache/images' 0755 ${cfg.user} tt_rss - -"
|
||||
"d '${cfg.root}/cache/export' 0755 ${cfg.user} tt_rss - -"
|
||||
"d '${cfg.root}/feed-icons' 0755 ${cfg.user} tt_rss - -"
|
||||
"L+ '${cfg.root}/www' - - - - ${servedRoot}"
|
||||
];
|
||||
|
||||
systemd.services = {
|
||||
phpfpm-tt-rss = mkIf (cfg.pool == "${poolName}") {
|
||||
restartTriggers = [ servedRoot ];
|
||||
};
|
||||
|
||||
tt-rss = {
|
||||
description = "Tiny Tiny RSS feeds update daemon";
|
||||
|
||||
preStart = ''
|
||||
${phpPackage}/bin/php ${cfg.root}/www/update.php --update-schema --force-yes
|
||||
'';
|
||||
|
||||
serviceConfig = {
|
||||
User = "${cfg.user}";
|
||||
Group = "tt_rss";
|
||||
ExecStart = "${phpPackage}/bin/php ${cfg.root}/www/update.php --daemon ${cfg.updateDaemon.commandFlags}";
|
||||
Restart = "on-failure";
|
||||
RestartSec = "60";
|
||||
SyslogIdentifier = "tt-rss";
|
||||
};
|
||||
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
requires = optional mysqlLocal "mysql.service" ++ optional pgsqlLocal "postgresql.target";
|
||||
after = [
|
||||
"network.target"
|
||||
]
|
||||
++ optional mysqlLocal "mysql.service"
|
||||
++ optional pgsqlLocal "postgresql.target";
|
||||
};
|
||||
};
|
||||
|
||||
services.mysql = mkIf mysqlLocal {
|
||||
enable = true;
|
||||
package = mkDefault pkgs.mariadb;
|
||||
ensureDatabases = [ cfg.database.name ];
|
||||
ensureUsers = [
|
||||
{
|
||||
name = cfg.user;
|
||||
ensurePermissions = {
|
||||
"${cfg.database.name}.*" = "ALL PRIVILEGES";
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
services.postgresql = mkIf pgsqlLocal {
|
||||
enable = mkDefault true;
|
||||
ensureDatabases = [ cfg.database.name ];
|
||||
ensureUsers = [
|
||||
{
|
||||
name = cfg.database.user;
|
||||
ensureDBOwnership = true;
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
users.users.tt_rss = optionalAttrs (cfg.user == "tt_rss") {
|
||||
description = "tt-rss service user";
|
||||
isSystemUser = true;
|
||||
group = "tt_rss";
|
||||
};
|
||||
|
||||
users.groups.tt_rss = { };
|
||||
};
|
||||
}
|
||||
@@ -630,15 +630,15 @@ def install_bootloader() -> None:
|
||||
if config('partitionIndex'):
|
||||
limine_deploy_args.append(str(config('partitionIndex')))
|
||||
|
||||
if config('forceMbr'):
|
||||
limine_deploy_args.append('--force-mbr')
|
||||
if config('force'):
|
||||
limine_deploy_args.append('--force')
|
||||
|
||||
try:
|
||||
subprocess.run(limine_deploy_args)
|
||||
except:
|
||||
raise Exception(
|
||||
'Failed to deploy BIOS stage 1 Limine bootloader!\n' +
|
||||
'You might want to try enabling the `boot.loader.limine.forceMbr` option.')
|
||||
'You might want to try enabling the `boot.loader.limine.force` option.')
|
||||
|
||||
print("removing unused boot files...")
|
||||
for path in paths:
|
||||
|
||||
@@ -22,7 +22,7 @@ let
|
||||
biosSupport = cfg.biosSupport;
|
||||
biosDevice = cfg.biosDevice;
|
||||
partitionIndex = cfg.partitionIndex;
|
||||
forceMbr = cfg.forceMbr;
|
||||
force = cfg.force;
|
||||
enrollConfig = cfg.enrollConfig;
|
||||
style = cfg.style;
|
||||
maxGenerations = if cfg.maxGenerations == null then 0 else cfg.maxGenerations;
|
||||
@@ -43,6 +43,13 @@ in
|
||||
inherit (pkgs.limine.meta) maintainers;
|
||||
};
|
||||
|
||||
imports = [
|
||||
(lib.mkRenamedOptionModule
|
||||
[ "boot" "loader" "limine" "forceMbr" ]
|
||||
[ "boot" "loader" "limine" "force" ]
|
||||
)
|
||||
];
|
||||
|
||||
options.boot.loader.limine = {
|
||||
enable = lib.mkEnableOption "the Limine Bootloader";
|
||||
package = lib.mkPackageOption pkgs "limine" { };
|
||||
@@ -169,9 +176,9 @@ in
|
||||
'';
|
||||
};
|
||||
|
||||
forceMbr = lib.mkEnableOption null // {
|
||||
force = lib.mkEnableOption null // {
|
||||
description = ''
|
||||
Force MBR detection to work even if the safety checks fail, use absolutely only if necessary!
|
||||
Force installation even if the safety checks fail, use absolutely only if necessary!
|
||||
'';
|
||||
};
|
||||
|
||||
|
||||
@@ -1531,7 +1531,6 @@ in
|
||||
trickster = runTest ./trickster.nix;
|
||||
trilium-server = runTestOn [ "x86_64-linux" ] ./trilium-server.nix;
|
||||
tsm-client-gui = runTest ./tsm-client-gui.nix;
|
||||
tt-rss = runTest ./web-apps/tt-rss.nix;
|
||||
ttyd = runTest ./web-servers/ttyd.nix;
|
||||
tuned = runTest ./tuned.nix;
|
||||
tuptime = runTest ./tuptime.nix;
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
{ pkgs, ... }:
|
||||
{ ... }:
|
||||
{
|
||||
name = "fancontrol";
|
||||
meta = with pkgs.lib.maintainers; {
|
||||
maintainers = [ evils ];
|
||||
meta = {
|
||||
maintainers = [ ];
|
||||
};
|
||||
|
||||
nodes.machine =
|
||||
|
||||
@@ -118,14 +118,6 @@ let
|
||||
in
|
||||
with pkgs;
|
||||
{
|
||||
kafka_3_7 = makeKafkaTest "kafka_3_7" {
|
||||
kafkaPackage = apacheKafka_3_7;
|
||||
mode = "zookeeper";
|
||||
};
|
||||
kafka_3_8 = makeKafkaTest "kafka_3_8" {
|
||||
kafkaPackage = apacheKafka_3_8;
|
||||
mode = "zookeeper";
|
||||
};
|
||||
kafka_3_9 = makeKafkaTest "kafka_3_9" {
|
||||
kafkaPackage = apacheKafka_3_9;
|
||||
mode = "zookeeper";
|
||||
|
||||
@@ -5,9 +5,15 @@ let
|
||||
customMuseScoreConfig = hostPkgs.writeText "MuseScore4.ini" ''
|
||||
[application]
|
||||
hasCompletedFirstLaunchSetup=true
|
||||
welcomeDialogLastShownIndex=0
|
||||
welcomeDialogLastShownVersion=${hostPkgs.musescore.version}
|
||||
welcomeDialogShowOnStartup=false
|
||||
|
||||
[project]
|
||||
preferredScoreCreationMode=1
|
||||
|
||||
[tours]
|
||||
lastShownTours=",project_opened/input-by-duration"
|
||||
'';
|
||||
in
|
||||
{
|
||||
@@ -66,7 +72,7 @@ in
|
||||
|
||||
machine.sleep(2)
|
||||
|
||||
machine.send_key("tab")
|
||||
machine.send_key("right")
|
||||
# Type the beginning of https://de.wikipedia.org/wiki/Alle_meine_Entchen
|
||||
machine.send_chars("cdef6gg5aaaa7g")
|
||||
machine.sleep(1)
|
||||
@@ -79,15 +85,14 @@ in
|
||||
# Wait until the Print dialogue appears.
|
||||
machine.wait_for_window("Print")
|
||||
|
||||
machine.screenshot("MuseScore4")
|
||||
machine.screenshot("MuseScore3")
|
||||
machine.send_key("alt-p")
|
||||
machine.sleep(1)
|
||||
|
||||
machine.screenshot("MuseScore5")
|
||||
|
||||
# Wait until PDF is exported
|
||||
machine.wait_for_file('"/root/Untitled score.pdf"')
|
||||
|
||||
machine.screenshot("MuseScore4")
|
||||
|
||||
## Check that it contains the title of the score
|
||||
machine.succeed('pdfgrep "Untitled score" "/root/Untitled score.pdf"')
|
||||
machine.copy_from_vm("/root/Untitled score.pdf")
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
{ pkgs, ... }:
|
||||
{ ... }:
|
||||
{
|
||||
name = "rasdaemon";
|
||||
meta = with pkgs.lib.maintainers; {
|
||||
maintainers = [ evils ];
|
||||
meta = {
|
||||
maintainers = [ ];
|
||||
};
|
||||
|
||||
nodes.machine =
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
{ pkgs, ... }:
|
||||
{ ... }:
|
||||
{
|
||||
name = "tuptime";
|
||||
meta = with pkgs.lib.maintainers; {
|
||||
maintainers = [ evils ];
|
||||
meta = {
|
||||
maintainers = [ ];
|
||||
};
|
||||
|
||||
nodes.machine =
|
||||
|
||||
@@ -17,6 +17,15 @@
|
||||
services.immich = {
|
||||
enable = true;
|
||||
environment.IMMICH_LOG_LEVEL = "verbose";
|
||||
settings.backup.database = {
|
||||
enabled = true;
|
||||
cronExpression = "invalid";
|
||||
};
|
||||
secretSettings = {
|
||||
backup.database.cronExpression = "${pkgs.writeText "cron" "0 02 * * *"}";
|
||||
# thanks to LoadCredential files only readable by root should work
|
||||
notifications.smtp.transport.password = "/etc/shadow";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
@@ -25,6 +34,8 @@
|
||||
|
||||
machine.wait_for_unit("immich-server.service")
|
||||
|
||||
machine.succeed("stat -L -c '%a %U %G' /run/immich/config.json | grep '600 immich immich'")
|
||||
|
||||
machine.wait_for_open_port(2283) # Server
|
||||
machine.wait_for_open_port(3003) # Machine learning
|
||||
machine.succeed("curl --fail http://localhost:2283/")
|
||||
|
||||
@@ -1,45 +0,0 @@
|
||||
{ ... }:
|
||||
{
|
||||
name = "tt-rss-nixos";
|
||||
|
||||
nodes.machine =
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
services.tt-rss = {
|
||||
enable = true;
|
||||
virtualHost = "localhost";
|
||||
selfUrlPath = "http://localhost/";
|
||||
pluginPackages = with pkgs; [
|
||||
tt-rss-plugin-auth-ldap
|
||||
tt-rss-plugin-feediron
|
||||
];
|
||||
plugins = [
|
||||
"auth_internal"
|
||||
"feediron"
|
||||
"note"
|
||||
];
|
||||
singleUserMode = true;
|
||||
themePackages = with pkgs; [ tt-rss-theme-feedly ];
|
||||
};
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
import json
|
||||
import re
|
||||
machine.wait_for_unit("tt-rss.service")
|
||||
|
||||
matches = re.search('__csrf_token = "([^"]*)"', machine.succeed("curl -sSfL --cookie cjar --cookie-jar cjar -sSfL http://localhost/"))
|
||||
if matches is None:
|
||||
assert False, "CSRF token not found"
|
||||
csrf_token = matches.group(1)
|
||||
|
||||
# Ensure themes are loaded. No API found for these, so it's a crude check.
|
||||
preference_page = machine.succeed("curl -sSfL --cookie cjar --cookie-jar cjar http://localhost/backend.php?op=Pref_Prefs")
|
||||
assert "feedly" in preference_page
|
||||
|
||||
plugins = json.loads(machine.succeed(f"curl -sSfL --cookie cjar --cookie-jar cjar 'http://localhost/backend.php' -X POST --data-raw 'op=Pref_Prefs&method=getPluginsList&csrf_token={csrf_token}'"))["plugins"]
|
||||
expected_plugins = ["auth_internal", "auth_ldap", "feediron", "note"];
|
||||
found_plugins = [p["name"] for p in plugins if p["name"] in expected_plugins]
|
||||
assert len(found_plugins) == len(expected_plugins), f"Expected plugins {expected_plugins}, found {found_plugins}"
|
||||
'';
|
||||
}
|
||||
@@ -69,6 +69,6 @@ stdenv.mkDerivation rec {
|
||||
homepage = "https://github.com/zevv/bucklespring";
|
||||
license = licenses.gpl2Only;
|
||||
platforms = platforms.unix;
|
||||
maintainers = [ maintainers.evils ];
|
||||
maintainers = [ ];
|
||||
};
|
||||
}
|
||||
|
||||
@@ -47,6 +47,11 @@ let
|
||||
|
||||
sourceRoot = "${src.name}/src/ucd-tools";
|
||||
|
||||
# fix compatibility with CMake (https://cmake.org/cmake/help/v4.0/policy/CMP0000.html)
|
||||
postPatch = ''
|
||||
echo 'cmake_minimum_required(VERSION 4.0)' >> CMakeLists.txt
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [ cmake ];
|
||||
|
||||
installPhase = ''
|
||||
|
||||
@@ -36,13 +36,13 @@
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "musescore";
|
||||
version = "4.5.2-unstable-2025-07-03";
|
||||
version = "4.6.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "musescore";
|
||||
repo = "MuseScore";
|
||||
rev = "0ff2476af4e16286ee9f7cf2322715273a0117e0";
|
||||
sha256 = "sha256-0ixQfAyAyRmuIrlPosCV/VucKJYYvxjL2o4pkVb5Sd8=";
|
||||
rev = "v${finalAttrs.version}";
|
||||
sha256 = "sha256-+Kmx+jMbBaIzXdulj5tsusF0x9b6tZ6jOTjI+sLP1jU=";
|
||||
};
|
||||
|
||||
cmakeFlags = [
|
||||
|
||||
@@ -3781,6 +3781,19 @@ final: prev: {
|
||||
meta.hydraPlatforms = [ ];
|
||||
};
|
||||
|
||||
cybu-nvim = buildVimPlugin {
|
||||
pname = "cybu.nvim";
|
||||
version = "2025-07-24";
|
||||
src = fetchFromGitHub {
|
||||
owner = "ghillb";
|
||||
repo = "cybu.nvim";
|
||||
rev = "c8a8c71cd0e38d4165b02819dfdc32dedc35a6b6";
|
||||
sha256 = "0bxgil5vb6lpq420xw404qbxd92by6qjxilba36h9dd87js97by1";
|
||||
};
|
||||
meta.homepage = "https://github.com/ghillb/cybu.nvim/";
|
||||
meta.hydraPlatforms = [ ];
|
||||
};
|
||||
|
||||
dailies-nvim = buildVimPlugin {
|
||||
pname = "dailies.nvim";
|
||||
version = "2025-04-21";
|
||||
|
||||
@@ -12,12 +12,12 @@
|
||||
pkgs,
|
||||
}:
|
||||
let
|
||||
version = "0.0.27-unstable-2025-09-18";
|
||||
version = "0.0.27-unstable-2025-10-06";
|
||||
src = fetchFromGitHub {
|
||||
owner = "yetone";
|
||||
repo = "avante.nvim";
|
||||
rev = "44db8eba870f6c123da5efa70384b2889f3e3495";
|
||||
hash = "sha256-x2lb7k/qfERXYMdM+Upf6kmsYS3Qp9iz2KEvzvgb8P4=";
|
||||
rev = "a7052aca0bdfb93e524f0536ac80e6c542962f47";
|
||||
hash = "sha256-crtzBzRcpuqQdqymUJMAxky1Lfk+6YY0YifThHXz7Rw=";
|
||||
};
|
||||
avante-nvim-lib = rustPlatform.buildRustPackage {
|
||||
pname = "avante-nvim-lib";
|
||||
|
||||
+2
-2
@@ -6,13 +6,13 @@
|
||||
}:
|
||||
vimUtils.buildVimPlugin rec {
|
||||
pname = "rainbow-delimiters.nvim";
|
||||
version = "0.9.1";
|
||||
version = "0.10.0";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
owner = "HiPhish";
|
||||
repo = "rainbow-delimiters.nvim";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-FGM9QWpveaICACDEVc6jpJNAfJ93gFxz0VHxCrzDaYs=";
|
||||
hash = "sha256-E0ZPi9Vzc3TwhNHsGyABY+sgn/vO6Oyun6eRd7/RFgU=";
|
||||
};
|
||||
|
||||
nvimSkipModules = [
|
||||
|
||||
@@ -6,13 +6,13 @@
|
||||
}:
|
||||
vimUtils.buildVimPlugin {
|
||||
pname = "sonarlint.nvim";
|
||||
version = "0-unstable-2025-09-18";
|
||||
version = "0-unstable-2025-10-04";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
owner = "schrieveslaach";
|
||||
repo = "sonarlint.nvim";
|
||||
rev = "dc5702556f90eedce587233f3c1a0ae671ea3648";
|
||||
hash = "sha256-IBXQ9ijAG8TdnwkSTNbBtzziQC5bbCbkAmC8gM7G5E4=";
|
||||
rev = "1d49a469265e271f02b6efcf09c215e4560bd5fa";
|
||||
hash = "sha256-1eUwgHvegULo33xVjvV3b90fSlJ8Ax10iDCZE4IPo58=";
|
||||
};
|
||||
|
||||
passthru.updateScript = nix-update-script {
|
||||
|
||||
@@ -289,6 +289,7 @@ https://github.com/amiorin/ctrlp-z/,,
|
||||
https://github.com/ctrlpvim/ctrlp.vim/,,
|
||||
https://github.com/gbprod/cutlass.nvim/,HEAD,
|
||||
https://github.com/scottmckendry/cyberdream.nvim/,,
|
||||
https://github.com/ghillb/cybu.nvim/,,
|
||||
https://github.com/JachymPutta/dailies.nvim/,HEAD,
|
||||
https://github.com/Koalhack/darcubox-nvim/,HEAD,
|
||||
https://github.com/ptdewey/darkearth-nvim/,HEAD,
|
||||
|
||||
@@ -36,20 +36,20 @@ let
|
||||
|
||||
hash =
|
||||
{
|
||||
x86_64-linux = "sha256-0zgsR0nk9zsOeEcKhrmAFbAhvKKFNsC8fXjCnxFcndE=";
|
||||
x86_64-darwin = "sha256-4+3T3axXNfePEkevhLwRPeqoxKs2OTL7B7TiV2BxZWc=";
|
||||
aarch64-linux = "sha256-iGLtuVFA5NphiF1PU9Pus/nZ8PyCNNzDOpcQ+utYE2I=";
|
||||
aarch64-darwin = "sha256-E4BopxbqH1lg1Q2NlyWjH8jytabiv5y4hG5ZJW4nqzs=";
|
||||
armv7l-linux = "sha256-YIidKSsqK3DSAfPd7O1pbft1C/ny/iB+CFbR/T9u7L8=";
|
||||
x86_64-linux = "sha256-S9H1IZGV3BZe2kjSdkt8S+ShE1EQA0yiKEl65tNNtJw=";
|
||||
x86_64-darwin = "sha256-Wi21LByNSjaTKdpJJM9d/5yspaoplJ1pDxGBMxAxLT0=";
|
||||
aarch64-linux = "sha256-m1AkCRiVJbUPArvK/QyG+Y/7qCLHY20vv40suFXK1fk=";
|
||||
aarch64-darwin = "sha256-iwUegTexE0Iroh+VN9/cQ/s1f2SjLSePjIJanjMDzHU=";
|
||||
armv7l-linux = "sha256-06LY6PrWg1VBjUjoLNIrbuKu9YzJS4MM38wlx8JQdvw=";
|
||||
}
|
||||
.${system} or throwSystem;
|
||||
|
||||
# Please backport all compatible updates to the stable release.
|
||||
# This is important for the extension ecosystem.
|
||||
version = "1.104.2";
|
||||
version = "1.104.3";
|
||||
|
||||
# This is used for VS Code - Remote SSH test
|
||||
rev = "e3a5acfb517a443235981655413d566533107e92";
|
||||
rev = "385651c938df8a906869babee516bffd0ddb9829";
|
||||
in
|
||||
callPackage ./generic.nix {
|
||||
pname = "vscode" + lib.optionalString isInsiders "-insiders";
|
||||
@@ -82,7 +82,7 @@ callPackage ./generic.nix {
|
||||
src = fetchurl {
|
||||
name = "vscode-server-${rev}.tar.gz";
|
||||
url = "https://update.code.visualstudio.com/commit:${rev}/server-linux-x64/stable";
|
||||
hash = "sha256-Tz1P8eGokG+8thao9dRllAdTxvllhfOEDKH9lC2QwB0=";
|
||||
hash = "sha256-0tGqGDMmLURqdQwqFWCO10d/RkVha8iC0Uv/JFp9nNQ=";
|
||||
};
|
||||
stdenv = stdenvNoCC;
|
||||
};
|
||||
|
||||
@@ -26,11 +26,11 @@ let
|
||||
|
||||
hash =
|
||||
{
|
||||
x86_64-linux = "sha256-v6cGOKA4wewHfhVjXWXkQBmv56iSMCaxco2G9EQy1jI=";
|
||||
x86_64-darwin = "sha256-WDqm2f88q55Yfff0R/0+FxzbR5QkIKKGNnj5+QQXbDw=";
|
||||
aarch64-linux = "sha256-m9JIqloo0evYIPeXtGGX8mFXRnlZS2wegvo38uHT9SA=";
|
||||
aarch64-darwin = "sha256-obvl+uV+vaGioPUf3/KU4GYkMWly2xGfOzZQxrHYIIk=";
|
||||
armv7l-linux = "sha256-Q2raRw3St3vnZawy5vO9b3+DCvnMIMFEMEKxGOSXkz8=";
|
||||
x86_64-linux = "sha256-OWJqNm08Uy7Wr5pbucS0eWUyN3xU6/qLYM8wL/hg2dY=";
|
||||
x86_64-darwin = "sha256-Cq+JfzSTYJ85OWW9QjDSGU6yBqvoEniaqlwA/eT/+c0=";
|
||||
aarch64-linux = "sha256-u5IRp1qoPN2A5T9iPDPrZjhw/UAHcBrRanWPJMeFD0k=";
|
||||
aarch64-darwin = "sha256-KDqNpsLi+EXoAAY0TZFkbHT8WBy1f4hU1ag7Fp24MKY=";
|
||||
armv7l-linux = "sha256-9R4FBxyIx7+jMNrUDfMrvIMNqggJ97mTSTXIjG5ccLI=";
|
||||
}
|
||||
.${system} or throwSystem;
|
||||
|
||||
@@ -41,7 +41,7 @@ callPackage ./generic.nix rec {
|
||||
|
||||
# Please backport all compatible updates to the stable release.
|
||||
# This is important for the extension ecosystem.
|
||||
version = "1.104.26450";
|
||||
version = "1.104.36664";
|
||||
pname = "vscodium";
|
||||
|
||||
executableName = "codium";
|
||||
|
||||
@@ -8,13 +8,13 @@
|
||||
}:
|
||||
mkLibretroCore {
|
||||
core = "mednafen-psx" + lib.optionalString withHw "-hw";
|
||||
version = "0-unstable-2025-08-29";
|
||||
version = "0-unstable-2025-10-03";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "libretro";
|
||||
repo = "beetle-psx-libretro";
|
||||
rev = "fe380f78ca0796fbe58901d80b125afaa8a2670b";
|
||||
hash = "sha256-MG8hrLkqTgMI/JQ0WZ68iI22xD/Qs2jWL+tle0brZ6g=";
|
||||
rev = "4968db4255bd8853137132c5d0809becd7638026";
|
||||
hash = "sha256-MVcz+c5ExZZuda5ene4nhidd/zZNvXcAg+wCinQisME=";
|
||||
};
|
||||
|
||||
extraBuildInputs = lib.optionals withHw [
|
||||
|
||||
@@ -5,13 +5,13 @@
|
||||
}:
|
||||
mkLibretroCore {
|
||||
core = "bsnes";
|
||||
version = "0-unstable-2025-09-19";
|
||||
version = "0-unstable-2025-10-03";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "libretro";
|
||||
repo = "bsnes-libretro";
|
||||
rev = "aeb76d7dc33c1f136db43d65ba9622c14e81b0fa";
|
||||
hash = "sha256-DpCG+DyeSCMdAF+TGB6zSRp/fttoyw9eCXy8PLvRjaY=";
|
||||
rev = "e0e6cef46582a436e8b08a339f4751411dc5bd63";
|
||||
hash = "sha256-fIlTIF1042oWIHxqD7h7MdUfb6QDfIP0jqVlBNOTBmY=";
|
||||
};
|
||||
|
||||
makefile = "Makefile";
|
||||
|
||||
@@ -8,13 +8,13 @@
|
||||
}:
|
||||
mkLibretroCore {
|
||||
core = "flycast";
|
||||
version = "0-unstable-2025-09-19";
|
||||
version = "0-unstable-2025-10-03";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "flyinghead";
|
||||
repo = "flycast";
|
||||
rev = "851dd226648c3e2706cef99a02a5cddad3e2f4b1";
|
||||
hash = "sha256-bBIHmKViwC5+8bM3Tdb4DKxsWw988nGVdAwSHsFciNE=";
|
||||
rev = "af5f67c15d52b16d35e95671a5b74502288c4397";
|
||||
hash = "sha256-eMkyNwGdgyYDmwqYy3xzzSTYqUcoKpQkDYFP8bQdz58=";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
|
||||
|
||||
@@ -85,13 +85,13 @@ in
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "imagemagick";
|
||||
version = "7.1.2-3";
|
||||
version = "7.1.2-4";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "ImageMagick";
|
||||
repo = "ImageMagick";
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-L4apUdF1VJXSVqWAyjYFG/4qDJoJ0ObmSOpd90kqXsU=";
|
||||
hash = "sha256-FOai96rtDWFQZ8vest0pDl6m2swQwXp7hVO2sZa1U2A=";
|
||||
};
|
||||
|
||||
outputs = [
|
||||
|
||||
@@ -83,14 +83,11 @@ in
|
||||
fi
|
||||
'';
|
||||
|
||||
meta =
|
||||
with lib;
|
||||
meta
|
||||
// {
|
||||
description = "Helper for screenshots within sway";
|
||||
maintainers = with maintainers; [ evils ];
|
||||
mainProgram = "grimshot";
|
||||
};
|
||||
meta = meta // {
|
||||
description = "Helper for screenshots within sway";
|
||||
maintainers = [ ];
|
||||
mainProgram = "grimshot";
|
||||
};
|
||||
};
|
||||
|
||||
inactive-windows-transparency =
|
||||
@@ -114,14 +111,11 @@ in
|
||||
'';
|
||||
|
||||
meta =
|
||||
with lib;
|
||||
meta
|
||||
// {
|
||||
|
||||
meta // {
|
||||
description = "It makes inactive sway windows transparent";
|
||||
mainProgram = "${lname}.py";
|
||||
maintainers = with maintainers; [
|
||||
evils # packaged this as a side-effect of grimshot but doesn't use it
|
||||
];
|
||||
maintainers = [ ];
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
lib,
|
||||
stdenv,
|
||||
buildGoModule,
|
||||
buildGo125Module,
|
||||
fetchFromGitHub,
|
||||
fetchFromGitLab,
|
||||
callPackage,
|
||||
@@ -103,15 +102,11 @@ let
|
||||
mkProviderFetcher = fetchFromGitLab;
|
||||
owner = "gitlab-org";
|
||||
};
|
||||
# actions update always fails but can't reproduce the failure.
|
||||
heroku = automated-providers.heroku.override { spdx = "MPL-2.0"; };
|
||||
# mkisofs needed to create ISOs holding cloud-init data and wrapped to terraform via deecb4c1aab780047d79978c636eeb879dd68630
|
||||
libvirt = automated-providers.libvirt.overrideAttrs (_: {
|
||||
propagatedBuildInputs = [ cdrtools ];
|
||||
});
|
||||
minio = automated-providers.minio.override { spdx = "AGPL-3.0-only"; };
|
||||
# requires go >= 1.25.0
|
||||
talos = automated-providers.talos.override { mkProviderGoModule = buildGo125Module; };
|
||||
};
|
||||
|
||||
# Put all the providers we not longer support in this list.
|
||||
@@ -122,7 +117,13 @@ let
|
||||
removed = name: date: throw "the ${name} terraform provider removed from nixpkgs on ${date}";
|
||||
in
|
||||
lib.optionalAttrs config.allowAliases {
|
||||
fly = archived "fly" "2023/10";
|
||||
_assert = archived "_assert" "2025/10";
|
||||
azurestack = archived "azurestack" "2025/10";
|
||||
googleworkspace = archived "googleworkspace" "2025/10";
|
||||
huaweicloudstack = archived "huaweicloudstack" "2025/10";
|
||||
metal = archived "metal" "2025/10";
|
||||
stackpath = archived "stackpath" "2025/10";
|
||||
vra7 = archived "vra7" "2025/10";
|
||||
};
|
||||
|
||||
# excluding aliases, used by terraform-full
|
||||
|
||||
@@ -1,13 +1,4 @@
|
||||
{
|
||||
"_assert": {
|
||||
"hash": "sha256-ngHxzV7lRg6pOtyNTdCv3ToRK/vO016Vp2mlh7QT8Rc=",
|
||||
"homepage": "https://registry.terraform.io/providers/hashicorp/assert",
|
||||
"owner": "hashicorp",
|
||||
"repo": "terraform-provider-assert",
|
||||
"rev": "v0.16.0",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": "sha256-nHaBNYCKfTvaDnz2SeexM2cyNVK5ThPYn4rnGEw7Wi0="
|
||||
},
|
||||
"aci": {
|
||||
"hash": "sha256-+aD4M07xXMTbvp69IuGlO3rSkVEi5NVe5fqEPkWNeM0=",
|
||||
"homepage": "https://registry.terraform.io/providers/CiscoDevNet/aci",
|
||||
@@ -54,11 +45,11 @@
|
||||
"vendorHash": "sha256-bS9fFfttu58a2S3CNLO3FOlLPuk/2h1D0bjO6nJbfP8="
|
||||
},
|
||||
"alicloud": {
|
||||
"hash": "sha256-XYCnAvW8vbNd7wd5Q8fYiT7OooXqGytZMA8ocgLt8zo=",
|
||||
"hash": "sha256-QZaOnNCfVKBTkDSdNw8mQbF8NfJUhEeN2y3tVt1J1D0=",
|
||||
"homepage": "https://registry.terraform.io/providers/aliyun/alicloud",
|
||||
"owner": "aliyun",
|
||||
"repo": "terraform-provider-alicloud",
|
||||
"rev": "v1.260.0",
|
||||
"rev": "v1.260.1",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": "sha256-+Hc2NCCnJ0fB86fvgE4Kak8fwlsXIiv8avIhE/RoWeM="
|
||||
},
|
||||
@@ -126,13 +117,13 @@
|
||||
"vendorHash": null
|
||||
},
|
||||
"aws": {
|
||||
"hash": "sha256-k2lbdaDt/jpkoF5jKll7ZxU+3zkspGvGx/kToqYipAo=",
|
||||
"hash": "sha256-6ZBQ2AFZBwyEUylCqHn4pn6hmYLIpjMzv5L2pvmCT5Q=",
|
||||
"homepage": "https://registry.terraform.io/providers/hashicorp/aws",
|
||||
"owner": "hashicorp",
|
||||
"repo": "terraform-provider-aws",
|
||||
"rev": "v6.14.1",
|
||||
"rev": "v6.15.0",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": "sha256-hG1XnJtN95+jW6AGnV4+EkKaVZwG0PPTMLyHFQ3nXtc="
|
||||
"vendorHash": "sha256-j4tAFLBdQR35EvQNd12XwQ0kD5wSSVi9/f/N1YbI6IM="
|
||||
},
|
||||
"awscc": {
|
||||
"hash": "sha256-wAQLtx+eVtKucdokQLfq1zTAOdMPI2Frio5ILxLGyt8=",
|
||||
@@ -144,11 +135,11 @@
|
||||
"vendorHash": "sha256-xIROXf39bvPjtiKpfn7bfL7SXwHOqUxNqlhrCmDLYGA="
|
||||
},
|
||||
"azuread": {
|
||||
"hash": "sha256-7dbBhQz0MDUAaz4U1ewM2RayWtp5gbo3FrrQ762Tb6A=",
|
||||
"hash": "sha256-9vGXzFLRaQPXECcFtZMnbhHQvEm0FeGwYm4K9utpZf4=",
|
||||
"homepage": "https://registry.terraform.io/providers/hashicorp/azuread",
|
||||
"owner": "hashicorp",
|
||||
"repo": "terraform-provider-azuread",
|
||||
"rev": "v3.5.0",
|
||||
"rev": "v3.6.0",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": null
|
||||
},
|
||||
@@ -161,15 +152,6 @@
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": null
|
||||
},
|
||||
"azurestack": {
|
||||
"hash": "sha256-aSwVa7y1AJ6sExx+bO/93oLBNgSBDJjuPYPY8i3C9T0=",
|
||||
"homepage": "https://registry.terraform.io/providers/hashicorp/azurestack",
|
||||
"owner": "hashicorp",
|
||||
"repo": "terraform-provider-azurestack",
|
||||
"rev": "v1.0.0",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": null
|
||||
},
|
||||
"baiducloud": {
|
||||
"hash": "sha256-zKkXfSIVVW0QxQB/fJNowy1mQPfXlv6HFcNaNlBSIvY=",
|
||||
"homepage": "https://registry.terraform.io/providers/baidubce/baiducloud",
|
||||
@@ -225,13 +207,13 @@
|
||||
"vendorHash": "sha256-pCBmeisWcyw/Box1yrWwYj+hSrsqmToiiom2jS8I1SU="
|
||||
},
|
||||
"buildkite": {
|
||||
"hash": "sha256-w+ljPDKyVlylr87tFhuu/7oCkY/fFeK+LPr7mY7rbP0=",
|
||||
"hash": "sha256-WP1CcGYtyItpMzKvYFiv5q0jQfvB5nSv8suDmSB1tSs=",
|
||||
"homepage": "https://registry.terraform.io/providers/buildkite/buildkite",
|
||||
"owner": "buildkite",
|
||||
"repo": "terraform-provider-buildkite",
|
||||
"rev": "v1.24.0",
|
||||
"rev": "v1.26.0",
|
||||
"spdx": "MIT",
|
||||
"vendorHash": "sha256-2xZ2//qMKfgqob39k++fX6vJEx9YE1NJpGCbDyM1L10="
|
||||
"vendorHash": "sha256-nKXQsAu1tHOHnle7G0Bt+CCNU9AGvxIIv6LJ/INiU7g="
|
||||
},
|
||||
"ccloud": {
|
||||
"hash": "sha256-Dpx0eugcHCJV8GNPqjxx4P9ohgJgB10DTnHr+CeN/iQ=",
|
||||
@@ -298,13 +280,13 @@
|
||||
"vendorHash": "sha256-bD8BHhP4jxBRnFjmZE1MMkBn2/sMqNEaxTlQRMj2Crw="
|
||||
},
|
||||
"cloudscale": {
|
||||
"hash": "sha256-4RU1CD0WwLMd3NsnJWl2Smc8XBYlP9K8Iev16uqsetE=",
|
||||
"hash": "sha256-uqELnAcx72lIIUGEiO7y9lXhiyNgThmCiMtC/EKFpTA=",
|
||||
"homepage": "https://registry.terraform.io/providers/cloudscale-ch/cloudscale",
|
||||
"owner": "cloudscale-ch",
|
||||
"repo": "terraform-provider-cloudscale",
|
||||
"rev": "v4.4.0",
|
||||
"rev": "v5.0.0",
|
||||
"spdx": "MIT",
|
||||
"vendorHash": null
|
||||
"vendorHash": "sha256-elNXA2PH6mDolyuLhUsVBDCiL/ydZfi7LAVPjwnbMIw="
|
||||
},
|
||||
"constellix": {
|
||||
"deleteVendor": true,
|
||||
@@ -462,13 +444,13 @@
|
||||
"vendorHash": "sha256-xIagZvWtlNpz5SQfxbA7r9ojAeS3CW2pwV337ObKOwU="
|
||||
},
|
||||
"fastly": {
|
||||
"hash": "sha256-4sOcbqaC9FV/Si8/A6wvdDREYt7v5z0iNQc5TXWyjSU=",
|
||||
"hash": "sha256-nevSFpLx1N+rM6ps0jstLem/VdAPIhnTaJefLpfLG/A=",
|
||||
"homepage": "https://registry.terraform.io/providers/fastly/fastly",
|
||||
"owner": "fastly",
|
||||
"repo": "terraform-provider-fastly",
|
||||
"rev": "v5.17.0",
|
||||
"rev": "v8.3.0",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": null
|
||||
"vendorHash": "sha256-5T6pwozD0RKDzdd2XAMuHY651jEvo6V6s1gvwYTHTRI="
|
||||
},
|
||||
"flexibleengine": {
|
||||
"hash": "sha256-yEZ9JiUSqFFbfqzOOD59ZBv4yFCeUBBKlp6aiUqDqiM=",
|
||||
@@ -525,11 +507,11 @@
|
||||
"vendorHash": "sha256-29uvPCepGHRPohGY7viaPD9VQPPj9XB/plragACC4e4="
|
||||
},
|
||||
"google": {
|
||||
"hash": "sha256-xQW0UxGIcxD0Y4zdCBnGJhUWfWdMIERk0lkot96ztzI=",
|
||||
"hash": "sha256-463G4/NtViaBH1B1XVzHT6KVQu+4HnqGWX7hw4CjgNA=",
|
||||
"homepage": "https://registry.terraform.io/providers/hashicorp/google",
|
||||
"owner": "hashicorp",
|
||||
"repo": "terraform-provider-google",
|
||||
"rev": "v7.4.0",
|
||||
"rev": "v7.5.0",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": "sha256-cQybnUaDLVmQrtFkiI5k3OwqN9Oks+J1H2kbkNjO4jc="
|
||||
},
|
||||
@@ -542,15 +524,6 @@
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": "sha256-Bii3UrY1WbhewgsURxq7gGVqT1WSszFkif0V88hiyZo="
|
||||
},
|
||||
"googleworkspace": {
|
||||
"hash": "sha256-dedYnsKHizxJZibuvJOMbJoux0W6zgKaK5fxIofKqCY=",
|
||||
"homepage": "https://registry.terraform.io/providers/hashicorp/googleworkspace",
|
||||
"owner": "hashicorp",
|
||||
"repo": "terraform-provider-googleworkspace",
|
||||
"rev": "v0.7.0",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": "sha256-fqVBnAivVekV+4tpkl+E6eNA3wi8mhLevJRCs3W7L2g="
|
||||
},
|
||||
"grafana": {
|
||||
"hash": "sha256-KVNwgn7swWXRNJNpXV8oy++s+CrDZhMPDDP40qIZIlY=",
|
||||
"homepage": "https://registry.terraform.io/providers/grafana/grafana",
|
||||
@@ -597,12 +570,12 @@
|
||||
"vendorHash": "sha256-sPvX69R2BmlY/KhXZgxCunzseoOkz1h2b8yqekBBn0k="
|
||||
},
|
||||
"heroku": {
|
||||
"hash": "sha256-/2XfqyyoxwcFKgbLli1i7PX58OD0iczTPxVVz8Rkeoc=",
|
||||
"hash": "sha256-VGx2J7huF05HU/59Hyo2rxwV3SR+kVJWtrfWoRmln2o=",
|
||||
"homepage": "https://registry.terraform.io/providers/heroku/heroku",
|
||||
"owner": "heroku",
|
||||
"repo": "terraform-provider-heroku",
|
||||
"rev": "v5.2.13",
|
||||
"spdx": null,
|
||||
"rev": "v5.3.1",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": null
|
||||
},
|
||||
"hetznerdns": {
|
||||
@@ -641,15 +614,6 @@
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": null
|
||||
},
|
||||
"huaweicloudstack": {
|
||||
"hash": "sha256-WSJDp+LFjVPquQVMgib/YZV35kktLH2vMCIZJWqakXs=",
|
||||
"homepage": "https://registry.terraform.io/providers/huaweicloud/huaweicloudstack",
|
||||
"owner": "huaweicloud",
|
||||
"repo": "terraform-provider-huaweicloudstack",
|
||||
"rev": "v1.3.0",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": null
|
||||
},
|
||||
"hydra": {
|
||||
"hash": "sha256-A9BemEPLhvYzhksvYRfmhQXY3EEdTxQcmjE9+2+BKqg=",
|
||||
"homepage": "https://registry.terraform.io/providers/DeterminateSystems/hydra",
|
||||
@@ -821,15 +785,6 @@
|
||||
"spdx": "Apache-2.0",
|
||||
"vendorHash": "sha256-L1wufPa7LPPyOPTL+jFQgiWzJoJYS+fCdw3N0KZqKtc="
|
||||
},
|
||||
"metal": {
|
||||
"hash": "sha256-1HTSDVMk2VhoYRLInrBK3bDuYU0SwyhBV1p5A2tlU/I=",
|
||||
"homepage": "https://registry.terraform.io/providers/equinix/metal",
|
||||
"owner": "equinix",
|
||||
"repo": "terraform-provider-metal",
|
||||
"rev": "v3.3.0",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": "sha256-QxbZv6YMa5/I4bTeQBNdmG3EKtLEmstnH7HMiZzFJrI="
|
||||
},
|
||||
"migadu": {
|
||||
"hash": "sha256-XXtDXByaSnnUGLPiwUNTPTHqDOED7IJQsf8b9x0/R8E=",
|
||||
"homepage": "https://registry.terraform.io/providers/metio/migadu",
|
||||
@@ -849,13 +804,13 @@
|
||||
"vendorHash": "sha256-QWBzQXx/dzWZr9dn3LHy8RIvZL1EA9xYqi7Ppzvju7g="
|
||||
},
|
||||
"mongodbatlas": {
|
||||
"hash": "sha256-yBccJeD25hQiwqjMpaYIJM2DhoKzehppjR8NG/IOrQo=",
|
||||
"hash": "sha256-evMjL6I9q80olTkuigJLbAHTDU4nYXNaMVf8cq6yZsM=",
|
||||
"homepage": "https://registry.terraform.io/providers/mongodb/mongodbatlas",
|
||||
"owner": "mongodb",
|
||||
"repo": "terraform-provider-mongodbatlas",
|
||||
"rev": "v2.0.0",
|
||||
"rev": "v2.0.1",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": "sha256-EvTuVhJfNrwAto9+6oi6iYQfgbCnHupkD+dk57vrT/c="
|
||||
"vendorHash": "sha256-BWItAEI+ST5wN/CyTHljFJvutJiDHYjV4HEeLtmhC2o="
|
||||
},
|
||||
"namecheap": {
|
||||
"hash": "sha256-fHH9sHI1mqQ9q9nX9DHJ0qfEfmDB4/2uzyVvUuIAF18=",
|
||||
@@ -930,14 +885,13 @@
|
||||
"vendorHash": "sha256-ssmAveYUVI8z/1UWNeaMX0qdUewowCHNufJIFMirdVg="
|
||||
},
|
||||
"nutanix": {
|
||||
"deleteVendor": true,
|
||||
"hash": "sha256-p1VhGSor/uxQYiSb9enAeu6dtLRuXMKk9m2DtPEj6vs=",
|
||||
"hash": "sha256-nk5wdbAzgBJ6gyYSXZAiNdjx/XQ6XldAMsjb8yv+y7w=",
|
||||
"homepage": "https://registry.terraform.io/providers/nutanix/nutanix",
|
||||
"owner": "nutanix",
|
||||
"repo": "terraform-provider-nutanix",
|
||||
"rev": "v1.9.5",
|
||||
"rev": "v2.3.1",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": "sha256-LRIfxQGwG988HE5fftGl6JmBG7tTknvmgpm4Fu1NbWI="
|
||||
"vendorHash": "sha256-ByB1ztK2/1pTFeO34eXVyQSSbe35qqoCeWe6MPZN7vY="
|
||||
},
|
||||
"oci": {
|
||||
"hash": "sha256-fEvo5R7HutlOmZ6DMvYKQiE0amwk/YPi1T2a55w70hQ=",
|
||||
@@ -1030,11 +984,11 @@
|
||||
"vendorHash": null
|
||||
},
|
||||
"pagerduty": {
|
||||
"hash": "sha256-PkDugN/y3WmsNdl8+3/3l2tEWilJSEnJPdfkTzCm5mE=",
|
||||
"hash": "sha256-oVv0y+49hUOkEU4/N7RvepSYNlgwGz8M8/11tGemAV0=",
|
||||
"homepage": "https://registry.terraform.io/providers/PagerDuty/pagerduty",
|
||||
"owner": "PagerDuty",
|
||||
"repo": "terraform-provider-pagerduty",
|
||||
"rev": "v3.29.0",
|
||||
"rev": "v3.30.1",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": null
|
||||
},
|
||||
@@ -1111,11 +1065,11 @@
|
||||
"vendorHash": "sha256-3o6YRDrq4rQhNAFyqiGJrAoxuAykWw85OExRGSE3kGI="
|
||||
},
|
||||
"rancher2": {
|
||||
"hash": "sha256-durRRgJmbGK0GBvlzzeq7stic8fzxBMmswYhMYnEL6E=",
|
||||
"hash": "sha256-E1E7xrQUOGbGV1xNpZFrIql6zgfzr3jmCbIFREbJdwE=",
|
||||
"homepage": "https://registry.terraform.io/providers/rancher/rancher2",
|
||||
"owner": "rancher",
|
||||
"repo": "terraform-provider-rancher2",
|
||||
"rev": "v8.1.0",
|
||||
"rev": "v8.2.1",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": "sha256-M2lJKmIR66lQKFkInjizn68ax2Gq4sim5Y3vZKyDhZ8="
|
||||
},
|
||||
@@ -1138,13 +1092,13 @@
|
||||
"vendorHash": "sha256-vsnihN98O5RzMZk5YNycCnjpvxklQoLbZolCJXbJRMU="
|
||||
},
|
||||
"rootly": {
|
||||
"hash": "sha256-SRE1T9C3qggCwjl/PdehkabdnuRV8ZW58dc8zhSwPXo=",
|
||||
"hash": "sha256-6m4jzzn5kTGUqY5bitPZI82v+/RA3BXqCYy5aWUCO4c=",
|
||||
"homepage": "https://registry.terraform.io/providers/rootlyhq/rootly",
|
||||
"owner": "rootlyhq",
|
||||
"repo": "terraform-provider-rootly",
|
||||
"rev": "v4.1.0",
|
||||
"rev": "v4.2.0",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": "sha256-39OiEYntUmX2fJZh7G/LcCNFXFmHwdLgFGYz6BUEyOA="
|
||||
"vendorHash": "sha256-auyQLDDQ+tfMQCqICDR5tfvaYrO89Eani7lAsfoPwwU="
|
||||
},
|
||||
"routeros": {
|
||||
"hash": "sha256-k+q4n20bvYK7nn9ZGQEQH70xt6ugNKzK58XyzwrKh0Q=",
|
||||
@@ -1290,15 +1244,6 @@
|
||||
"spdx": "MIT",
|
||||
"vendorHash": "sha256-vcuUt3WIo1TnLApch410JgtyCzliQRYMQQQ2Z9diDZ8="
|
||||
},
|
||||
"stackpath": {
|
||||
"hash": "sha256-n1IPOJ1NlguNMJASCXjNNUK0b5wGYe29aTcw7fNwVcU=",
|
||||
"homepage": "https://registry.terraform.io/providers/stackpath/stackpath",
|
||||
"owner": "stackpath",
|
||||
"repo": "terraform-provider-stackpath",
|
||||
"rev": "v2.1.0",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": "sha256-G+5vSXhxmt0Qsqt7vnecPZfIxAonNF3l7ygQZ0nemnU="
|
||||
},
|
||||
"statuscake": {
|
||||
"hash": "sha256-zXBZZA+2uRN2FeGrayq0a4EBk7T+PvlBIwbuxwM7yBc=",
|
||||
"homepage": "https://registry.terraform.io/providers/StatusCakeDev/statuscake",
|
||||
@@ -1345,20 +1290,20 @@
|
||||
"vendorHash": "sha256-J2fLyYvlnefFIaJ6UwRfJ5nas86JCuOHAdWalr9T9fw="
|
||||
},
|
||||
"temporalcloud": {
|
||||
"hash": "sha256-MnfGps/PeTjhLXXcy37JHy38R3zDqjdLv99SY/F+jGM=",
|
||||
"hash": "sha256-hHHZ+5LF5AoDB2JZyPRce6oEtOZOGi8lYNgbTlAqTuA=",
|
||||
"homepage": "https://registry.terraform.io/providers/temporalio/temporalcloud",
|
||||
"owner": "temporalio",
|
||||
"repo": "terraform-provider-temporalcloud",
|
||||
"rev": "v1.1.0",
|
||||
"rev": "v1.1.1",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": "sha256-M3wnvRxMyU0Yo733E9e8Q++xVTuSXD0W3fB2C14RDNU="
|
||||
"vendorHash": "sha256-9GjhP/Oh2HlVuMcuXFhS7MUmF3eS4qlUsW5XhugaK14="
|
||||
},
|
||||
"tencentcloud": {
|
||||
"hash": "sha256-HKV6JhvwDEAnO0Q3lr/TKMEldj35dyKG0pLremx254Y=",
|
||||
"hash": "sha256-IrZXw7Bf7bYZJDqyqZC7ereYTyDldo7s6kLE5yKVOms=",
|
||||
"homepage": "https://registry.terraform.io/providers/tencentcloudstack/tencentcloud",
|
||||
"owner": "tencentcloudstack",
|
||||
"repo": "terraform-provider-tencentcloud",
|
||||
"rev": "v1.82.25",
|
||||
"rev": "v1.82.27",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": null
|
||||
},
|
||||
@@ -1498,15 +1443,6 @@
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": "sha256-rUYHapEVqRupLOPVbcAH8YP0cuXclMmYTQUkqeOwCN0="
|
||||
},
|
||||
"vra7": {
|
||||
"hash": "sha256-KzxthTn3z0kZTUTKO8zq6DaNMTnfb7gFlbuWgxZtqwo=",
|
||||
"homepage": "https://registry.terraform.io/providers/vmware/vra7",
|
||||
"owner": "vmware",
|
||||
"repo": "terraform-provider-vra7",
|
||||
"rev": "v3.0.15",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": null
|
||||
},
|
||||
"vsphere": {
|
||||
"hash": "sha256-vRO6vxzi4d0hNc0MmQLhN7roONnsjxPBtFt0fyvxWd8=",
|
||||
"homepage": "https://registry.terraform.io/providers/hashicorp/vsphere",
|
||||
@@ -1535,12 +1471,12 @@
|
||||
"vendorHash": "sha256-GRnVhGpVgFI83Lg34Zv1xgV5Kp8ioKTFV5uaqS80ATg="
|
||||
},
|
||||
"yandex": {
|
||||
"hash": "sha256-cQqklICVFkeEIdRza6OIBOlDTbJGX+u0B/9kLkUB9Ds=",
|
||||
"hash": "sha256-ez4HbBd2e3SRau7ejORKfZUbGySxSTTRt7kE9JRVVf0=",
|
||||
"homepage": "https://registry.terraform.io/providers/yandex-cloud/yandex",
|
||||
"owner": "yandex-cloud",
|
||||
"repo": "terraform-provider-yandex",
|
||||
"rev": "v0.159.0",
|
||||
"rev": "v0.162.0",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": "sha256-yR8M9fS7QBvf+UJUXdBNPMf/S0PSwJ/3/VTXo+Gcdvw="
|
||||
"vendorHash": "sha256-iJvhrJVFC+O9f+gy/H2hif4ZQe9SxFdA2qGEIZwIv1Y="
|
||||
}
|
||||
}
|
||||
|
||||
@@ -326,7 +326,7 @@ stdenv.mkDerivation rec {
|
||||
The Programs handle Schematic Capture, and PCB Layout with Gerber output.
|
||||
'';
|
||||
license = lib.licenses.gpl3Plus;
|
||||
maintainers = with lib.maintainers; [ evils ];
|
||||
maintainers = [ ];
|
||||
platforms = lib.platforms.all;
|
||||
broken = stdenv.hostPlatform.isDarwin;
|
||||
mainProgram = "kicad";
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
{
|
||||
lib,
|
||||
repoRevToNameMaybe,
|
||||
fetchgit,
|
||||
fetchzip,
|
||||
}:
|
||||
|
||||
@@ -8,23 +9,103 @@ lib.makeOverridable (
|
||||
{
|
||||
owner,
|
||||
repo,
|
||||
rev,
|
||||
name ? repoRevToNameMaybe repo rev "bitbucket",
|
||||
tag ? null,
|
||||
rev ? null,
|
||||
name ? repoRevToNameMaybe repo (lib.revOrTag rev tag) "bitbucket",
|
||||
fetchSubmodules ? false,
|
||||
leaveDotGit ? false,
|
||||
deepClone ? false,
|
||||
forceFetchGit ? false,
|
||||
fetchLFS ? false,
|
||||
rootDir ? "",
|
||||
sparseCheckout ? lib.optional (rootDir != "") rootDir,
|
||||
meta ? { },
|
||||
... # For hash agility
|
||||
}@args:
|
||||
fetchzip (
|
||||
{
|
||||
inherit name;
|
||||
url = "https://bitbucket.org/${owner}/${repo}/get/${lib.strings.escapeURL rev}.tar.gz";
|
||||
meta.homepage = "https://bitbucket.org/${owner}/${repo}/";
|
||||
}
|
||||
// removeAttrs args [
|
||||
|
||||
assert (
|
||||
lib.assertMsg (lib.xor (tag == null) (
|
||||
rev == null
|
||||
)) "fetchFromBitbucket requires one of either `rev` or `tag` to be provided (not both)."
|
||||
);
|
||||
|
||||
let
|
||||
position = (
|
||||
if args.meta.description or null != null then
|
||||
builtins.unsafeGetAttrPos "description" args.meta
|
||||
else if tag != null then
|
||||
builtins.unsafeGetAttrPos "tag" args
|
||||
else
|
||||
builtins.unsafeGetAttrPos "rev" args
|
||||
);
|
||||
baseUrl = "https://bitbucket.org/${owner}/${repo}";
|
||||
newMeta =
|
||||
meta
|
||||
// {
|
||||
homepage = meta.homepage or baseUrl;
|
||||
}
|
||||
// lib.optionalAttrs (position != null) {
|
||||
# to indicate where derivation originates, similar to make-derivation.nix's mkDerivation
|
||||
position = "${position.file}:${toString position.line}";
|
||||
};
|
||||
gitRepoUrl = "${baseUrl}.git";
|
||||
|
||||
# the tag is escaped to support mercurial-based tags as bitbucket supports them
|
||||
revWithTag = if tag != null then "refs/tags/${lib.strings.escapeURL tag}" else rev;
|
||||
|
||||
passthruAttrs = removeAttrs args [
|
||||
"owner"
|
||||
"repo"
|
||||
"rev"
|
||||
]
|
||||
)
|
||||
"tag"
|
||||
"fetchSubmodules"
|
||||
"forceFetchGit"
|
||||
];
|
||||
|
||||
useFetchGit =
|
||||
fetchSubmodules
|
||||
|| (leaveDotGit == true)
|
||||
|| deepClone
|
||||
|| forceFetchGit
|
||||
|| fetchLFS
|
||||
|| (rootDir != "")
|
||||
|| (sparseCheckout != [ ]);
|
||||
|
||||
fetcher = if useFetchGit then fetchgit else fetchzip;
|
||||
|
||||
fetcherArgs =
|
||||
(
|
||||
if useFetchGit then
|
||||
{
|
||||
inherit
|
||||
rev
|
||||
tag
|
||||
deepClone
|
||||
fetchSubmodules
|
||||
sparseCheckout
|
||||
fetchLFS
|
||||
;
|
||||
url = gitRepoUrl;
|
||||
}
|
||||
// lib.optionalAttrs (leaveDotGit != null) { inherit leaveDotGit; }
|
||||
else
|
||||
{
|
||||
url = "https://bitbucket.org/${owner}/${repo}/get/${revWithTag}.tar.gz";
|
||||
extension = "tar.gz";
|
||||
passthru = {
|
||||
inherit gitRepoUrl;
|
||||
};
|
||||
}
|
||||
)
|
||||
// passthruAttrs
|
||||
// {
|
||||
inherit name;
|
||||
};
|
||||
in
|
||||
fetcher fetcherArgs
|
||||
// {
|
||||
inherit rev;
|
||||
meta = newMeta;
|
||||
inherit owner repo tag;
|
||||
rev = revWithTag;
|
||||
}
|
||||
)
|
||||
|
||||
@@ -4,15 +4,24 @@
|
||||
name = "withWhitespace";
|
||||
owner = "tetov";
|
||||
repo = "fetchbitbucket_tester";
|
||||
rev = "tag%20with%20encoded%20spaces";
|
||||
tag = "tag%20with%20encoded%20spaces";
|
||||
sha256 = "sha256-Nf1Cvbx7Sbab8EeSSBU5baLBiuFYiQtITED+f4tfjC0=";
|
||||
};
|
||||
|
||||
withEncodedWhitespaceGit = testers.invalidateFetcherByDrvHash fetchFromBitbucket {
|
||||
name = "withWhitespaceGit";
|
||||
owner = "tetov";
|
||||
repo = "fetchbitbucket_tester";
|
||||
tag = "tag%20with%20encoded%20spaces";
|
||||
sha256 = "sha256-Nf1Cvbx7Sbab8EeSSBU5baLBiuFYiQtITED+f4tfjC0=";
|
||||
forceFetchGit = true;
|
||||
};
|
||||
|
||||
withoutWhitespace = testers.invalidateFetcherByDrvHash fetchFromBitbucket {
|
||||
name = "withoutWhitespace";
|
||||
owner = "tetov";
|
||||
repo = "fetchbitbucket_tester";
|
||||
rev = "main";
|
||||
rev = "6b611eb75c7b3bf04b510dfc1268284039d55542";
|
||||
sha256 = "sha256-eTd773gE1z4+Fl2YPBbbsrADD4Dr7sFGoOWgphXUhtE=";
|
||||
};
|
||||
}
|
||||
|
||||
@@ -7,11 +7,14 @@
|
||||
curl, # Note that `curl' may be `null', in case of the native stdenvNoCC.
|
||||
cacert ? null,
|
||||
rewriteURL,
|
||||
hashedMirrors,
|
||||
}:
|
||||
|
||||
let
|
||||
|
||||
mirrors = import ./mirrors.nix;
|
||||
mirrors = import ./mirrors.nix // {
|
||||
inherit hashedMirrors;
|
||||
};
|
||||
|
||||
# Write the list of mirrors to a file that we can reuse between
|
||||
# fetchurl instantiations, instead of passing the mirrors to
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
{
|
||||
|
||||
# Content-addressable Nix mirrors
|
||||
hashedMirrors = [
|
||||
"https://tarballs.nixos.org"
|
||||
];
|
||||
hashedMirrors = throw "Use config.hashedMirrors instead of (import ./pkgs/build-support/fetchurl/mirrors.nix).hashedMirrors";
|
||||
|
||||
# Mirrors for mirror://site/filename URIs, where "site" is
|
||||
# "sourceforge", "gnu", etc.
|
||||
|
||||
@@ -22,6 +22,21 @@
|
||||
${jq}/bin/jq -r '.headers.Hello' $out | ${moreutils}/bin/sponge $out
|
||||
'';
|
||||
};
|
||||
|
||||
# Tests that hashedMirrors works
|
||||
hashedMirrors = testers.invalidateFetcherByDrvHash fetchurl {
|
||||
# Make sure that we can only download from hashed mirrors
|
||||
url = "http://broken";
|
||||
# A file with this hash is definitely on tarballs.nixos.org
|
||||
sha256 = "1j1y3cq6ys30m734axc0brdm2q9n2as4h32jws15r7w5fwr991km";
|
||||
|
||||
# No chance
|
||||
curlOptsList = [
|
||||
"--retry"
|
||||
"0"
|
||||
];
|
||||
};
|
||||
|
||||
# Tests that downloadToTemp works with hashedMirrors
|
||||
no-skipPostFetch = testers.invalidateFetcherByDrvHash fetchurl {
|
||||
# Make sure that we can only download from hashed mirrors
|
||||
@@ -40,6 +55,5 @@
|
||||
# $downloadedFile, but here we know that because the URL is broken, it will
|
||||
# have to fallback to fetching the previously-built derivation from
|
||||
# tarballs.nixos.org, which provides pre-built derivation outputs.
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
@@ -13,7 +13,7 @@ If `gopls` is compiled for Go 1.23, it won't work for projects that require Go 1
|
||||
|
||||
Go only ever has two supported toolchains. With a new minor release, the second last Go toolchain is automatically end of life, meaning it won't receive security updates anymore.
|
||||
|
||||
Based on this, we align on the following policy for toolchain/builder upgrades:
|
||||
Based on this, we align on the following policy for toolchain/builder upgrades for the unstable release:
|
||||
|
||||
1. Default toolchain (the `go` package) and builder (`buildGoModule`) are upgraded to the latest minor release of Go as soon as it is released.
|
||||
As it is a mass rebuild, this package will be made against the `staging` branch.
|
||||
@@ -42,4 +42,8 @@ Based on this, we align on the following policy for toolchain/builder upgrades:
|
||||
If the package won't build with that builder anymore, the package is marked broken.
|
||||
It is the package maintainers responsibility to fix the package and get it working with a supported Go toolchain.
|
||||
|
||||
For the stable release, we recognize that (1) removing a Go version, or updating the `go_latest` or `go` packages to a new Go minor release, would be a breaking change, and (2) some packages will need backports (e.g. for security reasons) that require the latest Go version.
|
||||
Therefore, on the stable release, new Go versions will be backported to the `release-2x.xx` branch, but the old versions will remain, and `go`, `buildGoModule`, `go_latest`, and `buildGoLatestModule` will remain unchanged.
|
||||
However, `rc` versions should not be backported to the stable branch.
|
||||
|
||||
[1]: http://go.dev/doc/go1compat
|
||||
|
||||
@@ -16,7 +16,6 @@ lib.extendMkDerivation {
|
||||
{
|
||||
nativeBuildInputs ? [ ], # Native build inputs used for the derivation.
|
||||
passthru ? { },
|
||||
patches ? [ ],
|
||||
|
||||
# A function to override the `goModules` derivation.
|
||||
overrideModAttrs ? (finalAttrs: previousAttrs: { }),
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
fetchzip,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "64tass";
|
||||
version = "1.60.3243";
|
||||
|
||||
src = fetchzip {
|
||||
url = "mirror://sourceforge/tass64/64tass-${finalAttrs.version}-src.zip";
|
||||
hash = "sha256-73/MoQqqM966xtN4D8F85HZSw/gEpcFQ2JiH3k6vI+4=";
|
||||
};
|
||||
|
||||
installFlags = [ "prefix=$(out)" ];
|
||||
|
||||
meta = {
|
||||
homepage = "https://tass64.sourceforge.net/";
|
||||
description = "Multi pass optimizing macro assembler for the 65xx series of processors";
|
||||
license = [
|
||||
lib.licenses.gpl2Plus
|
||||
lib.licenses.lgpl2Only
|
||||
lib.licenses.lgpl21Only
|
||||
lib.licenses.mit
|
||||
];
|
||||
maintainers = [ lib.maintainers.matthewcroughan ];
|
||||
platforms = lib.platforms.linux;
|
||||
};
|
||||
})
|
||||
@@ -8,13 +8,13 @@
|
||||
|
||||
buildGoModule (finalAttrs: {
|
||||
pname = "alertmanager-ntfy";
|
||||
version = "1.0.1";
|
||||
version = "1.0.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "alexbakker";
|
||||
repo = "alertmanager-ntfy";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-CtjWZIw0RHVnPP5OMiLbPjv/EuJI6GfWo2hEzRi7zVI=";
|
||||
hash = "sha256-aVK8HCRXRprNoBhILLN7F/Fb3RePPzBW4vBMnQr9zRU=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-CpVGLM6ZtfYODhP6gzWGcnpEuDvKRiMWzoPNm2qtML4=";
|
||||
|
||||
@@ -74,7 +74,7 @@ stdenv.mkDerivation {
|
||||
description = "(deprecated) Complete set of free CAD tools and portable libraries for VLSI design";
|
||||
homepage = "http://coriolis.lip6.fr/";
|
||||
license = with licenses; gpl2Plus;
|
||||
maintainers = with maintainers; [ l-as ];
|
||||
maintainers = [ ];
|
||||
platforms = with platforms; linux;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -57,6 +57,6 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
description = "Soundcard firmwares from the alsa project";
|
||||
license = lib.licenses.gpl2Plus;
|
||||
platforms = lib.platforms.linux;
|
||||
maintainers = with lib.maintainers; [ l-as ];
|
||||
maintainers = [ ];
|
||||
};
|
||||
})
|
||||
|
||||
@@ -60,6 +60,6 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
"alsa-topology"
|
||||
];
|
||||
platforms = with lib.platforms; linux ++ freebsd;
|
||||
maintainers = with lib.maintainers; [ l-as ];
|
||||
maintainers = [ ];
|
||||
};
|
||||
})
|
||||
|
||||
@@ -82,13 +82,13 @@ let
|
||||
in
|
||||
stdenv.mkDerivation {
|
||||
pname = "ansel";
|
||||
version = "0-unstable-2025-06-11";
|
||||
version = "0-unstable-2025-10-04";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "aurelienpierreeng";
|
||||
repo = "ansel";
|
||||
rev = "b51cfa38c41abe9933b40e1583807b105c5933c1";
|
||||
hash = "sha256-EEML6agNDQbCZ1+b4dTHr3JA9Jh3iTW0U4krVylGVTg=";
|
||||
rev = "dd5b73cd78d32618aca3f81a041e45c8d2adcece";
|
||||
hash = "sha256-x8glXiweW1/mzPjGrGRDeCHIG1GqbjvEmAM4sEhor14=";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
|
||||
|
||||
@@ -8,16 +8,16 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "auth0-cli";
|
||||
version = "1.20.1";
|
||||
version = "1.21.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "auth0";
|
||||
repo = "auth0-cli";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-puRrqghNyzui4wnvCPcTRvFrdzLQWtkIds9xvAjkvMQ=";
|
||||
hash = "sha256-HII1qRJ4or5gncSVUA41DmkC8EQ9w6fdmMM15JTUFsw=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-VTHdtcSw2yHsNNx+4zR62i0c8iDOTPumb2l+HqI1GLI=";
|
||||
vendorHash = "sha256-g/vpUbtWFKyoPObpd9yOdsbzD/8d0SjAUZzL7A92bio=";
|
||||
|
||||
ldflags = [
|
||||
"-s"
|
||||
|
||||
@@ -27,14 +27,14 @@
|
||||
}:
|
||||
stdenv.mkDerivation {
|
||||
pname = "basalt-monado";
|
||||
version = "0-unstable-2024-06-21";
|
||||
version = "0-unstable-2025-09-25";
|
||||
|
||||
src = fetchFromGitLab {
|
||||
domain = "gitlab.freedesktop.org";
|
||||
owner = "mateosss";
|
||||
repo = "basalt";
|
||||
rev = "385c161f35720df3a6c606054565f9d49a1c5787";
|
||||
hash = "sha256-+2/pc2OWDwE04xPcfHL5GGyhQ1ZTN6o7cCNAilDgd2Y=";
|
||||
rev = "5337898271f5c2ce523258e93e80fd870130be31";
|
||||
hash = "sha256-IoXZlXyOc5y9aSHBU3WCNhHi4L9xzHmbv6VMEvX2ZeE=";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
|
||||
|
||||
@@ -8,13 +8,13 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "bom";
|
||||
version = "0.6.0";
|
||||
version = "0.7.1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "kubernetes-sigs";
|
||||
repo = "bom";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-nYzBaFtOJhqO0O6MJsxTw/mxsIOa+cnU27nOFRe2/uI=";
|
||||
hash = "sha256-OLbzk1Ix8N2R+od3NQg0JviEcnw6Sw1+wrak26ZWYFw=";
|
||||
# populate values that require us to use git. By doing this in postFetch we
|
||||
# can delete .git afterwards and maintain better reproducibility of the src.
|
||||
leaveDotGit = true;
|
||||
@@ -27,7 +27,7 @@ buildGoModule rec {
|
||||
'';
|
||||
};
|
||||
|
||||
vendorHash = "sha256-q2dK1hO3ruvts4BtQ1VGgTH3qNMzmS22CUuA52t5OvE=";
|
||||
vendorHash = "sha256-gHlrpseovxAv+YdHipUwuIhUDoK05oizMfUpQTHqi6M=";
|
||||
|
||||
nativeBuildInputs = [ installShellFiles ];
|
||||
|
||||
|
||||
@@ -46,6 +46,6 @@ stdenv.mkDerivation rec {
|
||||
homepage = "https://github.com/knorrie/btrfs-heatmap";
|
||||
license = licenses.mit;
|
||||
platforms = platforms.linux;
|
||||
maintainers = [ maintainers.evils ];
|
||||
maintainers = [ ];
|
||||
};
|
||||
}
|
||||
|
||||
@@ -7,13 +7,13 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "buildkit";
|
||||
version = "0.24.0";
|
||||
version = "0.25.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "moby";
|
||||
repo = "buildkit";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-cii+A+CFJcuix++f4ZdW6z5GKpPGdp9C9iJS+KPb4LY=";
|
||||
hash = "sha256-6BLu9wz/V0YSEEFelUMg1mYG6MxZgnkW4lwd5A+X90Q=";
|
||||
};
|
||||
|
||||
vendorHash = null;
|
||||
|
||||
@@ -10,16 +10,16 @@
|
||||
|
||||
rustPlatform.buildRustPackage (finalAttrs: {
|
||||
pname = "c2patool";
|
||||
version = "0.23.2";
|
||||
version = "0.23.4";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "contentauth";
|
||||
repo = "c2pa-rs";
|
||||
tag = "c2patool-v${finalAttrs.version}";
|
||||
hash = "sha256-elEl0tSO7SEbyMuLhOxnkiejmalJgtEGzX2hWNBYISs=";
|
||||
hash = "sha256-6y7IKuYnwSSrfe44U+fNU8Q9YdHOq2Btvie6ZqTIBRw=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-dt+6bJ1ax/hR8ZAx/HvkePh5Y3/Cl/O8BCuwEW2aJTk=";
|
||||
cargoHash = "sha256-JnbvX/EkvatP/xlY+cTtRjVV+Rz2jjFIsqIvOFXqB5Q=";
|
||||
|
||||
# use the non-vendored openssl
|
||||
env.OPENSSL_NO_VENDOR = 1;
|
||||
|
||||
@@ -19,13 +19,13 @@ in
|
||||
llvmPackages.stdenv.mkDerivation (finalAttrs: {
|
||||
|
||||
pname = "c3c${optionalString debug "-debug"}";
|
||||
version = "0.7.5";
|
||||
version = "0.7.6";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "c3lang";
|
||||
repo = "c3c";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-o95Y5CYPITjn8KjxIZlBtwc6FfvZo2m5atR1Fyh9w+c=";
|
||||
hash = "sha256-VZFMRu3iI3L57cQDLeS1I+1GiIWxAjUnO/cXbISB7M8=";
|
||||
};
|
||||
|
||||
cmakeBuildType = if debug then "Debug" else "Release";
|
||||
|
||||
@@ -7,16 +7,16 @@
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "cargo-nextest";
|
||||
version = "0.9.104";
|
||||
version = "0.9.105";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "nextest-rs";
|
||||
repo = "nextest";
|
||||
rev = "cargo-nextest-${version}";
|
||||
hash = "sha256-CZNnOuMF5P3OgdwlAfUgbbXnDVm4IQ7P617Rblq0lgk=";
|
||||
hash = "sha256-IBw6adO9Mzv878n+glLJTNeFykx6bGxfrPGxl014/7o=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-jppSWm20Md++mxvs/h1pB1Bh/02muWqUm1DyR46nusY=";
|
||||
cargoHash = "sha256-qHiifv1je7oNwOGYeT/QGcfagiXcLTCTG2kHV1rJJ4o=";
|
||||
|
||||
cargoBuildFlags = [
|
||||
"-p"
|
||||
|
||||
@@ -10,16 +10,16 @@
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "cargo-tarpaulin";
|
||||
version = "0.32.8";
|
||||
version = "0.33.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "xd009642";
|
||||
repo = "tarpaulin";
|
||||
rev = version;
|
||||
hash = "sha256-DdDYTMtiHFrTnUihhZlHB9ZuuyXwGL8eQ4mqgsgPnsQ=";
|
||||
hash = "sha256-yCuyeBL/7Dh9+V7fWvKkmj9OLGh88Jre7o0+TQXem9U=";
|
||||
};
|
||||
|
||||
cargoHash = "sha256-2VnQo+WSc/bMMnGXY+kyLh5P2a39S8KDirfqbLJRSu0=";
|
||||
cargoHash = "sha256-S3cIcw6ZDAn8DVbCM7T5t7R3t45iGuh5600KeKQNXS8=";
|
||||
|
||||
nativeBuildInputs = [
|
||||
pkg-config
|
||||
|
||||
@@ -1,21 +1,23 @@
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
fetchurl,
|
||||
zlib,
|
||||
fetchFromGitHub,
|
||||
bzip2,
|
||||
cgl,
|
||||
clp,
|
||||
pkg-config,
|
||||
zlib,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "cbc";
|
||||
version = "2.10.4";
|
||||
version = "2.10.12";
|
||||
|
||||
# Note: Cbc 2.10.5 contains Clp 1.17.5 which hits this bug
|
||||
# that breaks or-tools https://github.com/coin-or/Clp/issues/130
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://www.coin-or.org/download/source/Cbc/Cbc-${version}.tgz";
|
||||
sha256 = "0zq66j1vvpslswhzi9yfgkv6vmg7yry4pdmfgqaqw2vhyqxnsy39";
|
||||
src = fetchFromGitHub {
|
||||
owner = "coin-or";
|
||||
repo = "Cbc";
|
||||
tag = "releases/${finalAttrs.version}";
|
||||
sha256 = "sha256-0Sz4/7CRKrArIUy/XxGIP7WMmICqDJ0VxZo62thChYQ=";
|
||||
};
|
||||
|
||||
# or-tools has a hard dependency on Cbc static libraries, so we build both
|
||||
@@ -25,13 +27,21 @@ stdenv.mkDerivation rec {
|
||||
]
|
||||
++ lib.optionals stdenv.cc.isClang [ "CXXFLAGS=-std=c++14" ];
|
||||
|
||||
nativeBuildInputs = [ pkg-config ];
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
hardeningDisable = [ "format" ];
|
||||
|
||||
buildInputs = [
|
||||
zlib
|
||||
bzip2
|
||||
zlib
|
||||
];
|
||||
|
||||
# cbc lists cgl and clp in its .pc requirements, so it needs to be propagated.
|
||||
propagatedBuildInputs = [
|
||||
cgl
|
||||
clp
|
||||
];
|
||||
|
||||
# FIXME: move share/coin/Data to a separate output?
|
||||
@@ -43,4 +53,4 @@ stdenv.mkDerivation rec {
|
||||
platforms = lib.platforms.linux ++ lib.platforms.darwin;
|
||||
description = "Mixed integer programming solver";
|
||||
};
|
||||
}
|
||||
})
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
fetchFromGitHub,
|
||||
nodejs,
|
||||
pnpm_10,
|
||||
npmHooks,
|
||||
}:
|
||||
let
|
||||
pnpm = pnpm_10;
|
||||
in
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "changelogen";
|
||||
version = "0.6.2";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "unjs";
|
||||
repo = "changelogen";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-N6X9Wffl9WumCXvAt4y+vs3ZJY7NheK+O8BObmuIa/g=";
|
||||
};
|
||||
|
||||
pnpmDeps = pnpm.fetchDeps {
|
||||
inherit (finalAttrs) pname version src;
|
||||
fetcherVersion = 2;
|
||||
hash = "sha256-UKSIfn2iR8Ydk9ViGCgWtspZr1FjTeW49UMwTcL57UA=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
nodejs
|
||||
pnpm.configHook
|
||||
npmHooks.npmInstallHook
|
||||
];
|
||||
|
||||
buildPhase = ''
|
||||
runHook preBuild
|
||||
|
||||
pnpm run build
|
||||
|
||||
runHook postBuild
|
||||
'';
|
||||
|
||||
dontNpmPrune = true;
|
||||
|
||||
meta = {
|
||||
description = "Beautiful Changelogs using Conventional Commits";
|
||||
homepage = "https://github.com/unjs/changelogen";
|
||||
changelog = "https://github.com/unjs/changelogen/releases/tag/v${finalAttrs.version}";
|
||||
license = lib.licenses.mit;
|
||||
maintainers = with lib.maintainers; [ higherorderlogic ];
|
||||
mainProgram = "changelogen";
|
||||
platforms = nodejs.meta.platforms;
|
||||
};
|
||||
})
|
||||
@@ -37,14 +37,14 @@ with py.pkgs;
|
||||
|
||||
python3.pkgs.buildPythonApplication rec {
|
||||
pname = "checkov";
|
||||
version = "3.2.473";
|
||||
version = "3.2.474";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "bridgecrewio";
|
||||
repo = "checkov";
|
||||
tag = version;
|
||||
hash = "sha256-FfzAMuFF+ftjcKn+6uYgoeUPoBDnkVTBCPSeom6KR5k=";
|
||||
hash = "sha256-q0knnfogAPTqzEluOyU4OwXWnFYPilW9/NtuhZd50GA=";
|
||||
};
|
||||
|
||||
pythonRelaxDeps = [
|
||||
|
||||
@@ -55,7 +55,7 @@ stdenv.mkDerivation (
|
||||
description = "Fork of Chez Scheme for Racket";
|
||||
homepage = "https://github.com/racket/ChezScheme";
|
||||
license = lib.licenses.asl20;
|
||||
maintainers = with lib.maintainers; [ l-as ];
|
||||
maintainers = [ ];
|
||||
platforms = lib.platforms.unix;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -1,26 +1,54 @@
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
fetchurl,
|
||||
coreutils,
|
||||
fetchFromGitHub,
|
||||
zuo,
|
||||
zlib,
|
||||
lz4,
|
||||
libffi,
|
||||
cctools,
|
||||
darwin,
|
||||
ncurses,
|
||||
libiconv,
|
||||
libX11,
|
||||
libuuid,
|
||||
testers,
|
||||
}@args:
|
||||
writableTmpDirAsHomeHook,
|
||||
buildPackages,
|
||||
}:
|
||||
let
|
||||
inherit (stdenv.hostPlatform) extensions;
|
||||
|
||||
arch =
|
||||
{
|
||||
"x86_64-linux" = "ta6le";
|
||||
"x86-linux" = "ti3le";
|
||||
"aarch64-linux" = "tarm64le";
|
||||
"x86_64-darwin" = "ta6osx";
|
||||
"aarch64-darwin" = "tarm64osx";
|
||||
"x86_64-windows" = "ta6nt";
|
||||
"aarch64-windows" = "tarm64nt";
|
||||
}
|
||||
.${stdenv.hostPlatform.system}
|
||||
or (throw "Unsupported host system, try checking https://cisco.github.io/ChezScheme/release_notes/latest/release_notes.html to see if ${stdenv.hostPlatform.system} is supported");
|
||||
in
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "chez-scheme";
|
||||
version = "10.2.0";
|
||||
|
||||
src = fetchurl {
|
||||
url = "https://github.com/cisco/ChezScheme/releases/download/v${finalAttrs.version}/csv${finalAttrs.version}.tar.gz";
|
||||
hash = "sha256-t5WRbUz+1ZJAxfRLG1B6hlfv0o5i5y4TTQNIbp8+N0o=";
|
||||
src = fetchFromGitHub {
|
||||
owner = "cisco";
|
||||
repo = "ChezScheme";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-wAEnuC6hktCK/l00G48jYD9fwdyiXkzHjC2YYVeCJXo=";
|
||||
# Vendored nanopass and stex
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
|
||||
strictDeps = true;
|
||||
depsBuildBuild = [
|
||||
zuo # Used as the build driver
|
||||
buildPackages.stdenv.cc # Needed for cross
|
||||
];
|
||||
nativeBuildInputs =
|
||||
lib.optionals stdenv.hostPlatform.isDarwin [
|
||||
cctools
|
||||
@@ -28,42 +56,54 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
++ lib.optionals (stdenv.hostPlatform.isDarwin && stdenv.hostPlatform.isAarch64) [
|
||||
darwin.autoSignDarwinBinariesHook
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
ncurses
|
||||
libiconv
|
||||
zlib
|
||||
lz4
|
||||
libffi
|
||||
]
|
||||
++ lib.optionals stdenv.hostPlatform.isUnix [
|
||||
libX11
|
||||
libuuid
|
||||
];
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
env.NIX_CFLAGS_COMPILE = lib.optionalString stdenv.cc.isGNU "-Wno-error=format-truncation";
|
||||
|
||||
/*
|
||||
** We have to fix a few occurrences to tools with absolute
|
||||
** paths in some helper scripts, otherwise the build will fail on
|
||||
** NixOS or in any chroot build.
|
||||
*/
|
||||
patchPhase = ''
|
||||
substituteInPlace ./makefiles/installsh \
|
||||
--replace-warn "/usr/bin/true" "${coreutils}/bin/true"
|
||||
|
||||
substituteInPlace zlib/configure \
|
||||
--replace-warn "/usr/bin/libtool" libtool
|
||||
'';
|
||||
|
||||
/*
|
||||
** Don't use configureFlags, since that just implicitly appends
|
||||
** everything onto a --prefix flag, which ./configure gets very angry
|
||||
** about.
|
||||
** Set to use Nixpkgs dependencies when possible
|
||||
** instead of vendored dependencies.
|
||||
**
|
||||
** Also, carefully set a manual workarea argument, so that we
|
||||
** Carefully set a manual workarea argument, so that we
|
||||
** can later easily find the machine type that we built Chez
|
||||
** for.
|
||||
*/
|
||||
configurePhase = ''
|
||||
./configure --as-is --threads --installprefix=$out --installman=$out/share/man
|
||||
'';
|
||||
enableParallelBuilding = true;
|
||||
dontAddPrefix = true;
|
||||
configurePlatforms = [ ]; # So it doesn't add the default --build --host flags
|
||||
configureFlags = [
|
||||
# Skip submodule update
|
||||
"--as-is"
|
||||
# Threaded version
|
||||
"--threads"
|
||||
"--installprefix=${placeholder "out"}"
|
||||
"--installman=${placeholder "out"}/share/man"
|
||||
"--enable-libffi"
|
||||
"CC_FOR_BUILD=cc"
|
||||
# Use Nixpkgs dependencies
|
||||
"ZUO=zuo"
|
||||
"ZLIB=${zlib}/lib/libz${extensions.sharedLibrary}"
|
||||
"LZ4=${lz4.lib}/lib/liblz4${extensions.sharedLibrary}"
|
||||
# Append to CFLAGS or else get errors
|
||||
# Don't set CFLAGS so it can do some detections stuff
|
||||
"CFLAGS+=${lib.optionalString stdenv.cc.isGNU "-Wno-error=format-truncation"}"
|
||||
]
|
||||
++ lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [
|
||||
"--cross"
|
||||
"-m=${arch}"
|
||||
];
|
||||
|
||||
enableParallelChecking = true;
|
||||
nativeCheckInputs = [ writableTmpDirAsHomeHook ];
|
||||
doCheck = false; # Filesystem checks are impure
|
||||
|
||||
# ** Clean up some of the examples from the build output.
|
||||
postInstall = ''
|
||||
@@ -72,18 +112,20 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
|
||||
setupHook = ./setup-hook.sh;
|
||||
|
||||
passthru.tests = {
|
||||
version = testers.testVersion {
|
||||
package = finalAttrs.finalPackage;
|
||||
};
|
||||
passthru.tests.version = testers.testVersion {
|
||||
package = finalAttrs.finalPackage;
|
||||
};
|
||||
|
||||
meta = {
|
||||
description = "Powerful and incredibly fast R6RS Scheme compiler";
|
||||
homepage = "https://cisco.github.io/ChezScheme/";
|
||||
changelog = "https://cisco.github.io/ChezScheme/release_notes/v${finalAttrs.version}/release_notes.html";
|
||||
license = lib.licenses.asl20;
|
||||
maintainers = with lib.maintainers; [ thoughtpolice ];
|
||||
platforms = lib.platforms.unix;
|
||||
maintainers = with lib.maintainers; [
|
||||
thoughtpolice
|
||||
RossSmyth
|
||||
];
|
||||
platforms = lib.platforms.all;
|
||||
mainProgram = "scheme";
|
||||
};
|
||||
})
|
||||
|
||||
@@ -11,14 +11,14 @@
|
||||
|
||||
python3Packages.buildPythonApplication {
|
||||
pname = "chirp";
|
||||
version = "0.4.0-unstable-2025-09-22";
|
||||
version = "0.4.0-unstable-2025-10-02";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "kk7ds";
|
||||
repo = "chirp";
|
||||
rev = "d958adbc6c332d6bbac4e2844025ca7331bb01b9";
|
||||
hash = "sha256-htpdcm705Pm5a+me8vo5aQVWRAKTVPYac/0KgIpRKuA=";
|
||||
rev = "bf848935eef3a739948a4a6c3ef8b5a31807481e";
|
||||
hash = "sha256-8hQmH62yplZ5xao7nVwRdmyPQj3x5eitSBmFJYU3mb4=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
From 69b825ef5daebdb6e3b51ce23663003807028634 Mon Sep 17 00:00:00 2001
|
||||
From: Thomas Gerbet <thomas@gerbet.me>
|
||||
Date: Sun, 28 Sep 2025 21:45:34 +0200
|
||||
Subject: [PATCH] Use `@CMAKE_INSTALL_FULL_*DIR@` in pkg-config files
|
||||
|
||||
This make possible to install to absolute paths and not only to relative
|
||||
paths.
|
||||
---
|
||||
cmake/civetweb-cpp.pc.in | 4 ++--
|
||||
cmake/civetweb.pc.in | 4 ++--
|
||||
2 files changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/cmake/civetweb-cpp.pc.in b/cmake/civetweb-cpp.pc.in
|
||||
index ca1232c5..dc2d99e3 100644
|
||||
--- a/cmake/civetweb-cpp.pc.in
|
||||
+++ b/cmake/civetweb-cpp.pc.in
|
||||
@@ -1,7 +1,7 @@
|
||||
prefix=@CMAKE_INSTALL_PREFIX@
|
||||
exec_prefix=${prefix}
|
||||
-includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@
|
||||
-libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@
|
||||
+includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@
|
||||
+libdir=@CMAKE_INSTALL_FULL_LIBDIR@
|
||||
|
||||
Name: @PROJECT_NAME@-cpp
|
||||
Description: generic graph library
|
||||
diff --git a/cmake/civetweb.pc.in b/cmake/civetweb.pc.in
|
||||
index 27cea8f1..dd669c5f 100644
|
||||
--- a/cmake/civetweb.pc.in
|
||||
+++ b/cmake/civetweb.pc.in
|
||||
@@ -1,7 +1,7 @@
|
||||
prefix=@CMAKE_INSTALL_PREFIX@
|
||||
exec_prefix=${prefix}
|
||||
-includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@
|
||||
-libdir=${exec_prefix}/@CMAKE_INSTALL_LIBDIR@
|
||||
+includedir=@CMAKE_INSTALL_FULL_INCLUDEDIR@
|
||||
+libdir=@CMAKE_INSTALL_FULL_LIBDIR@
|
||||
|
||||
Name: @PROJECT_NAME@
|
||||
Description: generic graph library
|
||||
--
|
||||
2.51.0
|
||||
|
||||
@@ -2,20 +2,30 @@
|
||||
lib,
|
||||
stdenv,
|
||||
fetchFromGitHub,
|
||||
fetchpatch,
|
||||
cmake,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "civetweb";
|
||||
version = "1.15";
|
||||
version = "1.16";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "civetweb";
|
||||
repo = "civetweb";
|
||||
rev = "v${version}";
|
||||
sha256 = "sha256-Qh6BGPk7a01YzCeX42+Og9M+fjXRs7kzNUCyT4mYab4=";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-eXb5f2jhtfxDORG+JniSy17kzB7A4vM0UnUQAfKTquU=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
./fix-pkg-config-files.patch
|
||||
(fetchpatch {
|
||||
name = "CVE-2025-55763.patch";
|
||||
url = "https://github.com/civetweb/civetweb/commit/76e222bcb77ba8452e5da4e82ae6cecd499c25e0.patch";
|
||||
hash = "sha256-gv2FR53SxmRCCTRjj17RhIjoHkgOz5ENs9oHmcfFmw8=";
|
||||
})
|
||||
];
|
||||
|
||||
outputs = [
|
||||
"out"
|
||||
"dev"
|
||||
@@ -47,6 +57,9 @@ stdenv.mkDerivation rec {
|
||||
#
|
||||
# [1] https://github.com/civetweb/civetweb/blob/cafd5f8fae3b859b7f8c29feb03ea075c7221497/CMakeLists.txt#L56
|
||||
"-DCIVETWEB_THREAD_STACK_SIZE=0"
|
||||
|
||||
# Workaround CMake 4 compat
|
||||
(lib.cmakeFeature "CMAKE_POLICY_VERSION_MINIMUM" "3.5")
|
||||
];
|
||||
|
||||
meta = {
|
||||
@@ -55,4 +68,4 @@ stdenv.mkDerivation rec {
|
||||
homepage = "https://github.com/civetweb/civetweb";
|
||||
license = [ lib.licenses.mit ];
|
||||
};
|
||||
}
|
||||
})
|
||||
|
||||
@@ -19,17 +19,17 @@
|
||||
|
||||
let
|
||||
deltachat-rpc-server' = deltachat-rpc-server.overrideAttrs rec {
|
||||
version = "2.11.0";
|
||||
version = "2.15.0";
|
||||
src = fetchFromGitHub {
|
||||
owner = "chatmail";
|
||||
repo = "core";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-W1DEG72Fk98pp0lm5+AyVb9zcpE5c2mqElOHFpofx58=";
|
||||
hash = "sha256-sFAE90ptPBzT/w4wlGgQe1ERMD2ZAvf4pZ8YW8NEkLU=";
|
||||
};
|
||||
cargoDeps = rustPlatform.fetchCargoVendor {
|
||||
pname = "chatmail-core";
|
||||
inherit version src;
|
||||
hash = "sha256-P/wIat9sflXfloboMdN15EGo1cqxgPZ0OBDYF/iB/7A=";
|
||||
hash = "sha256-MmSjIn4x3b2gpagJnl2r4Z5DXSufZMoohvAf0v5VUbE=";
|
||||
};
|
||||
};
|
||||
electron = electron_37;
|
||||
@@ -37,19 +37,19 @@ let
|
||||
in
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "deltachat-desktop";
|
||||
version = "2.11.0";
|
||||
version = "2.15.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "deltachat";
|
||||
repo = "deltachat-desktop";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-M/QqD+g85o4xHF8BmusqU2sNIk9NFzOtCnz+MAk9/74=";
|
||||
hash = "sha256-7AERqu2M/WeTDw62SF921vXROttZyvC1LmRZG3+aDPI=";
|
||||
};
|
||||
|
||||
pnpmDeps = pnpm.fetchDeps {
|
||||
inherit (finalAttrs) pname version src;
|
||||
fetcherVersion = 1;
|
||||
hash = "sha256-2EKu0ju/TTyVTYPjmStXsGoFdJEq5NkHqtQZggY2xbE=";
|
||||
hash = "sha256-wdexath7r2roBVw1SSpJcMp8LSs/X5QNiLNHxQF60Lg=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
@@ -66,6 +66,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
|
||||
env = {
|
||||
ELECTRON_SKIP_BINARY_DOWNLOAD = "1";
|
||||
SKIP_FUSES = true; # EACCES: permission denied
|
||||
VERSION_INFO_GIT_REF = finalAttrs.src.tag;
|
||||
};
|
||||
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
fetchFromBitbucket,
|
||||
cmake,
|
||||
freetype,
|
||||
pkg-config,
|
||||
pulseaudio,
|
||||
gtk3,
|
||||
libxkbcommon,
|
||||
udev,
|
||||
libuuid,
|
||||
wrapGAppsHook3,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "deniseemu";
|
||||
version = "2.6";
|
||||
|
||||
src = fetchFromBitbucket {
|
||||
owner = "piciji";
|
||||
repo = "denise";
|
||||
rev = "v${finalAttrs.version}";
|
||||
hash = "sha256-+PJtYuiZ1eawuVCTo1kqtCmIoBjNKOGRDnbuH3KRpNM=";
|
||||
};
|
||||
|
||||
buildInputs = [
|
||||
gtk3
|
||||
udev
|
||||
libuuid
|
||||
libxkbcommon
|
||||
freetype
|
||||
pulseaudio
|
||||
];
|
||||
|
||||
nativeBuildInputs = [
|
||||
cmake
|
||||
pkg-config
|
||||
wrapGAppsHook3
|
||||
];
|
||||
|
||||
meta = {
|
||||
homepage = "https://bitbucket.org/piciji/denise";
|
||||
downloadPage = "https://sourceforge.net/projects/deniseemu/";
|
||||
description = "C64 / Amiga Emulator";
|
||||
license = [ lib.licenses.gpl3Plus ];
|
||||
maintainers = [ lib.maintainers.matthewcroughan ];
|
||||
platforms = lib.platforms.linux;
|
||||
};
|
||||
})
|
||||
@@ -6,6 +6,7 @@
|
||||
bison,
|
||||
flex,
|
||||
gettext,
|
||||
makeWrapper,
|
||||
SDL2,
|
||||
SDL2_image,
|
||||
SDL2_mixer,
|
||||
@@ -48,6 +49,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
bison
|
||||
flex
|
||||
gettext
|
||||
makeWrapper
|
||||
];
|
||||
cmakeFlags = [
|
||||
(lib.cmakeBool "CMAKE_VERBOSE_MAKEFILE" true)
|
||||
@@ -55,10 +57,18 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
(lib.cmakeFeature "CMAKE_INSTALL_DATAROOTDIR" "${placeholder "out"}/share")
|
||||
];
|
||||
|
||||
# This makes sure the default engine (dreamer) will be called from
|
||||
# the /nix/store/ as well when starting a new game
|
||||
postFixup = ''
|
||||
wrapProgram $out/bin/dreamchess \
|
||||
--prefix PATH : $out/bin
|
||||
'';
|
||||
|
||||
doInstallCheck = true;
|
||||
|
||||
postInstallCheck = ''
|
||||
stat "''${!outputBin}/bin/${finalAttrs.meta.mainProgram}"
|
||||
stat "''${!outputBin}/bin/dreamer"
|
||||
'';
|
||||
|
||||
meta = {
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user