Merge b772b8167c into haskell-updates

This commit is contained in:
nixpkgs-ci[bot]
2025-09-09 00:20:52 +00:00
committed by GitHub
361 changed files with 3264 additions and 1607 deletions
+1 -1
View File
@@ -66,7 +66,7 @@ jobs:
- name: "Add 'has: port to stable' label"
if: steps.backport.outputs.created_pull_numbers != ''
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
with:
# Not using the app on purpose to avoid triggering another workflow run after adding this label.
script: |
+1 -1
View File
@@ -52,7 +52,7 @@ jobs:
with:
merged-as-untrusted-at: ${{ inputs.mergedSha }}
- uses: cachix/install-nix-action@56a7bb7b56d9a92d4fd1bc05758de7eea4a370a8 # v31
- uses: cachix/install-nix-action@7be5dee1421f63d07e71ce6e0a9f8a4b07c2a487 # v31
with:
# Sandbox is disabled on MacOS by default.
extra_nix_config: sandbox = true
+2 -2
View File
@@ -53,7 +53,7 @@ jobs:
- name: Check commits
id: check
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
env:
TARGETS_STABLE: ${{ fromJSON(inputs.baseBranch).stable && !contains(fromJSON(inputs.headBranch).type, 'development') }}
with:
@@ -96,7 +96,7 @@ jobs:
merged-as-untrusted-at: ${{ inputs.mergedSha }}
target-as-trusted-at: ${{ inputs.targetSha }}
- uses: cachix/install-nix-action@56a7bb7b56d9a92d4fd1bc05758de7eea4a370a8 # v31
- uses: cachix/install-nix-action@7be5dee1421f63d07e71ce6e0a9f8a4b07c2a487 # v31
- uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad # v16
with:
+1 -1
View File
@@ -27,7 +27,7 @@ jobs:
runs-on: ubuntu-24.04-arm
timeout-minutes: 2
steps:
- uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
- uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
with:
script: |
// PRs from forks don't have any PRs associated by default.
+1 -1
View File
@@ -43,7 +43,7 @@ jobs:
private-key: ${{ secrets.NIXPKGS_CI_APP_PRIVATE_KEY }}
permission-pull-requests: write
- uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
- uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
with:
github-token: ${{ steps.app-token.outputs.token }}
script: |
+6 -6
View File
@@ -47,7 +47,7 @@ jobs:
ci/pinned.json
- name: Install Nix
uses: cachix/install-nix-action@56a7bb7b56d9a92d4fd1bc05758de7eea4a370a8 # v31
uses: cachix/install-nix-action@7be5dee1421f63d07e71ce6e0a9f8a4b07c2a487 # v31
- name: Load supported versions
id: versions
@@ -92,7 +92,7 @@ jobs:
target-as-trusted-at: ${{ inputs.targetSha }}
- name: Install Nix
uses: cachix/install-nix-action@56a7bb7b56d9a92d4fd1bc05758de7eea4a370a8 # v31
uses: cachix/install-nix-action@7be5dee1421f63d07e71ce6e0a9f8a4b07c2a487 # v31
- uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad # v16
with:
@@ -190,7 +190,7 @@ jobs:
merge-multiple: true
- name: Install Nix
uses: cachix/install-nix-action@56a7bb7b56d9a92d4fd1bc05758de7eea4a370a8 # v31
uses: cachix/install-nix-action@7be5dee1421f63d07e71ce6e0a9f8a4b07c2a487 # v31
- name: Combine all output paths and eval stats
run: |
@@ -222,7 +222,7 @@ jobs:
- name: Add eval summary to commit statuses
if: ${{ github.event_name == 'pull_request_target' }}
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
with:
script: |
const { readFile } = require('node:fs/promises')
@@ -263,7 +263,7 @@ jobs:
path: versions
- name: Add version comparison table to job summary
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
env:
SYSTEMS: ${{ inputs.systems }}
VERSIONS: ${{ needs.versions.outputs.versions }}
@@ -350,7 +350,7 @@ jobs:
merged-as-untrusted-at: ${{ inputs.mergedSha }}
- name: Install Nix
uses: cachix/install-nix-action@56a7bb7b56d9a92d4fd1bc05758de7eea4a370a8 # v31
uses: cachix/install-nix-action@7be5dee1421f63d07e71ce6e0a9f8a4b07c2a487 # v31
- name: Run misc eval tasks in parallel
run: |
+4 -4
View File
@@ -64,7 +64,7 @@ jobs:
run: gh api /rate_limit | jq
- name: Labels from API data and Eval results
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
with:
github-token: ${{ steps.app-token.outputs.token || github.token }}
retries: 3
@@ -81,7 +81,7 @@ jobs:
GH_TOKEN: ${{ steps.app-token.outputs.token || github.token }}
run: gh api /rate_limit | jq
- uses: actions/labeler@8558fd74291d67161a8a78ce36a881fa63b766a9 # v5.0.0
- uses: actions/labeler@634933edcd8ababfe52f92936142cc22ac488b1b # v6.0.1
name: Labels from touched files
if: |
github.event_name == 'pull_request_target' &&
@@ -91,7 +91,7 @@ jobs:
configuration-path: .github/labeler.yml # default
sync-labels: true
- uses: actions/labeler@8558fd74291d67161a8a78ce36a881fa63b766a9 # v5.0.0
- uses: actions/labeler@634933edcd8ababfe52f92936142cc22ac488b1b # v6.0.1
name: Labels from touched files (no sync)
if: |
github.event_name == 'pull_request_target' &&
@@ -101,7 +101,7 @@ jobs:
configuration-path: .github/labeler-no-sync.yml
sync-labels: false
- uses: actions/labeler@8558fd74291d67161a8a78ce36a881fa63b766a9 # v5.0.0
- uses: actions/labeler@634933edcd8ababfe52f92936142cc22ac488b1b # v6.0.1
name: Labels from touched files (development branches)
# Development branches like staging-next, haskell-updates and python-updates get special labels.
# This is to avoid the mass of labels there, which is mostly useless - and really annoying for
+3 -3
View File
@@ -32,7 +32,7 @@ jobs:
with:
merged-as-untrusted-at: ${{ inputs.mergedSha }}
- uses: cachix/install-nix-action@56a7bb7b56d9a92d4fd1bc05758de7eea4a370a8 # v31
- uses: cachix/install-nix-action@7be5dee1421f63d07e71ce6e0a9f8a4b07c2a487 # v31
# TODO: Figure out how to best enable caching for the treefmt job. Cachix won't work well,
# because the cache would be invalidated on every commit - treefmt checks every file.
@@ -66,7 +66,7 @@ jobs:
with:
merged-as-untrusted-at: ${{ inputs.mergedSha }}
- uses: cachix/install-nix-action@56a7bb7b56d9a92d4fd1bc05758de7eea4a370a8 # v31
- uses: cachix/install-nix-action@7be5dee1421f63d07e71ce6e0a9f8a4b07c2a487 # v31
- uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad # v16
with:
@@ -94,7 +94,7 @@ jobs:
merged-as-untrusted-at: ${{ inputs.mergedSha }}
target-as-trusted-at: ${{ inputs.targetSha }}
- uses: cachix/install-nix-action@56a7bb7b56d9a92d4fd1bc05758de7eea4a370a8 # v31
- uses: cachix/install-nix-action@7be5dee1421f63d07e71ce6e0a9f8a4b07c2a487 # v31
- uses: cachix/cachix-action@0fc020193b5a1fa3ac4575aa3a7d3aa6a35435ad # v16
with:
+1 -1
View File
@@ -37,7 +37,7 @@ jobs:
permissions:
statuses: write
steps:
- uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
- uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
with:
script: |
const { serverUrl, repo, runId, payload } = context
+2 -2
View File
@@ -40,7 +40,7 @@ jobs:
sparse-checkout: |
ci/github-script
- id: prepare
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
with:
script: |
require('./ci/github-script/prepare.js')({
@@ -138,7 +138,7 @@ jobs:
permissions:
statuses: write
steps:
- uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
- uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
with:
script: |
const { serverUrl, repo, runId, payload } = context
+2 -2
View File
@@ -33,7 +33,7 @@ jobs:
sparse-checkout: ci
- name: Install Nix
uses: cachix/install-nix-action@56a7bb7b56d9a92d4fd1bc05758de7eea4a370a8 # v31
uses: cachix/install-nix-action@7be5dee1421f63d07e71ce6e0a9f8a4b07c2a487 # v31
- name: Build the requestReviews derivation
run: nix-build trusted/ci -A requestReviews
@@ -88,7 +88,7 @@ jobs:
# In the regular case, this workflow is called via workflow_call from the eval workflow directly.
# In the more special case, when a PR is undrafted an eval run will have started already.
- name: Wait for comparison to be done
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
id: eval
with:
script: |
+2 -2
View File
@@ -25,7 +25,7 @@ jobs:
sparse-checkout: |
ci/github-script
- id: prepare
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
with:
script: |
require('./ci/github-script/prepare.js')({
@@ -38,7 +38,7 @@ jobs:
- name: Determine changed files
id: files
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0
with:
script: |
const files = (await github.paginate(github.rest.pulls.listFiles, {
+4 -3
View File
@@ -223,9 +223,9 @@ nixos/modules/installer/tools/nix-fallback-paths.nix @NixOS/nix-team @raitobeza
# C compilers
/pkgs/development/compilers/gcc
/pkgs/development/compilers/llvm @alyssais @RossComputerGuy @NixOS/llvm
/pkgs/development/compilers/llvm @NixOS/llvm
/pkgs/development/compilers/emscripten @raitobezarius
/doc/toolchains/llvm.chapter.md @alyssais @RossComputerGuy @NixOS/llvm
/doc/toolchains/llvm.chapter.md @NixOS/llvm
/doc/languages-frameworks/emscripten.section.md @raitobezarius
# Audio
@@ -494,7 +494,8 @@ pkgs/servers/authelia/ @06kellyjac @dit7ya @nicomem
pkgs/by-name/oc/octodns/ @anthonyroussel
# Teleport
pkgs/by-name/te/teleport* @arianvp @justinas @sigma @tomberek @freezeboy @techknowlogick @JuliusFreudenberger
/pkgs/build-support/teleport @arianvp @justinas @sigma @tomberek @freezeboy @techknowlogick @JuliusFreudenberger
pkgs/by-name/te/teleport* @arianvp @justinas @sigma @tomberek @freezeboy @techknowlogick @JuliusFreudenberger
# Warp-terminal
pkgs/by-name/wa/warp-terminal/ @emilytrau @imadnyc @FlameFlag @johnrtitor
+3
View File
@@ -43,3 +43,6 @@ nix-build ci -A eval.full --arg baseline $BASELINE
```
Keep in mind to otherwise pass the same set of arguments for both commands (`evalSystems`, `quickTest`, `chunkSize`).
Running this command will evaluate the difference between the baseline statistics and the ones at the time of running the command.
From that difference, it will produce a human-readable report in `$out/step-summary.md`.
If no packages were added or removed, then performance statistics will also be generated as part of this report.
+14 -3
View File
@@ -267,6 +267,15 @@ let
chunkSize ? 5000,
quickTest ? false,
baseline,
# Which maintainer should be considered the author?
# Defaults to nixpkgs-ci which is not a maintainer and skips the check.
githubAuthorId ? "nixpkgs-ci",
# What files have been touched? Defaults to none; use the expression below to calculate it.
# ```
# git diff --name-only --merge-base master HEAD \
# | jq --raw-input --slurp 'split("\n")[:-1]' > touched-files.json
# ```
touchedFilesJson ? builtins.toFile "touched-files.json" "[ ]",
}:
let
diffs = symlinkJoin {
@@ -282,10 +291,12 @@ let
}
) evalSystems;
};
comparisonReport = compare {
combinedDir = combine { diffDir = diffs; };
inherit touchedFilesJson githubAuthorId;
};
in
combine {
diffDir = diffs;
};
comparisonReport;
in
{
+2
View File
@@ -164,6 +164,8 @@
- `meta.mainProgram`: Changing this `meta` entry can lead to a package rebuild due to being used to determine the `NIX_MAIN_PROGRAM` environment variable.
- `forgejo-runner`: The upgrade to version 11 brings a license change from MIT to GPLv3-or-later.
- `lisp-modules` were brought in sync with the [June 2025 Quicklisp release](http://blog.quicklisp.org/2025/07/june-2025-quicklisp-dist-now-available.html).
- `ffmpeg_8`, `ffmpeg_8-headless`, and `ffmpeg_8-full` have been added. The default version of FFmpeg remains ffmpeg_7 for now, though this may change before release.
+121 -1
View File
@@ -4,7 +4,8 @@
{ lib }:
let
inherit (builtins) head length;
inherit (builtins) head length typeOf;
inherit (lib.asserts) assertMsg;
inherit (lib.trivial)
oldestSupportedReleaseIsAtLeast
mergeAttrs
@@ -1195,6 +1196,125 @@ rec {
in
recurse [ ] set;
/**
Apply a function to each leaf (nonattributeset attribute) of a tree of
nested attribute sets, returning the results of the function as a list,
ordered lexicographically by their attribute paths.
Like `mapAttrsRecursive`, but concatenates the mapping function results
into a list.
# Inputs
`f`
: Mapping function which, given an attributes path and value, returns a
new value.
This value will be an element of the list returned by
`mapAttrsToListRecursive`.
The first argument to the mapping function is a list of attribute names
forming the path to the leaf attribute. The second argument is the leaf
attribute value, which will never be an attribute set.
`set`
: Attribute set to map over.
# Type
```
mapAttrsToListRecursive :: ([String] -> a -> b) -> AttrSet -> [b]
```
# Examples
:::{.example}
## `lib.attrsets.mapAttrsToListRecursive` usage example
```nix
mapAttrsToListRecursive (path: value: "${concatStringsSep "." path}=${value}")
{ n = { a = "A"; m = { b = "B"; c = "C"; }; }; d = "D"; }
=> [ "n.a=A" "n.m.b=B" "n.m.c=C" "d=D" ]
```
:::
*/
mapAttrsToListRecursive = mapAttrsToListRecursiveCond (_: _: true);
/**
Determine the nodes of a tree of nested attribute sets by applying a
predicate, then apply a function to the leaves, returning the results
as a list, ordered lexicographically by their attribute paths.
Like `mapAttrsToListRecursive`, but takes an additional predicate to
decide whether to recurse into an attribute set.
Unlike `mapAttrsRecursiveCond` this predicate receives the attribute path
as its first argument, in addition to the attribute set.
# Inputs
`pred`
: Predicate to decide whether to recurse into an attribute set.
If the predicate returns true, `mapAttrsToListRecursiveCond` recurses into
the attribute set. If the predicate returns false, it does not recurse
but instead applies the mapping function, treating the attribute set as
a leaf.
The first argument to the predicate is a list of attribute names forming
the path to the attribute set. The second argument is the attribute set.
`f`
: Mapping function which, given an attributes path and value, returns a
new value.
This value will be an element of the list returned by
`mapAttrsToListRecursiveCond`.
The first argument to the mapping function is a list of attribute names
forming the path to the leaf attribute. The second argument is the leaf
attribute value, which may be an attribute set if the predicate returned
false.
`set`
: Attribute set to map over.
# Type
```
mapAttrsToListRecursiveCond :: ([String] -> AttrSet -> Bool) -> ([String] -> a -> b) -> AttrSet -> [b]
```
# Examples
:::{.example}
## `lib.attrsets.mapAttrsToListRecursiveCond` usage example
```nix
mapAttrsToListRecursiveCond
(path: as: !(lib.isDerivation as))
(path: value: "--set=${lib.concatStringsSep "." path}=${toString value}")
{
rust.optimize = 2;
target = {
riscv64-unknown-linux-gnu.linker = pkgs.lld;
};
}
=> [ "--set=rust.optimize=2" "--set=target.riscv64-unknown-linux-gnu.linker=/nix/store/sjw4h1k" ]
```
:::
*/
mapAttrsToListRecursiveCond =
pred: f: set:
let
mapRecursive =
path: value: if isAttrs value && pred path value then recurse path value else [ (f path value) ];
recurse = path: set: concatMap (name: mapRecursive (path ++ [ name ]) set.${name}) (attrNames set);
in
recurse [ ] set;
/**
Generate an attribute set by mapping a function over a list of
attribute names.
+2
View File
@@ -206,6 +206,8 @@ let
concatMapAttrs
mapAttrsRecursive
mapAttrsRecursiveCond
mapAttrsToListRecursive
mapAttrsToListRecursiveCond
genAttrs
genAttrs'
isDerivation
+114
View File
@@ -77,6 +77,8 @@ let
makeIncludePath
makeOverridable
mapAttrs
mapAttrsToListRecursive
mapAttrsToListRecursiveCond
mapCartesianProduct
matchAttrs
mergeAttrs
@@ -3567,6 +3569,118 @@ runTests {
];
};
testMapAttrsToListRecursive = {
expr = mapAttrsToListRecursive (p: v: "${concatStringsSep "." p}=${v}") {
a = {
b = "A";
};
c = {
d = "B";
e = {
f = "C";
g = "D";
};
};
h = {
i = {
j = {
k = "E";
};
};
};
};
expected = [
"a.b=A"
"c.d=B"
"c.e.f=C"
"c.e.g=D"
"h.i.j.k=E"
];
};
testMapAttrsToListRecursiveWithLists = {
expr = mapAttrsToListRecursive (p: v: v) {
a = [ ];
b = {
c = [ [ ] ];
};
d = {
e = {
f = [ [ [ ] ] ];
};
};
};
expected = [
[ ]
[ [ ] ]
[ [ [ ] ] ]
];
};
testMapAttrsToListRecursiveCond = {
expr = mapAttrsToListRecursiveCond (p: as: !(as ? stop)) (p: v: v) {
a = {
b = "A";
};
c = {
d = "B";
e = {
stop = null;
f = "C";
g = {
h = "D";
};
};
};
};
expected = [
"A"
"B"
{
stop = null;
f = "C";
g = {
h = "D";
};
}
];
};
testMapAttrsToListRecursiveCondPath = {
expr = mapAttrsToListRecursiveCond (p: as: length p < 2) (p: v: v) {
a = {
b = "A";
};
c = {
d = "B";
e = {
f = "C";
g = "D";
};
};
h = {
i = {
j = {
k = "E";
};
};
};
};
expected = [
"A"
"B"
{
f = "C";
g = "D";
}
{
j = {
k = "E";
};
}
];
};
# The example from the showAttrPath documentation
testShowAttrPathExample = {
expr = showAttrPath [
+15 -8
View File
@@ -21676,12 +21676,6 @@
githubId = 32239737;
keys = [ { fingerprint = "91EB E870 1639 1323 642A 6803 B966 009D 57E6 9CC6"; } ];
};
rewine = {
email = "lhongxu@outlook.com";
github = "wineee";
githubId = 22803888;
name = "Lu Hongxu";
};
rexxDigital = {
email = "joellarssonpriv@gmail.com";
github = "rexxDigital";
@@ -22624,6 +22618,13 @@
githubId = 766350;
name = "Richard Zetterberg";
};
S0AndS0 = {
name = "S0AndS0";
email = "S0AndS0@digital-mercenaries.com";
github = "S0AndS0";
githubId = 4116150;
matrix = "@s0ands0:matrix.org";
};
s0me1newithhand7s = {
name = "hand7s";
email = "s0me1newithhand7s@gmail.com";
@@ -24713,9 +24714,9 @@
name = "Subin Kim";
};
sugar700 = {
email = "sugar@sylveon.social";
email = "sugar@sugar.lgbt";
github = "sugar700";
githubId = 168804988;
githubId = 1297598;
name = "sugar";
};
suhr = {
@@ -27681,6 +27682,12 @@
github = "wilsonehusin";
githubId = 14004487;
};
wineee = {
email = "lhongxu@outlook.com";
github = "wineee";
githubId = 22803888;
name = "Lu Hongxu";
};
winpat = {
email = "patrickwinter@posteo.ch";
github = "winpat";
@@ -92,6 +92,7 @@ CROSS_TARGETS=(
mips64el-unknown-linux-gnuabi64
mips64el-unknown-linux-gnuabin32
mipsel-unknown-linux-gnu
powerpc64-unknown-linux-gnuabielfv1
powerpc64-unknown-linux-gnuabielfv2
powerpc64le-unknown-linux-gnu
riscv64-unknown-linux-gnu
+2 -1
View File
@@ -316,7 +316,7 @@ with lib.maintainers;
};
deepin = {
members = [ rewine ];
members = [ wineee ];
scope = "Maintain deepin desktop environment and related packages.";
shortName = "DDE";
enableFeatureFreezePing = true;
@@ -736,6 +736,7 @@ with lib.maintainers;
llvm = {
members = [
dtzWill
emily
ericson2314
lovek323
qyliss
@@ -152,3 +152,16 @@ original files are by default stored in `/var/lib/nixos`.
Userborn implements immutable users by re-mounting the password files
read-only. This means that unlike when using the Perl script, trying to add a
new user (e.g. via `useradd`) will fail right away.
## Restrict usage time {#sec-restrict-usage-time}
[Timekpr-nExT](https://mjasnik.gitlab.io/timekpr-next/) is a screen time managing application that helps optimizing time spent at computer for your subordinates, children or even for yourself.
You can enable it via:
```nix
{ services.timekpr.enable = true; }
```
This will install the `timekpr` package and start the `timekpr` service.
You can then use the `timekpra` application to configure time limits for users.
+3
View File
@@ -338,6 +338,9 @@
"sec-userborn": [
"index.html#sec-userborn"
],
"sec-restrict-usage-time": [
"index.html#sec-restrict-usage-time"
],
"ch-file-systems": [
"index.html#ch-file-systems"
],
@@ -100,6 +100,8 @@
- [mautrix-discord](https://github.com/mautrix/discord), a Matrix-Discord puppeting/relay bridge. Available as [services.mautrix-discord](#opt-services.mautrix-discord.enable).
- [Timekpr-nExT](https://mjasnik.gitlab.io/timekpr-next/), a time managing application that helps optimizing time spent at computer for your subordinates, children or even for yourself. Available as [](#opt-services.timekpr.enable).
- [SuiteNumérique Meet](https://github.com/suitenumerique/meet) is an open source alternative to Google Meet and Zoom powered by LiveKit: HD video calls, screen sharing, and chat features. Built with Django and React. Available as [services.lasuite-meet](#opt-services.lasuite-meet.enable).
- [lemurs](https://github.com/coastalwhite/lemurs), a customizable TUI display/login manager. Available at [services.displayManager.lemurs](#opt-services.displayManager.lemurs.enable).
@@ -173,6 +175,20 @@
- `renovate` was updated to v41. See the upstream release notes for [v40](https://github.com/renovatebot/renovate/releases/tag/40.0.0) and [v41](https://github.com/renovatebot/renovate/releases/tag/41.0.0) for breaking changes.
- The "NIXOS_EXTRA_MODULE_PATH" variable from configuration evaluation has been deprecated.
We recommend a workflow where you update the expression files instead, but if you wish to continue
to use this variable, you may do so with a module like:
```nix
{
imports = [
(builtins.getEnv "NIXOS_EXTRA_MODULE_PATH")
];
}
```
This has the benefit that your configuration hints at the non-standard workflow.
- `i18n.inputMethod.fcitx5.plasma6Support` has been removed because qt6 is the only one used for fcitx5-configtool now.
- The `boot.readOnlyNixStore` has been removed. Control over bind mount options on `/nix/store` is now offered by the `boot.nixStoreMountOpts` option.
@@ -281,3 +297,5 @@
- The `nettools` package (ifconfig, arp, mii-tool, netstat, route) is not installed by default anymore. The suite is unmaintained and users should migrate to `iproute2` and `ethtool` instead.
- `sparkleshare` has been removed as it no longer builds and has been abandoned upstream.
- The `open-webui` package's postgres support have been moved to optional dependencies to comply with upstream changes in 0.6.26.
+1 -26
View File
@@ -30,32 +30,7 @@ evalConfigArgs@{
check ? true,
prefix ? [ ],
lib ? import ../../lib,
extraModules ?
let
e = builtins.getEnv "NIXOS_EXTRA_MODULE_PATH";
in
lib.optional (e != "") (
lib.warn
''
The NIXOS_EXTRA_MODULE_PATH environment variable is deprecated and will be
removed in NixOS 25.05.
We recommend a workflow where you update the expression files instead, but
if you wish to continue to use this variable, you may do so with a module like:
{
imports = [
(builtins.getEnv "NIXOS_EXTRA_MODULE_PATH")
];
}
This has the benefit that your configuration hints at the
non-standard workflow.
''
# NOTE: this import call is unnecessary and it even removes the file name
# from error messages.
import
e
),
extraModules ? [ ],
}:
let
+11 -87
View File
@@ -16,40 +16,21 @@
let
inherit (lib)
concatStringsSep
boolToString
escape
filterAttrs
floatToString
getVersion
hasPrefix
isBool
isDerivation
isFloat
isInt
isList
isString
literalExpression
mapAttrsToList
mkAfter
mkIf
mkOption
mkRenamedOptionModuleWith
optionalString
optionals
strings
systems
toPretty
types
versionAtLeast
;
cfg = config.nix;
nixPackage = cfg.package.out;
isNixAtLeast = versionAtLeast (getVersion nixPackage);
defaultSystemFeatures = [
"nixos-test"
"benchmark"
@@ -98,74 +79,17 @@ let
attrsOf (either confAtom (listOf confAtom));
nixConf =
assert isNixAtLeast "2.2";
let
mkValueString =
v:
if v == null then
""
else if isInt v then
toString v
else if isBool v then
boolToString v
else if isFloat v then
floatToString v
else if isList v then
toString v
else if isDerivation v then
toString v
else if builtins.isPath v then
toString v
else if isString v then
v
else if strings.isConvertibleWithToString v then
toString v
else
abort "The nix conf value: ${toPretty { } v} can not be encoded";
mkKeyValue = k: v: "${escape [ "=" ] k} = ${mkValueString v}";
mkKeyValuePairs = attrs: concatStringsSep "\n" (mapAttrsToList mkKeyValue attrs);
isExtra = key: hasPrefix "extra-" key;
in
pkgs.writeTextFile {
name = "nix.conf";
# workaround for https://github.com/NixOS/nix/issues/9487
# extra-* settings must come after their non-extra counterpart
text = ''
# WARNING: this file is generated from the nix.* options in
# your NixOS configuration, typically
# /etc/nixos/configuration.nix. Do not edit it!
${mkKeyValuePairs (filterAttrs (key: value: !(isExtra key)) cfg.settings)}
${mkKeyValuePairs (filterAttrs (key: value: isExtra key) cfg.settings)}
${cfg.extraOptions}
'';
checkPhase = lib.optionalString cfg.checkConfig (
if pkgs.stdenv.hostPlatform != pkgs.stdenv.buildPlatform then
''
echo "Ignoring validation for cross-compilation"
''
else
let
showCommand = if isNixAtLeast "2.20pre" then "config show" else "show-config";
in
''
echo "Validating generated nix.conf"
ln -s $out ./nix.conf
set -e
set +o pipefail
NIX_CONF_DIR=$PWD \
${cfg.package}/bin/nix ${showCommand} ${optionalString (isNixAtLeast "2.3pre") "--no-net"} \
${optionalString (isNixAtLeast "2.4pre") "--option experimental-features nix-command"} \
|& sed -e 's/^warning:/error:/' \
| (! grep '${if cfg.checkAllErrors then "^error:" else "^error: unknown setting"}')
set -o pipefail
''
);
};
(pkgs.formats.nixConf {
inherit (cfg)
package
checkAllErrors
checkConfig
extraOptions
;
inherit (nixPackage) version;
}).generate
"nix.conf"
cfg.settings;
in
{
+1
View File
@@ -1477,6 +1477,7 @@
./services/security/sslmate-agent.nix
./services/security/step-ca.nix
./services/security/tang.nix
./services/security/timekpr.nix
./services/security/tor.nix
./services/security/torify.nix
./services/security/torsocks.nix
+1 -1
View File
@@ -8,7 +8,7 @@ let
cfg = config.programs.wayfire;
in
{
meta.maintainers = with lib.maintainers; [ rewine ];
meta.maintainers = with lib.maintainers; [ wineee ];
options.programs.wayfire = {
enable = lib.mkEnableOption "Wayfire, a wayland compositor based on wlroots";
@@ -178,12 +178,12 @@ in
let
ports = port: infoPort: {
port = lib.mkOption {
type = lib.types.int;
type = lib.types.port;
default = port;
description = "RPC port";
};
infoPort = lib.mkOption {
type = lib.types.int;
type = lib.types.port;
default = infoPort;
description = "web UI port";
};
+1 -1
View File
@@ -38,7 +38,7 @@ in
};
port = lib.mkOption {
type = lib.types.ints.u16;
type = lib.types.port;
default = 50000;
description = "Port to listen on.";
};
@@ -861,7 +861,7 @@ in
default = "localhost";
};
port = lib.mkOption {
type = lib.types.int;
type = lib.types.port;
description = "Port for the MySQL database.";
default = 3306;
};
@@ -901,7 +901,7 @@ in
default = "localhost";
};
port = lib.mkOption {
type = lib.types.int;
type = lib.types.port;
description = "Port for the Postgres database.";
default = 5432;
};
@@ -135,7 +135,7 @@ in
};
port = lib.mkOption {
type = lib.types.nullOr lib.types.int;
type = lib.types.nullOr lib.types.port;
default = null;
description = ''
Port number to bind to.
+1 -1
View File
@@ -26,7 +26,7 @@ let
description = "The address to bind to. Localhost if null";
};
port = mkOption {
type = natural';
type = port;
default = 10030;
description = "Tcp port to bind to";
};
+1 -1
View File
@@ -42,7 +42,7 @@ in
description = "Host to listen on.";
};
port = lib.mkOption {
type = lib.types.ints.u16;
type = lib.types.port;
default = 8181;
description = "Port to bind to.";
};
+1 -1
View File
@@ -75,7 +75,7 @@ in
};
port = lib.mkOption {
type = lib.types.ints.unsigned;
type = lib.types.port;
default = 7125;
description = "The port to listen on.";
};
@@ -26,7 +26,7 @@
};
server = {
port = lib.mkOption {
type = lib.types.int;
type = lib.types.port;
description = "Port Number";
default = port;
};
+1 -1
View File
@@ -44,7 +44,7 @@ in
description = "Path to config file.";
};
port = lib.mkOption {
type = lib.types.ints.u16;
type = lib.types.port;
default = 8081;
description = "Port to bind to.";
};
+2 -2
View File
@@ -73,7 +73,7 @@ in
port = lib.mkOption {
description = "Port that stats listens for messages on over UDP";
default = 8125;
type = lib.types.int;
type = lib.types.port;
};
mgmt_address = lib.mkOption {
@@ -85,7 +85,7 @@ in
mgmt_port = lib.mkOption {
description = "Port to run the management TCP interface on";
default = 8126;
type = lib.types.int;
type = lib.types.port;
};
backends = lib.mkOption {
+1 -1
View File
@@ -417,7 +417,7 @@ in
};
port = mkOption {
type = with types; nullOr int;
type = with types; nullOr port;
default = null;
description = ''
I2P listen port. If no one is given the router will pick between 9111 and 30777.
+1 -1
View File
@@ -12,7 +12,7 @@ let
enable = mkEnableOption "iperf3 network throughput testing server";
package = mkPackageOption pkgs "iperf3" { };
port = mkOption {
type = types.ints.u16;
type = types.port;
default = 5201;
description = "Server port to listen on for iperf3 client requests.";
};
@@ -9,7 +9,7 @@
'';
};
port = lib.mkOption {
type = lib.types.int;
type = lib.types.port;
example = 5088;
description = ''
Server host port.
@@ -6,7 +6,7 @@
}:
let
pihole = pkgs.pihole;
pihole = cfg.piholePackage;
makePayload =
list:
builtins.toJSON {
@@ -29,8 +29,8 @@ in
${lib.getExe' pkgs.procps "kill"} -s SIGRTMIN $(systemctl show --property MainPID --value ${config.systemd.services.pihole-ftl.name})
fi
source ${pihole}/usr/share/pihole/advanced/Scripts/api.sh
source ${pihole}/usr/share/pihole/advanced/Scripts/utils.sh
source ${pihole}/share/pihole/advanced/Scripts/api.sh
source ${pihole}/share/pihole/advanced/Scripts/utils.sh
any_failed=0
@@ -198,6 +198,19 @@ in
'';
};
};
webserverEnabled = mkOption {
type = types.bool;
default = (
(hasAttrByPath [ "webserver" "port" ] cfg.settings)
&& !builtins.elem cfg.settings.webserver.port [
""
null
]
);
internal = true;
description = "Whether the webserver is enabled.";
};
};
config = mkIf cfg.enable {
@@ -208,15 +221,7 @@ in
}
{
assertion =
builtins.length cfg.lists == 0
|| (
(hasAttrByPath [ "webserver" "port" ] cfg.settings)
&& !builtins.elem cfg.settings.webserver.port [
""
null
]
);
assertion = builtins.length cfg.lists == 0 || cfg.webserverEnabled;
message = ''
The Pi-hole webserver must be enabled for lists set in services.pihole-ftl.lists to be automatically loaded on startup via the web API.
services.pihole-ftl.settings.port must be defined, e.g. by enabling services.pihole-web.enable and defining services.pihole-web.port.
@@ -348,6 +353,8 @@ in
pihole-ftl-setup = {
description = "Pi-hole FTL setup";
enable = builtins.length cfg.lists > 0;
# Wait for network so lists can be downloaded
after = [ "network-online.target" ];
requires = [ "network-online.target" ];
@@ -415,11 +422,16 @@ in
script =
let
days = toString cfg.queryLogDeleter.age;
database = "${cfg.stateDirectory}/pihole-FTL.db";
database = cfg.settings.files.database;
in
''
set -euo pipefail
# Avoid creating an empty database file if it doesn't yet exist
if [ ! -f "${database}" ]; then
exit 0;
fi
echo "Deleting query logs older than ${days} days"
${getExe cfg.package} sqlite3 "${database}" "DELETE FROM query_storage WHERE timestamp <= CAST(strftime('%s', date('now', '-${days} day')) AS INT); select changes() from query_storage limit 1"
'';
@@ -319,7 +319,7 @@ in
'';
};
port = lib.mkOption {
type = lib.types.nullOr lib.types.int;
type = lib.types.nullOr lib.types.port;
default = null;
description = ''
Port to listen to.
@@ -70,7 +70,7 @@ in
'';
};
Port = mkOption {
type = types.int;
type = types.port;
default = 8888;
description = ''
Specify which port to listen to.
@@ -0,0 +1,65 @@
{
pkgs,
lib,
config,
...
}:
let
cfg = config.services.timekpr;
targetBaseDir = "/var/lib/timekpr";
daemonUser = "root";
daemonGroup = "root";
in
{
options = {
services.timekpr = {
package = lib.mkPackageOption pkgs "timekpr" { };
enable = lib.mkEnableOption "Timekpr-nExT, a screen time managing application that helps optimizing time spent at computer for your subordinates, children or even for yourself";
adminUsers = lib.mkOption {
type = lib.types.listOf lib.types.str;
default = [ ];
example = [
"alice"
"bob"
];
description = ''
All listed users will become part of the `timekpr` group so they can manage timekpr settings without requiring sudo.
'';
};
};
};
config = lib.mkIf cfg.enable {
users.groups.timekpr = {
gid = 2000;
members = cfg.adminUsers;
};
environment.systemPackages = [
# Add timekpr to system packages so that polkit can find it
cfg.package
];
services.dbus.enable = true;
services.dbus.packages = [
cfg.package
];
environment.etc."timekpr" = {
source = "${cfg.package}/etc/timekpr";
};
systemd.packages = [
cfg.package
];
systemd.services.timekpr = {
enable = true;
wantedBy = [ "multi-user.target" ];
};
security.polkit.enable = true;
systemd.tmpfiles.rules = [
"d ${targetBaseDir} 0755 ${daemonUser} ${daemonGroup} -"
"d ${targetBaseDir}/config 0755 ${daemonUser} ${daemonGroup} -"
"d ${targetBaseDir}/work 0755 ${daemonUser} ${daemonGroup} -"
];
};
meta.maintainers = [ lib.maintainers.atry ];
}
+1 -1
View File
@@ -19,7 +19,7 @@ in
description = "Whether to open the firewall for the port in {option}`services.flood.port`.";
};
port = lib.mkOption {
type = lib.types.int;
type = lib.types.port;
description = "Port to bind webserver.";
default = 3000;
example = 3001;
+1 -1
View File
@@ -100,7 +100,7 @@ in
};
port = mkOption {
type = types.nullOr types.int;
type = types.nullOr types.port;
default = null;
description = ''
The database's port. If not set, the default ports will be
@@ -80,7 +80,7 @@ let
port = mkOption {
description = "The port to use for IP sockets. If port is not specified, port 80 (http) is used.";
default = null;
type = with types; nullOr int;
type = with types; nullOr port;
};
proto = mkOption {
description = "PROTO can be 'HTTP' (the default) or 'PROXY'. Both version 1 and 2 of the proxy protocol can be used.";
+1 -1
View File
@@ -220,7 +220,7 @@ let
};
Port = lib.mkOption {
type = types.nullOr types.int;
type = types.nullOr types.port;
default = null;
description = ''
If you set http proxy, waagent will use this proxy to access the Internet.
+1
View File
@@ -1193,6 +1193,7 @@ in
pict-rs = runTest ./pict-rs.nix;
pingvin-share = runTest ./pingvin-share.nix;
pinnwand = runTest ./pinnwand.nix;
pihole-ftl = import ./pihole-ftl { inherit runTest; };
plantuml-server = runTest ./plantuml-server.nix;
plasma6 = runTest ./plasma6.nix;
plausible = runTest ./plausible.nix;
+1
View File
@@ -131,5 +131,6 @@ with pkgs;
mode = "zookeeper";
};
kafka_4_0 = makeKafkaTest "kafka_4_0" { kafkaPackage = apacheKafka_4_0; };
kafka_4_1 = makeKafkaTest "kafka_4_1" { kafkaPackage = apacheKafka_4_1; };
kafka = makeKafkaTest "kafka" { kafkaPackage = apacheKafka; };
}
+2 -2
View File
@@ -23,10 +23,10 @@
testScript = ''
machine.wait_for_x()
machine.succeed("convert -font DejaVu-Sans +antialias label:'IT WORKS' image.png")
machine.succeed("convert -font DejaVu-Sans -pointsize 48 +antialias label:'WORKS' image.png")
machine.execute("libresprite image.png >&2 &")
machine.wait_for_window("LibreSprite ${pkgs.libresprite.version}-dev")
machine.wait_for_text("IT WORKS")
machine.wait_for_text("WORKS")
machine.screenshot("screen")
'';
}
+47
View File
@@ -0,0 +1,47 @@
# A basic test with no webserver, no API, just checking DNS functionality
{
lib,
pkgs,
...
}:
rec {
name = "pihole-ftl-basic";
meta.maintainers = with lib.maintainers; [ averyvigolo ];
nodes.machine =
{ pkgs, lib, ... }:
{
services.pihole-ftl = {
enable = true;
openFirewallDNS = true;
};
environment.systemPackages = with pkgs; [ dig ];
};
nodes.client =
{ pkgs, lib, ... }:
{
environment.systemPackages = with pkgs; [ dig ];
};
testScript =
{ nodes, ... }:
''
machine.wait_for_unit("pihole-ftl.service")
machine.wait_for_open_port(53)
client.wait_for_unit("network.target")
with subtest("the pi-hole machine resolves properly"):
ret, out = machine.execute("dig @localhost +short pi.hole")
assert ret == 0, "pi.hole should resolve on the local machine"
assert out.rstrip() == "127.0.0.1", "pi.hole should resolve to localhost on the local machine"
machine_address = "${(builtins.head nodes.machine.networking.interfaces.eth1.ipv4.addresses).address}"
with subtest("a client machine resolves properly"):
ret, out = client.execute(f"dig @{machine_address} +short pi.hole")
assert ret == 0, "pi.hole should resolve on a client machine"
assert out.rstrip() == machine_address, "pi.hole should resolve to the machine's address"
'';
}
+5
View File
@@ -0,0 +1,5 @@
{ runTest }:
{
basic = runTest ./basic.nix;
}
+17
View File
@@ -0,0 +1,17 @@
{ pkgs, lib, ... }:
{
name = "timekpr";
meta.maintainers = [ lib.maintainers.atry ];
nodes.machine =
{ pkgs, lib, ... }:
{
services.timekpr.enable = true;
};
testScript = ''
start_all()
machine.wait_for_file("/etc/timekpr/timekpr.conf")
machine.wait_for_unit("timekpr.service")
'';
}
+1 -1
View File
@@ -34,7 +34,7 @@
machine.wait_until_succeeds("journalctl -o cat -u tlsrpt-reportd | grep -Pq 'Fetcher .* finished'")
# Enabling postfix should put sendmail as the sendmail setting
machine.succeed("grep -q sendmail_script=sendmail /etc/tlsrpt/reportd.cfg")
machine.succeed("grep -q sendmail_script=/run/wrappers/bin/sendmail /etc/tlsrpt/reportd.cfg")
machine.succeed("getent group tlsrpt | grep -q postfix")
machine.log(machine.succeed("systemd-analyze security tlsrpt-collectd.service tlsrpt-reportd.service | grep -v "))
+30 -18
View File
@@ -1,6 +1,14 @@
{ pkgs, package, ... }:
let
testPath = pkgs.hello;
# Same stateDir logic as in nixos/modules/services/web-servers/varnish/default.nix
stateDir =
hostName:
if (pkgs.lib.versionOlder package.version "7") then
"/var/run/varnish/${hostName}"
else
"/var/run/varnishd";
in
{
name = "varnish";
@@ -37,13 +45,16 @@ in
port = 8080;
proto = "PROXY";
}
{ address = "@asdf"; }
{
address = "/run/varnishd/client.http.sock";
address = "${stateDir config.networking.hostName}/client.http.sock";
user = "varnish";
group = "varnish";
mode = "660";
}
]
++ lib.optionals (lib.versionAtLeast package.version "7.3") [
# Support added in 7.3.0
{ address = "@asdf"; }
];
config = ''
vcl 4.1;
@@ -59,24 +70,25 @@ in
system.extraDependencies = [ testPath ];
assertions =
let
cmdline = config.systemd.services.varnish.serviceConfig.ExecStart;
in
map
(pattern: {
assertion = lib.hasInfix pattern cmdline;
message = "Address argument `${pattern}` missing in commandline `${cmdline}`.";
})
(
pattern:
let
cmdline = config.systemd.services.varnish.serviceConfig.ExecStart;
in
{
assertion = lib.hasInfix pattern cmdline;
message = "Address argument `${pattern}` missing in commandline `${cmdline}`.";
}
)
[
" -a 0.0.0.0:80,HTTP "
" -a proxyport=0.0.0.0:8080,PROXY "
" -a @asdf,HTTP "
" -a /run/varnishd/client.http.sock,HTTP,user=varnish,group=varnish,mode=660 "
" -a 0.0.0.0:81 "
];
[
" -a 0.0.0.0:80,HTTP "
" -a proxyport=0.0.0.0:8080,PROXY "
" -a ${stateDir config.networking.hostName}/client.http.sock,HTTP,user=varnish,group=varnish,mode=660 "
" -a 0.0.0.0:81 "
]
++ lib.optionals (lib.versionAtLeast package.version "7.3") [
" -a @asdf,HTTP "
]
);
};
client =
+1 -1
View File
@@ -125,7 +125,7 @@ To add a package to Nixpkgs:
- Apache HTTPD: [`pkgs/servers/http/apache-httpd/2.4.nix`](servers/http/apache-httpd/2.4.nix).
A bunch of optional features, variable substitutions in the configure flags, a post-install hook, and miscellaneous hackery.
- buildMozillaMach: [`pkgs/applications/networking/browser/firefox/common.nix`](applications/networking/browsers/firefox/common.nix).
- buildMozillaMach: [`pkgs/build-support/build-mozilla-mach/default.nix`](./build-support/build-mozilla-mach/default.nix).
A reusable build function for Firefox, Thunderbird and Librewolf.
- JDiskReport, a Java utility: [`pkgs/by-name/jd/jdiskreport/package.nix`](./by-name/jd/jdiskreport/package.nix).
@@ -49,13 +49,13 @@ let
in
stdenv.mkDerivation (finalAttrs: {
pname = "clementine";
version = "1.4.1-50-ge281c4508";
version = "1.4.1-51-gea6466943";
src = fetchFromGitHub {
owner = "clementine-player";
repo = "Clementine";
tag = finalAttrs.version;
hash = "sha256-MsOVCAKhOvJlQepvT32+ffJdMzx+sYlNM/HeUTaeC2Y=";
hash = "sha256-aTsu8yYvvLWMZhAN0jYVlrlMtQ2+hTZOxFv8gmC2ZDs=";
};
nativeBuildInputs = [
+1 -1
View File
@@ -116,7 +116,7 @@ stdenv.mkDerivation (finalAttrs: {
license = lib.licenses.gpl3Only;
maintainers = with lib.maintainers; [
pasqui23
rewine
wineee
];
platforms = lib.platforms.linux;
};
@@ -45,14 +45,14 @@ let
in
stdenv.mkDerivation (finalAttrs: {
pname = if withGui then "bitcoin" else "bitcoind";
version = "29.0";
version = "29.1";
src = fetchurl {
urls = [
"https://bitcoincore.org/bin/bitcoin-core-${finalAttrs.version}/bitcoin-${finalAttrs.version}.tar.gz"
];
# hash retrieved from signed SHA256SUMS
sha256 = "882c782c34a3bf2eacd1fae5cdc58b35b869883512f197f7d6dc8f195decfdaa";
sha256 = "067f624ae273b0d85a1554ffd7c098923351a647204e67034df6cc1dfacfa06b";
};
nativeBuildInputs = [
@@ -93,12 +93,12 @@ stdenv.mkDerivation (finalAttrs: {
checksums = fetchurl {
url = "https://bitcoincore.org/bin/bitcoin-core-${finalAttrs.version}/SHA256SUMS";
hash = "sha256-lOwVH0UqIhOT0I9rAvswuqy+tZ8ZRhH0kGnn9VCbRv4=";
hash = "sha256-teQ02vm875Isks9sBC2HV3Zo78W+UkXGH9zgyNhOnQs=";
};
signatures = fetchurl {
url = "https://bitcoincore.org/bin/bitcoin-core-${finalAttrs.version}/SHA256SUMS.asc";
hash = "sha256-s05cRmZ9aoPdSZTaz6D6qmVwX6OprqxynPn5vZQ7bbw=";
hash = "sha256-hyk57QyGJnrjuuGRmvfOhVAx9Nru93e8bfah5fSVcmg=";
};
verifyBuilderKeys =
@@ -121,6 +121,7 @@ stdenv.mkDerivation (finalAttrs: {
ln -s $src ./bitcoin-${finalAttrs.version}.tar.gz
gpg --no-autostart --batch --verify --status-fd 1 SHA256SUMS.asc SHA256SUMS > verify.log
${verifyBuilderKeys}
echo "Checking ${checksums} for bitcoin-${finalAttrs.version}.tar.gz..."
grep bitcoin-${finalAttrs.version}.tar.gz SHA256SUMS > SHA256SUMS.filtered
echo "Verifying the checksum of bitcoin-${finalAttrs.version}.tar.gz..."
sha256sum -c SHA256SUMS.filtered
@@ -1985,8 +1985,8 @@ let
mktplcRef = {
name = "gitlab-workflow";
publisher = "gitlab";
version = "6.38.1";
hash = "sha256-OxzjqafPYOe6qMSI0cW3qAU6xbBrIpx47cDz8lJ9ZG0=";
version = "6.40.1";
hash = "sha256-FFuYM15NGqpS2efijAXCvXhvV2A87lshquEDPdGT9qk=";
};
meta = {
description = "GitLab extension for Visual Studio Code";
+2 -2
View File
@@ -82,14 +82,14 @@ let
];
in
mkDerivation rec {
version = "3.40.9";
version = "3.40.10";
pname = "qgis-ltr-unwrapped";
src = fetchFromGitHub {
owner = "qgis";
repo = "QGIS";
rev = "final-${lib.replaceStrings [ "." ] [ "_" ] version}";
hash = "sha256-R2qj6PnCq4uuZP/iFiJh8bFcyPHG7bix9Oc6Re4ixU4=";
hash = "sha256-3FvHAoVeTwBvFNUxSCSumjiPg1hK3oRS1zMzWLXoSTc=";
};
passthru = {
@@ -39,6 +39,6 @@ stdenv.mkDerivation (finalAttrs: {
license = lib.licenses.mit;
platforms = lib.platforms.linux;
mainProgram = "ppic";
maintainers = with lib.maintainers; [ rewine ];
maintainers = with lib.maintainers; [ wineee ];
};
})
@@ -60,6 +60,11 @@ mkDerivation rec {
sha256 = "ig3+TdYv277D9GVnkRSX6nc6D6qruUOw/IQdQCK6FoA=";
};
# configure.ac:23: error: AC_CONFIG_MACRO_DIR can only be used once
postPatch = ''
sed -i "23d" src/hidapi/configure.ac
'';
nativeBuildInputs = [
autoreconfHook
curl
+4 -2
View File
@@ -1,6 +1,6 @@
{
lib,
mkDerivation,
stdenv,
fetchFromGitHub,
nix-update-script,
libkiwix,
@@ -10,10 +10,11 @@
qtwebengine,
qtsvg,
qtimageformats,
wrapQtAppsHook,
aria2,
}:
mkDerivation rec {
stdenv.mkDerivation rec {
pname = "kiwix";
version = "2.4.1";
@@ -27,6 +28,7 @@ mkDerivation rec {
nativeBuildInputs = [
qmake
pkg-config
wrapQtAppsHook
];
buildInputs = [
@@ -335,13 +335,13 @@
"vendorHash": "sha256-ZCMSmOCPEMxCSpl3DjIUGPj1W/KNJgyjtHpmQ19JquA="
},
"datadog": {
"hash": "sha256-Zfsxcfi55RjG5Jq/MnDZ8yfOjg78ORrUMhK300EFxes=",
"hash": "sha256-0ewJLIrKCdTAb3+up7xdbxXscr3hmcIWWcAEGp2TaG4=",
"homepage": "https://registry.terraform.io/providers/DataDog/datadog",
"owner": "DataDog",
"repo": "terraform-provider-datadog",
"rev": "v3.72.0",
"rev": "v3.73.0",
"spdx": "MPL-2.0",
"vendorHash": "sha256-Zi1SyC2SdYBMO0r7QVYS51XOodRG1JHcuIrMu0JRkn0="
"vendorHash": "sha256-RsIuWBhiziUeil/buqOKNH5tPuuWcMoGbKKQUMH17sc="
},
"deno": {
"hash": "sha256-7IvJrhXMeAmf8e21QBdYNSJyVMEzLpat4Tm4zHWglW8=",
@@ -633,11 +633,11 @@
"vendorHash": "sha256-SsEWNIBkgcdTlSrB4hIvRmhMv2eJ2qQaPUmiN09A+NM="
},
"huaweicloud": {
"hash": "sha256-HDB4hUajFRyVCMZ3KAF0mSICsxdkFF2wNXGau3ggMQA=",
"hash": "sha256-GHwwOk8ehMICu024vcJKEs1ruO7KZqIq+tvQIgPnbjg=",
"homepage": "https://registry.terraform.io/providers/huaweicloud/huaweicloud",
"owner": "huaweicloud",
"repo": "terraform-provider-huaweicloud",
"rev": "v1.77.6",
"rev": "v1.78.1",
"spdx": "MPL-2.0",
"vendorHash": null
},
@@ -831,13 +831,13 @@
"vendorHash": "sha256-QxbZv6YMa5/I4bTeQBNdmG3EKtLEmstnH7HMiZzFJrI="
},
"migadu": {
"hash": "sha256-lXt+MswcRy6ztxVciTQKc4oA5tfO3JlDO6xDo6SxlcQ=",
"hash": "sha256-4nNOcRM3iOtEs7HVCXKhhERankS1DKUY7cApWcfnHLY=",
"homepage": "https://registry.terraform.io/providers/metio/migadu",
"owner": "metio",
"repo": "terraform-provider-migadu",
"rev": "2025.8.21",
"rev": "2025.8.28",
"spdx": "0BSD",
"vendorHash": "sha256-GN1h8DXFeAQpg4v7S95VJs17HY4twFGoZKN1modJSRI="
"vendorHash": "sha256-33hZ+MB96pFkHCG3UkKcnPp8wpE8POEHLz12OSF8ujI="
},
"minio": {
"hash": "sha256-XYo+nn9rgK9OtwdowqcTyuMir+7KPPjVeMLwFeWvdEQ=",
@@ -994,13 +994,13 @@
"vendorHash": "sha256-AlB9tC3KejgUAjjT2pY7Q2mTS/AV4QRusSnyPiOheXE="
},
"opentelekomcloud": {
"hash": "sha256-B5Rp3C343Doq48dO+sid5P9Z0vXN6THdhEGdHnHvKD0=",
"hash": "sha256-eZHDzF7029QKzvVegQnVVNe/BaG4m53tydcQlKeE57o=",
"homepage": "https://registry.terraform.io/providers/opentelekomcloud/opentelekomcloud",
"owner": "opentelekomcloud",
"repo": "terraform-provider-opentelekomcloud",
"rev": "v1.36.45",
"rev": "v1.36.47",
"spdx": "MPL-2.0",
"vendorHash": "sha256-CWQRfXZuD4MrP8qvrZb98HMN9cRY3Gt4nF0cc+c7hnc="
"vendorHash": "sha256-yTkPnoyOwp+eL8xDf4WISphw5IrGi3gL7WuLvG02rUE="
},
"openwrt": {
"hash": "sha256-z78IceF2VJtiQpVqC+rTUDsph73LZawIK+az3rEhljA=",
@@ -1436,13 +1436,13 @@
"vendorHash": "sha256-iqwdSzyVZE5CitzXc8rWn2zO3v+VvuDNeS0ll0V6MtU="
},
"utils": {
"hash": "sha256-vCdPG8cZUdFhs1OmqDlgCDqBdyFiL99p6I8JhL8C6lY=",
"hash": "sha256-TcCDv6IB6Z4llvogKWasAK4u2NFsOG4UKAUERDH6SXg=",
"homepage": "https://registry.terraform.io/providers/cloudposse/utils",
"owner": "cloudposse",
"repo": "terraform-provider-utils",
"rev": "v1.30.0",
"rev": "v1.31.0",
"spdx": "Apache-2.0",
"vendorHash": "sha256-giqZi1CmuyANNwzW+y9BUUUEfBhFZKkVGAvIPVvZnzE="
"vendorHash": "sha256-djz3kNV+13Sz9prRPhWaWi50hvYXq3I3cp4neLexeEs="
},
"vault": {
"hash": "sha256-nY8NOE3VJCHkDeisWgxIHG6T1fQ8Jt6Nom2ELexuld0=",
@@ -1463,13 +1463,13 @@
"vendorHash": "sha256-eCIJ2w8DjmUCGp0VbliLaQ6C29mJhl6Spya06Xyiqd4="
},
"venafi": {
"hash": "sha256-7JKsSAiZufOLVMpWVWI+lyWucJ/eqO7OWdSTkQC6VEc=",
"hash": "sha256-VrGObs4l2MhawPe7KjUFgxRBiojfulX1cl1Wo7e4Ehg=",
"homepage": "https://registry.terraform.io/providers/Venafi/venafi",
"owner": "Venafi",
"repo": "terraform-provider-venafi",
"rev": "v0.22.4",
"rev": "v0.23.0",
"spdx": "MPL-2.0",
"vendorHash": "sha256-3fuH/8dqf4jzORN6/ajapj/WclbwD65Nojs+cEdgJ7I="
"vendorHash": "sha256-iaGvkHPBUrcca4Z3oPrX6qrtkitpnoiBnIpZPg54Z48="
},
"vinyldns": {
"hash": "sha256-ow+o9fRw/t2i4N65zuVFbfPb68ZUcJfNB5ARYqRTsIs=",
@@ -87,6 +87,7 @@ python3Packages.buildPythonApplication {
disabledTestPaths = [
# fails on ofborg because of lack of cpu vendor information
"tests/controller/gns3vm/test_virtualbox_gns3_vm.py::test_cpu_vendor_id"
"tests/controller/test_project.py"
];
passthru.tests = {
@@ -39,13 +39,13 @@
stdenv.mkDerivation (finalAttrs: {
pname = "profanity";
version = "0.15.0";
version = "0.15.1";
src = fetchFromGitHub {
owner = "profanity-im";
repo = "profanity";
rev = finalAttrs.version;
hash = "sha256-3TmnbTnL8SPSd3seThavOOJVELi8kWLSlZlAub24KZ4=";
hash = "sha256-h+R+hasc45NZOneuqZ+z+yjfpsPm317OXq0LYe3t+cQ=";
};
patches = [
@@ -26,13 +26,13 @@
}:
let
version = "0.21.0";
version = "0.21.1";
src = fetchFromGitHub {
owner = "f-koehler";
repo = "KTailctl";
rev = "v${version}";
hash = "sha256-mKkHp6ZRTTepg/wo/1jeWBERRezT6hz0EL3ZDlS7nGk=";
hash = "sha256-8k8TRJdfvlYkp3lfGRm8LeWhRuZnSHFZ7UwICRMjwds=";
};
goDeps =
@@ -40,7 +40,7 @@ let
pname = "ktailctl-go-wrapper";
inherit src version;
modRoot = "src/wrapper";
vendorHash = "sha256-RBjWTNbKS/nzD1tF28BZrBJPbx0s6t7Bi1eRFgtHYwk=";
vendorHash = "sha256-/D06cfLWJ0T0FKXMFV7mPi13ag3tX2Pq9eELuERKHtY=";
}).goModules;
in
stdenv.mkDerivation {
@@ -115,8 +115,8 @@ rec {
thunderbird-140 = common {
applicationName = "Thunderbird ESR";
version = "140.2.0esr";
sha512 = "6a10f95b805f00a0820c822ae07bc52ac39d0a55f084c319d27f01710d8a1d809b7b224da966632ae0a22658bf14e76c8fd7cec022718316c306c43809a4997d";
version = "140.2.1esr";
sha512 = "fccef5b8d60cd1aace585f253f52587cb3ff9384bcca2e150d4b52c8106dcd19e4d911f0ac634c0adef2da5034169c81667a5634ee14a5f5fd7cf194f6b86576";
updateScript = callPackage ./update.nix {
attrPath = "thunderbirdPackages.thunderbird-140";
+9 -12
View File
@@ -38,18 +38,6 @@ in
buildInputs = oldAttr.buildInputs ++ [ ncurses ];
});
inherit
(lib.genAttrs [
"epgtableid0"
"hello"
"osddemo"
"pictures"
"servicedemo"
"status"
"svdrpdemo"
] mkPlugin)
;
femon = stdenv.mkDerivation rec {
pname = "vdr-femon";
version = "2.4.0";
@@ -170,3 +158,12 @@ in
};
};
}
// (lib.genAttrs [
"epgtableid0"
"hello"
"osddemo"
"pictures"
"servicedemo"
"status"
"svdrpdemo"
] mkPlugin)
@@ -93,7 +93,7 @@ stdenv.mkDerivation (finalAttrs: {
license = lib.licenses.mit;
maintainers = with lib.maintainers; [
wucke13
rewine
wineee
];
platforms = lib.platforms.unix;
mainProgram = "wayfire";
@@ -53,7 +53,7 @@ stdenv.mkDerivation (finalAttrs: {
homepage = "https://gitlab.com/wayfireplugins/focus-request";
description = "Wayfire plugin provides a mechanism to grant focus to views that make a focus self-request";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ rewine ];
maintainers = with lib.maintainers; [ wineee ];
inherit (wayfire.meta) platforms;
};
})
@@ -60,7 +60,7 @@ stdenv.mkDerivation (finalAttrs: {
homepage = "https://github.com/WayfireWM/wayfire-plugins-extra";
description = "Additional plugins for Wayfire";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ rewine ];
maintainers = with lib.maintainers; [ wineee ];
inherit (wayfire.meta) platforms;
};
})
@@ -48,7 +48,7 @@ stdenv.mkDerivation (finalAttrs: {
homepage = "https://github.com/timgott/wayfire-shadows";
description = "Wayfire plugin that adds window shadows";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ rewine ];
maintainers = with lib.maintainers; [ wineee ];
inherit (wayfire.meta) platforms;
};
})
@@ -58,7 +58,7 @@ stdenv.mkDerivation (finalAttrs: {
license = lib.licenses.mit;
maintainers = with lib.maintainers; [
wucke13
rewine
wineee
];
platforms = lib.platforms.unix;
mainProgram = "wcm";
@@ -61,7 +61,7 @@ stdenv.mkDerivation (finalAttrs: {
license = lib.licenses.mit;
maintainers = with lib.maintainers; [
wucke13
rewine
wineee
];
platforms = lib.platforms.unix;
};
@@ -50,7 +50,7 @@ stdenv.mkDerivation (finalAttrs: {
license = lib.licenses.mit;
maintainers = with lib.maintainers; [
wucke13
rewine
wineee
];
platforms = lib.platforms.unix;
};
@@ -52,7 +52,7 @@ stdenv.mkDerivation (finalAttrs: {
homepage = "https://gitlab.com/wayfireplugins/windecor";
description = "Window decoration plugin for wayfire";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ rewine ];
maintainers = with lib.maintainers; [ wineee ];
inherit (wayfire.meta) platforms;
};
})
@@ -52,7 +52,7 @@ stdenv.mkDerivation (finalAttrs: {
homepage = "https://github.com/wb9688/wwp-switcher";
description = "Plugin to switch active window";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ rewine ];
maintainers = with lib.maintainers; [ wineee ];
inherit (wayfire.meta) platforms;
};
})
@@ -60,7 +60,11 @@ build_bin() {
--color ${colors} \
if [ "$crate_name_" != "$crate_name" ]; then
mv target/bin/$crate_name_ target/bin/$crate_name
if [ -f "target/bin/$crate_name_.wasm" ]; then
mv target/bin/$crate_name_.wasm target/bin/$crate_name.wasm
else
mv target/bin/$crate_name_ target/bin/$crate_name
fi
fi
}
@@ -838,6 +838,19 @@ rec {
];
};
crateWasm32BinHyphens = assertOutputs {
name = "wasm32-crate-bin-hyphens";
mkCrate = mkCrate pkgsCross.wasm32-unknown-none.buildRustCrate;
crateArgs = {
crateName = "wasm32-crate-bin-hyphens";
crateBin = [ { name = "wasm32-crate-bin-hyphens"; } ];
src = mkBin "src/main.rs";
};
expectedFiles = [
"./bin/wasm32-crate-bin-hyphens.wasm"
];
};
brotliTest =
let
pkg = brotliCrates.brotli_2_5_0 { };
+1 -1
View File
@@ -60,7 +60,7 @@ let
postInstall = ''
mkdir -p $out/include
cp ${finalAttrs.buildAndTestSubdir}/librdprs.h $out/include/
cp ${finalAttrs.buildAndTestSubdir}/librdpclient.h $out/include/
'';
});
+1 -1
View File
@@ -17,6 +17,6 @@ index 4357d7aa1..7e21a0076 100644
+#cgo LDFLAGS: -L${SRCDIR}/../../../../../lib -lpthread -ldl -lm -lssl -lcrypto
+#cgo linux LDFLAGS: -l:librdp_client.a
+#cgo darwin LDFLAGS: -framework CoreFoundation -framework Security -lrdp_client
#include <librdprs.h>
#include <librdpclient.h>
*/
import "C"
+8
View File
@@ -2,6 +2,7 @@
fetchurl,
lib,
stdenv,
fetchpatch2,
}:
stdenv.mkDerivation rec {
@@ -15,6 +16,13 @@ stdenv.mkDerivation rec {
doCheck = true;
patches = [
(fetchpatch2 {
url = "https://src.fedoraproject.org/rpms/psacct/raw/rawhide/f/psacct-6.6.4-sprintf-buffer-overflow.patch";
hash = "sha256-l74tLIuhpXj+dIA7uAY9L0qMjQ2SbDdc+vjHMyVouFc=";
})
];
meta = {
description = "GNU Accounting Utilities, login and process accounting utilities";
@@ -7,16 +7,16 @@
buildNpmPackage rec {
pname = "all-the-package-names";
version = "2.0.2186";
version = "2.0.2197";
src = fetchFromGitHub {
owner = "nice-registry";
repo = "all-the-package-names";
tag = "v${version}";
hash = "sha256-q35e9y2c5SBfpyjpkA/yuaJzmMx4OOnvhBCMX56KbQ4=";
hash = "sha256-NuNgEsjB/5QDvfqfR22BUsVmwlSnmnCMwKAV/Oiz0Ww=";
};
npmDepsHash = "sha256-2dwKIW5ZRoLqn8JR3UygO1IAXPd+DPznJIlKJanzWxg=";
npmDepsHash = "sha256-DdE2870xe7ut0A+1/Rx/Xb3KOsNjB0heC8gkUZ0TGJ4=";
passthru.updateScript = nix-update-script { };
+3 -3
View File
@@ -13,12 +13,12 @@ let
pname = "anytype-heart";
# Use only versions specified in anytype-ts middleware.version file:
# https://github.com/anyproto/anytype-ts/blob/v<anytype-ts-version>/middleware.version
version = "0.40.21";
version = "0.43.0-rc02";
src = fetchFromGitHub {
owner = "anyproto";
repo = "anytype-heart";
tag = "v${version}";
hash = "sha256-53LSaETzxwhKkI9is6N6G1+f5Cnf7KStvHA9qeaWUNo=";
hash = "sha256-hqDwzW1Tl44ipL1EAwlXUoKaQ0Wvfa2rtZMQy4pgQ8k=";
};
arch =
@@ -36,7 +36,7 @@ in
buildGoModule {
inherit pname version src;
vendorHash = "sha256-WsYRkAIYDkKWkQpq843dD7Rqc993eHSgee2IX6PomcU=";
vendorHash = "sha256-Rs+CusvMksyXUplGk09J4CiFgl/D4KtsI9C15dSCjOI=";
subPackages = [ "cmd/grpcserver" ];
tags = [
@@ -1,25 +0,0 @@
From 0622b4b5497d8bd923eb0d6dd3f917dfcbda9d53 Mon Sep 17 00:00:00 2001
From: Axel Karjalainen <axel@axka.fi>
Date: Thu, 22 May 2025 22:38:14 +0300
Subject: [PATCH] fix: single instance detection when not packaged
---
electron.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/electron.js b/electron.js
index d70f20f..158bb93 100644
--- a/electron.js
+++ b/electron.js
@@ -76,7 +76,7 @@ if (is.development && !port) {
return;
};
-if (app.isPackaged && !app.requestSingleInstanceLock()) {
+if (!is.development && !app.requestSingleInstanceLock()) {
Api.exit(mainWindow, '' ,false);
return;
};
--
2.49.0
@@ -0,0 +1,12 @@
diff --git a/electron.js b/electron.js
index c5d6760882..17afc05e26 100644
--- a/electron.js
+++ b/electron.js
@@ -15,7 +15,6 @@ const store = new Store({ name: [ 'localStorage', suffix ].join('-') });
// gRPC DevTools extension ID
const GRPC_DEVTOOLS_ID = 'fohdnlaeecihjiendkfhifhlgldpeopm';
-const { installExtension } = require('@tomjs/electron-devtools-installer');
// Fix notifications app name
if (is.windows) {
+8 -6
View File
@@ -1,5 +1,6 @@
{
lib,
stdenv,
fetchFromGitHub,
buildNpmPackage,
pkg-config,
@@ -13,27 +14,27 @@
let
pname = "anytype";
version = "0.46.5";
version = "0.49.2";
src = fetchFromGitHub {
owner = "anyproto";
repo = "anytype-ts";
tag = "v${version}";
hash = "sha256-gDlxyHxBLWVBLnaI6rFclfjwqkw9gneBEC7ssmWDKYU=";
hash = "sha256-8+x2FmyR5x9Zrm3t71RSyxAKcJCvnR98+fqHXjBE7aU=";
};
description = "P2P note-taking tool";
locales = fetchFromGitHub {
owner = "anyproto";
repo = "l10n-anytype-ts";
rev = "1d7ca0073bdd02d0145b8da3b1b956ca0652a108";
hash = "sha256-aL79DOIFH3CocbcLW0SJ472mYPZJXrPJyRKy8zXiF4o=";
rev = "873b42df7320ebbbc80d7e2477914dac70363ef7";
hash = "sha256-Mr0KfXn9NO86QqgBhVjSs2przN/GtjuhJHJ9djo8Feg=";
};
in
buildNpmPackage {
inherit pname version src;
npmDepsHash = "sha256-WEw3RCi7dWs2eMYxLH7DcmWBrN4T8T6beIyplcXgJAA=";
npmDepsHash = "sha256-fuNTSZl+4DG/YL34f/+bYK26ruRFAc1hyHVAm256LiE=";
env = {
ELECTRON_SKIP_BINARY_DOWNLOAD = "1";
@@ -52,7 +53,7 @@ buildNpmPackage {
patches = [
./0001-feat-update-Disable-auto-checking-for-updates-and-updating-manually.patch
./0001-fix-single-instance-detection-when-not-packaged.patch
./0002-remove-grpc-devtools.patch
];
buildPhase = ''
@@ -132,5 +133,6 @@ buildNpmPackage {
"x86_64-darwin"
"aarch64-darwin"
];
broken = stdenv.hostPlatform.isDarwin;
};
}
+29 -18
View File
@@ -1,6 +1,5 @@
{
lib,
fetchurl,
fetchFromGitLab,
python3Packages,
gobject-introspection,
@@ -8,6 +7,7 @@
gtk3,
wrapGAppsHook3,
xrandr,
nix-update-script,
}:
let
@@ -29,6 +29,22 @@ buildPythonApplication rec {
patches = [ ./gzip-timestamp-fix.patch ];
patchFlags = [ "-p0" ];
nativeBuildInputs = [
gobject-introspection
wrapGAppsHook3
];
buildInputs = [
docutils
gsettings-desktop-schemas
gtk3
];
propagatedBuildInputs = [
xrandr
pygobject3
];
preBuild = ''
rm -rf data/po/*
'';
@@ -36,25 +52,20 @@ buildPythonApplication rec {
# no tests
doCheck = false;
buildInputs = [
docutils
gsettings-desktop-schemas
gtk3
];
nativeBuildInputs = [
gobject-introspection
wrapGAppsHook3
];
propagatedBuildInputs = [
xrandr
pygobject3
];
passthru.updateScript = nix-update-script {
extraArgs = [
"--version-regex=(\\d.*)"
];
};
meta = with lib; {
homepage = "https://christian.amsuess.com/tools/arandr/";
meta = {
changelog = "https://gitlab.com/arandr/arandr/-/blob/${src.tag}/ChangeLog";
description = "Simple visual front end for XRandR";
license = licenses.gpl3;
maintainers = with maintainers; [ gepbird ];
homepage = "https://christian.amsuess.com/tools/arandr/";
license = lib.licenses.gpl3;
mainProgram = "arandr";
maintainers = with lib.maintainers; [
gepbird
];
};
}
+41 -5
View File
@@ -2,6 +2,10 @@
lib,
fetchFromGitHub,
buildNpmPackage,
copyDesktopItems,
imagemagick,
xdg-utils,
makeDesktopItem,
nix-update-script,
}:
@@ -20,22 +24,54 @@ buildNpmPackage rec {
makeCacheWritable = true;
nativeBuildInputs = [
copyDesktopItems
imagemagick
];
installPhase = ''
runHook preInstall
mkdir -p $out/share
cp -r dist $out/share/ariang
cp -r dist $out/share/${pname}
for size in 16 24 36 48 72; do
mkdir -p $out/share/icons/hicolor/''${size}x''${size}/apps
magick $out/share/${pname}/tileicon.png -resize ''${size}x''${size} \
$out/share/icons/hicolor/''${size}x''${size}/apps/${pname}.png
done
mkdir -p $out/bin
makeWrapper ${xdg-utils}/bin/xdg-open $out/bin/${pname} \
--add-flags "file://$out/share/${pname}/index.html"
runHook postInstall
'';
desktopItems = [
(makeDesktopItem {
name = pname;
desktopName = "AriaNg";
genericName = meta.description;
comment = meta.description;
exec = pname;
icon = pname;
terminal = false;
type = "Application";
categories = [
"Network"
"WebBrowser"
];
})
];
passthru.updateScript = nix-update-script { };
meta = with lib; {
meta = {
description = "Modern web frontend making aria2 easier to use";
homepage = "http://ariang.mayswind.net/";
license = licenses.mit;
maintainers = with maintainers; [ stunkymonkey ];
platforms = platforms.unix;
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ stunkymonkey ];
platforms = lib.platforms.unix;
};
}
+2 -2
View File
@@ -12,13 +12,13 @@
stdenv.mkDerivation rec {
pname = "audacious";
version = "4.5";
version = "4.5.1";
src = fetchFromGitHub {
owner = "audacious-media-player";
repo = "audacious";
rev = "${pname}-${version}";
hash = "sha256-oYssIeVAvz2nx/3GRxgmsUjp2mnEFMem0WNPJG9l14E=";
hash = "sha256-1+RyGMUrotFdNCNpxzKpXGafKn9kNtzEyRVefUmJexU=";
};
nativeBuildInputs = [
@@ -45,13 +45,13 @@
stdenv.mkDerivation rec {
pname = "audacious-plugins";
version = "4.5";
version = "4.5.1";
src = fetchFromGitHub {
owner = "audacious-media-player";
repo = "audacious-plugins";
rev = "${pname}-${version}";
hash = "sha256-2GsNIkvrjZ1EOXi6H5jagdawxXp0kVg7C4FaEZkMHwM=";
hash = "sha256-HfO59DOIYsEpBzUyaLYh/gXfz+zvH8lIY2yBVCn3wks=";
};
patches = [ ./0001-Set-plugindir-to-PREFIX-lib-audacious.patch ];
@@ -6,16 +6,16 @@
rustPlatform.buildRustPackage rec {
pname = "automatic-timezoned";
version = "2.0.86";
version = "2.0.88";
src = fetchFromGitHub {
owner = "maxbrunet";
repo = "automatic-timezoned";
rev = "v${version}";
sha256 = "sha256-LUfRylbu5bium8zXYFMs+hP7cKr3UMEhn0evwhQqiz8=";
sha256 = "sha256-YaSbXMY/MT8GznQtjG9MoC6fi6WV3QHV9UwsjGWaAFQ=";
};
cargoHash = "sha256-aFVLuJLy3Dxe66yAQbnpCy5Bqnzn5jVIlzTOrkJ4jC0=";
cargoHash = "sha256-DKcQ3O9Db0CRjHZVrceMPFSqkIwgFO7z5AmFd88rr1U=";
meta = {
description = "Automatically update system timezone based on location";
+3 -3
View File
@@ -16,16 +16,16 @@
buildNpmPackage rec {
pname = "basedpyright";
version = "1.31.3";
version = "1.31.4";
src = fetchFromGitHub {
owner = "detachhead";
repo = "basedpyright";
tag = "v${version}";
hash = "sha256-sk/jqTVWLnE0qP7iSZFTegOkfz8s0TenUlctDmAEVW4=";
hash = "sha256-Lv2wNqS32482jFThJ5dIqlyv/m8QzEHDdlCYs6wd9nY=";
};
npmDepsHash = "sha256-O7OypjSMxMEajJZOHOt1AJXChQQbGZ4u63g8agU95Qw=";
npmDepsHash = "sha256-D1/6H+7GXWeL3dWeXB4Ho5mzCCVzCQPVIPMJ+btF0k4=";
npmWorkspace = "packages/pyright";
preBuild = ''
+3 -3
View File
@@ -8,16 +8,16 @@
buildNpmPackage rec {
pname = "better-commits";
version = "1.17.1";
version = "1.18.0";
src = fetchFromGitHub {
owner = "Everduin94";
repo = "better-commits";
tag = "v${version}";
hash = "sha256-dalCpupefZT1VDOo+U2MvqeWh1whi8w/697VOFJyuDw=";
hash = "sha256-eAxtec1T1kwIMhzKYpy4rkYScjXVaclu3bOUbANz6b8=";
};
npmDepsHash = "sha256-g34UutgT5315BpsQSuGGLIU6Ga+hpEz74HNLKKOB+ec=";
npmDepsHash = "sha256-lPJ50DYnANJZ3IowE3kOCyAx9peq7Donh72jk1eQnBs=";
passthru.updateScript = nix-update-script { };

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