Merge b772b8167c into haskell-updates
This commit is contained in:
@@ -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: |
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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: |
|
||||
|
||||
@@ -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: |
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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: |
|
||||
|
||||
@@ -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, {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -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
|
||||
{
|
||||
|
||||
@@ -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
@@ -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 (non‐attribute‐set 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 attribute’s 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 attribute’s 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.
|
||||
|
||||
@@ -206,6 +206,8 @@ let
|
||||
concatMapAttrs
|
||||
mapAttrsRecursive
|
||||
mapAttrsRecursiveCond
|
||||
mapAttrsToListRecursive
|
||||
mapAttrsToListRecursiveCond
|
||||
genAttrs
|
||||
genAttrs'
|
||||
isDerivation
|
||||
|
||||
@@ -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 [
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
{
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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";
|
||||
};
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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";
|
||||
};
|
||||
|
||||
@@ -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.";
|
||||
};
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
@@ -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.";
|
||||
};
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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 ];
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
@@ -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.";
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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; };
|
||||
}
|
||||
|
||||
@@ -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")
|
||||
'';
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
'';
|
||||
}
|
||||
@@ -0,0 +1,5 @@
|
||||
{ runTest }:
|
||||
|
||||
{
|
||||
basic = runTest ./basic.nix;
|
||||
}
|
||||
@@ -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")
|
||||
'';
|
||||
}
|
||||
@@ -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
@@ -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
@@ -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 = [
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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 { };
|
||||
|
||||
@@ -60,7 +60,7 @@ let
|
||||
|
||||
postInstall = ''
|
||||
mkdir -p $out/include
|
||||
cp ${finalAttrs.buildAndTestSubdir}/librdprs.h $out/include/
|
||||
cp ${finalAttrs.buildAndTestSubdir}/librdpclient.h $out/include/
|
||||
'';
|
||||
});
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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 { };
|
||||
|
||||
|
||||
@@ -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) {
|
||||
@@ -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;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -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
|
||||
];
|
||||
};
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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 = ''
|
||||
|
||||
@@ -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
Reference in New Issue
Block a user