mirror of
https://github.com/NixOS/nixpkgs.git
synced 2026-09-01 13:14:42 +00:00
Merge commit '40c7c335458e1a4a0a961f684d0395ff59a9b8ac' into haskell-updates
This commit is contained in:
6
.github/workflows/eval.yml
vendored
6
.github/workflows/eval.yml
vendored
@@ -153,8 +153,8 @@ jobs:
|
||||
MATRIX_SYSTEM: ${{ matrix.system }}
|
||||
run: |
|
||||
nix-build nixpkgs/untrusted/ci --arg nixpkgs ./nixpkgs/untrusted-pinned -A eval.diff \
|
||||
--arg beforeDir "$(readlink ./target)" \
|
||||
--arg afterDir "$(readlink ./merged)" \
|
||||
--arg beforeDir ./target \
|
||||
--arg afterDir ./merged \
|
||||
--argstr evalSystem "$MATRIX_SYSTEM" \
|
||||
--out-link diff
|
||||
|
||||
@@ -207,7 +207,7 @@ jobs:
|
||||
|
||||
# Use the target branch to get accurate maintainer info
|
||||
nix-build nixpkgs/trusted/ci --arg nixpkgs ./nixpkgs/trusted-pinned -A eval.compare \
|
||||
--arg combinedDir "$(realpath ./combined)" \
|
||||
--arg combinedDir ./combined \
|
||||
--arg touchedFilesJson ./touched-files.json \
|
||||
--argstr githubAuthorId "$AUTHOR_ID" \
|
||||
--out-link comparison
|
||||
|
||||
@@ -33,13 +33,13 @@ Note that 16GB memory is the recommended minimum, while with less than 8GB memor
|
||||
To compare two commits locally, first run the following on the baseline commit:
|
||||
|
||||
```
|
||||
BASELINE=$(nix-build ci -A eval.baseline --no-out-link)
|
||||
nix-build ci -A eval.baseline --out-link baseline
|
||||
```
|
||||
|
||||
Then, on the commit with your changes:
|
||||
|
||||
```
|
||||
nix-build ci -A eval.full --arg baseline $BASELINE
|
||||
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`).
|
||||
|
||||
@@ -13,6 +13,8 @@
|
||||
byName ? false,
|
||||
}:
|
||||
let
|
||||
combined = builtins.storePath combinedDir;
|
||||
|
||||
/*
|
||||
Derivation that computes which packages are affected (added, changed or removed) between two revisions of nixpkgs.
|
||||
Note: "platforms" are "x86_64-linux", "aarch64-darwin", ...
|
||||
@@ -75,7 +77,7 @@ let
|
||||
# Attrs
|
||||
# - keys: "added", "changed", "removed" and "rebuilds"
|
||||
# - values: lists of `packagePlatformPath`s
|
||||
diffAttrs = builtins.fromJSON (builtins.readFile "${combinedDir}/combined-diff.json");
|
||||
diffAttrs = builtins.fromJSON (builtins.readFile "${combined}/combined-diff.json");
|
||||
|
||||
changedPackagePlatformAttrs = convertToPackagePlatformAttrs diffAttrs.changed;
|
||||
rebuildsPackagePlatformAttrs = convertToPackagePlatformAttrs diffAttrs.rebuilds;
|
||||
@@ -139,8 +141,8 @@ runCommand "compare"
|
||||
maintainers = builtins.toJSON maintainers;
|
||||
passAsFile = [ "maintainers" ];
|
||||
env = {
|
||||
BEFORE_DIR = "${combinedDir}/before";
|
||||
AFTER_DIR = "${combinedDir}/after";
|
||||
BEFORE_DIR = "${combined}/before";
|
||||
AFTER_DIR = "${combined}/after";
|
||||
};
|
||||
}
|
||||
''
|
||||
|
||||
@@ -11,6 +11,9 @@
|
||||
}:
|
||||
|
||||
let
|
||||
before = builtins.storePath beforeDir;
|
||||
after = builtins.storePath afterDir;
|
||||
|
||||
/*
|
||||
Computes the key difference between two attrs
|
||||
|
||||
@@ -64,15 +67,15 @@ let
|
||||
in
|
||||
builtins.fromJSON data;
|
||||
|
||||
beforeAttrs = getAttrs beforeDir;
|
||||
afterAttrs = getAttrs afterDir;
|
||||
beforeAttrs = getAttrs before;
|
||||
afterAttrs = getAttrs after;
|
||||
diffAttrs = diff beforeAttrs afterAttrs;
|
||||
diffJson = writeText "diff.json" (builtins.toJSON diffAttrs);
|
||||
in
|
||||
runCommand "diff" { } ''
|
||||
mkdir -p $out/${evalSystem}
|
||||
|
||||
cp -r ${beforeDir} $out/before
|
||||
cp -r ${afterDir} $out/after
|
||||
cp -r ${before} $out/before
|
||||
cp -r ${after} $out/after
|
||||
cp ${diffJson} $out/${evalSystem}/diff.json
|
||||
''
|
||||
|
||||
@@ -93,6 +93,13 @@ module.exports = async ({ github, context, core, dry }) => {
|
||||
log('Last eval run', run_id ?? '<n/a>')
|
||||
|
||||
if (conclusion === 'success') {
|
||||
// Check for any human reviews other than GitHub actions and other GitHub apps.
|
||||
// Accounts could be deleted as well, so don't count them.
|
||||
const humanReviews = reviews.filter(
|
||||
(r) =>
|
||||
r.user && !r.user.login.endsWith('[bot]') && r.user.type !== 'Bot',
|
||||
)
|
||||
|
||||
Object.assign(prLabels, {
|
||||
// We only set this label if the latest eval run was successful, because if it was not, it
|
||||
// *could* have requested reviewers. We will let the PR author fix CI first, before "escalating"
|
||||
@@ -105,7 +112,7 @@ module.exports = async ({ github, context, core, dry }) => {
|
||||
'9.needs: reviewer':
|
||||
!pull_request.draft &&
|
||||
pull_request.requested_reviewers.length === 0 &&
|
||||
reviews.length === 0,
|
||||
humanReviews.length === 0,
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
@@ -914,6 +914,21 @@ fetchFromRadicle {
|
||||
}
|
||||
```
|
||||
|
||||
## `fetchRadiclePatch` {#fetchradiclepatch}
|
||||
|
||||
`fetchRadiclePatch` works very similarly to `fetchFromRadicle` with almost the same arguments
|
||||
expected. However, instead of a `rev` or `tag` argument, a `revision` argument is expected, which
|
||||
contains the full revision id of the Radicle patch to fetch.
|
||||
|
||||
```nix
|
||||
fetchRadiclePatch {
|
||||
seed = "rosa.radicle.xyz";
|
||||
repo = "z4V1sjrXqjvFdnCUbxPFqd5p4DtH5"; # radicle-explorer
|
||||
revision = "d97d872386c70607beda2fb3fc2e60449e0f4ce4"; # patch: d77e064
|
||||
hash = "sha256-ttnNqj0lhlSP6BGzEhhUOejKkkPruM9yMwA5p9Di4bk=";
|
||||
}
|
||||
```
|
||||
|
||||
## `requireFile` {#requirefile}
|
||||
|
||||
`requireFile` allows requesting files that cannot be fetched automatically, but whose content is known.
|
||||
|
||||
@@ -42,12 +42,43 @@ The manpages must have a section suffix, and may optionally be compressed (with
|
||||
{
|
||||
nativeBuildInputs = [ installShellFiles ];
|
||||
|
||||
# Sometimes the manpage file has an undesirable name; e.g., it conflicts with
|
||||
# another software with an equal name. It should be renamed before being
|
||||
# installed via installManPage
|
||||
# Sometimes the manpage file has an undersirable name; e.g., it conflicts with
|
||||
# another software with an equal name. To install it with a different name,
|
||||
# the installed name must be provided before the path to the file.
|
||||
#
|
||||
# Below install a manpage "foobar.1" from the source file "./foobar.1", and
|
||||
# also installs the manpage "fromsea.3" from the source file "./delmar.3".
|
||||
postInstall = ''
|
||||
mv fromsea.3 delmar.3
|
||||
installManPage foobar.1 delmar.3
|
||||
installManPage \
|
||||
foobar.1 \
|
||||
--name fromsea.3 delmar.3
|
||||
'';
|
||||
}
|
||||
```
|
||||
|
||||
The manpage may be the result of a piped input (e.g. `<(cmd)`), in which
|
||||
case the name must be provided before the pipe with the `--name` flag.
|
||||
|
||||
```nix
|
||||
{
|
||||
nativeBuildInputs = [ installShellFiles ];
|
||||
|
||||
postInstall = ''
|
||||
installManPage --name foobar.1 <($out/bin/foobar --manpage)
|
||||
'';
|
||||
}
|
||||
```
|
||||
|
||||
If no parsing of arguments is desired, pass `--` to opt-out of all subsequent
|
||||
arguments.
|
||||
|
||||
```nix
|
||||
{
|
||||
nativeBuildInputs = [ installShellFiles ];
|
||||
|
||||
# Installs a manpage from a file called "--name"
|
||||
postInstall = ''
|
||||
installManPage -- --name
|
||||
'';
|
||||
}
|
||||
```
|
||||
@@ -58,8 +89,8 @@ The `installShellCompletion` function takes one or more paths to shell
|
||||
completion files.
|
||||
|
||||
By default it will autodetect the shell type from the completion file extension,
|
||||
but you may also specify it by passing one of `--bash`, `--fish`, or
|
||||
`--zsh`. These flags apply to all paths listed after them (up until another
|
||||
but you may also specify it by passing one of `--bash`, `--fish`, `--zsh`, or
|
||||
`--nushell`. These flags apply to all paths listed after them (up until another
|
||||
shell flag is given). Each path may also have a custom installation name
|
||||
provided by providing a flag `--name NAME` before the path. If this flag is not
|
||||
provided, zsh completions will be renamed automatically such that `foobar.zsh`
|
||||
@@ -77,9 +108,10 @@ zsh).
|
||||
# explicit behavior
|
||||
installShellCompletion --bash --name foobar.bash share/completions.bash
|
||||
installShellCompletion --fish --name foobar.fish share/completions.fish
|
||||
installShellCompletion --nushell --name foobar share/completions.nu
|
||||
installShellCompletion --zsh --name _foobar share/completions.zsh
|
||||
# implicit behavior
|
||||
installShellCompletion share/completions/foobar.{bash,fish,zsh}
|
||||
installShellCompletion share/completions/foobar.{bash,fish,zsh,nu}
|
||||
'';
|
||||
}
|
||||
```
|
||||
@@ -104,6 +136,7 @@ failure. To prevent this, guard the completion generation commands.
|
||||
installShellCompletion --cmd foobar \
|
||||
--bash <($out/bin/foobar --bash-completion) \
|
||||
--fish <($out/bin/foobar --fish-completion) \
|
||||
--nushell <($out/bin/foobar --nushell-completion) \
|
||||
--zsh <($out/bin/foobar --zsh-completion)
|
||||
'';
|
||||
}
|
||||
|
||||
@@ -192,6 +192,12 @@ Specifies the contents of the `go.sum` file and triggers rebuilds when it change
|
||||
|
||||
Defaults to `null`
|
||||
|
||||
### `buildTestBinaries` {#var-go-buildTestBinaries}
|
||||
|
||||
This option allows to compile test binaries instead of the usual binaries produced by a package.
|
||||
Go can [compile test into binaries](https://pkg.go.dev/cmd/go#hdr-Test_packages) using the `go test -c` command.
|
||||
These binaries can then be executed at a later point (outside the Nix sandbox) to run the tests.
|
||||
This is mostly useful for downstream consumers to run integration or end-to-end tests that won't work in the Nix sandbox, for example because they require network access.
|
||||
|
||||
## Versioned toolchains and builders {#ssec-go-toolchain-versions}
|
||||
|
||||
|
||||
@@ -574,6 +574,9 @@
|
||||
"strictflexarrays3": [
|
||||
"index.html#strictflexarrays3"
|
||||
],
|
||||
"glibcxxassertions": [
|
||||
"index.html#glibcxxassertions"
|
||||
],
|
||||
"tester-shfmt": [
|
||||
"index.html#tester-shfmt"
|
||||
],
|
||||
@@ -622,6 +625,9 @@
|
||||
"typst-package-scope-and-usage": [
|
||||
"index.html#typst-package-scope-and-usage"
|
||||
],
|
||||
"var-go-buildTestBinaries": [
|
||||
"index.html#var-go-buildTestBinaries"
|
||||
],
|
||||
"var-meta-teams": [
|
||||
"index.html#var-meta-teams"
|
||||
],
|
||||
@@ -1669,6 +1675,9 @@
|
||||
"fetchfromradicle": [
|
||||
"index.html#fetchfromradicle"
|
||||
],
|
||||
"fetchradiclepatch": [
|
||||
"index.html#fetchradiclepatch"
|
||||
],
|
||||
"requirefile": [
|
||||
"index.html#requirefile"
|
||||
],
|
||||
|
||||
@@ -24,6 +24,8 @@
|
||||
|
||||
- The `offrss` package was removed due to lack of upstream maintenance since 2012. It's recommended for users to migrate to another RSS reader
|
||||
|
||||
- `installShellFiles`: Allow installManPage to take a piped input, add the `--name` flag for renaming the file when installed. Can also append `--` to opt-out of all subsequent parsing.
|
||||
|
||||
- GCC 9, 10, 11, and 12 have been removed, as they have reached end‐of‐life upstream and are no longer supported.
|
||||
|
||||
- GHCJS 8.10, exposed via `haskell.compiler.ghcjs` and `haskell.compiler.ghcjs810`, has been removed. Downstream users should migrate their projects to the new JavaScript backend of GHC proper which can be used via `pkgsCross.ghcjs` from Nixpkgs. Haskell packaging code, like `haskellPackages.mkDerivation`, `ghcWithPackages` and `hoogleWithPackages`, also no longer supports GHCJS.
|
||||
@@ -34,6 +36,12 @@
|
||||
The latter was probably broken anyway.
|
||||
If there is interest in restoring support for these architectures, it should be possible to cross‐compile a bootstrap GHC binary.
|
||||
|
||||
- `haskellPackages` and the package sets under `haskell.packages` no longer expose an `llvmPackages` attribute,
|
||||
though it can still be accessed via `ghc.llvmPackages` (from the same package set).
|
||||
Haskell packages usually only need to depend on an LLVM version matching GHC if they force the use the LLVM
|
||||
backend even if NCG is available. In this case, it is best to use the `forceLlvmCodegenBackend` helper.
|
||||
In all other cases, like linking against `libLLVM`, Haskell packages should use the appropriate version of `llvmPackages` from `pkgs`.
|
||||
|
||||
- `base16-builder` node package has been removed due to lack of upstream maintenance.
|
||||
|
||||
- `python3Packages.bjoern` has been removed, as the upstream is unmaintained and it depends on a 14-year-old version of http-parser with numerous vulnerabilities.
|
||||
@@ -52,6 +60,10 @@
|
||||
|
||||
- `kbd` package's `outputs` now include a `man` and `scripts` outputs. The `unicode_start` and `unicode_stop` Bash scripts are now part of the `scripts` output, allowing most usages of the `kbd` package to not pull in `bash`.
|
||||
|
||||
- `spidermonkey_91` has been removed, as it has been EOL since September 2022.
|
||||
|
||||
- `hiawata` has been removed, due to lack of active development upstream, lack of maintainership downstream and upcoming security issues.
|
||||
|
||||
- `cudaPackages.cudatoolkit-legacy-runfile` has been removed.
|
||||
|
||||
- `conduwuit` was removed due to upstream ceasing development and deleting their repository. For existing data, a migration to `matrix-conduit`, `matrix-continuwuity` or `matrix-tuwunel` may be possible.
|
||||
@@ -66,6 +78,8 @@
|
||||
|
||||
- `gnome-keyring` no longer ships with an SSH agent anymore because it has been deprecated upstream. You should use `gcr_4` instead, which provides the same features. More information on why this was done can be found on [the relevant GCR upstream PR](https://gitlab.gnome.org/GNOME/gcr/-/merge_requests/67).
|
||||
|
||||
- `python3Full` and its versioned attributes (python3xxFull) have been removed. Bluetooth support is now enabled in the default python3 attributes. The X11 support built the tkinter module, which is available as a dedicated attribute on the package set.
|
||||
|
||||
- `stdenv.mkDerivation` and other derivation builders that use it no longer allow the value of `env` to be anything but an attribute set, for the purpose of setting environment variables that are available to the [builder](https://nix.dev/manual/nix/latest/store/derivation/#builder) process. An environment variable called `env` can still be provided by means of `mkDerivation { env.env = ...; }`, though we recommend to use a more specific name than "env".
|
||||
|
||||
- The default Android NDK version has been raised to 27, and the default SDK version to 35.
|
||||
@@ -108,6 +122,8 @@
|
||||
|
||||
- `python3Packages.triton` no longer takes an `enableRocm` argument and supports ROCm in all build configurations via runtime binding. In most cases no action will be needed. If triton is unable to find the HIP SDK add `rocmPackages.clr` as a build input or set the environment variable `HIP_PATH="${rocmPackages.clr}"`.
|
||||
|
||||
- `floorp` has been replaced with a binary build, available as `floorp-bin`. Due to major changes in the upstream project structure and build system, building Floorp from source has become unfeasible. No configuration or state migration is necessary.
|
||||
|
||||
- `inspircd` has been updated to the v4 release series. Please refer to the upstream documentation for [general information](https://docs.inspircd.org/4/overview/#v4-overview) and a list of [breaking changes](https://docs.inspircd.org/4/breaking-changes/).
|
||||
|
||||
- `lima` package now only includes the guest agent for the host's architecture by default. If your guest VM's architecture differs from your Lima host's, you'll need to enable the `lima-additional-guestagents` package by setting `withAdditionalGuestAgents = true` when overriding lima with this input.
|
||||
@@ -145,6 +161,15 @@
|
||||
|
||||
- `pulsemeeter` has been updated to `2.0.0`. The configuration file from older versions has to be deleted. For more information and instructions see the [v2.0.0 changelog entry](https://github.com/theRealCarneiro/pulsemeeter/releases/tag/v2.0.0).
|
||||
|
||||
- `rofi` has been updated to `2.0.0`. `rofi-wayland` and `rofi-wayland-unwrapped` have been merged into `rofi` and `rofi-unwrapped` respectively. For more information and instructions see the [v2.0.0 changelog entry](https://github.com/davatorium/rofi/releases/tag/2.0.0).
|
||||
|
||||
- `rofi-emoji-wayland` has been merged into `rofi-emoji` as `rofi` has been updated to `2.0.0` and supports both X11 & Wayland.
|
||||
|
||||
- `emacs-macport` has been moved to a fork of Mitsuharu Yamamoto's patched source code starting with Emacs v30 as the original project seems to be currently dormant. All older versions of this package have been dropped.
|
||||
This introduces some backwards‐incompatible changes; see the NEWS for details.
|
||||
NEWS can be viewed from Emacs by typing `C-h n`, or by clicking `Help->Emacs News` from the menu bar.
|
||||
It can also be browsed [online](https://git.savannah.gnu.org/cgit/emacs.git/tree/etc/NEWS?h=emacs-30).
|
||||
|
||||
## Other Notable Changes {#sec-nixpkgs-release-25.11-notable-changes}
|
||||
|
||||
<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
|
||||
@@ -157,6 +182,8 @@
|
||||
|
||||
- [`homebox` 0.20.0](https://github.com/sysadminsmedia/homebox/releases/tag/v0.20.0) changed how assets are stored and hashed. It is recommended to back up your database before this update.
|
||||
|
||||
- `installShellCompletion`: now supports Nushell completion files
|
||||
|
||||
- New hardening flags, `strictflexarrays1` and `strictflexarrays3` were made available, corresponding to the gcc/clang options `-fstrict-flex-arrays=1` and `-fstrict-flex-arrays=3` respectively.
|
||||
|
||||
- `gramps` has been updated to 6.0.0
|
||||
@@ -173,6 +200,8 @@
|
||||
- `searx` was updated to use `envsubst` instead of `sed` for parsing secrets from environment variables.
|
||||
If your previous configuration included a secret reference like `server.secret_key = "@SEARX_SECRET_KEY@"`, you must migrate to the new envsubst syntax: `server.secret_key = "$SEARX_SECRET_KEY"`.
|
||||
|
||||
- A new hardening flag, `glibcxxassertions` was made available, corresponding to the glibc `_GLIBCXX_ASSERTIONS` option.
|
||||
|
||||
- `versionCheckHook`: Packages that previously relied solely on `pname` to locate the program used to version check, but have a differing `meta.mainProgram` entry, might now fail.
|
||||
|
||||
|
||||
|
||||
@@ -1682,6 +1682,12 @@ This should be turned off or fixed for build errors such as:
|
||||
sorry, unimplemented: __builtin_clear_padding not supported for variable length aggregates
|
||||
```
|
||||
|
||||
#### `glibcxxassertions` {#glibcxxassertions}
|
||||
|
||||
Adds the `-D_GLIBCXX_ASSERTIONS` compiler flag. This flag only has an effect on libstdc++ targets, and when defined, enables extra error checking in the form of precondition assertions, such as bounds checking in c++ strings and null pointer checks when dereferencing c++ smart pointers.
|
||||
|
||||
These checks may have an impact on performance in some cases.
|
||||
|
||||
#### `pacret` {#pacret}
|
||||
|
||||
This flag adds the `-mbranch-protection=pac-ret` compiler option on aarch64-linux targets. This uses ARM v8.3's Pointer Authentication feature to sign function return pointers before adding them to the stack. The pointer's authenticity is then validated before returning to its destination. This dramatically increases the difficulty of ROP exploitation techniques.
|
||||
|
||||
@@ -571,6 +571,9 @@ let
|
||||
inherit (self.versions)
|
||||
splitVersion
|
||||
;
|
||||
inherit (self.network.ipv6)
|
||||
mkEUI64Suffix
|
||||
;
|
||||
}
|
||||
);
|
||||
in
|
||||
|
||||
@@ -64,6 +64,11 @@ lib.mapAttrs mkLicense (
|
||||
free = false;
|
||||
};
|
||||
|
||||
adobeUtopia = {
|
||||
fullName = "Adobe Utopia Font License";
|
||||
spdxId = "Adobe-Utopia";
|
||||
};
|
||||
|
||||
afl20 = {
|
||||
spdxId = "AFL-2.0";
|
||||
fullName = "Academic Free License v2.0";
|
||||
@@ -692,6 +697,11 @@ lib.mapAttrs mkLicense (
|
||||
spdxId = "HPND-sell-variant";
|
||||
};
|
||||
|
||||
hpndDec = {
|
||||
fullName = "Historical Permission Notice and Disclaimer - DEC variant";
|
||||
spdxId = "HPND-DEC";
|
||||
};
|
||||
|
||||
hpndDoc = {
|
||||
fullName = "Historical Permission Notice and Disclaimer - documentation variant";
|
||||
spdxId = "HPND-doc";
|
||||
|
||||
@@ -1,6 +1,14 @@
|
||||
{ lib }:
|
||||
let
|
||||
inherit (import ./internal.nix { inherit lib; }) _ipv6;
|
||||
inherit (lib.strings) match concatStringsSep toLower;
|
||||
inherit (lib.trivial)
|
||||
pipe
|
||||
bitXor
|
||||
fromHexString
|
||||
toHexString
|
||||
;
|
||||
inherit (lib.lists) elemAt;
|
||||
in
|
||||
{
|
||||
ipv6 = {
|
||||
@@ -45,5 +53,60 @@ in
|
||||
{
|
||||
inherit address prefixLength;
|
||||
};
|
||||
|
||||
/**
|
||||
Converts a 48-bit MAC address into a EUI-64 IPv6 address suffix.
|
||||
|
||||
# Example
|
||||
|
||||
```nix
|
||||
mkEUI64Suffix "66:75:63:6B:20:75"
|
||||
=> "6475:63ff:fe6b:2075"
|
||||
```
|
||||
|
||||
# Type
|
||||
|
||||
```
|
||||
mkEUI64Suffix :: String -> String
|
||||
```
|
||||
|
||||
# Inputs
|
||||
|
||||
mac
|
||||
: The MAC address (may contain these delimiters: `:`, `-` or `.` but it's not necessary)
|
||||
*/
|
||||
mkEUI64Suffix =
|
||||
mac:
|
||||
pipe mac [
|
||||
# match mac address
|
||||
(match "^([0-9A-Fa-f]{2})[-:.]?([0-9A-Fa-f]{2})[-:.]?([0-9A-Fa-f]{2})[-:.]?([0-9A-Fa-f]{2})[-:.]?([0-9A-Fa-f]{2})[-:.]?([0-9A-Fa-f]{2})$")
|
||||
|
||||
# check if there are matches
|
||||
(
|
||||
matches:
|
||||
if matches == null then
|
||||
throw ''"${mac}" is not a valid MAC address (expected 6 octets of hex digits)''
|
||||
else
|
||||
matches
|
||||
)
|
||||
|
||||
# transform to result hextets
|
||||
(octets: [
|
||||
# combine 1st and 2nd octets into first hextet, flip U/L bit, 512 = 0x200
|
||||
(toHexString (bitXor 512 (fromHexString ((elemAt octets 0) + (elemAt octets 1)))))
|
||||
|
||||
# combine 3rd and 4th octets, combine them, insert fffe pattern in between to get next two hextets
|
||||
"${elemAt octets 2}ff"
|
||||
"fe${elemAt octets 3}"
|
||||
|
||||
# combine 5th and 6th octets into the last hextet
|
||||
((elemAt octets 4) + (elemAt octets 5))
|
||||
])
|
||||
|
||||
# concat to result suffix
|
||||
(concatStringsSep ":")
|
||||
|
||||
toLower
|
||||
];
|
||||
};
|
||||
}
|
||||
|
||||
@@ -45,6 +45,7 @@ let
|
||||
"mips64-linux"
|
||||
"mips64el-linux"
|
||||
"mipsel-linux"
|
||||
"powerpc-linux"
|
||||
"powerpc64-linux"
|
||||
"powerpc64le-linux"
|
||||
"riscv32-linux"
|
||||
|
||||
@@ -36,6 +36,11 @@ rec {
|
||||
};
|
||||
};
|
||||
|
||||
ppc32 = {
|
||||
config = "powerpc-unknown-linux-gnu";
|
||||
rust.rustcTarget = "powerpc-unknown-linux-gnu";
|
||||
};
|
||||
|
||||
sheevaplug = {
|
||||
config = "armv5tel-unknown-linux-gnueabi";
|
||||
}
|
||||
|
||||
@@ -114,4 +114,48 @@ expectFailure '(internal._ipv6.split "/::/").prefixLength' "is not a valid IPv
|
||||
expectSuccess 'lib.network.ipv6.fromString "2001:DB8::ffff/64"' '{"address":"2001:db8:0:0:0:0:0:ffff","prefixLength":64}'
|
||||
expectSuccess 'lib.network.ipv6.fromString "1234:5678:90ab:cdef:fedc:ba09:8765:4321/44"' '{"address":"1234:5678:90ab:cdef:fedc:ba09:8765:4321","prefixLength":44}'
|
||||
|
||||
expectSuccess 'mkEUI64Suffix "00:11:22:AA:BB:CC"' '"211:22ff:feaa:bbcc"'
|
||||
expectSuccess 'mkEUI64Suffix "00-11-22-AA-BB-CC"' '"211:22ff:feaa:bbcc"'
|
||||
expectSuccess 'mkEUI64Suffix "00.11.22.AA.BB.CC"' '"211:22ff:feaa:bbcc"'
|
||||
expectSuccess 'mkEUI64Suffix "00:11:22:aa:bb:cc"' '"211:22ff:feaa:bbcc"'
|
||||
expectSuccess 'mkEUI64Suffix "00-11-22-aa-bb-cc"' '"211:22ff:feaa:bbcc"'
|
||||
expectSuccess 'mkEUI64Suffix "00.11.22.aa.bb.cc"' '"211:22ff:feaa:bbcc"'
|
||||
|
||||
expectSuccess 'mkEUI64Suffix "12:34:56:78:9A:bc"' '"1034:56ff:fe78:9abc"'
|
||||
expectSuccess 'mkEUI64Suffix "123456789ABC"' '"1034:56ff:fe78:9abc"'
|
||||
|
||||
expectSuccess 'mkEUI64Suffix "001122AABBCC"' '"211:22ff:feaa:bbcc"'
|
||||
expectSuccess 'mkEUI64Suffix "001122aabbcc"' '"211:22ff:feaa:bbcc"'
|
||||
|
||||
expectSuccess 'mkEUI64Suffix "ff-ff-ff-ff-ff-ff"' '"fdff:ffff:feff:ffff"'
|
||||
expectSuccess 'mkEUI64Suffix "ffffffffffff"' '"fdff:ffff:feff:ffff"'
|
||||
expectSuccess 'mkEUI64Suffix "00.00.00.00.00.00"' '"200:00ff:fe00:0000"'
|
||||
expectSuccess 'mkEUI64Suffix "000000000000"' '"200:00ff:fe00:0000"'
|
||||
|
||||
expectFailure 'mkEUI64Suffix "123456789AB"' "is not a valid MAC address \(expected 6 octets of hex digits\)"
|
||||
expectFailure 'mkEUI64Suffix "123456789A"' "is not a valid MAC address \(expected 6 octets of hex digits\)"
|
||||
expectFailure 'mkEUI64Suffix "123456789"' "is not a valid MAC address \(expected 6 octets of hex digits\)"
|
||||
expectFailure 'mkEUI64Suffix "12345678"' "is not a valid MAC address \(expected 6 octets of hex digits\)"
|
||||
expectFailure 'mkEUI64Suffix "1234567"' "is not a valid MAC address \(expected 6 octets of hex digits\)"
|
||||
expectFailure 'mkEUI64Suffix "123456"' "is not a valid MAC address \(expected 6 octets of hex digits\)"
|
||||
expectFailure 'mkEUI64Suffix "12345"' "is not a valid MAC address \(expected 6 octets of hex digits\)"
|
||||
expectFailure 'mkEUI64Suffix "1234"' "is not a valid MAC address \(expected 6 octets of hex digits\)"
|
||||
expectFailure 'mkEUI64Suffix "123"' "is not a valid MAC address \(expected 6 octets of hex digits\)"
|
||||
expectFailure 'mkEUI64Suffix "12"' "is not a valid MAC address \(expected 6 octets of hex digits\)"
|
||||
expectFailure 'mkEUI64Suffix "1"' "is not a valid MAC address \(expected 6 octets of hex digits\)"
|
||||
expectFailure 'mkEUI64Suffix ""' "is not a valid MAC address \(expected 6 octets of hex digits\)"
|
||||
expectFailure 'mkEUI64Suffix "------------"' "is not a valid MAC address \(expected 6 octets of hex digits\)"
|
||||
expectFailure 'mkEUI64Suffix "............"' "is not a valid MAC address \(expected 6 octets of hex digits\)"
|
||||
expectFailure 'mkEUI64Suffix "::::::::::::"' "is not a valid MAC address \(expected 6 octets of hex digits\)"
|
||||
expectFailure 'mkEUI64Suffix "1:2:3:4:5:6"' "is not a valid MAC address \(expected 6 octets of hex digits\)"
|
||||
expectFailure 'mkEUI64Suffix "0.0.0.0.0.0"' "is not a valid MAC address \(expected 6 octets of hex digits\)"
|
||||
expectFailure 'mkEUI64Suffix "00:11:-2:AA:BB:CC"' "is not a valid MAC address \(expected 6 octets of hex digits\)"
|
||||
expectFailure 'mkEUI64Suffix "00:-11:22:AA:BB:CC"' "is not a valid MAC address \(expected 6 octets of hex digits\)"
|
||||
expectFailure 'mkEUI64Suffix "ab:cd:ef:g0:12:34"' "is not a valid MAC address \(expected 6 octets of hex digits\)"
|
||||
expectFailure 'mkEUI64Suffix "AB:CD:EF:G0:12:34"' "is not a valid MAC address \(expected 6 octets of hex digits\)"
|
||||
expectFailure 'mkEUI64Suffix "ab:cd:ef:gh:jk:lm"' "is not a valid MAC address \(expected 6 octets of hex digits\)"
|
||||
expectFailure 'mkEUI64Suffix "AB:CD:EF:GH:JK:LM"' "is not a valid MAC address \(expected 6 octets of hex digits\)"
|
||||
expectFailure 'mkEUI64Suffix "01:23:3a:bc:de:fg"' "is not a valid MAC address \(expected 6 octets of hex digits\)"
|
||||
expectFailure 'mkEUI64Suffix "01:23:3A:BC:DE:FG"' "is not a valid MAC address \(expected 6 octets of hex digits\)"
|
||||
|
||||
echo >&2 tests ok
|
||||
|
||||
@@ -94,6 +94,7 @@ lib.runTests (
|
||||
];
|
||||
testmmix = mseteq mmix [ "mmix-mmixware" ];
|
||||
testpower = mseteq power [
|
||||
"powerpc-linux"
|
||||
"powerpc-netbsd"
|
||||
"powerpc-none"
|
||||
"powerpc64-linux"
|
||||
@@ -174,6 +175,7 @@ lib.runTests (
|
||||
"mips64-linux"
|
||||
"mips64el-linux"
|
||||
"mipsel-linux"
|
||||
"powerpc-linux"
|
||||
"powerpc64-linux"
|
||||
"powerpc64le-linux"
|
||||
"riscv32-linux"
|
||||
|
||||
@@ -641,6 +641,12 @@
|
||||
githubId = 8026586;
|
||||
name = "Adrien Faure";
|
||||
};
|
||||
adhityaravi = {
|
||||
email = "adhitya.ravi@canonical.com";
|
||||
github = "adhityaravi";
|
||||
githubId = 34714491;
|
||||
name = "Adhitya Ravi";
|
||||
};
|
||||
adisbladis = {
|
||||
email = "adisbladis@gmail.com";
|
||||
matrix = "@adis:blad.is";
|
||||
@@ -1974,6 +1980,11 @@
|
||||
githubId = 13426784;
|
||||
name = "arcnmx";
|
||||
};
|
||||
arcstur = {
|
||||
github = "arcstur";
|
||||
githubId = 24514392;
|
||||
name = "arcstur";
|
||||
};
|
||||
arcticlimer = {
|
||||
email = "vinigm.nho@gmail.com";
|
||||
github = "viniciusmuller";
|
||||
@@ -3186,6 +3197,12 @@
|
||||
github = "benwis";
|
||||
githubId = 6953353;
|
||||
};
|
||||
bepri = {
|
||||
email = "imani.pelton@canonical.com";
|
||||
github = "bepri";
|
||||
githubId = 17732342;
|
||||
name = "Imani Pelton";
|
||||
};
|
||||
berberman = {
|
||||
email = "berberman@yandex.com";
|
||||
matrix = "@berberman:mozilla.org";
|
||||
@@ -6960,6 +6977,12 @@
|
||||
github = "dsluijk";
|
||||
githubId = 8537327;
|
||||
};
|
||||
dstathis = {
|
||||
email = "dylan.stephano-shachter@canonical.com";
|
||||
github = "dstathis";
|
||||
githubId = 2110777;
|
||||
name = "Dylan Stephano-Shachter";
|
||||
};
|
||||
dstengele = {
|
||||
name = "Dennis Stengele";
|
||||
email = "dennis@stengele.me";
|
||||
@@ -12708,6 +12731,12 @@
|
||||
githubId = 954536;
|
||||
name = "Jean-Pierre PRUNARET";
|
||||
};
|
||||
jpinz = {
|
||||
email = "nix@jpinzer.me";
|
||||
github = "jpinz";
|
||||
githubId = 8357054;
|
||||
name = "Julian Pinzer";
|
||||
};
|
||||
jpotier = {
|
||||
email = "jpo.contributes.to.nixos@marvid.fr";
|
||||
github = "jpotier";
|
||||
@@ -13349,6 +13378,13 @@
|
||||
githubId = 18579667;
|
||||
name = "Adam J.";
|
||||
};
|
||||
kfiz = {
|
||||
email = "doroerose@gmail.com";
|
||||
github = "kfiz";
|
||||
githubId = 5100646;
|
||||
name = "kfiz";
|
||||
matrix = "@kfiz:matrix.sopado.de";
|
||||
};
|
||||
kfollesdal = {
|
||||
email = "kfollesdal@gmail.com";
|
||||
github = "kfollesdal";
|
||||
|
||||
@@ -64,6 +64,7 @@ with lib.maintainers;
|
||||
# Edits to this list should only be done by an already existing member.
|
||||
members = [
|
||||
DutchGerman
|
||||
friedow
|
||||
];
|
||||
};
|
||||
|
||||
|
||||
@@ -1030,7 +1030,7 @@ Make sure to also check the many updates in the [Nixpkgs library](#sec-release-2
|
||||
|
||||
- [eris-server](https://codeberg.org/eris/eris-go), an implementation of the
|
||||
Encoding for Robust Immutable Storage (ERIS). Available as
|
||||
[services.eris-server](#opt-services.eris-server.enable).
|
||||
`services.eris-server`.
|
||||
|
||||
- [forgejo](https://forgejo.org/), a git forge and drop-in replacement for
|
||||
Gitea. Available as [services.forgejo](#opt-services.forgejo.enable).
|
||||
|
||||
@@ -120,6 +120,8 @@
|
||||
|
||||
- `services.libvirtd.autoSnapshot`, a backup service for libvirt managed vms.
|
||||
|
||||
- [Sshwifty](https://github.com/nirui/sshwifty), a Telnet and SSH client for your browser. Available as [services.sshwifty](#opt-services.sshwifty.enable).
|
||||
|
||||
## Backward Incompatibilities {#sec-release-25.11-incompatibilities}
|
||||
|
||||
<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
|
||||
@@ -148,6 +150,8 @@
|
||||
- The zookeeper project changed their logging tool to logback, therefore `services.zookeeper.logging` option has been updated to expect a logback compatible string.
|
||||
- The `dovecot` systemd service was renamed from `dovecot2` to `dovecot`. The former is now just an alias. Update any overrides on the systemd unit to the new name.
|
||||
|
||||
- Configurations with `boot.initrd.systend.enable && !boot.initrd.enable` will have their `init` script at `$toplevel/init` instead of `$toplevel/prepare-root`. This is because it does not make sense for systemd stage 1 to affect the `init` script when stage 1 is entirely disabled (e.g. containers).
|
||||
|
||||
- `Prosody` has been updated to major release 13 which removed some obsoleted modules and brought a couple of major and breaking changes:
|
||||
- The `http_files` module is now disabled by default because it now requires `http_files_dir` to be configured.
|
||||
- The `vcard_muc` module has been removed and got replaced by the inbuilt `muc_vcard` module.
|
||||
@@ -158,6 +162,8 @@
|
||||
|
||||
- The `yeahwm` package and `services.xserver.windowManager.yeahwm` module were removed due to the package being broken and unmaintained upstream.
|
||||
|
||||
- The `services.snapserver` module has been migrated to use the settings option and render a configuration file instead of passing every option over the command line.
|
||||
|
||||
- The `services.postgresql` module now sets up a systemd unit `postgresql.target`. Depending on `postgresql.target` guarantees that postgres is in read-write mode and initial/ensure scripts were executed. Depending on `postgresql.service` only guarantees a read-only connection.
|
||||
|
||||
- The `services.siproxd` module has been removed as `siproxd` is unmaintained and broken with libosip 5.x.
|
||||
@@ -222,11 +228,15 @@
|
||||
|
||||
- `services.clamsmtp` is unmaintained and was removed from Nixpkgs.
|
||||
|
||||
- `services.eris-server` was removed from Nixpkgs due to a hostile upstream.
|
||||
|
||||
- `prosody` gained a config check option named `services.prosody.checkConfig` which runs `prosodyctl check config` and is turned on by default.
|
||||
|
||||
- `services.dependency-track` removed its configuration of the JVM heap size. This lets the JVM choose its maximum heap size automatically, which should work much better in practice for most users. For deployments on systems with little RAM, it may now be necessary to manually configure a maximum heap size using {option}`services.dependency-track.javaArgs`.
|
||||
|
||||
- `services.dnscrypt-proxy2` gains a `package` option to specify dnscrypt-proxy package to use.
|
||||
- `services.dnscrypt-proxy2` was renamed to `services.dnscrypt-proxy` to match the package name. The systemd service is now also `dnscrypt-proxy`, but the old name is still provided as an alias for backwards compatibility.
|
||||
|
||||
- `services.dnscrypt-proxy` gains a `package` option to specify dnscrypt-proxy package to use.
|
||||
|
||||
- `services.nextcloud.configureRedis` now defaults to `true` in accordance with upstream recommendations to have caching for file locking. See the [upstream doc](https://docs.nextcloud.com/server/31/admin_manual/configuration_files/files_locking_transactional.html) for further details.
|
||||
|
||||
|
||||
@@ -195,7 +195,6 @@ in
|
||||
"${config.boot.initrd.systemd.package}/lib/systemd/systemd-vconsole-setup"
|
||||
"${config.boot.initrd.systemd.package.kbd}/bin/setfont"
|
||||
"${config.boot.initrd.systemd.package.kbd}/bin/loadkeys"
|
||||
"${config.boot.initrd.systemd.package.kbd.gzip}/bin/gzip" # Fonts and keyboard layouts are compressed
|
||||
]
|
||||
++ lib.optionals (cfg.font != null && lib.hasPrefix builtins.storeDir cfg.font) [
|
||||
"${cfg.font}"
|
||||
|
||||
@@ -1052,7 +1052,6 @@
|
||||
./services/network-filesystems/davfs2.nix
|
||||
./services/network-filesystems/diod.nix
|
||||
./services/network-filesystems/drbd.nix
|
||||
./services/network-filesystems/eris-server.nix
|
||||
./services/network-filesystems/glusterfs.nix
|
||||
./services/network-filesystems/ipfs-cluster.nix
|
||||
./services/network-filesystems/kbfs.nix
|
||||
@@ -1128,7 +1127,7 @@
|
||||
./services/networking/deconz.nix
|
||||
./services/networking/dhcpcd.nix
|
||||
./services/networking/dnscache.nix
|
||||
./services/networking/dnscrypt-proxy2.nix
|
||||
./services/networking/dnscrypt-proxy.nix
|
||||
./services/networking/dnsdist.nix
|
||||
./services/networking/dnsmasq.nix
|
||||
./services/networking/dnsproxy.nix
|
||||
@@ -1695,6 +1694,7 @@
|
||||
./services/web-apps/snipe-it.nix
|
||||
./services/web-apps/snips-sh.nix
|
||||
./services/web-apps/sogo.nix
|
||||
./services/web-apps/sshwifty.nix
|
||||
./services/web-apps/stash.nix
|
||||
./services/web-apps/stirling-pdf.nix
|
||||
./services/web-apps/strfry.nix
|
||||
|
||||
@@ -131,7 +131,6 @@ in
|
||||
"services"
|
||||
"deepin"
|
||||
] "the Deepin desktop environment has been removed from nixpkgs due to lack of maintenance.")
|
||||
(mkRemovedOptionModule [ "services" "dnscrypt-proxy" ] "Use services.dnscrypt-proxy2 instead")
|
||||
(mkRemovedOptionModule [ "services" "dnscrypt-wrapper" ] ''
|
||||
The dnscrypt-wrapper module was removed since the project has been effectively unmaintained since 2018;
|
||||
moreover the NixOS module had to rely on an abandoned version of dnscrypt-proxy v1 for the rotation of keys.
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
{
|
||||
config,
|
||||
options,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
@@ -9,77 +8,96 @@ let
|
||||
|
||||
name = "snapserver";
|
||||
|
||||
inherit (lib)
|
||||
literalExpression
|
||||
mkEnableOption
|
||||
mkOption
|
||||
mkPackageOption
|
||||
mkRemovedOptionModule
|
||||
mkRenamedOptionModule
|
||||
types
|
||||
;
|
||||
|
||||
cfg = config.services.snapserver;
|
||||
|
||||
# Using types.nullOr to inherit upstream defaults.
|
||||
sampleFormat = lib.mkOption {
|
||||
type = with lib.types; nullOr str;
|
||||
default = null;
|
||||
description = ''
|
||||
Default sample format.
|
||||
'';
|
||||
example = "48000:16:2";
|
||||
format = pkgs.formats.ini {
|
||||
listsAsDuplicateKeys = true;
|
||||
};
|
||||
|
||||
codec = lib.mkOption {
|
||||
type = with lib.types; nullOr str;
|
||||
default = null;
|
||||
description = ''
|
||||
Default audio compression method.
|
||||
'';
|
||||
example = "flac";
|
||||
};
|
||||
|
||||
streamToOption =
|
||||
name: opt:
|
||||
let
|
||||
os = val: lib.optionalString (val != null) "${val}";
|
||||
os' = prefix: val: lib.optionalString (val != null) (prefix + "${val}");
|
||||
toQueryString = key: value: "&${key}=${value}";
|
||||
in
|
||||
"--stream.stream=\"${opt.type}://"
|
||||
+ os opt.location
|
||||
+ "?"
|
||||
+ os' "name=" name
|
||||
+ os' "&sampleformat=" opt.sampleFormat
|
||||
+ os' "&codec=" opt.codec
|
||||
+ lib.concatStrings (lib.mapAttrsToList toQueryString opt.query)
|
||||
+ "\"";
|
||||
|
||||
optionalNull = val: ret: lib.optional (val != null) ret;
|
||||
|
||||
optionString = lib.concatStringsSep " " (
|
||||
lib.mapAttrsToList streamToOption cfg.streams
|
||||
# global options
|
||||
++ [ "--stream.bind_to_address=${cfg.listenAddress}" ]
|
||||
++ [ "--stream.port=${toString cfg.port}" ]
|
||||
++ optionalNull cfg.sampleFormat "--stream.sampleformat=${cfg.sampleFormat}"
|
||||
++ optionalNull cfg.codec "--stream.codec=${cfg.codec}"
|
||||
++ optionalNull cfg.streamBuffer "--stream.stream_buffer=${toString cfg.streamBuffer}"
|
||||
++ optionalNull cfg.buffer "--stream.buffer=${toString cfg.buffer}"
|
||||
++ lib.optional cfg.sendToMuted "--stream.send_to_muted"
|
||||
# tcp json rpc
|
||||
++ [ "--tcp.enabled=${toString cfg.tcp.enable}" ]
|
||||
++ lib.optionals cfg.tcp.enable [
|
||||
"--tcp.bind_to_address=${cfg.tcp.listenAddress}"
|
||||
"--tcp.port=${toString cfg.tcp.port}"
|
||||
]
|
||||
# http json rpc
|
||||
++ [ "--http.enabled=${toString cfg.http.enable}" ]
|
||||
++ lib.optionals cfg.http.enable [
|
||||
"--http.bind_to_address=${cfg.http.listenAddress}"
|
||||
"--http.port=${toString cfg.http.port}"
|
||||
]
|
||||
++ lib.optional (cfg.http.docRoot != null) "--http.doc_root=\"${toString cfg.http.docRoot}\""
|
||||
);
|
||||
configFile = format.generate "snapserver.conf" cfg.settings;
|
||||
|
||||
in
|
||||
{
|
||||
imports = [
|
||||
(lib.mkRenamedOptionModule
|
||||
(mkRenamedOptionModule
|
||||
[ "services" "snapserver" "controlPort" ]
|
||||
[ "services" "snapserver" "tcp" "port" ]
|
||||
)
|
||||
|
||||
(mkRenamedOptionModule
|
||||
[ "services" "snapserver" "listenAddress" ]
|
||||
[ "services" "snapserver" "settings" "stream" "bind_to_address" ]
|
||||
)
|
||||
(mkRenamedOptionModule
|
||||
[ "services" "snapserver" "port" ]
|
||||
[ "services" "snapserver" "settings" "stream" "port" ]
|
||||
)
|
||||
(mkRenamedOptionModule
|
||||
[ "services" "snapserver" "sampleFormat" ]
|
||||
[ "services" "snapserver" "settings" "stream" "sampleformat" ]
|
||||
)
|
||||
(mkRenamedOptionModule
|
||||
[ "services" "snapserver" "codec" ]
|
||||
[ "services" "snapserver" "settings" "stream" "codec" ]
|
||||
)
|
||||
(mkRenamedOptionModule
|
||||
[ "services" "snapserver" "streamBuffer" ]
|
||||
[ "services" "snapserver" "settings" "stream" "chunk_ms" ]
|
||||
)
|
||||
(mkRenamedOptionModule
|
||||
[ "services" "snapserver" "buffer" ]
|
||||
[ "services" "snapserver" "settings" "stream" "buffer" ]
|
||||
)
|
||||
(mkRenamedOptionModule
|
||||
[ "services" "snapserver" "send" ]
|
||||
[ "services" "snapserver" "settings" "stream" "chunk_ms" ]
|
||||
)
|
||||
|
||||
(mkRenamedOptionModule
|
||||
[ "services" "snapserver" "tcp" "enable" ]
|
||||
[ "services" "snapserver" "settings" "tcp" "enabled" ]
|
||||
)
|
||||
(mkRenamedOptionModule
|
||||
[ "services" "snapserver" "tcp" "listenAddress" ]
|
||||
[ "services" "snapserver" "settings" "tcp" "bind_to_address" ]
|
||||
)
|
||||
(mkRenamedOptionModule
|
||||
[ "services" "snapserver" "tcp" "port" ]
|
||||
[ "services" "snapserver" "settings" "tcp" "port" ]
|
||||
)
|
||||
|
||||
(mkRenamedOptionModule
|
||||
[ "services" "snapserver" "http" "enable" ]
|
||||
[ "services" "snapserver" "settings" "http" "enabled" ]
|
||||
)
|
||||
(mkRenamedOptionModule
|
||||
[ "services" "snapserver" "http" "listenAddress" ]
|
||||
[ "services" "snapserver" "settings" "http" "bind_to_address" ]
|
||||
)
|
||||
(mkRenamedOptionModule
|
||||
[ "services" "snapserver" "http" "port" ]
|
||||
[ "services" "snapserver" "settings" "http" "port" ]
|
||||
)
|
||||
(mkRenamedOptionModule
|
||||
[ "services" "snapserver" "http" "docRoot" ]
|
||||
[ "services" "snapserver" "settings" "http" "doc_root" ]
|
||||
)
|
||||
|
||||
(mkRemovedOptionModule [
|
||||
"services"
|
||||
"snapserver"
|
||||
"streams"
|
||||
] "Configure `services.snapserver.settings.stream.source` instead")
|
||||
];
|
||||
|
||||
###### interface
|
||||
@@ -88,31 +106,93 @@ in
|
||||
|
||||
services.snapserver = {
|
||||
|
||||
enable = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Whether to enable snapserver.
|
||||
'';
|
||||
};
|
||||
enable = mkEnableOption "snapserver";
|
||||
|
||||
package = lib.options.mkPackageOption pkgs "snapcast" { };
|
||||
package = mkPackageOption pkgs "snapcast" { };
|
||||
|
||||
listenAddress = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "::";
|
||||
example = "0.0.0.0";
|
||||
settings = mkOption {
|
||||
default = { };
|
||||
description = ''
|
||||
The address where snapclients can connect.
|
||||
'';
|
||||
};
|
||||
Snapserver configuration.
|
||||
|
||||
port = lib.mkOption {
|
||||
type = lib.types.port;
|
||||
default = 1704;
|
||||
description = ''
|
||||
The port that snapclients can connect to.
|
||||
Refer to the [example configuration](https://github.com/badaix/snapcast/blob/develop/server/etc/snapserver.conf) for possible options.
|
||||
'';
|
||||
type = types.submodule {
|
||||
freeformType = format.type;
|
||||
options = {
|
||||
stream = {
|
||||
bind_to_address = mkOption {
|
||||
default = "::";
|
||||
description = ''
|
||||
Address to listen on for snapclient connections.
|
||||
'';
|
||||
};
|
||||
|
||||
port = mkOption {
|
||||
type = types.port;
|
||||
default = 1704;
|
||||
description = ''
|
||||
Port to listen on for snapclient connections.
|
||||
'';
|
||||
};
|
||||
|
||||
source = mkOption {
|
||||
type = with types; either str (listOf str);
|
||||
example = "pipe:///tmp/snapfifo?name=default";
|
||||
description = ''
|
||||
One or multiple URIs to PCM inpuit streams.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
tcp = {
|
||||
enabled = mkEnableOption "the TCP JSON-RPC";
|
||||
|
||||
bind_to_address = mkOption {
|
||||
default = "::";
|
||||
description = ''
|
||||
Address to listen on for snapclient connections.
|
||||
'';
|
||||
};
|
||||
|
||||
port = mkOption {
|
||||
type = types.port;
|
||||
default = 1705;
|
||||
description = ''
|
||||
Port to listen on for snapclient connections.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
http = {
|
||||
enabled = mkEnableOption "the HTTP JSON-RPC";
|
||||
|
||||
bind_to_address = mkOption {
|
||||
default = "::";
|
||||
description = ''
|
||||
Address to listen on for snapclient connections.
|
||||
'';
|
||||
};
|
||||
|
||||
port = mkOption {
|
||||
type = types.port;
|
||||
default = 1705;
|
||||
description = ''
|
||||
Port to listen on for snapclient connections.
|
||||
'';
|
||||
};
|
||||
|
||||
doc_root = lib.mkOption {
|
||||
type = with lib.types; nullOr path;
|
||||
default = pkgs.snapweb;
|
||||
defaultText = literalExpression "pkgs.snapweb";
|
||||
description = ''
|
||||
Path to serve from the HTTP servers root.
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
openFirewall = lib.mkOption {
|
||||
@@ -122,200 +202,13 @@ in
|
||||
Whether to automatically open the specified ports in the firewall.
|
||||
'';
|
||||
};
|
||||
|
||||
inherit sampleFormat;
|
||||
inherit codec;
|
||||
|
||||
streamBuffer = lib.mkOption {
|
||||
type = with lib.types; nullOr int;
|
||||
default = null;
|
||||
description = ''
|
||||
Stream read (input) buffer in ms.
|
||||
'';
|
||||
example = 20;
|
||||
};
|
||||
|
||||
buffer = lib.mkOption {
|
||||
type = with lib.types; nullOr int;
|
||||
default = null;
|
||||
description = ''
|
||||
Network buffer in ms.
|
||||
'';
|
||||
example = 1000;
|
||||
};
|
||||
|
||||
sendToMuted = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Send audio to muted clients.
|
||||
'';
|
||||
};
|
||||
|
||||
tcp.enable = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = true;
|
||||
description = ''
|
||||
Whether to enable the JSON-RPC via TCP.
|
||||
'';
|
||||
};
|
||||
|
||||
tcp.listenAddress = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "::";
|
||||
example = "0.0.0.0";
|
||||
description = ''
|
||||
The address where the TCP JSON-RPC listens on.
|
||||
'';
|
||||
};
|
||||
|
||||
tcp.port = lib.mkOption {
|
||||
type = lib.types.port;
|
||||
default = 1705;
|
||||
description = ''
|
||||
The port where the TCP JSON-RPC listens on.
|
||||
'';
|
||||
};
|
||||
|
||||
http.enable = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = true;
|
||||
description = ''
|
||||
Whether to enable the JSON-RPC via HTTP.
|
||||
'';
|
||||
};
|
||||
|
||||
http.listenAddress = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "::";
|
||||
example = "0.0.0.0";
|
||||
description = ''
|
||||
The address where the HTTP JSON-RPC listens on.
|
||||
'';
|
||||
};
|
||||
|
||||
http.port = lib.mkOption {
|
||||
type = lib.types.port;
|
||||
default = 1780;
|
||||
description = ''
|
||||
The port where the HTTP JSON-RPC listens on.
|
||||
'';
|
||||
};
|
||||
|
||||
http.docRoot = lib.mkOption {
|
||||
type = with lib.types; nullOr path;
|
||||
default = pkgs.snapweb;
|
||||
defaultText = lib.literalExpression "pkgs.snapweb";
|
||||
description = ''
|
||||
Path to serve from the HTTP servers root.
|
||||
'';
|
||||
};
|
||||
|
||||
streams = lib.mkOption {
|
||||
type =
|
||||
with lib.types;
|
||||
attrsOf (submodule {
|
||||
options = {
|
||||
location = lib.mkOption {
|
||||
type = lib.types.oneOf [
|
||||
lib.types.path
|
||||
lib.types.str
|
||||
];
|
||||
description = ''
|
||||
For type `pipe` or `file`, the path to the pipe or file.
|
||||
For type `librespot`, `airplay` or `process`, the path to the corresponding binary.
|
||||
For type `tcp`, the `host:port` address to connect to or listen on.
|
||||
For type `meta`, a list of stream names in the form `/one/two/...`. Don't forget the leading slash.
|
||||
For type `alsa`, use an empty string.
|
||||
'';
|
||||
example = lib.literalExpression ''
|
||||
"/path/to/pipe"
|
||||
"/path/to/librespot"
|
||||
"192.168.1.2:4444"
|
||||
"/MyTCP/Spotify/MyPipe"
|
||||
'';
|
||||
};
|
||||
type = lib.mkOption {
|
||||
type = lib.types.enum [
|
||||
"pipe"
|
||||
"librespot"
|
||||
"airplay"
|
||||
"file"
|
||||
"process"
|
||||
"tcp"
|
||||
"alsa"
|
||||
"spotify"
|
||||
"meta"
|
||||
];
|
||||
default = "pipe";
|
||||
description = ''
|
||||
The type of input stream.
|
||||
'';
|
||||
};
|
||||
query = lib.mkOption {
|
||||
type = attrsOf str;
|
||||
default = { };
|
||||
description = ''
|
||||
Key-value pairs that convey additional parameters about a stream.
|
||||
'';
|
||||
example = lib.literalExpression ''
|
||||
# for type == "pipe":
|
||||
{
|
||||
mode = "create";
|
||||
};
|
||||
# for type == "process":
|
||||
{
|
||||
params = "--param1 --param2";
|
||||
logStderr = "true";
|
||||
};
|
||||
# for type == "tcp":
|
||||
{
|
||||
mode = "client";
|
||||
}
|
||||
# for type == "alsa":
|
||||
{
|
||||
device = "hw:0,0";
|
||||
}
|
||||
'';
|
||||
};
|
||||
inherit sampleFormat;
|
||||
inherit codec;
|
||||
};
|
||||
});
|
||||
default = {
|
||||
default = { };
|
||||
};
|
||||
description = ''
|
||||
The definition for an input source.
|
||||
'';
|
||||
example = lib.literalExpression ''
|
||||
{
|
||||
mpd = {
|
||||
type = "pipe";
|
||||
location = "/run/snapserver/mpd";
|
||||
sampleFormat = "48000:16:2";
|
||||
codec = "pcm";
|
||||
};
|
||||
};
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
###### implementation
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
|
||||
warnings =
|
||||
# https://github.com/badaix/snapcast/blob/98ac8b2fb7305084376607b59173ce4097c620d8/server/streamreader/stream_manager.cpp#L85
|
||||
lib.filter (w: w != "") (
|
||||
lib.mapAttrsToList (
|
||||
k: v:
|
||||
lib.optionalString (v.type == "spotify") ''
|
||||
services.snapserver.streams.${k}.type = "spotify" is deprecated, use services.snapserver.streams.${k}.type = "librespot" instead.
|
||||
''
|
||||
) cfg.streams
|
||||
);
|
||||
environment.etc."snapserver.conf".source = configFile;
|
||||
|
||||
systemd.services.snapserver = {
|
||||
after = [
|
||||
@@ -328,10 +221,13 @@ in
|
||||
"mpd.service"
|
||||
"mopidy.service"
|
||||
];
|
||||
|
||||
restartTriggers = [ configFile ];
|
||||
serviceConfig = {
|
||||
DynamicUser = true;
|
||||
ExecStart = "${cfg.package}/bin/snapserver --daemon ${optionString}";
|
||||
ExecStart = toString [
|
||||
(lib.getExe' cfg.package "snapserver")
|
||||
"--daemon"
|
||||
];
|
||||
Type = "forking";
|
||||
LimitRTPRIO = 50;
|
||||
LimitRTTIME = "infinity";
|
||||
@@ -349,9 +245,9 @@ in
|
||||
};
|
||||
|
||||
networking.firewall.allowedTCPPorts =
|
||||
lib.optionals cfg.openFirewall [ cfg.port ]
|
||||
++ lib.optional (cfg.openFirewall && cfg.tcp.enable) cfg.tcp.port
|
||||
++ lib.optional (cfg.openFirewall && cfg.http.enable) cfg.http.port;
|
||||
lib.optionals cfg.openFirewall [ cfg.settings.stream.port ]
|
||||
++ lib.optional (cfg.openFirewall && cfg.settings.tcp.enabled) cfg.settings.tcp.port
|
||||
++ lib.optional (cfg.openFirewall && cfg.settings.http.enabled) cfg.settings.http.port;
|
||||
};
|
||||
|
||||
meta = {
|
||||
|
||||
@@ -148,8 +148,21 @@ in
|
||||
settings = lib.mkOption {
|
||||
type = format.type;
|
||||
default = { };
|
||||
example = {
|
||||
bootstrap = {
|
||||
initdb = [
|
||||
"encoding=UTF-8"
|
||||
"data-checksums"
|
||||
];
|
||||
};
|
||||
postgresql = {
|
||||
parameters = {
|
||||
unix_socket_directories = "/tmp";
|
||||
};
|
||||
};
|
||||
};
|
||||
description = ''
|
||||
The primary patroni configuration. See the [documentation](https://patroni.readthedocs.io/en/latest/SETTINGS.html)
|
||||
The primary patroni configuration. See the [documentation](https://patroni.readthedocs.io/en/latest/yaml_configuration.html)
|
||||
for possible values.
|
||||
Secrets should be passed in by using the `environmentFiles` option.
|
||||
'';
|
||||
|
||||
@@ -61,6 +61,18 @@ in
|
||||
Configuration for ntfy.sh, supported values are [here](https://ntfy.sh/docs/config/#config-options).
|
||||
'';
|
||||
};
|
||||
|
||||
environmentFile = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.path;
|
||||
default = null;
|
||||
example = "/run/secrets/ntfy";
|
||||
description = ''
|
||||
Path to a file containing extra ntfy environment variables in the systemd `EnvironmentFile`
|
||||
format. Refer to the [documentation](https://docs.ntfy.sh/config/) for config options.
|
||||
|
||||
This can be used to pass secrets such as creating declarative users or token without putting them in the Nix store.
|
||||
'';
|
||||
};
|
||||
};
|
||||
|
||||
config =
|
||||
@@ -109,6 +121,7 @@ in
|
||||
MemoryDenyWriteExecute = true;
|
||||
# Upstream Recommendation
|
||||
LimitNOFILE = 20500;
|
||||
EnvironmentFile = lib.mkIf (cfg.environmentFile != null) cfg.environmentFile;
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
@@ -274,5 +274,5 @@ in
|
||||
})
|
||||
];
|
||||
|
||||
meta.maintainers = [ maintainers.jnsgruk ];
|
||||
meta.maintainers = [ ];
|
||||
}
|
||||
|
||||
@@ -1,126 +0,0 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
cfg = config.services.eris-server;
|
||||
stateDirectoryPath = "\${STATE_DIRECTORY}";
|
||||
nullOrStr = with lib.types; nullOr str;
|
||||
in
|
||||
{
|
||||
|
||||
options.services.eris-server = {
|
||||
|
||||
enable = lib.mkEnableOption "an ERIS server";
|
||||
|
||||
package = lib.mkOption {
|
||||
type = lib.types.package;
|
||||
default = pkgs.eris-go;
|
||||
defaultText = lib.literalExpression "pkgs.eris-go";
|
||||
description = "Package to use for the ERIS server.";
|
||||
};
|
||||
|
||||
decode = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
description = ''
|
||||
Whether the HTTP service (when enabled) will decode ERIS content at /uri-res/N2R?urn:eris:.
|
||||
Enabling this is recommended only for private or local-only servers.
|
||||
'';
|
||||
};
|
||||
|
||||
listenCoap = lib.mkOption {
|
||||
type = nullOrStr;
|
||||
default = ":5683";
|
||||
example = "[::1]:5683";
|
||||
description = ''
|
||||
Server CoAP listen address. Listen on all IP addresses at port 5683 by default.
|
||||
Please note that the server can service client requests for ERIS-blocks by
|
||||
querying other clients connected to the server. Whether or not blocks are
|
||||
relayed back to the server depends on client configuration but be aware this
|
||||
may leak sensitive metadata and trigger network activity.
|
||||
'';
|
||||
};
|
||||
|
||||
listenHttp = lib.mkOption {
|
||||
type = nullOrStr;
|
||||
default = null;
|
||||
example = "[::1]:8080";
|
||||
description = "Server HTTP listen address. Do not listen by default.";
|
||||
};
|
||||
|
||||
backends = lib.mkOption {
|
||||
type = with lib.types; listOf str;
|
||||
description = ''
|
||||
List of backend URLs.
|
||||
Add "get" and "put" as query elements to enable those operations.
|
||||
'';
|
||||
example = [
|
||||
"badger+file:///var/db/eris.badger?get&put"
|
||||
"coap+tcp://eris.example.com:5683?get"
|
||||
];
|
||||
};
|
||||
|
||||
mountpoint = lib.mkOption {
|
||||
type = nullOrStr;
|
||||
default = null;
|
||||
example = "/eris";
|
||||
description = ''
|
||||
Mountpoint for FUSE namespace that exposes "urn:eris:…" files.
|
||||
'';
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
assertions = [
|
||||
{
|
||||
assertion = lib.strings.versionAtLeast cfg.package.version "20231219";
|
||||
message = "Version of `config.services.eris-server.package` is incompatible with this module";
|
||||
}
|
||||
];
|
||||
|
||||
systemd.services.eris-server =
|
||||
let
|
||||
cmd =
|
||||
"${cfg.package}/bin/eris-go server"
|
||||
+ (lib.optionalString (cfg.listenCoap != null) " --coap '${cfg.listenCoap}'")
|
||||
+ (lib.optionalString (cfg.listenHttp != null) " --http '${cfg.listenHttp}'")
|
||||
+ (lib.optionalString cfg.decode " --decode")
|
||||
+ (lib.optionalString (cfg.mountpoint != null) " --mountpoint '${cfg.mountpoint}'");
|
||||
in
|
||||
{
|
||||
description = "ERIS block server";
|
||||
after = [ "network.target" ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
environment.ERIS_STORE_URL = toString cfg.backends;
|
||||
script = lib.mkIf (cfg.mountpoint != null) ''
|
||||
export PATH=${config.security.wrapperDir}:$PATH
|
||||
${cmd}
|
||||
'';
|
||||
serviceConfig =
|
||||
let
|
||||
umounter = lib.mkIf (
|
||||
cfg.mountpoint != null
|
||||
) "-${config.security.wrapperDir}/fusermount -uz ${cfg.mountpoint}";
|
||||
in
|
||||
if (cfg.mountpoint == null) then
|
||||
{
|
||||
ExecStart = cmd;
|
||||
}
|
||||
else
|
||||
{
|
||||
ExecStartPre = umounter;
|
||||
ExecStopPost = umounter;
|
||||
}
|
||||
// {
|
||||
Restart = "always";
|
||||
RestartSec = 20;
|
||||
AmbientCapabilities = "CAP_NET_BIND_SERVICE";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -55,7 +55,7 @@ let
|
||||
type = types.str;
|
||||
};
|
||||
|
||||
botPolicy = lib.mkOption {
|
||||
botPolicy = mkDefaultOption "botPolicy" {
|
||||
default = null;
|
||||
description = ''
|
||||
Anubis policy configuration in Nix syntax. Set to `null` to use the baked-in policy which should be
|
||||
@@ -265,7 +265,18 @@ in
|
||||
wants = [ "network-online.target" ];
|
||||
|
||||
environment = lib.mapAttrs (lib.const (lib.generators.mkValueStringDefault { })) (
|
||||
lib.filterAttrs (_: v: v != null) instance.settings
|
||||
lib.filterAttrs (_: v: v != null) (
|
||||
instance.settings
|
||||
// {
|
||||
POLICY_FNAME =
|
||||
if instance.settings.POLICY_FNAME != null then
|
||||
instance.settings.POLICY_FNAME
|
||||
else if instance.botPolicy != null then
|
||||
jsonFormat.generate "${instanceName name}-botPolicy.json" instance.botPolicy
|
||||
else
|
||||
null;
|
||||
}
|
||||
)
|
||||
);
|
||||
|
||||
serviceConfig = {
|
||||
|
||||
@@ -7,13 +7,17 @@
|
||||
|
||||
let
|
||||
|
||||
cfg = config.services.dnscrypt-proxy2;
|
||||
cfg = config.services.dnscrypt-proxy;
|
||||
|
||||
in
|
||||
|
||||
{
|
||||
options.services.dnscrypt-proxy2 = {
|
||||
enable = lib.mkEnableOption "dnscrypt-proxy2";
|
||||
imports = [
|
||||
(lib.mkRenamedOptionModule [ "services" "dnscrypt-proxy2" ] [ "services" "dnscrypt-proxy" ])
|
||||
];
|
||||
|
||||
options.services.dnscrypt-proxy = {
|
||||
enable = lib.mkEnableOption "dnscrypt-proxy";
|
||||
|
||||
package = lib.mkPackageOption pkgs "dnscrypt-proxy" { };
|
||||
|
||||
@@ -38,7 +42,7 @@ in
|
||||
|
||||
upstreamDefaults = lib.mkOption {
|
||||
description = ''
|
||||
Whether to base the config declared in {option}`services.dnscrypt-proxy2.settings` on the upstream example config (<https://github.com/DNSCrypt/dnscrypt-proxy/blob/master/dnscrypt-proxy/example-dnscrypt-proxy.toml>)
|
||||
Whether to base the config declared in {option}`services.dnscrypt-proxy.settings` on the upstream example config (<https://github.com/DNSCrypt/dnscrypt-proxy/blob/master/dnscrypt-proxy/example-dnscrypt-proxy.toml>)
|
||||
|
||||
Disable this if you want to declare your dnscrypt config from scratch.
|
||||
'';
|
||||
@@ -49,7 +53,7 @@ in
|
||||
configFile = lib.mkOption {
|
||||
description = ''
|
||||
Path to TOML config file. See: <https://github.com/DNSCrypt/dnscrypt-proxy/blob/master/dnscrypt-proxy/example-dnscrypt-proxy.toml>
|
||||
If this option is set, it will override any configuration done in options.services.dnscrypt-proxy2.settings.
|
||||
If this option is set, it will override any configuration done in options.services.dnscrypt-proxy.settings.
|
||||
'';
|
||||
example = "/etc/dnscrypt-proxy/dnscrypt-proxy.toml";
|
||||
type = lib.types.path;
|
||||
@@ -73,7 +77,7 @@ in
|
||||
}
|
||||
${pkgs.buildPackages.remarshal}/bin/json2toml < config.json > $out
|
||||
'';
|
||||
defaultText = lib.literalMD "TOML file generated from {option}`services.dnscrypt-proxy2.settings`";
|
||||
defaultText = lib.literalMD "TOML file generated from {option}`services.dnscrypt-proxy.settings`";
|
||||
};
|
||||
};
|
||||
|
||||
@@ -81,7 +85,7 @@ in
|
||||
|
||||
networking.nameservers = lib.mkDefault [ "127.0.0.1" ];
|
||||
|
||||
systemd.services.dnscrypt-proxy2 = {
|
||||
systemd.services.dnscrypt-proxy = {
|
||||
description = "DNSCrypt-proxy client";
|
||||
wants = [
|
||||
"network-online.target"
|
||||
@@ -93,6 +97,7 @@ in
|
||||
wantedBy = [
|
||||
"multi-user.target"
|
||||
];
|
||||
aliases = [ "dnscrypt-proxy2.service" ];
|
||||
serviceConfig = {
|
||||
AmbientCapabilities = "CAP_NET_BIND_SERVICE";
|
||||
CacheDirectory = "dnscrypt-proxy";
|
||||
@@ -144,7 +144,9 @@ in
|
||||
{
|
||||
|
||||
meta = {
|
||||
maintainers = teams.freedesktop.members;
|
||||
maintainers = teams.freedesktop.members ++ [
|
||||
lib.maintainers.frontear
|
||||
];
|
||||
};
|
||||
|
||||
###### interface
|
||||
@@ -684,13 +686,7 @@ in
|
||||
networkmanager.connectionConfig = {
|
||||
"ethernet.cloned-mac-address" = cfg.ethernet.macAddress;
|
||||
"wifi.cloned-mac-address" = cfg.wifi.macAddress;
|
||||
"wifi.powersave" =
|
||||
if cfg.wifi.powersave == null then
|
||||
null
|
||||
else if cfg.wifi.powersave then
|
||||
3
|
||||
else
|
||||
2;
|
||||
"wifi.powersave" = lib.mkIf (cfg.wifi.powersave != null) (if cfg.wifi.powersave then 3 else 2);
|
||||
};
|
||||
}
|
||||
];
|
||||
|
||||
@@ -26,13 +26,11 @@ in
|
||||
params = lib.mkOption {
|
||||
default = [ ];
|
||||
type = with lib.types; listOf str;
|
||||
example = ''
|
||||
[
|
||||
"--dpi-desync=fake,disorder2"
|
||||
"--dpi-desync-ttl=1"
|
||||
"--dpi-desync-autottl=2"
|
||||
]
|
||||
'';
|
||||
example = [
|
||||
"--dpi-desync=fake,disorder2"
|
||||
"--dpi-desync-ttl=1"
|
||||
"--dpi-desync-autottl=2"
|
||||
];
|
||||
description = ''
|
||||
Specify the bypass parameters for Zapret binary.
|
||||
There are no universal parameters as they vary between different networks, so you'll have to find them yourself.
|
||||
@@ -44,14 +42,12 @@ in
|
||||
whitelist = lib.mkOption {
|
||||
default = [ ];
|
||||
type = with lib.types; listOf str;
|
||||
example = ''
|
||||
[
|
||||
"youtube.com"
|
||||
"googlevideo.com"
|
||||
"ytimg.com"
|
||||
"youtu.be"
|
||||
]
|
||||
'';
|
||||
example = [
|
||||
"youtube.com"
|
||||
"googlevideo.com"
|
||||
"ytimg.com"
|
||||
"youtu.be"
|
||||
];
|
||||
description = ''
|
||||
Specify a list of domains to bypass. All other domains will be ignored.
|
||||
You can specify either whitelist or blacklist, but not both.
|
||||
@@ -63,11 +59,9 @@ in
|
||||
blacklist = lib.mkOption {
|
||||
default = [ ];
|
||||
type = with lib.types; listOf str;
|
||||
example = ''
|
||||
[
|
||||
"example.com"
|
||||
]
|
||||
'';
|
||||
example = [
|
||||
"example.com"
|
||||
];
|
||||
description = ''
|
||||
Specify a list of domains NOT to bypass. All other domains will be bypassed.
|
||||
You can specify either whitelist or blacklist, but not both.
|
||||
@@ -124,12 +118,10 @@ in
|
||||
udpPorts = lib.mkOption {
|
||||
default = [ ];
|
||||
type = with lib.types; listOf str;
|
||||
example = ''
|
||||
[
|
||||
"50000:50099"
|
||||
"1234"
|
||||
]
|
||||
'';
|
||||
example = [
|
||||
"50000:50099"
|
||||
"1234"
|
||||
];
|
||||
description = ''
|
||||
List of UDP ports to route.
|
||||
Port ranges are delimited with a colon like this "50000:50099".
|
||||
|
||||
@@ -349,7 +349,6 @@ in
|
||||
|
||||
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
|
||||
add_header X-Frame-Options "SAMEORIGIN" always;
|
||||
add_header X-XSS-Protection "1; mode=block" always;
|
||||
add_header X-Content-Type-Options "nosniff" always;
|
||||
add_header Referrer-Policy "same-origin" always;
|
||||
'';
|
||||
|
||||
@@ -197,10 +197,16 @@ in
|
||||
)
|
||||
);
|
||||
|
||||
security.auditd = lib.mkIf (cfg.settings.ProcMonitorMethod == "audit") {
|
||||
enable = true;
|
||||
plugins.af_unix.active = true;
|
||||
};
|
||||
|
||||
systemd = {
|
||||
packages = [ cfg.package ];
|
||||
services.opensnitchd = {
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
path = lib.optionals (cfg.settings.ProcMonitorMethod == "audit") [ pkgs.audit ];
|
||||
serviceConfig = {
|
||||
ExecStart =
|
||||
let
|
||||
@@ -210,7 +216,7 @@ in
|
||||
in
|
||||
[
|
||||
""
|
||||
"${cfg.package}/bin/opensnitchd --config-file ${format.generate "default-config.json" preparedSettings}"
|
||||
"${lib.getExe' cfg.package "opensnitchd"} --config-file ${format.generate "default-config.json" preparedSettings}"
|
||||
];
|
||||
};
|
||||
preStart = lib.mkIf (cfg.rules != { }) (
|
||||
@@ -251,5 +257,8 @@ in
|
||||
|
||||
};
|
||||
|
||||
meta.maintainers = with lib.maintainers; [ onny ];
|
||||
meta.maintainers = with lib.maintainers; [
|
||||
onny
|
||||
grimmauld
|
||||
];
|
||||
}
|
||||
|
||||
@@ -160,6 +160,9 @@ in
|
||||
after = [ "network.target" ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
|
||||
# fix book cover cache directory defaults to a path under /nix/store/
|
||||
environment.CACHE_DIR = "/var/cache/calibre-web";
|
||||
|
||||
serviceConfig = {
|
||||
Type = "simple";
|
||||
User = cfg.user;
|
||||
@@ -181,7 +184,6 @@ in
|
||||
|
||||
CacheDirectory = "calibre-web";
|
||||
CacheDirectoryMode = "0750";
|
||||
environment.CACHE_DIR = "/var/cache/calibre-web";
|
||||
}
|
||||
// lib.optionalAttrs (!(lib.hasPrefix "/" cfg.dataDir)) {
|
||||
StateDirectory = cfg.dataDir;
|
||||
|
||||
128
nixos/modules/services/web-apps/sshwifty.nix
Normal file
128
nixos/modules/services/web-apps/sshwifty.nix
Normal file
@@ -0,0 +1,128 @@
|
||||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
let
|
||||
cfg = config.services.sshwifty;
|
||||
format = pkgs.formats.json { };
|
||||
settings = format.generate "sshwifty.json" cfg.settings;
|
||||
in
|
||||
{
|
||||
options.services.sshwifty = {
|
||||
enable = lib.mkEnableOption "Sshwifty";
|
||||
package = lib.mkPackageOption pkgs "sshwifty" { };
|
||||
settings = lib.mkOption {
|
||||
type = format.type;
|
||||
description = ''
|
||||
Configuration for Sshwifty. See
|
||||
[the Sshwifty documentation](https://github.com/nirui/sshwifty/tree/master?tab=readme-ov-file#configuration)
|
||||
for possible options.
|
||||
'';
|
||||
};
|
||||
sharedKeyFile = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.path;
|
||||
default = null;
|
||||
description = "Path to a file containing the shared key.";
|
||||
};
|
||||
socks5PasswordFile = lib.mkOption {
|
||||
type = lib.types.nullOr lib.types.path;
|
||||
default = null;
|
||||
description = "Path to a file containing the SOCKS5 password.";
|
||||
};
|
||||
};
|
||||
config = lib.mkIf cfg.enable {
|
||||
systemd.services.sshwifty = {
|
||||
description = "Sshwifty";
|
||||
after = [ "network.target" ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
script = ''
|
||||
${lib.optionalString (cfg.sharedKeyFile != null || cfg.socks5PasswordFile != null) (
|
||||
lib.concatStringsSep " " [
|
||||
(lib.getExe pkgs.jq)
|
||||
"-s"
|
||||
"'.[0] * .[1]"
|
||||
(lib.optionalString (cfg.sharedKeyFile != null && cfg.socks5PasswordFile != null) "* .[2]")
|
||||
"'"
|
||||
settings
|
||||
(lib.optionalString (
|
||||
cfg.sharedKeyFile != null
|
||||
) "<(echo \"{\\\"SharedKey\\\":\\\"$(cat $CREDENTIALS_DIRECTORY/sharedkey)\\\"}\")")
|
||||
(lib.optionalString (
|
||||
cfg.socks5PasswordFile != null
|
||||
) "<(echo \"{\\\"Socks5Password\\\":\\\"$(cat $CREDENTIALS_DIRECTORY/socks5pass)\\\"}\")")
|
||||
"> /run/sshwifty/sshwifty.json"
|
||||
]
|
||||
)}
|
||||
${lib.optionalString (
|
||||
cfg.sharedKeyFile != null || cfg.socks5PasswordFile != null
|
||||
) "export SSHWIFTY_CONFIG=/run/sshwifty/sshwifty.json"}
|
||||
${lib.optionalString (
|
||||
cfg.sharedKeyFile == null && cfg.socks5PasswordFile == null
|
||||
) "export SSHWIFTY_CONFIG=${settings}"}
|
||||
exec ${lib.getExe cfg.package}
|
||||
'';
|
||||
serviceConfig = {
|
||||
DynamicUser = true;
|
||||
RuntimeDirectory = "sshwifty";
|
||||
RuntimeDirectoryMode = "0750";
|
||||
LoadCredential =
|
||||
[ ]
|
||||
++ lib.optionals (cfg.sharedKeyFile != null) [ "sharedkey:${cfg.sharedKeyFile}" ]
|
||||
++ lib.optionals (cfg.socks5PasswordFile != null) [ "socks5pass:${cfg.socks5PasswordFile}" ];
|
||||
# Hardening
|
||||
LockPersonality = true;
|
||||
MemoryDenyWriteExecute = true;
|
||||
NoNewPrivileges = true;
|
||||
PrivateDevices = true;
|
||||
PrivateMounts = true;
|
||||
ProtectClock = true;
|
||||
ProtectControlGroups = true;
|
||||
ProtectHome = true;
|
||||
ProtectHostname = true;
|
||||
ProtectKernelLogs = true;
|
||||
ProtectKernelModules = true;
|
||||
ProtectKernelTunables = true;
|
||||
RemoveIPC = true;
|
||||
RestrictRealtime = true;
|
||||
RestrictSUIDSGID = true;
|
||||
CapabilityBoundingSet = "CAP_NET_BIND_SERVICE";
|
||||
AmbientCapabilities = "CAP_NET_BIND_SERVICE";
|
||||
PrivateTmp = "disconnected";
|
||||
ProcSubset = "pid";
|
||||
ProtectProc = "invisible";
|
||||
ProtectSystem = "strict";
|
||||
RestrictAddressFamilies = [
|
||||
"AF_INET"
|
||||
"AF_INET6"
|
||||
];
|
||||
RestrictNamespaces = [
|
||||
"~cgroup"
|
||||
"~ipc"
|
||||
"~mnt"
|
||||
"~net"
|
||||
"~pid"
|
||||
"~user"
|
||||
"~uts"
|
||||
];
|
||||
SystemCallArchitectures = "native";
|
||||
SystemCallFilter = [
|
||||
"~@clock"
|
||||
"~@cpu-emulation"
|
||||
"~@debug"
|
||||
"~@module"
|
||||
"~@mount"
|
||||
"~@obsolete"
|
||||
"~@privileged"
|
||||
"~@raw-io"
|
||||
"~@reboot"
|
||||
"~@resources"
|
||||
"~@swap"
|
||||
];
|
||||
UMask = "0077";
|
||||
};
|
||||
};
|
||||
};
|
||||
meta.maintainers = [ lib.maintainers.ungeskriptet ];
|
||||
}
|
||||
@@ -12,7 +12,7 @@ let
|
||||
mkdir $out
|
||||
|
||||
${
|
||||
if config.boot.initrd.systemd.enable then
|
||||
if config.boot.initrd.enable && config.boot.initrd.systemd.enable then
|
||||
''
|
||||
cp ${config.system.build.bootStage2} $out/prepare-root
|
||||
substituteInPlace $out/prepare-root --subst-var-by systemConfig $out
|
||||
|
||||
@@ -97,13 +97,23 @@ def is_encrypted(device: str) -> bool:
|
||||
def is_fs_type_supported(fs_type: str) -> bool:
|
||||
return fs_type.startswith('vfat')
|
||||
|
||||
|
||||
def get_dest_file(path: str) -> str:
|
||||
package_id = os.path.basename(os.path.dirname(path))
|
||||
suffix = os.path.basename(path)
|
||||
return f'{package_id}-{suffix}'
|
||||
|
||||
|
||||
def get_dest_path(path: str, target: str) -> str:
|
||||
dest_file = get_dest_file(path)
|
||||
return os.path.join(str(limine_install_dir), target, dest_file)
|
||||
|
||||
|
||||
def get_copied_path_uri(path: str, target: str) -> str:
|
||||
result = ''
|
||||
|
||||
package_id = os.path.basename(os.path.dirname(path))
|
||||
suffix = os.path.basename(path)
|
||||
dest_file = f'{package_id}-{suffix}'
|
||||
dest_path = os.path.join(str(limine_install_dir), target, dest_file)
|
||||
dest_file = get_dest_file(path)
|
||||
dest_path = get_dest_path(path, target)
|
||||
|
||||
if not os.path.exists(dest_path):
|
||||
copy_file(path, dest_path)
|
||||
|
||||
@@ -28,9 +28,7 @@
|
||||
options = { };
|
||||
|
||||
config =
|
||||
let
|
||||
initScript = if config.boot.initrd.systemd.enable then "prepare-root" else "init";
|
||||
in
|
||||
|
||||
{
|
||||
boot.isContainer = true;
|
||||
boot.postBootCommands = ''
|
||||
@@ -79,7 +77,7 @@
|
||||
|
||||
contents = [
|
||||
{
|
||||
source = config.system.build.toplevel + "/${initScript}";
|
||||
source = config.system.build.toplevel + "/init";
|
||||
target = "/sbin/init";
|
||||
}
|
||||
# Technically this is not required for lxc, but having also make this configuration work with systemd-nspawn.
|
||||
@@ -104,7 +102,7 @@
|
||||
|
||||
pseudoFiles = [
|
||||
"/sbin d 0755 0 0"
|
||||
"/sbin/init s 0555 0 0 ${config.system.build.toplevel}/${initScript}"
|
||||
"/sbin/init s 0555 0 0 ${config.system.build.toplevel}/init"
|
||||
"/dev d 0755 0 0"
|
||||
"/proc d 0555 0 0"
|
||||
"/sys d 0555 0 0"
|
||||
@@ -113,7 +111,7 @@
|
||||
|
||||
system.build.installBootLoader = pkgs.writeScript "install-lxc-sbin-init.sh" ''
|
||||
#!${pkgs.runtimeShell}
|
||||
${pkgs.coreutils}/bin/ln -fs "$1/${initScript}" /sbin/init
|
||||
${pkgs.coreutils}/bin/ln -fs "$1/init" /sbin/init
|
||||
'';
|
||||
|
||||
# networkd depends on this, but systemd module disables this for containers
|
||||
@@ -122,7 +120,7 @@
|
||||
systemd.packages = [ pkgs.distrobuilder.generator ];
|
||||
|
||||
system.activationScripts.installInitScript = lib.mkForce ''
|
||||
ln -fs $systemConfig/${initScript} /sbin/init
|
||||
ln -fs $systemConfig/init /sbin/init
|
||||
'';
|
||||
};
|
||||
}
|
||||
|
||||
@@ -439,7 +439,7 @@ in
|
||||
imports = [ ./discourse.nix ];
|
||||
_module.args.package = pkgs.discourseAllPlugins;
|
||||
};
|
||||
dnscrypt-proxy2 = runTestOn [ "x86_64-linux" ] ./dnscrypt-proxy2.nix;
|
||||
dnscrypt-proxy = runTestOn [ "x86_64-linux" ] ./dnscrypt-proxy.nix;
|
||||
dnsdist = import ./dnsdist.nix { inherit pkgs runTest; };
|
||||
doas = runTest ./doas.nix;
|
||||
docker = runTestOn [ "aarch64-linux" "x86_64-linux" ] ./docker.nix;
|
||||
@@ -494,7 +494,6 @@ in
|
||||
};
|
||||
ergo = runTest ./ergo.nix;
|
||||
ergochat = runTest ./ergochat.nix;
|
||||
eris-server = runTest ./eris-server.nix;
|
||||
esphome = runTest ./esphome.nix;
|
||||
etc = pkgs.callPackage ../modules/system/etc/test.nix { inherit evalMinimalConfig; };
|
||||
activation = pkgs.callPackage ../modules/system/activation/test.nix { };
|
||||
@@ -560,10 +559,6 @@ in
|
||||
flannel = runTestOn [ "x86_64-linux" ] ./flannel.nix;
|
||||
flaresolverr = runTest ./flaresolverr.nix;
|
||||
flood = runTest ./flood.nix;
|
||||
floorp = runTest {
|
||||
imports = [ ./firefox.nix ];
|
||||
_module.args.firefoxPackage = pkgs.floorp;
|
||||
};
|
||||
fluent-bit = runTest ./fluent-bit.nix;
|
||||
fluentd = runTest ./fluentd.nix;
|
||||
fluidd = runTest ./fluidd.nix;
|
||||
@@ -1374,6 +1369,7 @@ in
|
||||
sslh = handleTest ./sslh.nix { };
|
||||
ssh-agent-auth = runTest ./ssh-agent-auth.nix;
|
||||
ssh-audit = runTest ./ssh-audit.nix;
|
||||
sshwifty = runTest ./web-apps/sshwifty/default.nix;
|
||||
sssd = handleTestOn [ "x86_64-linux" "aarch64-linux" ] ./sssd.nix { };
|
||||
sssd-ldap = handleTestOn [ "x86_64-linux" "aarch64-linux" ] ./sssd-ldap.nix { };
|
||||
stalwart-mail = runTest ./stalwart/stalwart-mail.nix;
|
||||
|
||||
@@ -11,9 +11,13 @@
|
||||
{ config, pkgs, ... }:
|
||||
{
|
||||
services.anubis = {
|
||||
defaultOptions.settings = {
|
||||
DIFFICULTY = 3;
|
||||
USER_DEFINED_DEFAULT = true;
|
||||
defaultOptions = {
|
||||
# Get default botPolicy
|
||||
botPolicy = lib.importJSON "${config.services.anubis.package.src}/data/botPolicies.json";
|
||||
settings = {
|
||||
DIFFICULTY = 3;
|
||||
USER_DEFINED_DEFAULT = true;
|
||||
};
|
||||
};
|
||||
instances = {
|
||||
"".settings = {
|
||||
@@ -38,11 +42,34 @@
|
||||
group = "nginx";
|
||||
settings.TARGET = "unix:///run/nginx/nginx.sock";
|
||||
};
|
||||
|
||||
"botPolicy-default" = {
|
||||
botPolicy = null;
|
||||
settings.TARGET = "http://localhost:8080";
|
||||
};
|
||||
|
||||
"botPolicy-file" = {
|
||||
settings = {
|
||||
TARGET = "http://localhost:8080";
|
||||
POLICY_FNAME = "/etc/anubis-botPolicy.json";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
# Empty json for testing
|
||||
environment.etc."anubis-botPolicy.json".text = lib.generators.toJSON { } {
|
||||
bots = [
|
||||
{
|
||||
name = "allow-all";
|
||||
user_agent_regex = ".*";
|
||||
action = "ALLOW";
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
# support
|
||||
users.users.nginx.extraGroups = [ config.users.groups.anubis.name ];
|
||||
users.users.nginx.extraGroups = [ config.services.anubis.defaultOptions.group ];
|
||||
services.nginx = {
|
||||
enable = true;
|
||||
recommendedProxySettings = true;
|
||||
@@ -115,5 +142,10 @@
|
||||
# Make sure defaults don't overwrite themselves
|
||||
machine.succeed('cat /run/current-system/etc/systemd/system/anubis.service | grep "DIFFICULTY=5"')
|
||||
machine.succeed('cat /run/current-system/etc/systemd/system/anubis-tcp.service | grep "DIFFICULTY=3"')
|
||||
|
||||
# Check correct BotPolicy settings are applied
|
||||
machine.succeed('cat /run/current-system/etc/systemd/system/anubis.service | grep "POLICY_FNAME=/nix/store"')
|
||||
machine.fail('cat /run/current-system/etc/systemd/system/anubis-botPolicy-default.service | grep "POLICY_FNAME="')
|
||||
machine.succeed('cat /run/current-system/etc/systemd/system/anubis-botPolicy-file.service | grep "POLICY_FNAME=/etc/anubis-botPolicy.json"')
|
||||
'';
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@ let
|
||||
localProxyPort = 43;
|
||||
in
|
||||
{
|
||||
name = "dnscrypt-proxy2";
|
||||
name = "dnscrypt-proxy";
|
||||
meta.maintainers = with lib.maintainers; [ joachifm ];
|
||||
|
||||
nodes = {
|
||||
@@ -14,8 +14,8 @@ in
|
||||
{
|
||||
security.apparmor.enable = true;
|
||||
|
||||
services.dnscrypt-proxy2.enable = true;
|
||||
services.dnscrypt-proxy2.settings = {
|
||||
services.dnscrypt-proxy.enable = true;
|
||||
services.dnscrypt-proxy.settings = {
|
||||
listen_addresses = [ "127.0.0.1:${toString localProxyPort}" ];
|
||||
sources.public-resolvers = {
|
||||
urls = [ "https://download.dnscrypt.info/resolvers-list/v2/public-resolvers.md" ];
|
||||
@@ -32,7 +32,7 @@ in
|
||||
|
||||
testScript = ''
|
||||
client.wait_for_unit("dnsmasq")
|
||||
client.wait_for_unit("dnscrypt-proxy2")
|
||||
client.wait_for_unit("dnscrypt-proxy")
|
||||
client.wait_until_succeeds("ss --numeric --udp --listening | grep -q ${toString localProxyPort}")
|
||||
'';
|
||||
}
|
||||
@@ -72,9 +72,9 @@ in
|
||||
];
|
||||
|
||||
nodes.client = {
|
||||
services.dnscrypt-proxy2.enable = true;
|
||||
services.dnscrypt-proxy2.upstreamDefaults = false;
|
||||
services.dnscrypt-proxy2.settings = {
|
||||
services.dnscrypt-proxy.enable = true;
|
||||
services.dnscrypt-proxy.upstreamDefaults = false;
|
||||
services.dnscrypt-proxy.settings = {
|
||||
server_names = [ "server" ];
|
||||
listen_addresses = [ "[::1]:53" ];
|
||||
cache = false;
|
||||
@@ -92,7 +92,7 @@ in
|
||||
almost_expiration = server.succeed("date --date '14min'").strip()
|
||||
|
||||
with subtest("The DNSCrypt client can connect to the server"):
|
||||
client.wait_until_succeeds("journalctl -u dnscrypt-proxy2 --grep '\\[server\\] OK'")
|
||||
client.wait_until_succeeds("journalctl -u dnscrypt-proxy --grep '\\[server\\] OK'")
|
||||
|
||||
with subtest("DNS queries over UDP are working"):
|
||||
client.wait_for_open_port(53)
|
||||
|
||||
@@ -1,26 +0,0 @@
|
||||
{ pkgs, lib, ... }:
|
||||
{
|
||||
name = "eris-server";
|
||||
|
||||
nodes.server = {
|
||||
environment.systemPackages = [
|
||||
pkgs.eris-go
|
||||
pkgs.eriscmd
|
||||
];
|
||||
services.eris-server = {
|
||||
enable = true;
|
||||
decode = true;
|
||||
listenHttp = "[::1]:80";
|
||||
backends = [ "badger+file:///var/cache/eris.badger?get&put" ];
|
||||
mountpoint = "/eris";
|
||||
};
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
start_all()
|
||||
server.wait_for_unit("eris-server.service")
|
||||
server.wait_for_open_port(5683)
|
||||
server.wait_for_open_port(80)
|
||||
server.succeed("eriscmd get http://[::1] $(echo 'Hail ERIS!' | eriscmd put coap+tcp://[::1]:5683)")
|
||||
'';
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
{ lib, ... }:
|
||||
{
|
||||
name = "homepage-dashboard";
|
||||
meta.maintainers = with lib.maintainers; [ jnsgruk ];
|
||||
meta.maintainers = with lib.maintainers; [ ];
|
||||
|
||||
nodes.machine = _: {
|
||||
services.homepage-dashboard = {
|
||||
|
||||
@@ -12,7 +12,7 @@ in
|
||||
{
|
||||
name = "multipass";
|
||||
|
||||
meta.maintainers = [ lib.maintainers.jnsgruk ];
|
||||
meta.maintainers = [ ];
|
||||
|
||||
nodes.machine =
|
||||
{ lib, ... }:
|
||||
|
||||
@@ -1,28 +1,42 @@
|
||||
import ./make-test-python.nix {
|
||||
name = "ntfy-sh";
|
||||
import ./make-test-python.nix (
|
||||
{ pkgs, ... }:
|
||||
{
|
||||
name = "ntfy-sh";
|
||||
|
||||
nodes.machine =
|
||||
{ ... }:
|
||||
{
|
||||
services.ntfy-sh.enable = true;
|
||||
services.ntfy-sh.settings.base-url = "http://localhost:2586";
|
||||
};
|
||||
nodes.machine =
|
||||
{ ... }:
|
||||
{
|
||||
services.ntfy-sh.enable = true;
|
||||
services.ntfy-sh.settings.base-url = "http://localhost:2586";
|
||||
|
||||
testScript = ''
|
||||
import json
|
||||
# Create a user with user:123
|
||||
services.ntfy-sh.environmentFile = pkgs.writeText "ntfy.env" ''
|
||||
NTFY_AUTH_DEFAULT_ACCESS='deny-all'
|
||||
NTFY_AUTH_USERS='user:$2a$12$W2v7IQhkayvJOYRpg6YEruxj.jUO3R2xQOU7s1vC3HzLLB9gSKJ9.:user'
|
||||
NTFY_AUTH_ACCESS='user:test:rw'
|
||||
'';
|
||||
};
|
||||
|
||||
msg = "Test notification"
|
||||
testScript = ''
|
||||
import json
|
||||
|
||||
machine.wait_for_unit("multi-user.target")
|
||||
msg = "Test notification"
|
||||
|
||||
machine.wait_for_open_port(2586)
|
||||
machine.wait_for_unit("multi-user.target")
|
||||
|
||||
machine.succeed(f"curl -d '{msg}' localhost:2586/test")
|
||||
machine.wait_for_open_port(2586)
|
||||
|
||||
notif = json.loads(machine.succeed("curl -s localhost:2586/test/json?poll=1"))
|
||||
machine.succeed(f"curl -u user:1234 -d '{msg}' localhost:2586/test")
|
||||
|
||||
assert msg == notif["message"], "Wrong message"
|
||||
# If we have a user, receive a message
|
||||
notif = json.loads(machine.succeed("curl -u user:1234 -s localhost:2586/test/json?poll=1"))
|
||||
assert msg == notif["message"], "Wrong message"
|
||||
|
||||
machine.succeed("ntfy user list")
|
||||
'';
|
||||
}
|
||||
# If we have no user, we should get forbidden, making sure the default access config works
|
||||
notif = json.loads(machine.succeed("curl -s localhost:2586/test/json?poll=1"))
|
||||
assert 403 == notif["http"], f"Should return 403, got {notif["http"]}"
|
||||
|
||||
machine.succeed("ntfy user list")
|
||||
'';
|
||||
}
|
||||
)
|
||||
|
||||
@@ -33,7 +33,7 @@ in
|
||||
enable = true;
|
||||
settings.DefaultAction = "deny";
|
||||
settings.ProcMonitorMethod = m;
|
||||
settings.LogLevel = 0;
|
||||
settings.LogLevel = 1;
|
||||
};
|
||||
}
|
||||
) monitorMethods
|
||||
@@ -46,7 +46,7 @@ in
|
||||
enable = true;
|
||||
settings.DefaultAction = "deny";
|
||||
settings.ProcMonitorMethod = m;
|
||||
settings.LogLevel = 0;
|
||||
settings.LogLevel = 1;
|
||||
rules = {
|
||||
curl = {
|
||||
name = "curl";
|
||||
@@ -71,13 +71,24 @@ in
|
||||
server.wait_for_unit("caddy.service")
|
||||
server.wait_for_open_port(80)
|
||||
''
|
||||
+ lib.concatLines (
|
||||
map (m: ''
|
||||
client_blocked_${m}.wait_for_unit("opensnitchd.service")
|
||||
client_blocked_${m}.fail("curl http://server")
|
||||
+ (
|
||||
lib.concatLines (
|
||||
map (m: ''
|
||||
client_blocked_${m}.wait_for_unit("opensnitchd.service")
|
||||
client_blocked_${m}.fail("curl http://server")
|
||||
|
||||
client_allowed_${m}.wait_for_unit("opensnitchd.service")
|
||||
client_allowed_${m}.succeed("curl http://server")
|
||||
'') monitorMethods
|
||||
client_allowed_${m}.wait_for_unit("opensnitchd.service")
|
||||
client_allowed_${m}.succeed("curl http://server")
|
||||
'') monitorMethods
|
||||
)
|
||||
+ ''
|
||||
# make sure the kernel modules were actually properly loaded
|
||||
client_blocked_ebpf.succeed(r"journalctl -u opensnitchd --grep '\[eBPF\] module loaded: /nix/store/.*/etc/opensnitchd/opensnitch\.o'")
|
||||
client_blocked_ebpf.succeed(r"journalctl -u opensnitchd --grep '\[eBPF\] module loaded: /nix/store/.*/etc/opensnitchd/opensnitch-procs\.o'")
|
||||
client_blocked_ebpf.succeed(r"journalctl -u opensnitchd --grep '\[eBPF\] module loaded: /nix/store/.*/etc/opensnitchd/opensnitch-dns\.o'")
|
||||
client_allowed_ebpf.succeed(r"journalctl -u opensnitchd --grep '\[eBPF\] module loaded: /nix/store/.*/etc/opensnitchd/opensnitch\.o'")
|
||||
client_allowed_ebpf.succeed(r"journalctl -u opensnitchd --grep '\[eBPF\] module loaded: /nix/store/.*/etc/opensnitchd/opensnitch-procs\.o'")
|
||||
client_allowed_ebpf.succeed(r"journalctl -u opensnitchd --grep '\[eBPF\] module loaded: /nix/store/.*/etc/opensnitchd/opensnitch-dns\.o'")
|
||||
''
|
||||
);
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
{
|
||||
name = "scrutiny";
|
||||
meta.maintainers = with lib.maintainers; [ jnsgruk ];
|
||||
meta.maintainers = with lib.maintainers; [ ];
|
||||
|
||||
nodes = {
|
||||
machine =
|
||||
|
||||
@@ -27,10 +27,6 @@
|
||||
SB_USER=user:password
|
||||
SB_AUTH_TOKEN=test
|
||||
'';
|
||||
extraArgs = [
|
||||
"--reindex"
|
||||
"--db /home/test/silverbullet/custom.db"
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
{
|
||||
lib,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
@@ -12,7 +13,7 @@ let
|
||||
in
|
||||
{
|
||||
name = "snapcast";
|
||||
meta = with pkgs.lib.maintainers; {
|
||||
meta = with lib.maintainers; {
|
||||
maintainers = [ hexa ];
|
||||
};
|
||||
|
||||
@@ -20,30 +21,27 @@ in
|
||||
server = {
|
||||
services.snapserver = {
|
||||
enable = true;
|
||||
port = port;
|
||||
tcp.port = tcpPort;
|
||||
http.port = httpPort;
|
||||
openFirewall = true;
|
||||
buffer = bufferSize;
|
||||
streams = {
|
||||
mpd = {
|
||||
type = "pipe";
|
||||
location = "/run/snapserver/mpd";
|
||||
query.mode = "create";
|
||||
};
|
||||
bluetooth = {
|
||||
type = "pipe";
|
||||
location = "/run/snapserver/bluetooth";
|
||||
settings = {
|
||||
stream = {
|
||||
port = port;
|
||||
source = [
|
||||
"pipe:///run/snapserver/mpd?name=mpd&mode=create"
|
||||
"pipe:///run/snapserver/bluetooth?name=bluetooth"
|
||||
"tcp://127.0.0.1:${toString tcpStreamPort}?name=tcp"
|
||||
"meta:///mpd/bluetooth/tcp?name=meta"
|
||||
];
|
||||
buffer = bufferSize;
|
||||
};
|
||||
tcp = {
|
||||
type = "tcp";
|
||||
location = "127.0.0.1:${toString tcpStreamPort}";
|
||||
enabled = true;
|
||||
port = tcpPort;
|
||||
};
|
||||
meta = {
|
||||
type = "meta";
|
||||
location = "/mpd/bluetooth/tcp";
|
||||
http = {
|
||||
enabled = true;
|
||||
port = httpPort;
|
||||
};
|
||||
};
|
||||
openFirewall = true;
|
||||
};
|
||||
environment.systemPackages = [ pkgs.snapcast ];
|
||||
};
|
||||
|
||||
@@ -99,6 +99,7 @@ import ./make-test-python.nix (
|
||||
objectClass: posixAccount
|
||||
userPassword: ${testPassword}
|
||||
homeDirectory: /home/${testUser}
|
||||
loginShell: /run/current-system/sw/bin/bash
|
||||
uidNumber: 1234
|
||||
gidNumber: 1234
|
||||
cn: ""
|
||||
|
||||
32
nixos/tests/web-apps/sshwifty/default.nix
Normal file
32
nixos/tests/web-apps/sshwifty/default.nix
Normal file
@@ -0,0 +1,32 @@
|
||||
{ lib, pkgs, ... }:
|
||||
{
|
||||
name = "sshwifty";
|
||||
|
||||
nodes.machine =
|
||||
{ ... }:
|
||||
{
|
||||
services.sshwifty = {
|
||||
enable = true;
|
||||
sharedKeyFile = pkgs.writeText "sharedkey" "rpz2E4QI6uPMLr";
|
||||
settings = {
|
||||
HostName = "localhost";
|
||||
Servers = [
|
||||
{
|
||||
ListenInterface = "::1";
|
||||
ListenPort = 80;
|
||||
ServerMessage = "NixOS test";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
testScript = ''
|
||||
machine.wait_for_unit("sshwifty.service")
|
||||
machine.wait_for_open_port(80)
|
||||
machine.wait_until_succeeds("curl --fail -6 http://localhost/", timeout=60)
|
||||
machine.wait_until_succeeds("${lib.getExe pkgs.nodejs} ${./sshwifty-test.js}", timeout=60)
|
||||
'';
|
||||
|
||||
meta.maintainers = [ lib.maintainers.ungeskriptet ];
|
||||
}
|
||||
83
nixos/tests/web-apps/sshwifty/sshwifty-test.js
Normal file
83
nixos/tests/web-apps/sshwifty/sshwifty-test.js
Normal file
@@ -0,0 +1,83 @@
|
||||
#!/usr/bin/env node
|
||||
/* Based on ui/app.js from Sshwifty. */
|
||||
const { subtle } = require('node:crypto')
|
||||
const sshwiftyURL = 'http://localhost/sshwifty/socket/verify'
|
||||
const sharedKey = 'rpz2E4QI6uPMLr'
|
||||
const serverMessage = 'NixOS test'
|
||||
|
||||
async function hmac512(secret, data) {
|
||||
const key = await subtle.importKey(
|
||||
'raw',
|
||||
secret,
|
||||
{ name: 'HMAC', hash: { name: 'SHA-512' } },
|
||||
false,
|
||||
['sign', 'verify'],
|
||||
)
|
||||
return subtle.sign(key.algorithm, key, data)
|
||||
}
|
||||
|
||||
async function getSocketAuthKey(privateKey) {
|
||||
const enc = new TextEncoder(),
|
||||
rTime = Number(Math.trunc(Date.now() / 100000))
|
||||
return new Uint8Array(
|
||||
await hmac512(enc.encode(privateKey), enc.encode(rTime)),
|
||||
).slice(0, 32)
|
||||
}
|
||||
|
||||
async function requestAuth(privateKey) {
|
||||
const authKey = await getSocketAuthKey(privateKey)
|
||||
const h = await fetch(sshwiftyURL, {
|
||||
headers: { 'X-Key': btoa(String.fromCharCode.apply(null, authKey)) },
|
||||
})
|
||||
const serverDate = h.headers.get('Date')
|
||||
return {
|
||||
result: h.status,
|
||||
date: serverDate ? new Date(serverDate) : null,
|
||||
text: await h.text(),
|
||||
}
|
||||
}
|
||||
|
||||
async function tryInitialAuth() {
|
||||
try {
|
||||
const result = await requestAuth(sharedKey)
|
||||
if (result.date) {
|
||||
const serverRespondTime = result.date,
|
||||
serverRespondTimestamp = serverRespondTime.getTime(),
|
||||
clientCurrent = new Date(),
|
||||
clientTimestamp = clientCurrent.getTime(),
|
||||
timeDiff = Math.abs(serverRespondTimestamp - clientTimestamp)
|
||||
if (timeDiff > 30000) {
|
||||
console.log('Time difference between client and server too big.')
|
||||
process.exit(1)
|
||||
}
|
||||
}
|
||||
switch (result.result) {
|
||||
case 200:
|
||||
if (result.text.includes(serverMessage)) {
|
||||
console.log('All good.')
|
||||
process.exit()
|
||||
} else {
|
||||
console.log('Server message not found')
|
||||
process.exit(1)
|
||||
}
|
||||
break
|
||||
case 403:
|
||||
console.log('We need auth.')
|
||||
process.exit(1)
|
||||
break
|
||||
case 0:
|
||||
console.log('Timeout?')
|
||||
process.exit(1)
|
||||
break
|
||||
default:
|
||||
console.log('wghat')
|
||||
process.exit(1)
|
||||
}
|
||||
} catch {
|
||||
console.log('Something went horribly wrong, ouch.')
|
||||
process.exit(1)
|
||||
}
|
||||
}
|
||||
|
||||
console.log('Testing Sshwifty')
|
||||
tryInitialAuth()
|
||||
@@ -21,11 +21,11 @@ assert withConplay -> !libOnly;
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "${lib.optionalString libOnly "lib"}mpg123";
|
||||
version = "1.33.0";
|
||||
version = "1.33.2";
|
||||
|
||||
src = fetchurl {
|
||||
url = "mirror://sourceforge/mpg123/mpg123-${version}.tar.bz2";
|
||||
hash = "sha256-IpDjrt5vTRY+GhdFIWWvM8qtS18JSPmUKc+i2Dhfqp0=";
|
||||
hash = "sha256-LFT6u/ppbc6PmxN8jvekKaBh+P5jPNfQpRGAmFXywhk=";
|
||||
};
|
||||
|
||||
outputs = [
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
asio,
|
||||
avahi,
|
||||
boost,
|
||||
expat,
|
||||
flac,
|
||||
libogg,
|
||||
libvorbis,
|
||||
@@ -23,13 +24,13 @@
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "snapcast";
|
||||
version = "0.30.0";
|
||||
version = "0.32.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "badaix";
|
||||
repo = "snapcast";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-EJgpZz4PnXfge0rkVH1F7cah+i9AvDJVSUVqL7qChDM=";
|
||||
hash = "sha256-pGON2Nh7GgcGvMUNI3nWstm5Q9R+VW9eEi4IE6KkFBo=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
@@ -42,6 +43,7 @@ stdenv.mkDerivation rec {
|
||||
boost
|
||||
asio
|
||||
avahi
|
||||
expat
|
||||
flac
|
||||
libogg
|
||||
libvorbis
|
||||
|
||||
@@ -14,13 +14,13 @@
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "youtube-music";
|
||||
version = "3.10.0";
|
||||
version = "3.11.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "th-ch";
|
||||
repo = "youtube-music";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-+PCDA7lHaUQw9DhODRsEScyJC+9v8UPiZ1W8w2h/Ljg=";
|
||||
hash = "sha256-M8YFpeauM55fpNyHSGQm8iZieV0oWqOieVThhglKKPE=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
@@ -31,7 +31,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
pnpmDeps = pnpm.fetchDeps {
|
||||
inherit (finalAttrs) pname version src;
|
||||
fetcherVersion = 2;
|
||||
hash = "sha256-b5I0n3CedA6qCL68lePU3pwyGp1JlQHzUpfCvhqw2qI=";
|
||||
hash = "sha256-xZQ8rnLGD0ZxxUUPLHmNJ6mA+lnUHCTBvtJTiIPxaZU=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
||||
@@ -11,26 +11,26 @@
|
||||
gtk3,
|
||||
json-glib,
|
||||
libgee,
|
||||
util-linux,
|
||||
util-linuxMinimal,
|
||||
vte,
|
||||
xapp,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "timeshift";
|
||||
version = "25.07.7";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "linuxmint";
|
||||
repo = "timeshift";
|
||||
rev = version;
|
||||
tag = finalAttrs.version;
|
||||
hash = "sha256-X3TwUkOeGzcgFM/4Fyfs8eQuGK2wHe3t13WSpIizX8s=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
for FILE in src/Core/Main.vala src/Utility/Device.vala; do
|
||||
substituteInPlace "$FILE" \
|
||||
--replace-fail "/sbin/blkid" "${lib.getExe' util-linux "blkid"}"
|
||||
--replace-fail "/sbin/blkid" "${lib.getExe' util-linuxMinimal "blkid"}"
|
||||
done
|
||||
|
||||
substituteInPlace ./src/Utility/IconManager.vala \
|
||||
@@ -62,18 +62,18 @@ stdenv.mkDerivation rec {
|
||||
NIX_CFLAGS_COMPILE = "-Wno-error=implicit-function-declaration";
|
||||
};
|
||||
|
||||
meta = with lib; {
|
||||
meta = {
|
||||
description = "System restore tool for Linux";
|
||||
longDescription = ''
|
||||
TimeShift creates filesystem snapshots using rsync+hardlinks or BTRFS snapshots.
|
||||
Snapshots can be restored using TimeShift installed on the system or from Live CD or USB.
|
||||
'';
|
||||
homepage = "https://github.com/linuxmint/timeshift";
|
||||
license = licenses.gpl2Plus;
|
||||
platforms = platforms.linux;
|
||||
maintainers = with maintainers; [
|
||||
license = lib.licenses.gpl2Plus;
|
||||
platforms = lib.platforms.linux;
|
||||
maintainers = with lib.maintainers; [
|
||||
ShamrockLee
|
||||
bobby285271
|
||||
];
|
||||
};
|
||||
}
|
||||
})
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
}:
|
||||
runCommand "sddm-wrapped"
|
||||
{
|
||||
inherit (unwrapped) version;
|
||||
inherit (unwrapped) version outputs;
|
||||
|
||||
buildInputs =
|
||||
unwrapped.buildInputs
|
||||
@@ -45,4 +45,7 @@ runCommand "sddm-wrapped"
|
||||
for i in bin/*; do
|
||||
makeQtWrapper ${unwrapped}/$i $out/$i --set SDDM_GREETER_DIR $out/bin
|
||||
done
|
||||
|
||||
mkdir -p $man
|
||||
ln -s ${lib.getMan unwrapped}/* $man/
|
||||
''
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
systemd,
|
||||
xkeyboardconfig,
|
||||
nixosTests,
|
||||
docutils,
|
||||
}:
|
||||
let
|
||||
isQt6 = lib.versions.major qtbase.version == "6";
|
||||
@@ -29,6 +30,11 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
hash = "sha256-r5mnEWham2WnoEqRh5tBj/6rn5mN62ENOCmsLv2Ht+w=";
|
||||
};
|
||||
|
||||
outputs = [
|
||||
"out"
|
||||
"man"
|
||||
];
|
||||
|
||||
patches = [
|
||||
./greeter-path.patch
|
||||
./sddm-ignore-config-mtime.patch
|
||||
@@ -44,6 +50,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
cmake
|
||||
pkg-config
|
||||
qttools
|
||||
docutils
|
||||
];
|
||||
|
||||
buildInputs = [
|
||||
@@ -61,6 +68,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
|
||||
cmakeFlags = [
|
||||
(lib.cmakeBool "BUILD_WITH_QT6" isQt6)
|
||||
(lib.cmakeBool "BUILD_MAN_PAGES" true)
|
||||
"-DCONFIG_FILE=/etc/sddm.conf"
|
||||
"-DCONFIG_DIR=/etc/sddm.conf.d"
|
||||
|
||||
|
||||
@@ -24,8 +24,8 @@ let
|
||||
sha256Hash = "sha256-S8KK/EGev0v03fVywIkD6Ym3LrciGKXJVorzyZ1ljdQ=";
|
||||
};
|
||||
latestVersion = {
|
||||
version = "2025.1.4.3"; # "Android Studio Narwhal 4 Feature Drop | 2025.1.4 Canary 3"
|
||||
sha256Hash = "sha256-YYacdZ7YdmmrTSsKtCfmSSrrZV+/GGPK34KnlO0+aKQ=";
|
||||
version = "2025.1.4.4"; # "Android Studio Narwhal 4 Feature Drop | 2025.1.4 Canary 4"
|
||||
sha256Hash = "sha256-Cp5oZiCJJDffZRAg7CPNNR82Mn6k4QpjQtqMiokFAws=";
|
||||
};
|
||||
in
|
||||
{
|
||||
|
||||
@@ -12,7 +12,7 @@ lib.makeScope pkgs.newScope (
|
||||
sources = import ./sources.nix {
|
||||
inherit lib;
|
||||
inherit (pkgs)
|
||||
fetchFromBitbucket
|
||||
fetchFromGitHub
|
||||
fetchzip
|
||||
;
|
||||
};
|
||||
@@ -31,7 +31,7 @@ lib.makeScope pkgs.newScope (
|
||||
withPgtk = true;
|
||||
};
|
||||
|
||||
emacs29-macport = callPackage (self.sources.emacs29-macport) (
|
||||
emacs30-macport = callPackage (self.sources.emacs30-macport) (
|
||||
inheritedArgs
|
||||
// {
|
||||
srcRepo = true;
|
||||
|
||||
@@ -57,12 +57,11 @@
|
||||
sigtool,
|
||||
sqlite,
|
||||
replaceVars,
|
||||
systemd,
|
||||
systemdLibs,
|
||||
tree-sitter,
|
||||
texinfo,
|
||||
webkitgtk_4_0,
|
||||
wrapGAppsHook3,
|
||||
writeText,
|
||||
zlib,
|
||||
|
||||
# Boolean flags
|
||||
@@ -88,7 +87,7 @@
|
||||
withPgtk ? false,
|
||||
withSelinux ? stdenv.hostPlatform.isLinux,
|
||||
withSQLite3 ? true,
|
||||
withSystemd ? lib.meta.availableOn stdenv.hostPlatform systemd,
|
||||
withSystemd ? lib.meta.availableOn stdenv.hostPlatform systemdLibs,
|
||||
withToolkitScrollBars ? true,
|
||||
withTreeSitter ? true,
|
||||
withWebP ? true,
|
||||
@@ -322,7 +321,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
sqlite
|
||||
]
|
||||
++ lib.optionals withSystemd [
|
||||
systemd
|
||||
systemdLibs
|
||||
]
|
||||
++ lib.optionals withTreeSitter [
|
||||
tree-sitter
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
lib,
|
||||
fetchFromBitbucket,
|
||||
fetchFromGitHub,
|
||||
fetchzip,
|
||||
}:
|
||||
|
||||
@@ -32,8 +32,8 @@ let
|
||||
}
|
||||
);
|
||||
"macport" = (
|
||||
fetchFromBitbucket {
|
||||
owner = "mituharu";
|
||||
fetchFromGitHub {
|
||||
owner = "jdtsmith";
|
||||
repo = "emacs-mac";
|
||||
inherit rev hash;
|
||||
}
|
||||
@@ -68,13 +68,14 @@ let
|
||||
''
|
||||
+ lib.optionalString (variant == "macport") ''
|
||||
|
||||
This release is built from Mitsuharu Yamamoto's patched source code
|
||||
tailored for macOS.
|
||||
This release initially was built from Mitsuharu Yamamoto's patched source code
|
||||
tailored for macOS. Moved to a fork of the latter starting with emacs v30 as the
|
||||
original project seems to be currently dormant.
|
||||
'';
|
||||
changelog =
|
||||
{
|
||||
"mainline" = "https://www.gnu.org/savannah-checkouts/gnu/emacs/news/NEWS.${version}";
|
||||
"macport" = "https://bitbucket.org/mituharu/emacs-mac/raw/${rev}/NEWS-mac";
|
||||
"macport" = "https://github.com/jdtsmith/emacs-mac/blob/${rev}/NEWS-mac";
|
||||
}
|
||||
.${variant};
|
||||
license = lib.licenses.gpl3Plus;
|
||||
@@ -88,7 +89,9 @@ let
|
||||
matthewbauer
|
||||
panchoh
|
||||
];
|
||||
"macport" = with lib.maintainers; [ ];
|
||||
"macport" = with lib.maintainers; [
|
||||
kfiz
|
||||
];
|
||||
}
|
||||
.${variant};
|
||||
platforms =
|
||||
@@ -117,26 +120,11 @@ in
|
||||
];
|
||||
});
|
||||
|
||||
emacs29-macport = import ./make-emacs.nix (mkArgs {
|
||||
emacs30-macport = import ./make-emacs.nix (mkArgs {
|
||||
pname = "emacs-mac";
|
||||
version = "29.4";
|
||||
version = "30.2.50";
|
||||
variant = "macport";
|
||||
rev = "emacs-29.4-mac-10.1";
|
||||
hash = "sha256-8OQ+fon9tclbh/eUJ09uqKfMaz9M77QnLIp2R8QB6Ic=";
|
||||
patches = fetchpatch: [
|
||||
# CVE-2024-53920
|
||||
(fetchpatch {
|
||||
url = "https://gitweb.gentoo.org/proj/emacs-patches.git/plain/emacs/29.4/07_all_trusted-content.patch?id=f24370de4de0a37304958ec1569d5c50c1745b7f";
|
||||
hash = "sha256-zUWM2HDO5MHEB5fC5TCUxzmSafMvXO5usRzCyp9Q7P4=";
|
||||
})
|
||||
|
||||
# CVE-2025-1244
|
||||
(fetchpatch {
|
||||
url = "https://gitweb.gentoo.org/proj/emacs-patches.git/plain/emacs/29.4/06_all_man.patch?id=f24370de4de0a37304958ec1569d5c50c1745b7f";
|
||||
hash = "sha256-Vdf6GF5YmGoHTkxiD9mdYH0hgvfovZwrqYN1NQ++U1w=";
|
||||
})
|
||||
];
|
||||
|
||||
meta.knownVulnerabilities = [ ];
|
||||
rev = "emacs-mac-30.2";
|
||||
hash = "sha256-i/W2Xa6Vk1+T1fs6fa4wJVMLLB6BK8QAPcdmPrU8NwM=";
|
||||
});
|
||||
}
|
||||
|
||||
@@ -11,10 +11,10 @@
|
||||
"clion": {
|
||||
"update-channel": "CLion RELEASE",
|
||||
"url-template": "https://download.jetbrains.com/cpp/CLion-{version}.tar.gz",
|
||||
"version": "2025.2",
|
||||
"sha256": "a12d094544f0b5222d34e2cd8b36b1ea834e7c7acdea7b65aae5cb3522ca108e",
|
||||
"url": "https://download.jetbrains.com/cpp/CLion-2025.2.tar.gz",
|
||||
"build_number": "252.23892.426"
|
||||
"version": "2025.2.1",
|
||||
"sha256": "f50e1a1e5172f652efdb7d72dc8c2a6222564671983b0c8b03caa68c56630648",
|
||||
"url": "https://download.jetbrains.com/cpp/CLion-2025.2.1.tar.gz",
|
||||
"build_number": "252.25557.127"
|
||||
},
|
||||
"datagrip": {
|
||||
"update-channel": "DataGrip RELEASE",
|
||||
@@ -35,10 +35,10 @@
|
||||
"gateway": {
|
||||
"update-channel": "Gateway RELEASE",
|
||||
"url-template": "https://download.jetbrains.com/idea/gateway/JetBrainsGateway-{version}.tar.gz",
|
||||
"version": "2025.2",
|
||||
"sha256": "195509b4e35ba3d31f71e3c39ea32e17dbfebddae857691234fc0683802ce448",
|
||||
"url": "https://download.jetbrains.com/idea/gateway/JetBrainsGateway-2025.2.tar.gz",
|
||||
"build_number": "252.23892.437"
|
||||
"version": "2025.2.1",
|
||||
"sha256": "bf96140b50e890215104f0806f5f160161a2889ebf7362a3b936ca0eb304bf67",
|
||||
"url": "https://download.jetbrains.com/idea/gateway/JetBrainsGateway-2025.2.1.tar.gz",
|
||||
"build_number": "252.25557.133"
|
||||
},
|
||||
"goland": {
|
||||
"update-channel": "GoLand RELEASE",
|
||||
@@ -51,18 +51,18 @@
|
||||
"idea-community": {
|
||||
"update-channel": "IntelliJ IDEA RELEASE",
|
||||
"url-template": "https://download.jetbrains.com/idea/ideaIC-{version}.tar.gz",
|
||||
"version": "2025.2",
|
||||
"sha256": "30e917c55507443c61674d0bdd5cbb40a5b02c628d5073f8a0028ef49e0c50b5",
|
||||
"url": "https://download.jetbrains.com/idea/ideaIC-2025.2.tar.gz",
|
||||
"build_number": "252.23892.409"
|
||||
"version": "2025.2.1",
|
||||
"sha256": "fc76fe8b6693b18d5d7385bb005f415287dbd5897b313287b9ef56dd0df9d5bd",
|
||||
"url": "https://download.jetbrains.com/idea/ideaIC-2025.2.1.tar.gz",
|
||||
"build_number": "252.25557.131"
|
||||
},
|
||||
"idea-ultimate": {
|
||||
"update-channel": "IntelliJ IDEA RELEASE",
|
||||
"url-template": "https://download.jetbrains.com/idea/ideaIU-{version}.tar.gz",
|
||||
"version": "2025.2",
|
||||
"sha256": "d28d0d647cf5f0d2eedd49602493be4a3182aec83c73df01b887164f56db0ff4",
|
||||
"url": "https://download.jetbrains.com/idea/ideaIU-2025.2.tar.gz",
|
||||
"build_number": "252.23892.409"
|
||||
"version": "2025.2.1",
|
||||
"sha256": "ac36d03153894f393fb65c05f57be4722c2a2374d03b7374b37baf856705d5fd",
|
||||
"url": "https://download.jetbrains.com/idea/ideaIU-2025.2.1.tar.gz",
|
||||
"build_number": "252.25557.131"
|
||||
},
|
||||
"mps": {
|
||||
"update-channel": "MPS RELEASE",
|
||||
@@ -75,35 +75,35 @@
|
||||
"phpstorm": {
|
||||
"update-channel": "PhpStorm RELEASE",
|
||||
"url-template": "https://download.jetbrains.com/webide/PhpStorm-{version}.tar.gz",
|
||||
"version": "2025.2",
|
||||
"sha256": "d0d3e61aaed7c4765b4947a8410a885cf7e1123c488340585ed72151f8c05350",
|
||||
"url": "https://download.jetbrains.com/webide/PhpStorm-2025.2.tar.gz",
|
||||
"build_number": "252.23892.419",
|
||||
"version": "2025.2.1",
|
||||
"sha256": "0cc9235210dc09fb54602f176de881c4f2b6852d7a5f2ae9f7750d83a3ffa8f6",
|
||||
"url": "https://download.jetbrains.com/webide/PhpStorm-2025.2.1.tar.gz",
|
||||
"build_number": "252.25557.128",
|
||||
"version-major-minor": "2022.3"
|
||||
},
|
||||
"pycharm-community": {
|
||||
"update-channel": "PyCharm RELEASE",
|
||||
"url-template": "https://download.jetbrains.com/python/pycharm-community-{version}.tar.gz",
|
||||
"version": "2025.2.0.1",
|
||||
"sha256": "2b95c6169c6f9bb00657e24cecdad23281c423b661918c09781894f3508f8672",
|
||||
"url": "https://download.jetbrains.com/python/pycharm-community-2025.2.0.1.tar.gz",
|
||||
"build_number": "252.23892.515"
|
||||
"version": "2025.2.1",
|
||||
"sha256": "fda3fef97cbc6591cee64fdc7e48bb7a5634be63e527293cd5146537dc562493",
|
||||
"url": "https://download.jetbrains.com/python/pycharm-community-2025.2.1.tar.gz",
|
||||
"build_number": "252.25557.130"
|
||||
},
|
||||
"pycharm-professional": {
|
||||
"update-channel": "PyCharm RELEASE",
|
||||
"url-template": "https://download.jetbrains.com/python/pycharm-professional-{version}.tar.gz",
|
||||
"version": "2025.2.0.1",
|
||||
"sha256": "555a20eb9a695f52430fc3ef1b43c229186df5bf1c8962de55db0ef7eb308fb4",
|
||||
"url": "https://download.jetbrains.com/python/pycharm-professional-2025.2.0.1.tar.gz",
|
||||
"build_number": "252.23892.515"
|
||||
"version": "2025.2.1",
|
||||
"sha256": "2d62753a2c77dcc268593c28fb965bed6e6e6e89f9739c54e21b01024f91a2c0",
|
||||
"url": "https://download.jetbrains.com/python/pycharm-professional-2025.2.1.tar.gz",
|
||||
"build_number": "252.25557.130"
|
||||
},
|
||||
"rider": {
|
||||
"update-channel": "Rider RELEASE",
|
||||
"url-template": "https://download.jetbrains.com/rider/JetBrains.Rider-{version}.tar.gz",
|
||||
"version": "2025.2",
|
||||
"sha256": "661d5e8fc12e6373e7a84ee197aa755d77c2e3fe0246284c79bc20682d39d309",
|
||||
"url": "https://download.jetbrains.com/rider/JetBrains.Rider-2025.2.tar.gz",
|
||||
"build_number": "252.23892.524"
|
||||
"version": "2025.2.0.1",
|
||||
"sha256": "6564e426e74e760409c39c475cbb3d2d39265574346e1387b7f359d3fcad85fd",
|
||||
"url": "https://download.jetbrains.com/rider/JetBrains.Rider-2025.2.0.1.tar.gz",
|
||||
"build_number": "252.23892.537"
|
||||
},
|
||||
"ruby-mine": {
|
||||
"update-channel": "RubyMine RELEASE",
|
||||
@@ -116,18 +116,18 @@
|
||||
"rust-rover": {
|
||||
"update-channel": "RustRover RELEASE",
|
||||
"url-template": "https://download.jetbrains.com/rustrover/RustRover-{version}.tar.gz",
|
||||
"version": "2025.2",
|
||||
"sha256": "98bf8781c9325d3c4ddd6b0f4efb934b209f2afcbf97533effd2e8ffe40800e0",
|
||||
"url": "https://download.jetbrains.com/rustrover/RustRover-2025.2.tar.gz",
|
||||
"build_number": "252.23892.452"
|
||||
"version": "2025.2.1",
|
||||
"sha256": "19fde47a5c3c8e1b21b402c3351018eed64e2cff575f32a86c884168b522074a",
|
||||
"url": "https://download.jetbrains.com/rustrover/RustRover-2025.2.1.tar.gz",
|
||||
"build_number": "252.25557.134"
|
||||
},
|
||||
"webstorm": {
|
||||
"update-channel": "WebStorm RELEASE",
|
||||
"url-template": "https://download.jetbrains.com/webstorm/WebStorm-{version}.tar.gz",
|
||||
"version": "2025.2",
|
||||
"sha256": "85c83e8ed716e9cda03be922fd10d95c482f9f3c27e095dd768ddefd1e69462f",
|
||||
"url": "https://download.jetbrains.com/webstorm/WebStorm-2025.2.tar.gz",
|
||||
"build_number": "252.23892.411"
|
||||
"version": "2025.2.1",
|
||||
"sha256": "8d03ae22e4bac309edbf58310b4fc758fedaee5dc065467eeda005fac5217d2b",
|
||||
"url": "https://download.jetbrains.com/webstorm/WebStorm-2025.2.1.tar.gz",
|
||||
"build_number": "252.25557.126"
|
||||
},
|
||||
"writerside": {
|
||||
"update-channel": "Writerside EAP",
|
||||
@@ -150,10 +150,10 @@
|
||||
"clion": {
|
||||
"update-channel": "CLion RELEASE",
|
||||
"url-template": "https://download.jetbrains.com/cpp/CLion-{version}-aarch64.tar.gz",
|
||||
"version": "2025.2",
|
||||
"sha256": "a594949bd15a70dd17906d056778b8107a209e0bc874a188b411da8e8f7e4f16",
|
||||
"url": "https://download.jetbrains.com/cpp/CLion-2025.2-aarch64.tar.gz",
|
||||
"build_number": "252.23892.426"
|
||||
"version": "2025.2.1",
|
||||
"sha256": "7fff28163607d3a6da7eceb788829cb81ac03e90f694d7b2c0a47b2821b47f4a",
|
||||
"url": "https://download.jetbrains.com/cpp/CLion-2025.2.1-aarch64.tar.gz",
|
||||
"build_number": "252.25557.127"
|
||||
},
|
||||
"datagrip": {
|
||||
"update-channel": "DataGrip RELEASE",
|
||||
@@ -174,10 +174,10 @@
|
||||
"gateway": {
|
||||
"update-channel": "Gateway RELEASE",
|
||||
"url-template": "https://download.jetbrains.com/idea/gateway/JetBrainsGateway-{version}-aarch64.tar.gz",
|
||||
"version": "2025.2",
|
||||
"sha256": "f0149112bf8813cd37cdf65fa098b2261914263854b025001cfffd0592fc2e69",
|
||||
"url": "https://download.jetbrains.com/idea/gateway/JetBrainsGateway-2025.2-aarch64.tar.gz",
|
||||
"build_number": "252.23892.437"
|
||||
"version": "2025.2.1",
|
||||
"sha256": "8c4a8c0d15f5afbb17f0ea54e4455f4d69407536459d0d4986fce966e8ae9290",
|
||||
"url": "https://download.jetbrains.com/idea/gateway/JetBrainsGateway-2025.2.1-aarch64.tar.gz",
|
||||
"build_number": "252.25557.133"
|
||||
},
|
||||
"goland": {
|
||||
"update-channel": "GoLand RELEASE",
|
||||
@@ -190,18 +190,18 @@
|
||||
"idea-community": {
|
||||
"update-channel": "IntelliJ IDEA RELEASE",
|
||||
"url-template": "https://download.jetbrains.com/idea/ideaIC-{version}-aarch64.tar.gz",
|
||||
"version": "2025.2",
|
||||
"sha256": "dead5589e78a10e5b6df76c484139679c80c94d1ce9c9c5778721ced1ee02b5d",
|
||||
"url": "https://download.jetbrains.com/idea/ideaIC-2025.2-aarch64.tar.gz",
|
||||
"build_number": "252.23892.409"
|
||||
"version": "2025.2.1",
|
||||
"sha256": "ca454bcfe40196adacf12c726d8d44876d8a03c88884f7a08715e5562a45d1a2",
|
||||
"url": "https://download.jetbrains.com/idea/ideaIC-2025.2.1-aarch64.tar.gz",
|
||||
"build_number": "252.25557.131"
|
||||
},
|
||||
"idea-ultimate": {
|
||||
"update-channel": "IntelliJ IDEA RELEASE",
|
||||
"url-template": "https://download.jetbrains.com/idea/ideaIU-{version}-aarch64.tar.gz",
|
||||
"version": "2025.2",
|
||||
"sha256": "eb6b322db2679b45d9d362fc4579b5ddbd1b7510b9f407ea8c34d18b90f62e7b",
|
||||
"url": "https://download.jetbrains.com/idea/ideaIU-2025.2-aarch64.tar.gz",
|
||||
"build_number": "252.23892.409"
|
||||
"version": "2025.2.1",
|
||||
"sha256": "bf292cf0a2822c4b697e4d1e6a7c049c6b91f8cab3d457259d52fd65bbdcdea9",
|
||||
"url": "https://download.jetbrains.com/idea/ideaIU-2025.2.1-aarch64.tar.gz",
|
||||
"build_number": "252.25557.131"
|
||||
},
|
||||
"mps": {
|
||||
"update-channel": "MPS RELEASE",
|
||||
@@ -214,35 +214,35 @@
|
||||
"phpstorm": {
|
||||
"update-channel": "PhpStorm RELEASE",
|
||||
"url-template": "https://download.jetbrains.com/webide/PhpStorm-{version}-aarch64.tar.gz",
|
||||
"version": "2025.2",
|
||||
"sha256": "06821ba75ce5dd5f192246befd5aedfc236606d8c4a1a2c15bf3d21a39c6cf04",
|
||||
"url": "https://download.jetbrains.com/webide/PhpStorm-2025.2-aarch64.tar.gz",
|
||||
"build_number": "252.23892.419",
|
||||
"version": "2025.2.1",
|
||||
"sha256": "68f4d7f3ca81e25023a08a34d1163fdcf0ef8f803cbdd9bc81efdcadd2ccf7ae",
|
||||
"url": "https://download.jetbrains.com/webide/PhpStorm-2025.2.1-aarch64.tar.gz",
|
||||
"build_number": "252.25557.128",
|
||||
"version-major-minor": "2022.3"
|
||||
},
|
||||
"pycharm-community": {
|
||||
"update-channel": "PyCharm RELEASE",
|
||||
"url-template": "https://download.jetbrains.com/python/pycharm-community-{version}-aarch64.tar.gz",
|
||||
"version": "2025.2.0.1",
|
||||
"sha256": "820f8f1a749d2544a4e4511ff23e8b55f3fe5faa4e0b715ba44999f784c5ac94",
|
||||
"url": "https://download.jetbrains.com/python/pycharm-community-2025.2.0.1-aarch64.tar.gz",
|
||||
"build_number": "252.23892.515"
|
||||
"version": "2025.2.1",
|
||||
"sha256": "6d078405b94e984a4306c81c1ce73a8e95b3bcead176ee8f830ee9928d8e5df5",
|
||||
"url": "https://download.jetbrains.com/python/pycharm-community-2025.2.1-aarch64.tar.gz",
|
||||
"build_number": "252.25557.130"
|
||||
},
|
||||
"pycharm-professional": {
|
||||
"update-channel": "PyCharm RELEASE",
|
||||
"url-template": "https://download.jetbrains.com/python/pycharm-professional-{version}-aarch64.tar.gz",
|
||||
"version": "2025.2.0.1",
|
||||
"sha256": "d5a00d4774ad5861fad457494b644bb0ee4c6017f1f6c881da4afd23b44fdaf7",
|
||||
"url": "https://download.jetbrains.com/python/pycharm-professional-2025.2.0.1-aarch64.tar.gz",
|
||||
"build_number": "252.23892.515"
|
||||
"version": "2025.2.1",
|
||||
"sha256": "39400c3134a74ae653df31e9dae3b464d9bb6970110e9028e81d22175c40f407",
|
||||
"url": "https://download.jetbrains.com/python/pycharm-professional-2025.2.1-aarch64.tar.gz",
|
||||
"build_number": "252.25557.130"
|
||||
},
|
||||
"rider": {
|
||||
"update-channel": "Rider RELEASE",
|
||||
"url-template": "https://download.jetbrains.com/rider/JetBrains.Rider-{version}-aarch64.tar.gz",
|
||||
"version": "2025.2",
|
||||
"sha256": "19b8c6322aac489888afe9eea81dcb6a114b4cc75d525ee3ea8a86899c6b42c7",
|
||||
"url": "https://download.jetbrains.com/rider/JetBrains.Rider-2025.2-aarch64.tar.gz",
|
||||
"build_number": "252.23892.524"
|
||||
"version": "2025.2.0.1",
|
||||
"sha256": "a6dcbd1e824cdd8aeb537ea40325350e997f6768305eb65b6d8be138954f32b8",
|
||||
"url": "https://download.jetbrains.com/rider/JetBrains.Rider-2025.2.0.1-aarch64.tar.gz",
|
||||
"build_number": "252.23892.537"
|
||||
},
|
||||
"ruby-mine": {
|
||||
"update-channel": "RubyMine RELEASE",
|
||||
@@ -255,18 +255,18 @@
|
||||
"rust-rover": {
|
||||
"update-channel": "RustRover RELEASE",
|
||||
"url-template": "https://download.jetbrains.com/rustrover/RustRover-{version}-aarch64.tar.gz",
|
||||
"version": "2025.2",
|
||||
"sha256": "aeb1876b94904056994b8735c4e9b35b2579daea843347ae04eaf9634bb71370",
|
||||
"url": "https://download.jetbrains.com/rustrover/RustRover-2025.2-aarch64.tar.gz",
|
||||
"build_number": "252.23892.452"
|
||||
"version": "2025.2.1",
|
||||
"sha256": "60d22c93e3924f3defa51ace317fc6f715a6a5ef4e8ec18f1f361e6aa1d2a9d5",
|
||||
"url": "https://download.jetbrains.com/rustrover/RustRover-2025.2.1-aarch64.tar.gz",
|
||||
"build_number": "252.25557.134"
|
||||
},
|
||||
"webstorm": {
|
||||
"update-channel": "WebStorm RELEASE",
|
||||
"url-template": "https://download.jetbrains.com/webstorm/WebStorm-{version}-aarch64.tar.gz",
|
||||
"version": "2025.2",
|
||||
"sha256": "e7d22b83e0ca89d9aa7663c5444382d77296e7b71ec3e73133f85e83363c0a45",
|
||||
"url": "https://download.jetbrains.com/webstorm/WebStorm-2025.2-aarch64.tar.gz",
|
||||
"build_number": "252.23892.411"
|
||||
"version": "2025.2.1",
|
||||
"sha256": "ce335848f4771392c971d054b4a378a98ee6f77347c1e64d0631981715a034e3",
|
||||
"url": "https://download.jetbrains.com/webstorm/WebStorm-2025.2.1-aarch64.tar.gz",
|
||||
"build_number": "252.25557.126"
|
||||
},
|
||||
"writerside": {
|
||||
"update-channel": "Writerside EAP",
|
||||
@@ -289,10 +289,10 @@
|
||||
"clion": {
|
||||
"update-channel": "CLion RELEASE",
|
||||
"url-template": "https://download.jetbrains.com/cpp/CLion-{version}.dmg",
|
||||
"version": "2025.2",
|
||||
"sha256": "7fb1e9149b29e9794af5975715f14c65b856358ea64161eddb81a80e576158cf",
|
||||
"url": "https://download.jetbrains.com/cpp/CLion-2025.2.dmg",
|
||||
"build_number": "252.23892.426"
|
||||
"version": "2025.2.1",
|
||||
"sha256": "1cc896ae584c51009674f12d9c43d481b108b8e59243e60b094e7a967bb64652",
|
||||
"url": "https://download.jetbrains.com/cpp/CLion-2025.2.1.dmg",
|
||||
"build_number": "252.25557.127"
|
||||
},
|
||||
"datagrip": {
|
||||
"update-channel": "DataGrip RELEASE",
|
||||
@@ -313,10 +313,10 @@
|
||||
"gateway": {
|
||||
"update-channel": "Gateway RELEASE",
|
||||
"url-template": "https://download.jetbrains.com/idea/gateway/JetBrainsGateway-{version}.dmg",
|
||||
"version": "2025.2",
|
||||
"sha256": "637f096b34e8fb4425c570c3140de464ee96884b222cec5df1f630ea7aed833f",
|
||||
"url": "https://download.jetbrains.com/idea/gateway/JetBrainsGateway-2025.2.dmg",
|
||||
"build_number": "252.23892.437"
|
||||
"version": "2025.2.1",
|
||||
"sha256": "4f48557a9a1ded6a88bc6bf17d65879f54b2314142c65e65d844df92d770de03",
|
||||
"url": "https://download.jetbrains.com/idea/gateway/JetBrainsGateway-2025.2.1.dmg",
|
||||
"build_number": "252.25557.133"
|
||||
},
|
||||
"goland": {
|
||||
"update-channel": "GoLand RELEASE",
|
||||
@@ -329,18 +329,18 @@
|
||||
"idea-community": {
|
||||
"update-channel": "IntelliJ IDEA RELEASE",
|
||||
"url-template": "https://download.jetbrains.com/idea/ideaIC-{version}.dmg",
|
||||
"version": "2025.2",
|
||||
"sha256": "ded2e2b6ade9040a8a32a690c34e1c1c90daa35ec6c3956217cf780c38380445",
|
||||
"url": "https://download.jetbrains.com/idea/ideaIC-2025.2.dmg",
|
||||
"build_number": "252.23892.409"
|
||||
"version": "2025.2.1",
|
||||
"sha256": "48d3f6523cc6fe94ad8020357b6de5e977fb2a49c8041773ffae7f946d418224",
|
||||
"url": "https://download.jetbrains.com/idea/ideaIC-2025.2.1.dmg",
|
||||
"build_number": "252.25557.131"
|
||||
},
|
||||
"idea-ultimate": {
|
||||
"update-channel": "IntelliJ IDEA RELEASE",
|
||||
"url-template": "https://download.jetbrains.com/idea/ideaIU-{version}.dmg",
|
||||
"version": "2025.2",
|
||||
"sha256": "a142bd47516ee184d3d76676d78451f3e9e05a32ba8fdf8778ac04579b3accab",
|
||||
"url": "https://download.jetbrains.com/idea/ideaIU-2025.2.dmg",
|
||||
"build_number": "252.23892.409"
|
||||
"version": "2025.2.1",
|
||||
"sha256": "a768de8ff17cfb940d402ed907777e50c669e770ccd7515613086cd6d35f81d4",
|
||||
"url": "https://download.jetbrains.com/idea/ideaIU-2025.2.1.dmg",
|
||||
"build_number": "252.25557.131"
|
||||
},
|
||||
"mps": {
|
||||
"update-channel": "MPS RELEASE",
|
||||
@@ -353,35 +353,35 @@
|
||||
"phpstorm": {
|
||||
"update-channel": "PhpStorm RELEASE",
|
||||
"url-template": "https://download.jetbrains.com/webide/PhpStorm-{version}.dmg",
|
||||
"version": "2025.2",
|
||||
"sha256": "2a28e39d10e6470c25839698a160eb0076fb5f8a1e0e3cb9000876d05ab0d502",
|
||||
"url": "https://download.jetbrains.com/webide/PhpStorm-2025.2.dmg",
|
||||
"build_number": "252.23892.419",
|
||||
"version": "2025.2.1",
|
||||
"sha256": "8ea7143923c6f18c130e8d85530c423fa4eea5a81543094af9ad4c8155a26215",
|
||||
"url": "https://download.jetbrains.com/webide/PhpStorm-2025.2.1.dmg",
|
||||
"build_number": "252.25557.128",
|
||||
"version-major-minor": "2022.3"
|
||||
},
|
||||
"pycharm-community": {
|
||||
"update-channel": "PyCharm RELEASE",
|
||||
"url-template": "https://download.jetbrains.com/python/pycharm-community-{version}.dmg",
|
||||
"version": "2025.2.0.1",
|
||||
"sha256": "0fa4e9c93bcb1f0d56dd7faecbb01b38d3c07fbbcf4fc8c0ad4dc5dc2f15b5a9",
|
||||
"url": "https://download.jetbrains.com/python/pycharm-community-2025.2.0.1.dmg",
|
||||
"build_number": "252.23892.515"
|
||||
"version": "2025.2.1",
|
||||
"sha256": "34399746d564baf5c15a7e4be8e37c4146de7e27efe965afba1344d3aaceae2a",
|
||||
"url": "https://download.jetbrains.com/python/pycharm-community-2025.2.1.dmg",
|
||||
"build_number": "252.25557.130"
|
||||
},
|
||||
"pycharm-professional": {
|
||||
"update-channel": "PyCharm RELEASE",
|
||||
"url-template": "https://download.jetbrains.com/python/pycharm-professional-{version}.dmg",
|
||||
"version": "2025.2.0.1",
|
||||
"sha256": "440e613cc7e9d02ea27c921168b27a120e0eed5d084d878a6e7f9af3c874ac1a",
|
||||
"url": "https://download.jetbrains.com/python/pycharm-professional-2025.2.0.1.dmg",
|
||||
"build_number": "252.23892.515"
|
||||
"version": "2025.2.1",
|
||||
"sha256": "52b9c5b8b6fc8cf6a460e5a57c231f052c690e0b5a10f566ab9f380460daff4f",
|
||||
"url": "https://download.jetbrains.com/python/pycharm-professional-2025.2.1.dmg",
|
||||
"build_number": "252.25557.130"
|
||||
},
|
||||
"rider": {
|
||||
"update-channel": "Rider RELEASE",
|
||||
"url-template": "https://download.jetbrains.com/rider/JetBrains.Rider-{version}.dmg",
|
||||
"version": "2025.2",
|
||||
"sha256": "c03da6f4c519e1c697ada502f43d1152e41614262970cbbf4df15d2f470658f3",
|
||||
"url": "https://download.jetbrains.com/rider/JetBrains.Rider-2025.2.dmg",
|
||||
"build_number": "252.23892.524"
|
||||
"version": "2025.2.0.1",
|
||||
"sha256": "88e356f3d6c862c77368a9c034f3a895560f468b79f45af87daa410b5737f451",
|
||||
"url": "https://download.jetbrains.com/rider/JetBrains.Rider-2025.2.0.1.dmg",
|
||||
"build_number": "252.23892.537"
|
||||
},
|
||||
"ruby-mine": {
|
||||
"update-channel": "RubyMine RELEASE",
|
||||
@@ -394,18 +394,18 @@
|
||||
"rust-rover": {
|
||||
"update-channel": "RustRover RELEASE",
|
||||
"url-template": "https://download.jetbrains.com/rustrover/RustRover-{version}.dmg",
|
||||
"version": "2025.2",
|
||||
"sha256": "c0f19ea5e9c7cb27f80312d0eb8c7f7c3b294a0bf583b0a423930827f3cd73c5",
|
||||
"url": "https://download.jetbrains.com/rustrover/RustRover-2025.2.dmg",
|
||||
"build_number": "252.23892.452"
|
||||
"version": "2025.2.1",
|
||||
"sha256": "9143fa9bfcab98ed2a5215c006bb6bf5521ee5c9a9f08f6f321d0a873cfb39cc",
|
||||
"url": "https://download.jetbrains.com/rustrover/RustRover-2025.2.1.dmg",
|
||||
"build_number": "252.25557.134"
|
||||
},
|
||||
"webstorm": {
|
||||
"update-channel": "WebStorm RELEASE",
|
||||
"url-template": "https://download.jetbrains.com/webstorm/WebStorm-{version}.dmg",
|
||||
"version": "2025.2",
|
||||
"sha256": "c748bf829295f1d431c032ccbe88d3bcaf771699c8e654ea4bc9f419fb87b576",
|
||||
"url": "https://download.jetbrains.com/webstorm/WebStorm-2025.2.dmg",
|
||||
"build_number": "252.23892.411"
|
||||
"version": "2025.2.1",
|
||||
"sha256": "38ba2b01c688d838f5cb533eb9d575223135eb753d7f38865aaf4d27b56b5bf5",
|
||||
"url": "https://download.jetbrains.com/webstorm/WebStorm-2025.2.1.dmg",
|
||||
"build_number": "252.25557.126"
|
||||
},
|
||||
"writerside": {
|
||||
"update-channel": "Writerside EAP",
|
||||
@@ -428,10 +428,10 @@
|
||||
"clion": {
|
||||
"update-channel": "CLion RELEASE",
|
||||
"url-template": "https://download.jetbrains.com/cpp/CLion-{version}-aarch64.dmg",
|
||||
"version": "2025.2",
|
||||
"sha256": "40be28243da1bdb90308e997656af5872103a32d167e1539dd4e1b00a7ce0ea4",
|
||||
"url": "https://download.jetbrains.com/cpp/CLion-2025.2-aarch64.dmg",
|
||||
"build_number": "252.23892.426"
|
||||
"version": "2025.2.1",
|
||||
"sha256": "d8256fee77311192ffcb45d9efa5fa57fb2ea83a22925f49bc5880106f7b9ee4",
|
||||
"url": "https://download.jetbrains.com/cpp/CLion-2025.2.1-aarch64.dmg",
|
||||
"build_number": "252.25557.127"
|
||||
},
|
||||
"datagrip": {
|
||||
"update-channel": "DataGrip RELEASE",
|
||||
@@ -452,10 +452,10 @@
|
||||
"gateway": {
|
||||
"update-channel": "Gateway RELEASE",
|
||||
"url-template": "https://download.jetbrains.com/idea/gateway/JetBrainsGateway-{version}-aarch64.dmg",
|
||||
"version": "2025.2",
|
||||
"sha256": "d8be067bdd845c3c61e8e9c214b1591c2658e0a59ba5e0a45f3b1129f9c6fa63",
|
||||
"url": "https://download.jetbrains.com/idea/gateway/JetBrainsGateway-2025.2-aarch64.dmg",
|
||||
"build_number": "252.23892.437"
|
||||
"version": "2025.2.1",
|
||||
"sha256": "94bb0fb41eaaea744173fe321b7e17cac898088eb7738c68b8d271ca437dee80",
|
||||
"url": "https://download.jetbrains.com/idea/gateway/JetBrainsGateway-2025.2.1-aarch64.dmg",
|
||||
"build_number": "252.25557.133"
|
||||
},
|
||||
"goland": {
|
||||
"update-channel": "GoLand RELEASE",
|
||||
@@ -468,18 +468,18 @@
|
||||
"idea-community": {
|
||||
"update-channel": "IntelliJ IDEA RELEASE",
|
||||
"url-template": "https://download.jetbrains.com/idea/ideaIC-{version}-aarch64.dmg",
|
||||
"version": "2025.2",
|
||||
"sha256": "a77e9808be00c2225504cd4710fca625027e46ab3d131b3cdfceb982286f4d94",
|
||||
"url": "https://download.jetbrains.com/idea/ideaIC-2025.2-aarch64.dmg",
|
||||
"build_number": "252.23892.409"
|
||||
"version": "2025.2.1",
|
||||
"sha256": "dcafd8e623819b0696044d23874423f905224462844155a3c282fd4f62a7d578",
|
||||
"url": "https://download.jetbrains.com/idea/ideaIC-2025.2.1-aarch64.dmg",
|
||||
"build_number": "252.25557.131"
|
||||
},
|
||||
"idea-ultimate": {
|
||||
"update-channel": "IntelliJ IDEA RELEASE",
|
||||
"url-template": "https://download.jetbrains.com/idea/ideaIU-{version}-aarch64.dmg",
|
||||
"version": "2025.2",
|
||||
"sha256": "1055a85e2524a67cafa0aa51e75a6d7adf14e7e05a5e52d833a60de5112b60d7",
|
||||
"url": "https://download.jetbrains.com/idea/ideaIU-2025.2-aarch64.dmg",
|
||||
"build_number": "252.23892.409"
|
||||
"version": "2025.2.1",
|
||||
"sha256": "96523081d1d686425b166698870a4467600724faac060a938a05838b0b9f8a9c",
|
||||
"url": "https://download.jetbrains.com/idea/ideaIU-2025.2.1-aarch64.dmg",
|
||||
"build_number": "252.25557.131"
|
||||
},
|
||||
"mps": {
|
||||
"update-channel": "MPS RELEASE",
|
||||
@@ -492,35 +492,35 @@
|
||||
"phpstorm": {
|
||||
"update-channel": "PhpStorm RELEASE",
|
||||
"url-template": "https://download.jetbrains.com/webide/PhpStorm-{version}-aarch64.dmg",
|
||||
"version": "2025.2",
|
||||
"sha256": "d4ca651a534dfa72d6c6221c23a49bb4bf10a533013db71d51096bb380f1a9c0",
|
||||
"url": "https://download.jetbrains.com/webide/PhpStorm-2025.2-aarch64.dmg",
|
||||
"build_number": "252.23892.419",
|
||||
"version": "2025.2.1",
|
||||
"sha256": "9da242618b2f540d8fc34937743e2ebcd71af6341420474b0bf9285464a81a68",
|
||||
"url": "https://download.jetbrains.com/webide/PhpStorm-2025.2.1-aarch64.dmg",
|
||||
"build_number": "252.25557.128",
|
||||
"version-major-minor": "2022.3"
|
||||
},
|
||||
"pycharm-community": {
|
||||
"update-channel": "PyCharm RELEASE",
|
||||
"url-template": "https://download.jetbrains.com/python/pycharm-community-{version}-aarch64.dmg",
|
||||
"version": "2025.2.0.1",
|
||||
"sha256": "acdbfd143a7da358cbd9b1410eff8763f9650c58f9a976d80a9aa8977f358e00",
|
||||
"url": "https://download.jetbrains.com/python/pycharm-community-2025.2.0.1-aarch64.dmg",
|
||||
"build_number": "252.23892.515"
|
||||
"version": "2025.2.1",
|
||||
"sha256": "01a969ec274754d93e4a85b5033cd1ebc368ce3a2d664753744ebfd6d8e1d8cf",
|
||||
"url": "https://download.jetbrains.com/python/pycharm-community-2025.2.1-aarch64.dmg",
|
||||
"build_number": "252.25557.130"
|
||||
},
|
||||
"pycharm-professional": {
|
||||
"update-channel": "PyCharm RELEASE",
|
||||
"url-template": "https://download.jetbrains.com/python/pycharm-professional-{version}-aarch64.dmg",
|
||||
"version": "2025.2.0.1",
|
||||
"sha256": "9d3265dd828c45681ba608ee2325b3b560396b7048290d7c69714cbc99e86fd7",
|
||||
"url": "https://download.jetbrains.com/python/pycharm-professional-2025.2.0.1-aarch64.dmg",
|
||||
"build_number": "252.23892.515"
|
||||
"version": "2025.2.1",
|
||||
"sha256": "eeb571d345eb52af2ed92e7217aa5b9469e5d9074b7a98c23a227bedf54ab834",
|
||||
"url": "https://download.jetbrains.com/python/pycharm-professional-2025.2.1-aarch64.dmg",
|
||||
"build_number": "252.25557.130"
|
||||
},
|
||||
"rider": {
|
||||
"update-channel": "Rider RELEASE",
|
||||
"url-template": "https://download.jetbrains.com/rider/JetBrains.Rider-{version}-aarch64.dmg",
|
||||
"version": "2025.2",
|
||||
"sha256": "ec385a005fb740e6b12a5232ae57c7d189b3d32ac4813734b04d4257421368a3",
|
||||
"url": "https://download.jetbrains.com/rider/JetBrains.Rider-2025.2-aarch64.dmg",
|
||||
"build_number": "252.23892.524"
|
||||
"version": "2025.2.0.1",
|
||||
"sha256": "4c618255221b8569f04fd6e4ad6050ba2288d2aba13f5f10a12063638ef166ee",
|
||||
"url": "https://download.jetbrains.com/rider/JetBrains.Rider-2025.2.0.1-aarch64.dmg",
|
||||
"build_number": "252.23892.537"
|
||||
},
|
||||
"ruby-mine": {
|
||||
"update-channel": "RubyMine RELEASE",
|
||||
@@ -533,18 +533,18 @@
|
||||
"rust-rover": {
|
||||
"update-channel": "RustRover RELEASE",
|
||||
"url-template": "https://download.jetbrains.com/rustrover/RustRover-{version}-aarch64.dmg",
|
||||
"version": "2025.2",
|
||||
"sha256": "dd0681951c4a8f2a4b97480f37f29c688ff8c7572d96d2417c4bdac1988d17f6",
|
||||
"url": "https://download.jetbrains.com/rustrover/RustRover-2025.2-aarch64.dmg",
|
||||
"build_number": "252.23892.452"
|
||||
"version": "2025.2.1",
|
||||
"sha256": "469b4b7c42aa808a5f9d94315f4cc412ad74ef76ff51654d441ef16c5063dc27",
|
||||
"url": "https://download.jetbrains.com/rustrover/RustRover-2025.2.1-aarch64.dmg",
|
||||
"build_number": "252.25557.134"
|
||||
},
|
||||
"webstorm": {
|
||||
"update-channel": "WebStorm RELEASE",
|
||||
"url-template": "https://download.jetbrains.com/webstorm/WebStorm-{version}-aarch64.dmg",
|
||||
"version": "2025.2",
|
||||
"sha256": "5f29ca9472c068f8086cb05c4ef3b0fb2b88d4888ef1c5430a0e1f2c771ccbce",
|
||||
"url": "https://download.jetbrains.com/webstorm/WebStorm-2025.2-aarch64.dmg",
|
||||
"build_number": "252.23892.411"
|
||||
"version": "2025.2.1",
|
||||
"sha256": "dd3220a9458cd1574a96a75922e5439689f494516af9f5e76c5b74ffb37ec488",
|
||||
"url": "https://download.jetbrains.com/webstorm/WebStorm-2025.2.1-aarch64.dmg",
|
||||
"build_number": "252.25557.126"
|
||||
},
|
||||
"writerside": {
|
||||
"update-channel": "Writerside EAP",
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,6 @@
|
||||
{ lib, fetchFromGitHub }:
|
||||
rec {
|
||||
version = "9.1.1566";
|
||||
version = "9.1.1623";
|
||||
|
||||
outputs = [
|
||||
"out"
|
||||
@@ -11,7 +11,7 @@ rec {
|
||||
owner = "vim";
|
||||
repo = "vim";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-/hzyjFGjl8Wu9tHtFgnnHtGbcJ5AIjCMUNCScrdIgwU=";
|
||||
hash = "sha256-T7epi6ex9AU4iV/ClSeKlK3T0V0WajiVxnDVevkqaw8=";
|
||||
};
|
||||
|
||||
enableParallelBuilding = true;
|
||||
|
||||
@@ -102,6 +102,7 @@ mapAliases (
|
||||
neoinclude = neoinclude-vim;
|
||||
neomru = neomru-vim;
|
||||
neosnippet = neosnippet-vim;
|
||||
neuron-nvim = throw "neuron.nvim has been removed: archived repository 2023-02-19"; # Added 2025-09-10
|
||||
nvim-ts-rainbow = throw "nvim-ts-rainbow has been deprecated: Use rainbow-delimiters-nvim"; # Added 2023-11-30
|
||||
nvim-ts-rainbow2 = throw "nvim-ts-rainbow2 has been deprecated: Use rainbow-delimiters-nvim"; # Added 2023-11-30
|
||||
The_NERD_Commenter = nerdcommenter;
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -32,12 +32,12 @@
|
||||
};
|
||||
agda = buildGrammar {
|
||||
language = "agda";
|
||||
version = "0.0.0+rev=b9b32fa";
|
||||
version = "0.0.0+rev=e8d47a6";
|
||||
src = fetchFromGitHub {
|
||||
owner = "tree-sitter";
|
||||
repo = "tree-sitter-agda";
|
||||
rev = "b9b32fa042c2952a7bfca86847ea325e44ccc897";
|
||||
hash = "sha256-Goll4J6xrHO8YEuYoLR2rqy6lCMsr4JJbEs5C1jiX5Q=";
|
||||
rev = "e8d47a6987effe34d5595baf321d82d3519a8527";
|
||||
hash = "sha256-5h56+A7ZypckJ9mwht7XP/66oiehwAEQ4Z6WeVhQBvQ=";
|
||||
};
|
||||
meta.homepage = "https://github.com/tree-sitter/tree-sitter-agda";
|
||||
};
|
||||
@@ -66,12 +66,12 @@
|
||||
};
|
||||
arduino = buildGrammar {
|
||||
language = "arduino";
|
||||
version = "0.0.0+rev=2f0c122";
|
||||
version = "0.0.0+rev=53eb391";
|
||||
src = fetchFromGitHub {
|
||||
owner = "tree-sitter-grammars";
|
||||
repo = "tree-sitter-arduino";
|
||||
rev = "2f0c1223c50aa4b754136db544204c6fc99ffc77";
|
||||
hash = "sha256-t0EtibjsMJpiTbwhkgZGv9lUdpI6gg2VoSEUDXswEMA=";
|
||||
rev = "53eb391da4c6c5857f8defa2c583c46c2594f565";
|
||||
hash = "sha256-qQVUWCOZ4y9FTsIf0FI3vmYBhLYz4hcqRTo+5C2MYvc=";
|
||||
};
|
||||
meta.homepage = "https://github.com/tree-sitter-grammars/tree-sitter-arduino";
|
||||
};
|
||||
@@ -121,12 +121,12 @@
|
||||
};
|
||||
bash = buildGrammar {
|
||||
language = "bash";
|
||||
version = "0.0.0+rev=56b54c6";
|
||||
version = "0.0.0+rev=b930fed";
|
||||
src = fetchFromGitHub {
|
||||
owner = "tree-sitter";
|
||||
repo = "tree-sitter-bash";
|
||||
rev = "56b54c61fb48bce0c63e3dfa2240b5d274384763";
|
||||
hash = "sha256-vRaN/mNfpR+hdv2HVS1bzaW0o+HGjizRFsk3iinICJE=";
|
||||
rev = "b930fed16910a74c230e09ea5b97f671448d2116";
|
||||
hash = "sha256-7VZRkoQc6l+YWzdsnXM6FlTzJq/eCgH1/SWkh6WTjp8=";
|
||||
};
|
||||
meta.homepage = "https://github.com/tree-sitter/tree-sitter-bash";
|
||||
};
|
||||
@@ -231,23 +231,23 @@
|
||||
};
|
||||
c = buildGrammar {
|
||||
language = "c";
|
||||
version = "0.0.0+rev=7fa1be1";
|
||||
version = "0.0.0+rev=d8d0503";
|
||||
src = fetchFromGitHub {
|
||||
owner = "tree-sitter";
|
||||
repo = "tree-sitter-c";
|
||||
rev = "7fa1be1b694b6e763686793d97da01f36a0e5c12";
|
||||
hash = "sha256-gmzbdwvrKSo6C1fqTJFGxy8x0+T+vUTswm7F5sojzKc=";
|
||||
rev = "d8d0503aa0152119149ecad76685f37682c0d03f";
|
||||
hash = "sha256-Ie1WXN3aMfYABoLIl0rcwLcpoiNcufZoJ5sGaKqBxfo=";
|
||||
};
|
||||
meta.homepage = "https://github.com/tree-sitter/tree-sitter-c";
|
||||
};
|
||||
c3 = buildGrammar {
|
||||
language = "c3";
|
||||
version = "0.0.0+rev=be8c7fc";
|
||||
version = "0.0.0+rev=057a75d";
|
||||
src = fetchFromGitHub {
|
||||
owner = "c3lang";
|
||||
repo = "tree-sitter-c3";
|
||||
rev = "be8c7fcfb424a93f541ebd21d23611b92dff0444";
|
||||
hash = "sha256-EmRuBiK1X6FAjfMg0ilA2OVJ/s0ag/dD9EMqALIwmIY=";
|
||||
rev = "057a75df0c866034d8edce989f701ee2cb0481d8";
|
||||
hash = "sha256-MeeyiX9ZozGDbTNbO/Tvs97tQyzic5pu2sIPgXow2ok=";
|
||||
};
|
||||
meta.homepage = "https://github.com/c3lang/tree-sitter-c3";
|
||||
};
|
||||
@@ -319,12 +319,12 @@
|
||||
};
|
||||
clojure = buildGrammar {
|
||||
language = "clojure";
|
||||
version = "0.0.0+rev=be514ee";
|
||||
version = "0.0.0+rev=e43eff8";
|
||||
src = fetchFromGitHub {
|
||||
owner = "sogaiu";
|
||||
repo = "tree-sitter-clojure";
|
||||
rev = "be514eec2c86d560c18fab146e9298e21b8eab62";
|
||||
hash = "sha256-VnzOuLrE/lcXOCg3Iuntj9m8zy/Exwi1Mv+nZvi62Qs=";
|
||||
rev = "e43eff80d17cf34852dcd92ca5e6986d23a7040f";
|
||||
hash = "sha256-jokekIuuQLx5UtuPs4XAI+euispeFCwSQByVKVelrC4=";
|
||||
};
|
||||
meta.homepage = "https://github.com/sogaiu/tree-sitter-clojure";
|
||||
};
|
||||
@@ -396,12 +396,12 @@
|
||||
};
|
||||
cpp = buildGrammar {
|
||||
language = "cpp";
|
||||
version = "0.0.0+rev=5cb9b69";
|
||||
version = "0.0.0+rev=077f14f";
|
||||
src = fetchFromGitHub {
|
||||
owner = "tree-sitter";
|
||||
repo = "tree-sitter-cpp";
|
||||
rev = "5cb9b693cfd7bfacab1d9ff4acac1a4150700609";
|
||||
hash = "sha256-s9/n09EruafAMF3g6xOkfu6L+WXUx83PpcVKn1Tnmg8=";
|
||||
rev = "077f14ffd2de226ac95808596989c705f6dee289";
|
||||
hash = "sha256-xOYuzYil5jieikb8Brt3mjtoOER2ZVO6zfSlWFn7ZbY=";
|
||||
};
|
||||
meta.homepage = "https://github.com/tree-sitter/tree-sitter-cpp";
|
||||
};
|
||||
@@ -696,12 +696,12 @@
|
||||
};
|
||||
embedded_template = buildGrammar {
|
||||
language = "embedded_template";
|
||||
version = "0.0.0+rev=8495d10";
|
||||
version = "0.0.0+rev=3499d85";
|
||||
src = fetchFromGitHub {
|
||||
owner = "tree-sitter";
|
||||
repo = "tree-sitter-embedded-template";
|
||||
rev = "8495d106154741e6d35d37064f864758ece75de6";
|
||||
hash = "sha256-DCEno1QzPcM9853hldrm4IAqKsTNALe//laDn+Hcr8Q=";
|
||||
rev = "3499d85f0a0d937c507a4a65368f2f63772786e1";
|
||||
hash = "sha256-H+kcKwVjIvRBRj+pjSjp8NX0kH63SDWiAS5iovT9e/c=";
|
||||
};
|
||||
meta.homepage = "https://github.com/tree-sitter/tree-sitter-embedded-template";
|
||||
};
|
||||
@@ -873,12 +873,12 @@
|
||||
};
|
||||
gap = buildGrammar {
|
||||
language = "gap";
|
||||
version = "0.0.0+rev=8dee53c";
|
||||
version = "0.0.0+rev=2bac148";
|
||||
src = fetchFromGitHub {
|
||||
owner = "gap-system";
|
||||
repo = "tree-sitter-gap";
|
||||
rev = "8dee53cfb962600dd35ca25432f005e7920e89f2";
|
||||
hash = "sha256-rSWdxQL0y3ZboEi7SWO4Mbe7ix3epznTOkL+SDXXG9g=";
|
||||
rev = "2bac14863b76ad0ff6fd7204c50574732acd66df";
|
||||
hash = "sha256-3hMpEV12wE2HoJ4qX1a/lOx0JOve4pPF4n9WKcupSLo=";
|
||||
};
|
||||
meta.homepage = "https://github.com/gap-system/tree-sitter-gap";
|
||||
};
|
||||
@@ -1049,12 +1049,12 @@
|
||||
};
|
||||
go = buildGrammar {
|
||||
language = "go";
|
||||
version = "0.0.0+rev=5e73f47";
|
||||
version = "0.0.0+rev=1547678";
|
||||
src = fetchFromGitHub {
|
||||
owner = "tree-sitter";
|
||||
repo = "tree-sitter-go";
|
||||
rev = "5e73f476efafe5c768eda19bbe877f188ded6144";
|
||||
hash = "sha256-PgFdtkPMgkNK7Gv6dBf89lNjJrZyt9Wp5h5OIwd83aw=";
|
||||
rev = "1547678a9da59885853f5f5cc8a99cc203fa2e2c";
|
||||
hash = "sha256-y7bTET8ypPczPnMVlCaiZuswcA7vFrDOc2jlbfVk5Sk=";
|
||||
};
|
||||
meta.homepage = "https://github.com/tree-sitter/tree-sitter-go";
|
||||
};
|
||||
@@ -1325,12 +1325,12 @@
|
||||
};
|
||||
html = buildGrammar {
|
||||
language = "html";
|
||||
version = "0.0.0+rev=cbb91a0";
|
||||
version = "0.0.0+rev=9fc04b9";
|
||||
src = fetchFromGitHub {
|
||||
owner = "tree-sitter";
|
||||
repo = "tree-sitter-html";
|
||||
rev = "cbb91a0ff3621245e890d1c50cc811bffb77a26b";
|
||||
hash = "sha256-lNMiSDAQ49QpeyD1RzkIIUeRWdp2Wrv6+XQZdZ40c1g=";
|
||||
rev = "9fc04b9ef21a92e3ea9258f5690e4461394d7811";
|
||||
hash = "sha256-Fow2kIM9PHwYEgkEuGcS3e4wxlzETtQk0DcMUkjbcaA=";
|
||||
};
|
||||
meta.homepage = "https://github.com/tree-sitter/tree-sitter-html";
|
||||
};
|
||||
@@ -1358,12 +1358,12 @@
|
||||
};
|
||||
hurl = buildGrammar {
|
||||
language = "hurl";
|
||||
version = "0.0.0+rev=ff07a42";
|
||||
version = "0.0.0+rev=1124058";
|
||||
src = fetchFromGitHub {
|
||||
owner = "pfeiferj";
|
||||
repo = "tree-sitter-hurl";
|
||||
rev = "ff07a42d9ec95443b5c1b57ed793414bf7b79be5";
|
||||
hash = "sha256-9uRRlJWT0knZ3vvzGEq9CjyffQnYF53rnoBnsQ68zyE=";
|
||||
rev = "1124058cd192e80d80914652a5850a5b1887cc10";
|
||||
hash = "sha256-6Hd4VEjhxlfO9ofPr9YeSU4ZVbGEU0okYYjaG+hTkn0=";
|
||||
};
|
||||
meta.homepage = "https://github.com/pfeiferj/tree-sitter-hurl";
|
||||
};
|
||||
@@ -1446,57 +1446,57 @@
|
||||
};
|
||||
java = buildGrammar {
|
||||
language = "java";
|
||||
version = "0.0.0+rev=a7db522";
|
||||
version = "0.0.0+rev=968afb3";
|
||||
src = fetchFromGitHub {
|
||||
owner = "tree-sitter";
|
||||
repo = "tree-sitter-java";
|
||||
rev = "a7db5227ec40fcfe94489559d8c9bc7c8181e25a";
|
||||
hash = "sha256-fNq5MMMr83wqn7lNgj0pfSZDF4XO98YbzfNsFjr3Kpw=";
|
||||
rev = "968afb3c9be2d4dba4cd36f3580ee0b1a9c1c537";
|
||||
hash = "sha256-L4cfPDbuZEqjq/w3Rz8fraorTMV095b4uXIqkQbSA/s=";
|
||||
};
|
||||
meta.homepage = "https://github.com/tree-sitter/tree-sitter-java";
|
||||
};
|
||||
javadoc = buildGrammar {
|
||||
language = "javadoc";
|
||||
version = "0.0.0+rev=384952d";
|
||||
version = "0.0.0+rev=fea74f5";
|
||||
src = fetchFromGitHub {
|
||||
owner = "rmuir";
|
||||
repo = "tree-sitter-javadoc";
|
||||
rev = "384952d91ebc176fcf8f1933dff93b9c32430911";
|
||||
hash = "sha256-IH1LUPO+18vDC83jcrC0DihTYt6aXV1w/u0iTm5jgK4=";
|
||||
rev = "fea74f50f5a6dcef575687703b82a96f9e6d1312";
|
||||
hash = "sha256-m0aqRV37o0/HypshZDvKDg8thv3ey32sMHmLkf7g7lw=";
|
||||
};
|
||||
meta.homepage = "https://github.com/rmuir/tree-sitter-javadoc";
|
||||
};
|
||||
javascript = buildGrammar {
|
||||
language = "javascript";
|
||||
version = "0.0.0+rev=6fbef40";
|
||||
version = "0.0.0+rev=44c892e";
|
||||
src = fetchFromGitHub {
|
||||
owner = "tree-sitter";
|
||||
repo = "tree-sitter-javascript";
|
||||
rev = "6fbef40512dcd9f0a61ce03a4c9ae7597b36ab5c";
|
||||
hash = "sha256-X9DDCBF+gQYL0syfqgKVFvzoy2tnBl+veaYi7bUuRms=";
|
||||
rev = "44c892e0be055ac465d5eeddae6d3e194424e7de";
|
||||
hash = "sha256-2Jj/SUG+k8lHlGSuPZvHjJojvQFgDiZHZzH8xLu7suE=";
|
||||
};
|
||||
meta.homepage = "https://github.com/tree-sitter/tree-sitter-javascript";
|
||||
};
|
||||
jinja = buildGrammar {
|
||||
language = "jinja";
|
||||
version = "0.0.0+rev=129184f";
|
||||
version = "0.0.0+rev=e589222";
|
||||
src = fetchFromGitHub {
|
||||
owner = "cathaysia";
|
||||
repo = "tree-sitter-jinja";
|
||||
rev = "129184fb7bbc2d3e29967002432a869ac3758f2e";
|
||||
hash = "sha256-+9aVQFi9V4RJtbkL0F48/L+l+myWqE5kM5G5EwHB9G8=";
|
||||
rev = "e589222a1ad44361bc376d5abdccd08e1fecfee5";
|
||||
hash = "sha256-a4/+tsouuYkkVEStpOEUiIos9H4Hw7NhJOFaasylWUk=";
|
||||
};
|
||||
location = "tree-sitter-jinja";
|
||||
meta.homepage = "https://github.com/cathaysia/tree-sitter-jinja";
|
||||
};
|
||||
jinja_inline = buildGrammar {
|
||||
language = "jinja_inline";
|
||||
version = "0.0.0+rev=129184f";
|
||||
version = "0.0.0+rev=e589222";
|
||||
src = fetchFromGitHub {
|
||||
owner = "cathaysia";
|
||||
repo = "tree-sitter-jinja";
|
||||
rev = "129184fb7bbc2d3e29967002432a869ac3758f2e";
|
||||
hash = "sha256-+9aVQFi9V4RJtbkL0F48/L+l+myWqE5kM5G5EwHB9G8=";
|
||||
rev = "e589222a1ad44361bc376d5abdccd08e1fecfee5";
|
||||
hash = "sha256-a4/+tsouuYkkVEStpOEUiIos9H4Hw7NhJOFaasylWUk=";
|
||||
};
|
||||
location = "tree-sitter-jinja_inline";
|
||||
meta.homepage = "https://github.com/cathaysia/tree-sitter-jinja";
|
||||
@@ -1525,23 +1525,23 @@
|
||||
};
|
||||
json = buildGrammar {
|
||||
language = "json";
|
||||
version = "0.0.0+rev=46aa487";
|
||||
version = "0.0.0+rev=fd38547";
|
||||
src = fetchFromGitHub {
|
||||
owner = "tree-sitter";
|
||||
repo = "tree-sitter-json";
|
||||
rev = "46aa487b3ade14b7b05ef92507fdaa3915a662a3";
|
||||
hash = "sha256-s8aAOrM4Mh4O60iSORMefN3nvFxThFk/On5DvK1BwWs=";
|
||||
rev = "fd38547e2fe5738e5b173e5f40a27df261224bba";
|
||||
hash = "sha256-61X7gSL3SeJvvWokSvZmxyy1wmYhRZNLBX9x31XrIfY=";
|
||||
};
|
||||
meta.homepage = "https://github.com/tree-sitter/tree-sitter-json";
|
||||
};
|
||||
json5 = buildGrammar {
|
||||
language = "json5";
|
||||
version = "0.0.0+rev=ab0ba82";
|
||||
version = "0.0.0+rev=5ebe24e";
|
||||
src = fetchFromGitHub {
|
||||
owner = "Joakker";
|
||||
repo = "tree-sitter-json5";
|
||||
rev = "ab0ba8229d639ec4f3fa5f674c9133477f4b77bd";
|
||||
hash = "sha256-LaCCjvYnmofOVQ2Nqlzfh3KP3fNG0HBxkOng0gjYY1g=";
|
||||
rev = "5ebe24e210f0fbcd6180fd673ed184ed81f3bcc6";
|
||||
hash = "sha256-5JAXtDYazHbHnw/cAHLhVxkBZYrLongxYSgZf/dPGnM=";
|
||||
};
|
||||
meta.homepage = "https://github.com/Joakker/tree-sitter-json5";
|
||||
};
|
||||
@@ -1880,12 +1880,12 @@
|
||||
};
|
||||
mlir = buildGrammar {
|
||||
language = "mlir";
|
||||
version = "0.0.0+rev=09666ce";
|
||||
version = "0.0.0+rev=1f3bc2f";
|
||||
src = fetchFromGitHub {
|
||||
owner = "artagnon";
|
||||
repo = "tree-sitter-mlir";
|
||||
rev = "09666cead2c001cbbfc82b395007f6d8158113a5";
|
||||
hash = "sha256-toH/pG8CKI4UFdBQqkgIer5tfpIWkWoCP+fU0OByxQg=";
|
||||
rev = "1f3bc2fd4d4e28361d1ff75cf5763e1d0c2b6348";
|
||||
hash = "sha256-EYi3LEezPRZXl+/TLSVHBlCjTjE4iRSwHhC3NSmxYgg=";
|
||||
};
|
||||
generate = true;
|
||||
meta.homepage = "https://github.com/artagnon/tree-sitter-mlir";
|
||||
@@ -2161,12 +2161,12 @@
|
||||
};
|
||||
pkl = buildGrammar {
|
||||
language = "pkl";
|
||||
version = "0.0.0+rev=4fc94a1";
|
||||
version = "0.0.0+rev=d62e832";
|
||||
src = fetchFromGitHub {
|
||||
owner = "apple";
|
||||
repo = "tree-sitter-pkl";
|
||||
rev = "4fc94a102c25ea383d70397dac7e677ca3731f1e";
|
||||
hash = "sha256-imA4+NuJ3XmVA8qfa7pkrQGBsbrNCgLNSuIFh0DsqmY=";
|
||||
rev = "d62e832b69a0aa3d4f87fc34ba62d931d6c23f55";
|
||||
hash = "sha256-6sVPCbs3rLlEhK9Fj2sJGjNBmvaGrajSOoGo6G78buo=";
|
||||
};
|
||||
meta.homepage = "https://github.com/apple/tree-sitter-pkl";
|
||||
};
|
||||
@@ -2417,12 +2417,12 @@
|
||||
};
|
||||
query = buildGrammar {
|
||||
language = "query";
|
||||
version = "0.0.0+rev=2668cc5";
|
||||
version = "0.0.0+rev=60e253d";
|
||||
src = fetchFromGitHub {
|
||||
owner = "tree-sitter-grammars";
|
||||
repo = "tree-sitter-query";
|
||||
rev = "2668cc53024953224a40b1e6546d7b8ec5a11150";
|
||||
hash = "sha256-KrdriPQLxb0Eay5gVRwU2hYfgC0oP/VtDmvnNIctjhc=";
|
||||
rev = "60e253d3c9d6b1131a0f75c85e4bdcc9a48d5b42";
|
||||
hash = "sha256-xzA4nBqX5qg5GVPD4KyM1mngL0xyOnERltiTOs/jeDk=";
|
||||
};
|
||||
meta.homepage = "https://github.com/tree-sitter-grammars/tree-sitter-query";
|
||||
};
|
||||
@@ -2648,12 +2648,12 @@
|
||||
};
|
||||
rust = buildGrammar {
|
||||
language = "rust";
|
||||
version = "0.0.0+rev=3691201";
|
||||
version = "0.0.0+rev=3bfef41";
|
||||
src = fetchFromGitHub {
|
||||
owner = "tree-sitter";
|
||||
repo = "tree-sitter-rust";
|
||||
rev = "3691201b01cacb2f96ffca4c632c4e938bfacd88";
|
||||
hash = "sha256-a9Te7SXVd7hkinrpvwrWgb6J53PoSL/Irk0DpQ6vS7k=";
|
||||
rev = "3bfef41a01ab49a25ffdecf998823b4b82fcaf69";
|
||||
hash = "sha256-oRBsIaNZDgBt1JSiGzgg+1JNbkDuGV2cxE1p0cZlFQc=";
|
||||
};
|
||||
meta.homepage = "https://github.com/tree-sitter/tree-sitter-rust";
|
||||
};
|
||||
@@ -2716,12 +2716,12 @@
|
||||
};
|
||||
slang = buildGrammar {
|
||||
language = "slang";
|
||||
version = "0.0.0+rev=5b0adf6";
|
||||
version = "0.0.0+rev=1dbcc4a";
|
||||
src = fetchFromGitHub {
|
||||
owner = "tree-sitter-grammars";
|
||||
repo = "tree-sitter-slang";
|
||||
rev = "5b0adf65710c3a7c265f0451ed6b4789410cbe63";
|
||||
hash = "sha256-uFU8hdz6APzrc9JUib47cmBd5kSnbSh0CbSqSbEfkoc=";
|
||||
rev = "1dbcc4abc7b3cdd663eb03d93031167d6ed19f56";
|
||||
hash = "sha256-UsZpXEJwbKn5M9dqbAv5eJgsCdNbsllbFWtNnDPvtoE=";
|
||||
};
|
||||
meta.homepage = "https://github.com/tree-sitter-grammars/tree-sitter-slang";
|
||||
};
|
||||
@@ -2738,12 +2738,12 @@
|
||||
};
|
||||
slint = buildGrammar {
|
||||
language = "slint";
|
||||
version = "0.0.0+rev=96bc969";
|
||||
version = "0.0.0+rev=ecd6007";
|
||||
src = fetchFromGitHub {
|
||||
owner = "slint-ui";
|
||||
repo = "tree-sitter-slint";
|
||||
rev = "96bc969d20ff347030519184ea2467f4046a524d";
|
||||
hash = "sha256-yTZxuA3Bco0Cv+kZ1VbfQZbIu12Y5N4b3HIUJ/PBpWA=";
|
||||
rev = "ecd60078bbd546eeb4c7fbbe02226752517b847f";
|
||||
hash = "sha256-MA/7gqrdhYridk7P+yFVeiWh0AiZf75/f3LSjZd9Clc=";
|
||||
};
|
||||
meta.homepage = "https://github.com/slint-ui/tree-sitter-slint";
|
||||
};
|
||||
@@ -2771,12 +2771,12 @@
|
||||
};
|
||||
snakemake = buildGrammar {
|
||||
language = "snakemake";
|
||||
version = "0.0.0+rev=f36c158";
|
||||
version = "0.0.0+rev=7731408";
|
||||
src = fetchFromGitHub {
|
||||
owner = "osthomas";
|
||||
repo = "tree-sitter-snakemake";
|
||||
rev = "f36c1587624d6d84376c82a357c20fc319cbf02c";
|
||||
hash = "sha256-yiEfMB67bIaIj+iXQ/ShvVQES6HCWnKI6DzWxsrIrRk=";
|
||||
rev = "7731408e5e8095fe242fdd423c3d3ae886fbf9fd";
|
||||
hash = "sha256-/XeO9/4rTLLicDRWWlUoAhCr+2AyjlQLszBmeQ/8wZY=";
|
||||
};
|
||||
meta.homepage = "https://github.com/osthomas/tree-sitter-snakemake";
|
||||
};
|
||||
@@ -2916,12 +2916,12 @@
|
||||
};
|
||||
supercollider = buildGrammar {
|
||||
language = "supercollider";
|
||||
version = "0.0.0+rev=1a8ee0d";
|
||||
version = "0.0.0+rev=c6145ca";
|
||||
src = fetchFromGitHub {
|
||||
owner = "madskjeldgaard";
|
||||
repo = "tree-sitter-supercollider";
|
||||
rev = "1a8ee0da9a4f2df5a8a22f4d637ac863623a78a7";
|
||||
hash = "sha256-G23AZO1zvTvRE9ciV7qMuSoaCYulhyOkwiRwgK06NRQ=";
|
||||
rev = "c6145cad24e19485f6ceb86e0a1be479d6537fb0";
|
||||
hash = "sha256-9t7yWtzuzY19M22q5Aiu+hVX2bkBTm3AmUi6ZSc4psQ=";
|
||||
};
|
||||
meta.homepage = "https://github.com/madskjeldgaard/tree-sitter-supercollider";
|
||||
};
|
||||
@@ -2961,12 +2961,12 @@
|
||||
};
|
||||
sway = buildGrammar {
|
||||
language = "sway";
|
||||
version = "0.0.0+rev=3950067";
|
||||
version = "0.0.0+rev=9b7845c";
|
||||
src = fetchFromGitHub {
|
||||
owner = "FuelLabs";
|
||||
repo = "tree-sitter-sway";
|
||||
rev = "395006713db3bbb90d267ebdfcbf1881b399b05c";
|
||||
hash = "sha256-5Js5WbpQAln6cfdjEd0emMtkC6uFGWA2LXQZkiXbap4=";
|
||||
rev = "9b7845ce06ecb38b040c3940970b4fd0adc331d1";
|
||||
hash = "sha256-+BRw4OFQb7FljdKCj5mruK0L9wsZ+1UDTykVLS9wjoY=";
|
||||
};
|
||||
meta.homepage = "https://github.com/FuelLabs/tree-sitter-sway.git";
|
||||
};
|
||||
@@ -3006,12 +3006,12 @@
|
||||
};
|
||||
systemverilog = buildGrammar {
|
||||
language = "systemverilog";
|
||||
version = "0.0.0+rev=3bd2c5d";
|
||||
version = "0.0.0+rev=999e885";
|
||||
src = fetchFromGitHub {
|
||||
owner = "gmlarumbe";
|
||||
repo = "tree-sitter-systemverilog";
|
||||
rev = "3bd2c5d2f60ed7b07c2177b34e2976ad9a87c659";
|
||||
hash = "sha256-ZkG5XsSBz9cZWLulIu40WPy71OGuVOlZSMcFH3AwXKc=";
|
||||
rev = "999e88565e199abec12d6fb7470419b5ae217386";
|
||||
hash = "sha256-eY51D/B25m87JPtRprwewa6SF6xSoXXYOL6DCOd5A4k=";
|
||||
};
|
||||
meta.homepage = "https://github.com/gmlarumbe/tree-sitter-systemverilog";
|
||||
};
|
||||
@@ -3473,6 +3473,17 @@
|
||||
};
|
||||
meta.homepage = "https://github.com/liamwh/tree-sitter-wit";
|
||||
};
|
||||
wxml = buildGrammar {
|
||||
language = "wxml";
|
||||
version = "0.0.0+rev=7b821c7";
|
||||
src = fetchFromGitHub {
|
||||
owner = "BlockLune";
|
||||
repo = "tree-sitter-wxml";
|
||||
rev = "7b821c748dc410332f59496c0dea2632168c4e5a";
|
||||
hash = "sha256-ZJeBKccEreak/Fs/Zi5E3m2S//s2R54KwFK3atoCvf0=";
|
||||
};
|
||||
meta.homepage = "https://github.com/BlockLune/tree-sitter-wxml";
|
||||
};
|
||||
xcompose = buildGrammar {
|
||||
language = "xcompose";
|
||||
version = "0.0.0+rev=a51d636";
|
||||
@@ -3498,12 +3509,12 @@
|
||||
};
|
||||
xresources = buildGrammar {
|
||||
language = "xresources";
|
||||
version = "0.0.0+rev=f40778f";
|
||||
version = "0.0.0+rev=423597c";
|
||||
src = fetchFromGitHub {
|
||||
owner = "ValdezFOmar";
|
||||
repo = "tree-sitter-xresources";
|
||||
rev = "f40778ff42f2119aebacd46d4b6d785a4181a9ba";
|
||||
hash = "sha256-9vqVBsErlbFXzTd7QmMItd5GW2F9kE04HQFjq/vtrTc=";
|
||||
rev = "423597c9ee0cd9fd98691a9f9881ff4e6f7b047a";
|
||||
hash = "sha256-BOXlyU2inSOqAmpDlqYjtDl2O37+ddOFiEEUvXb/kb4=";
|
||||
};
|
||||
meta.homepage = "https://github.com/ValdezFOmar/tree-sitter-xresources";
|
||||
};
|
||||
|
||||
@@ -143,13 +143,13 @@ in
|
||||
assertNoAdditions {
|
||||
advanced-git-search-nvim = super.advanced-git-search-nvim.overrideAttrs {
|
||||
checkInputs = with self; [
|
||||
fzf-lua
|
||||
snacks-nvim
|
||||
telescope-nvim
|
||||
];
|
||||
dependencies = with self; [
|
||||
telescope-nvim
|
||||
vim-fugitive
|
||||
vim-rhubarb
|
||||
fzf-lua
|
||||
plenary-nvim
|
||||
];
|
||||
};
|
||||
@@ -1107,11 +1107,11 @@ assertNoAdditions {
|
||||
easy-dotnet-nvim = super.easy-dotnet-nvim.overrideAttrs {
|
||||
dependencies = with self; [
|
||||
plenary-nvim
|
||||
telescope-nvim
|
||||
];
|
||||
checkInputs = with self; [
|
||||
# Pickers, can use telescope or fzf-lua
|
||||
# Pickers, can use telescope, fzf-lua, or snacks
|
||||
fzf-lua
|
||||
telescope-nvim
|
||||
];
|
||||
};
|
||||
|
||||
@@ -1228,7 +1228,7 @@ assertNoAdditions {
|
||||
];
|
||||
# Patch libgit2 library dependency
|
||||
postPatch = ''
|
||||
substituteInPlace lua/fugit2/libgit2.lua \
|
||||
substituteInPlace lua/fugit2/core/libgit2.lua \
|
||||
--replace-fail \
|
||||
'M.library_path = "libgit2"' \
|
||||
'M.library_path = "${lib.getLib libgit2}/lib/libgit2${stdenv.hostPlatform.extensions.sharedLibrary}"'
|
||||
@@ -1628,11 +1628,13 @@ assertNoAdditions {
|
||||
};
|
||||
|
||||
leetcode-nvim = super.leetcode-nvim.overrideAttrs {
|
||||
checkInputs = [ self.snacks-nvim ];
|
||||
checkInputs = with self; [
|
||||
snacks-nvim
|
||||
telescope-nvim
|
||||
];
|
||||
dependencies = with self; [
|
||||
nui-nvim
|
||||
plenary-nvim
|
||||
telescope-nvim
|
||||
];
|
||||
|
||||
doInstallCheck = true;
|
||||
@@ -2185,11 +2187,14 @@ assertNoAdditions {
|
||||
};
|
||||
|
||||
neotest-playwright = super.neotest-playwright.overrideAttrs {
|
||||
checkInputs = with self; [
|
||||
# Optional picker integration
|
||||
telescope-nvim
|
||||
];
|
||||
dependencies = with self; [
|
||||
neotest
|
||||
nvim-nio
|
||||
plenary-nvim
|
||||
telescope-nvim
|
||||
];
|
||||
# Unit test assert
|
||||
nvimSkipModules = "neotest-playwright-assertions";
|
||||
@@ -2281,13 +2286,6 @@ assertNoAdditions {
|
||||
];
|
||||
};
|
||||
|
||||
neuron-nvim = super.neuron-nvim.overrideAttrs {
|
||||
dependencies = with self; [
|
||||
plenary-nvim
|
||||
telescope-nvim
|
||||
];
|
||||
};
|
||||
|
||||
neovim-trunk = super.neovim-trunk.overrideAttrs {
|
||||
dependencies = with self; [
|
||||
plenary-nvim
|
||||
@@ -2636,14 +2634,10 @@ assertNoAdditions {
|
||||
};
|
||||
|
||||
nvim-tinygit = super.nvim-tinygit.overrideAttrs {
|
||||
dependencies = with self; [
|
||||
telescope-nvim
|
||||
];
|
||||
|
||||
checkInputs = [
|
||||
gitMinimal
|
||||
# transitive dependency (telescope-nvim) not properly propagated to the test environment
|
||||
self.plenary-nvim
|
||||
# interactive staging support
|
||||
self.telescope-nvim
|
||||
];
|
||||
};
|
||||
|
||||
@@ -3602,9 +3596,6 @@ assertNoAdditions {
|
||||
};
|
||||
|
||||
uv-nvim = super.uv-nvim.overrideAttrs {
|
||||
dependencies = with self; [
|
||||
telescope-nvim
|
||||
];
|
||||
runtimeDeps = [ uv ];
|
||||
};
|
||||
|
||||
@@ -4008,9 +3999,12 @@ assertNoAdditions {
|
||||
};
|
||||
|
||||
vs-tasks-nvim = super.vs-tasks-nvim.overrideAttrs {
|
||||
dependencies = with self; [
|
||||
plenary-nvim
|
||||
telescope-nvim
|
||||
checkInputs = [
|
||||
# Optional telescope integration
|
||||
self.telescope-nvim
|
||||
];
|
||||
dependencies = [
|
||||
self.plenary-nvim
|
||||
];
|
||||
};
|
||||
|
||||
@@ -4113,10 +4107,17 @@ assertNoAdditions {
|
||||
});
|
||||
|
||||
zenbones-nvim = super.zenbones-nvim.overrideAttrs {
|
||||
checkInputs = with self; [
|
||||
# Optional lush-nvim integration
|
||||
lush-nvim
|
||||
];
|
||||
nvimSkipModules = [
|
||||
# Requires global variable set
|
||||
"randombones"
|
||||
"randombones.palette"
|
||||
"randombones_dark.palette"
|
||||
"randombones_light"
|
||||
"randombones_light.palette"
|
||||
# Optional shipwright
|
||||
"zenbones.shipwright.runners.alacritty"
|
||||
"zenbones.shipwright.runners.foot"
|
||||
@@ -4128,33 +4129,7 @@ assertNoAdditions {
|
||||
"zenbones.shipwright.runners.vim"
|
||||
"zenbones.shipwright.runners.wezterm"
|
||||
"zenbones.shipwright.runners.windows_terminal"
|
||||
# Optional lush-nvim integration
|
||||
"duckbones"
|
||||
"duckbones.palette"
|
||||
"forestbones"
|
||||
"forestbones.palette"
|
||||
"kanagawabones"
|
||||
"kanagawabones.palette"
|
||||
"neobones"
|
||||
"neobones.palette"
|
||||
"nordbones"
|
||||
"nordbones.palette"
|
||||
"rosebones"
|
||||
"rosebones.palette"
|
||||
"seoulbones"
|
||||
"seoulbones.palette"
|
||||
"tokyobones"
|
||||
"tokyobones.palette"
|
||||
"vimbones"
|
||||
"vimbones.palette"
|
||||
"zenbones"
|
||||
"zenbones.palette"
|
||||
"zenbones.specs.dark"
|
||||
"zenbones.specs.light"
|
||||
"zenburned"
|
||||
"zenburned.palette"
|
||||
"zenwritten"
|
||||
"zenwritten.palette"
|
||||
"randombones_dark"
|
||||
];
|
||||
};
|
||||
|
||||
|
||||
@@ -766,7 +766,6 @@ https://github.com/Xuyuanp/nerdtree-git-plugin/,,
|
||||
https://github.com/2KAbhishek/nerdy.nvim/,HEAD,
|
||||
https://github.com/miversen33/netman.nvim/,HEAD,
|
||||
https://github.com/prichrd/netrw.nvim/,HEAD,
|
||||
https://github.com/oberblastmeister/neuron.nvim/,,
|
||||
https://github.com/fiatjaf/neuron.vim/,,
|
||||
https://github.com/Olical/nfnl/,main,
|
||||
https://github.com/joeveiga/ng.nvim/,HEAD,
|
||||
@@ -1317,7 +1316,7 @@ https://github.com/mhinz/vim-crates/,,
|
||||
https://github.com/vim-crystal/vim-crystal/,HEAD,
|
||||
https://github.com/OrangeT/vim-csharp/,,
|
||||
https://github.com/ap/vim-css-color/,,
|
||||
https://github.com/jjo/vim-cue/,,
|
||||
https://github.com/cue-lang/vim-cue/,,
|
||||
https://github.com/itchyny/vim-cursorword/,,
|
||||
https://github.com/ehamberg/vim-cute-python/,,
|
||||
https://github.com/tpope/vim-dadbod/,,
|
||||
|
||||
@@ -11,26 +11,26 @@ vscode-utils.buildVscodeMarketplaceExtension {
|
||||
sources = {
|
||||
"x86_64-linux" = {
|
||||
arch = "linux-x64";
|
||||
hash = "sha256-HXyY96fP9WjGWIe6ggQvygBnTEKRLUb5Qy18Vbjn160=";
|
||||
hash = "sha256-xk2maMEa07yFPbLiDGc9N6AbzxjTyfVNy/k7wWSMOHE=";
|
||||
};
|
||||
"x86_64-darwin" = {
|
||||
arch = "darwin-x64";
|
||||
hash = "sha256-2b04CLmbOxXsTzheEUacqZuBtA/rSZqRMLor0lT2gsU=";
|
||||
hash = "sha256-vcN419nPIrFOT8EaznFzThst6exfMGRrcmxyuQttxXg=";
|
||||
};
|
||||
"aarch64-linux" = {
|
||||
arch = "linux-arm64";
|
||||
hash = "sha256-/eKZ3bkZ2jFr8cTpNLO6t8wsRfLyhLkQHMrkTWtCWb8=";
|
||||
hash = "sha256-WoBfg35mGTIA8YZEk67iYNinF+Q/XEatiVr6x1HdvBk=";
|
||||
};
|
||||
"aarch64-darwin" = {
|
||||
arch = "darwin-arm64";
|
||||
hash = "sha256-JRVrV2yYSfuwuBcM2MDJZz5vNRYHG4n6I/GozgdDOgk=";
|
||||
hash = "sha256-e75eRgs0FTBnwFbH1vFxFc+aLK+O9TdxgXbV5YnsQLE=";
|
||||
};
|
||||
};
|
||||
in
|
||||
{
|
||||
name = "continue";
|
||||
publisher = "Continue";
|
||||
version = "1.1.76";
|
||||
version = "1.2.2";
|
||||
}
|
||||
// sources.${stdenv.system} or (throw "Unsupported system: ${stdenv.system}");
|
||||
nativeBuildInputs = lib.optionals stdenv.hostPlatform.isLinux [ autoPatchelfHook ];
|
||||
|
||||
@@ -1123,8 +1123,8 @@ let
|
||||
mktplcRef = {
|
||||
name = "vscode-database-client2";
|
||||
publisher = "cweijan";
|
||||
version = "8.3.9";
|
||||
hash = "sha256-HryTXKCBF7i9zV3JELAM+NF3JW97XWCoSqTRPNr8yjQ=";
|
||||
version = "8.4.0";
|
||||
hash = "sha256-ly54itCpVdirU6GmK2GM7A749wt2SbHR/TidutTwCUE=";
|
||||
};
|
||||
meta = {
|
||||
description = "Database Client For Visual Studio Code";
|
||||
@@ -3004,8 +3004,8 @@ let
|
||||
mktplcRef = {
|
||||
name = "rainbow-csv";
|
||||
publisher = "mechatroner";
|
||||
version = "3.20.0";
|
||||
hash = "sha256-qQ05km8jLLoMFItVbgVWNXmmaBDWd0Bcbq88HPaRdWs=";
|
||||
version = "3.21.0";
|
||||
hash = "sha256-IPgPE5vM9tzHPioRBZeJs4hqut6t++SjZJlHnz/ismA=";
|
||||
};
|
||||
meta = {
|
||||
changelog = "https://marketplace.visualstudio.com/items/mechatroner.rainbow-csv/changelog";
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
{
|
||||
stdenv,
|
||||
lib,
|
||||
vscode-utils,
|
||||
icu,
|
||||
@@ -11,12 +12,36 @@
|
||||
vscode-extension-update-script,
|
||||
}:
|
||||
|
||||
let
|
||||
supported = {
|
||||
x86_64-linux = {
|
||||
hash = "sha256-AlqZTioxiL0XPRMpWMWw8fIWoDAmU1ybCaDhlaXv6lc=";
|
||||
arch = "linux-x64";
|
||||
};
|
||||
x86_64-darwin = {
|
||||
hash = "sha256-IWj79vUJJXt88kDiCIHVY95aKsHB84vH3iv6GgLOFQo=";
|
||||
arch = "darwin-x64";
|
||||
};
|
||||
aarch64-linux = {
|
||||
hash = "sha256-kTSHvqS50UZ/yTMqJITyFIUZgHn1dMSwX1R3oxmTnYk=";
|
||||
arch = "linux-arm64";
|
||||
};
|
||||
aarch64-darwin = {
|
||||
hash = "sha256-LWA8LqCQrmd83icDYCmUgytPJbCV3ecNobSpWV2R3MA=";
|
||||
arch = "darwin-arm64";
|
||||
};
|
||||
};
|
||||
|
||||
base =
|
||||
supported.${stdenv.hostPlatform.system}
|
||||
or (throw "unsupported platform ${stdenv.hostPlatform.system}");
|
||||
|
||||
in
|
||||
vscode-utils.buildVscodeMarketplaceExtension rec {
|
||||
mktplcRef = {
|
||||
mktplcRef = base // {
|
||||
name = "python";
|
||||
publisher = "ms-python";
|
||||
version = "2025.12.0";
|
||||
hash = "sha256-IY4xrAFLGe8JCgdx2H3kiQTCh9i5wOykL9hfpztV+44=";
|
||||
};
|
||||
|
||||
buildInputs = [ icu ];
|
||||
@@ -52,12 +77,7 @@ vscode-utils.buildVscodeMarketplaceExtension rec {
|
||||
homepage = "https://github.com/Microsoft/vscode-python";
|
||||
changelog = "https://github.com/microsoft/vscode-python/releases";
|
||||
license = lib.licenses.mit;
|
||||
platforms = [
|
||||
"aarch64-linux"
|
||||
"x86_64-linux"
|
||||
"aarch64-darwin"
|
||||
"x86_64-darwin"
|
||||
];
|
||||
platforms = builtins.attrNames supported;
|
||||
maintainers = [
|
||||
lib.maintainers.jraygauthier
|
||||
lib.maintainers.jfchevrette
|
||||
|
||||
@@ -7,8 +7,8 @@ vscode-utils.buildVscodeMarketplaceExtension {
|
||||
mktplcRef = {
|
||||
publisher = "ndonfris";
|
||||
name = "fish-lsp";
|
||||
version = "0.1.13";
|
||||
hash = "sha256-jPBcSQHuSvvWfc4KdtTkUJkx/fGYiAANFjABe4DzopQ=";
|
||||
version = "0.1.14";
|
||||
hash = "sha256-1OUVZJ5TTeR2nChRPSU5ViLAaUAovtqOk9kq408iW84=";
|
||||
};
|
||||
|
||||
meta = {
|
||||
|
||||
@@ -7,8 +7,8 @@ vscode-utils.buildVscodeMarketplaceExtension {
|
||||
mktplcRef = {
|
||||
name = "claude-dev";
|
||||
publisher = "saoudrizwan";
|
||||
version = "3.25.3";
|
||||
hash = "sha256-9a4QvVZ0vWR0zWgYAZN0zv95J2VNBbFQHc8mAH6H680=";
|
||||
version = "3.27.1";
|
||||
hash = "sha256-+gCQ9p/FI7LlORC0sMwD501iCh5cDurqv2UzOs43ckU=";
|
||||
};
|
||||
|
||||
meta = {
|
||||
|
||||
@@ -11,26 +11,26 @@ vscode-utils.buildVscodeMarketplaceExtension {
|
||||
sources = {
|
||||
"x86_64-linux" = {
|
||||
arch = "linux-x64";
|
||||
hash = "sha256-QOMJIhgc/dixPDUmir7bq5dWYGUfEWHJOlgTbGkxuDo=";
|
||||
hash = "sha256-EfUwtKKyoX1/JNoVe3YsfxoLmjHWkLgFHKQqwDMjGMs=";
|
||||
};
|
||||
"x86_64-darwin" = {
|
||||
arch = "darwin-x64";
|
||||
hash = "sha256-CucMSzmeYdrSbXZbevyJb3M2oTkyatddAt2MUMXNwl0=";
|
||||
hash = "sha256-fZRQIFwDsUsIw9YwsjMhMPeMTOe/JATDBq66yKfJQRU=";
|
||||
};
|
||||
"aarch64-linux" = {
|
||||
arch = "linux-arm64";
|
||||
hash = "sha256-Lv/Hqp5OGC66qdIj/5VPlj434ftK4BBHNWlgg2ZAAac=";
|
||||
hash = "sha256-ig80H563Mv0Xs4Jh9Ni8Hn9vXAFYwycqNvSO3JJ3t+8=";
|
||||
};
|
||||
"aarch64-darwin" = {
|
||||
arch = "darwin-arm64";
|
||||
hash = "sha256-KuAT8+8t6YlQ4VygtxGindvSRs1x7oKT9ZgE7Vhvf8I=";
|
||||
hash = "sha256-9D1H/u8YvgCvVcvm/Cy8GqQrutkSj6E7aqZdyX96LDw=";
|
||||
};
|
||||
};
|
||||
in
|
||||
{
|
||||
name = "visualjj";
|
||||
publisher = "visualjj";
|
||||
version = "0.16.1";
|
||||
version = "0.16.2";
|
||||
}
|
||||
// sources.${stdenvNoCC.hostPlatform.system}
|
||||
or (throw "Unsupported system ${stdenvNoCC.hostPlatform.system}");
|
||||
|
||||
@@ -13,13 +13,13 @@
|
||||
}:
|
||||
mkLibretroCore {
|
||||
core = "ppsspp";
|
||||
version = "0-unstable-2025-08-30";
|
||||
version = "0-unstable-2025-09-10";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "hrydgard";
|
||||
repo = "ppsspp";
|
||||
rev = "b9a3e939711e007cce6af5930603122c0df91f20";
|
||||
hash = "sha256-eEJeH7tfuIVrlkqGwsoe6RkY7tOEIyUbHSM8xGyZL4o=";
|
||||
rev = "a240cb24070700fbf73a1522338ebd60011a0daf";
|
||||
hash = "sha256-A4tqLVmW6Y4boQRf80N0upFS+s6P+TQRXB/i8rg/I4g=";
|
||||
fetchSubmodules = true;
|
||||
};
|
||||
|
||||
|
||||
@@ -19,10 +19,10 @@ let
|
||||
withWebKit = withWebKit;
|
||||
};
|
||||
in
|
||||
symlinkJoin rec {
|
||||
|
||||
symlinkJoin {
|
||||
inherit (qgis-unwrapped) version src;
|
||||
name = "qgis-${version}";
|
||||
pname = "qgis";
|
||||
|
||||
paths = [ qgis-unwrapped ];
|
||||
|
||||
|
||||
@@ -19,10 +19,10 @@ let
|
||||
withWebKit = withWebKit;
|
||||
};
|
||||
in
|
||||
symlinkJoin rec {
|
||||
|
||||
symlinkJoin {
|
||||
inherit (qgis-ltr-unwrapped) version src;
|
||||
name = "qgis-${version}";
|
||||
pname = "qgis";
|
||||
|
||||
paths = [ qgis-ltr-unwrapped ];
|
||||
|
||||
|
||||
@@ -80,7 +80,7 @@ import ./versions.nix (
|
||||
++ lib.optionals x11Support [ xclip ];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Emoji selector plugin for Rofi (built against ${rofi-unwrapped.pname})";
|
||||
description = "Emoji selector plugin for Rofi";
|
||||
homepage = "https://github.com/Mange/rofi-emoji";
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [
|
||||
|
||||
@@ -1,42 +1,47 @@
|
||||
{
|
||||
stdenv,
|
||||
lib,
|
||||
stdenv,
|
||||
bison,
|
||||
buildPackages,
|
||||
cairo,
|
||||
check,
|
||||
fetchFromGitHub,
|
||||
flex,
|
||||
git,
|
||||
glib,
|
||||
librsvg,
|
||||
libstartup_notification,
|
||||
libxcb,
|
||||
libxkbcommon,
|
||||
meson,
|
||||
ninja,
|
||||
pkg-config,
|
||||
libxkbcommon,
|
||||
pandoc,
|
||||
pango,
|
||||
pkg-config,
|
||||
wayland,
|
||||
wayland-protocols,
|
||||
wayland-scanner,
|
||||
which,
|
||||
git,
|
||||
cairo,
|
||||
libxcb,
|
||||
xcb-imdkit,
|
||||
xcbutil,
|
||||
xcb-util-cursor,
|
||||
xcbutilkeysyms,
|
||||
xcbutil,
|
||||
xcbutilwm,
|
||||
xcbutilxrm,
|
||||
libstartup_notification,
|
||||
bison,
|
||||
flex,
|
||||
librsvg,
|
||||
check,
|
||||
glib,
|
||||
buildPackages,
|
||||
pandoc,
|
||||
waylandSupport ? true,
|
||||
x11Support ? true,
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
pname = "rofi-unwrapped";
|
||||
version = "1.7.9.1";
|
||||
version = "2.0.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "davatorium";
|
||||
repo = "rofi";
|
||||
rev = version;
|
||||
fetchSubmodules = true;
|
||||
hash = "sha256-HZMVGlK6ig7kWf/exivoiTe9J/SLgjm7VwRm+KgKN44=";
|
||||
hash = "sha256-akKwIYH9OoCh4ZE/bxKPCppxXsUhplvfRjSGsdthFk4=";
|
||||
};
|
||||
|
||||
preConfigure = ''
|
||||
@@ -47,36 +52,46 @@ stdenv.mkDerivation rec {
|
||||
|
||||
depsBuildBuild = [
|
||||
buildPackages.stdenv.cc
|
||||
pkg-config
|
||||
glib
|
||||
pkg-config
|
||||
];
|
||||
nativeBuildInputs = [
|
||||
bison
|
||||
flex
|
||||
meson
|
||||
ninja
|
||||
pkg-config
|
||||
flex
|
||||
bison
|
||||
pandoc
|
||||
pkg-config
|
||||
];
|
||||
buildInputs = [
|
||||
libxkbcommon
|
||||
pango
|
||||
cairo
|
||||
check
|
||||
git
|
||||
librsvg
|
||||
check
|
||||
libstartup_notification
|
||||
libxkbcommon
|
||||
pango
|
||||
which
|
||||
]
|
||||
++ lib.optionals waylandSupport [
|
||||
wayland
|
||||
wayland-protocols
|
||||
wayland-scanner
|
||||
]
|
||||
++ lib.optionals x11Support [
|
||||
libxcb
|
||||
xcb-imdkit
|
||||
xcbutil
|
||||
xcb-util-cursor
|
||||
xcbutilkeysyms
|
||||
xcbutil
|
||||
xcbutilwm
|
||||
xcbutilxrm
|
||||
which
|
||||
];
|
||||
|
||||
mesonFlags = [ "-Dimdkit=true" ];
|
||||
mesonFlags =
|
||||
lib.optionals x11Support [ "-Dimdkit=true" ]
|
||||
++ lib.optionals (!waylandSupport) [ "-Dwayland=disabled" ]
|
||||
++ lib.optionals (!x11Support) [ "-Dxcb=disabled" ];
|
||||
|
||||
doCheck = false;
|
||||
|
||||
@@ -84,7 +99,10 @@ stdenv.mkDerivation rec {
|
||||
description = "Window switcher, run dialog and dmenu replacement";
|
||||
homepage = "https://github.com/davatorium/rofi";
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [ bew ];
|
||||
maintainers = with maintainers; [
|
||||
bew
|
||||
SchweGELBin
|
||||
];
|
||||
platforms = with platforms; linux;
|
||||
mainProgram = "rofi";
|
||||
};
|
||||
|
||||
@@ -1,41 +0,0 @@
|
||||
{
|
||||
lib,
|
||||
fetchFromGitHub,
|
||||
rofi-unwrapped,
|
||||
wayland-scanner,
|
||||
pkg-config,
|
||||
wayland-protocols,
|
||||
wayland,
|
||||
}:
|
||||
|
||||
rofi-unwrapped.overrideAttrs (oldAttrs: rec {
|
||||
pname = "rofi-wayland-unwrapped";
|
||||
version = "1.7.9+wayland1";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "lbonn";
|
||||
repo = "rofi";
|
||||
rev = version;
|
||||
fetchSubmodules = true;
|
||||
hash = "sha256-tLSU0Q221Pg3JYCT+w9ZT4ZbbB5+s8FwsZa/ehfn00s=";
|
||||
};
|
||||
|
||||
depsBuildBuild = oldAttrs.depsBuildBuild ++ [ pkg-config ];
|
||||
nativeBuildInputs = oldAttrs.nativeBuildInputs ++ [
|
||||
wayland-protocols
|
||||
wayland-scanner
|
||||
];
|
||||
buildInputs = oldAttrs.buildInputs ++ [
|
||||
wayland
|
||||
wayland-protocols
|
||||
];
|
||||
|
||||
meta = with lib; {
|
||||
description = "Window switcher, run dialog and dmenu replacement for Wayland";
|
||||
homepage = "https://github.com/lbonn/rofi";
|
||||
license = licenses.mit;
|
||||
mainProgram = "rofi";
|
||||
maintainers = with maintainers; [ bew ];
|
||||
platforms = with platforms; linux;
|
||||
};
|
||||
})
|
||||
File diff suppressed because it is too large
Load Diff
@@ -10,11 +10,11 @@
|
||||
buildMozillaMach rec {
|
||||
pname = "firefox-beta";
|
||||
binaryName = pname;
|
||||
version = "143.0b8";
|
||||
version = "143.0b9";
|
||||
applicationName = "Firefox Beta";
|
||||
src = fetchurl {
|
||||
url = "mirror://mozilla/firefox/releases/${version}/source/firefox-${version}.source.tar.xz";
|
||||
sha512 = "bf8e78abcc1cf6c8b48a591d0185c85195a818de0d13bafa3f004ad9c76364a2c07cacdf09fe0ae2e290d9cbce7b8c3ba4b57793cd3d39240023ef53eea08377";
|
||||
sha512 = "b014e343ddba2e3750a0f50925c9b7f07237593c299604d96275f45332063f1487a47234411f7c952ee50ffaeb385a22dedbc4f924e4e0fc89668172b06c78fd";
|
||||
};
|
||||
|
||||
meta = {
|
||||
|
||||
@@ -10,13 +10,13 @@
|
||||
buildMozillaMach rec {
|
||||
pname = "firefox-devedition";
|
||||
binaryName = pname;
|
||||
version = "143.0b8";
|
||||
version = "143.0b9";
|
||||
applicationName = "Firefox Developer Edition";
|
||||
requireSigning = false;
|
||||
branding = "browser/branding/aurora";
|
||||
src = fetchurl {
|
||||
url = "mirror://mozilla/devedition/releases/${version}/source/firefox-${version}.source.tar.xz";
|
||||
sha512 = "89152a4dd3e17f68d7991fae65a6365a2273fcbef28c245a76e9e068a1f12c486a7d0c6d3cb8988c1c9955b15809fa93e117e25b04f9b1a9d449e685cbf30cfc";
|
||||
sha512 = "a323bbcc7c8898073e320f3c2701881d849cff31a01a8bad34df7f08945dd7fb7e8cc9afd8aceb209198e8932b7b1d835af45b87459f4454f9a7f48bc85ef690";
|
||||
};
|
||||
|
||||
# buildMozillaMach sets MOZ_APP_REMOTINGNAME during configuration, but
|
||||
|
||||
@@ -1,77 +0,0 @@
|
||||
{
|
||||
stdenv,
|
||||
lib,
|
||||
fetchFromGitHub,
|
||||
buildMozillaMach,
|
||||
nixosTests,
|
||||
}:
|
||||
|
||||
(
|
||||
(buildMozillaMach rec {
|
||||
pname = "floorp";
|
||||
packageVersion = "11.30.0";
|
||||
applicationName = "Floorp";
|
||||
binaryName = "floorp";
|
||||
branding = "browser/branding/official";
|
||||
requireSigning = false;
|
||||
allowAddonSideload = true;
|
||||
|
||||
# Must match the contents of `browser/config/version.txt` in the source tree
|
||||
version = "128.14.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Floorp-Projects";
|
||||
repo = "Floorp";
|
||||
fetchSubmodules = true;
|
||||
rev = "v${packageVersion}";
|
||||
hash = "sha256-4IAN0S9JWjaGXtnRUJz3HqUm+ZWL7KmryLu8ojSXiqg=";
|
||||
};
|
||||
|
||||
extraConfigureFlags = [
|
||||
"--with-app-basename=${applicationName}"
|
||||
"--with-unsigned-addon-scopes=app,system"
|
||||
"--enable-proxy-bypass-protection"
|
||||
];
|
||||
|
||||
extraPostPatch = ''
|
||||
# Fix .desktop files for PWAs generated by Floorp
|
||||
# The executable path returned by Services.dirsvc.get() is absolute and
|
||||
# thus is the full /nix/store/[..] path. To avoid breaking PWAs with each
|
||||
# update, rely on `floorp` being in $PATH, as before.
|
||||
substituteInPlace floorp/browser/base/content/modules/ssb/LinuxSupport.mjs \
|
||||
--replace-fail 'Services.dirsvc.get("XREExeF",Ci.nsIFile).path' '"floorp"'
|
||||
'';
|
||||
|
||||
updateScript = ./update.sh;
|
||||
|
||||
meta = {
|
||||
description = "Fork of Firefox that seeks balance between versatility, privacy and web openness";
|
||||
homepage = "https://floorp.app/";
|
||||
maintainers = with lib.maintainers; [ christoph-heiss ];
|
||||
platforms = lib.platforms.unix;
|
||||
broken = stdenv.buildPlatform.is32bit;
|
||||
# since Firefox 60, build on 32-bit platforms fails with "out of memory".
|
||||
# not in `badPlatforms` because cross-compilation on 64-bit machine might work.
|
||||
maxSilent = 14400; # 4h, double the default of 7200s (c.f. #129212, #129115)
|
||||
license = lib.licenses.mpl20;
|
||||
mainProgram = "floorp";
|
||||
};
|
||||
tests = {
|
||||
inherit (nixosTests) floorp;
|
||||
};
|
||||
}).override
|
||||
{
|
||||
# Upstream build configuration can be found at
|
||||
# .github/workflows/src/linux/shared/mozconfig_linux_base
|
||||
privacySupport = true;
|
||||
webrtcSupport = true;
|
||||
enableOfficialBranding = false;
|
||||
geolocationSupport = true;
|
||||
# https://github.com/NixOS/nixpkgs/issues/418473
|
||||
ltoSupport = false;
|
||||
}
|
||||
).overrideAttrs
|
||||
(prev: {
|
||||
MOZ_DATA_REPORTING = "";
|
||||
MOZ_TELEMETRY_REPORTING = "";
|
||||
})
|
||||
@@ -1,38 +0,0 @@
|
||||
#!/usr/bin/env nix-shell
|
||||
#!nix-shell -i bash -p curl nix-prefetch-github jq gnused
|
||||
|
||||
set -e
|
||||
|
||||
owner=Floorp-Projects
|
||||
repo=Floorp
|
||||
dirname="$(dirname "$0")"
|
||||
|
||||
updateVersion() {
|
||||
sed -i "s/packageVersion = \"[0-9.]*\";/packageVersion = \"$1\";/g" "$dirname/default.nix"
|
||||
}
|
||||
|
||||
updateBaseVersion() {
|
||||
local base
|
||||
base=$(curl -s "https://raw.githubusercontent.com/$owner/$repo/v$1/browser/config/version.txt")
|
||||
sed -i "s/version = \"[0-9.]*\";/version = \"$base\";/g" "$dirname/default.nix"
|
||||
}
|
||||
|
||||
updateHash() {
|
||||
local hash
|
||||
hash=$(nix-prefetch-github --fetch-submodules --rev "v$1" $owner $repo | jq -r .hash)
|
||||
sed -i "s|hash = \"[a-zA-Z0-9\/+-=]*\";|hash = \"$hash\";|g" "$dirname/default.nix"
|
||||
}
|
||||
|
||||
currentVersion=$(cd "$dirname" && nix eval --raw -f ../../../../.. floorp.version)
|
||||
|
||||
latestTag=$(curl -s https://api.github.com/repos/Floorp-Projects/Floorp/releases/latest | jq -r ".tag_name")
|
||||
latestVersion="$(expr "$latestTag" : 'v\(.*\)')"
|
||||
|
||||
if [[ "$currentVersion" == "$latestVersion" ]]; then
|
||||
echo "Floorp is up-to-date: ${currentVersion}"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
updateVersion "$latestVersion"
|
||||
updateBaseVersion "$latestVersion"
|
||||
updateHash "$latestVersion"
|
||||
@@ -41,7 +41,6 @@ lib:
|
||||
ethtool,
|
||||
fetchFromGitHub,
|
||||
fetchgit,
|
||||
fetchpatch,
|
||||
fetchurl,
|
||||
fetchzip,
|
||||
findutils,
|
||||
@@ -55,7 +54,7 @@ lib:
|
||||
kmod,
|
||||
lib,
|
||||
libseccomp,
|
||||
makeWrapper,
|
||||
makeBinaryWrapper,
|
||||
nixosTests,
|
||||
overrideBundleAttrs ? { }, # An attrSet/function to override the `k3sBundle` derivation.
|
||||
overrideCniPluginsAttrs ? { }, # An attrSet/function to override the `k3sCNIPlugins` derivation.
|
||||
@@ -69,10 +68,11 @@ lib:
|
||||
socat,
|
||||
sqlite,
|
||||
stdenv,
|
||||
systemd,
|
||||
systemdMinimal,
|
||||
util-linuxMinimal,
|
||||
yq-go,
|
||||
zstd,
|
||||
versionCheckHook,
|
||||
}:
|
||||
|
||||
# k3s is a kinda weird derivation. One of the main points of k3s is the
|
||||
@@ -328,7 +328,7 @@ let
|
||||
}).overrideAttrs
|
||||
overrideContainerdAttrs;
|
||||
in
|
||||
buildGoModule rec {
|
||||
buildGoModule (finalAttrs: {
|
||||
pname = "k3s";
|
||||
version = k3sVersion;
|
||||
pos = builtins.unsafeGetAttrPos "k3sVersion" attrs;
|
||||
@@ -345,15 +345,13 @@ buildGoModule rec {
|
||||
# Nix prefers dynamically linked binaries over static binary.
|
||||
|
||||
substituteInPlace scripts/package-cli \
|
||||
--replace '"$LDFLAGS $STATIC" -o' \
|
||||
'"$LDFLAGS" -o' \
|
||||
--replace "STATIC=\"-extldflags \'-static\'\"" \
|
||||
""
|
||||
--replace-fail '"$LDFLAGS $STATIC" -o' \
|
||||
'"$LDFLAGS" -o'
|
||||
|
||||
# Upstream codegen fails with trimpath set. Removes "trimpath" for 'go generate':
|
||||
|
||||
substituteInPlace scripts/package-cli \
|
||||
--replace '"''${GO}" generate' \
|
||||
--replace-fail '"''${GO}" generate' \
|
||||
'GOFLAGS="" \
|
||||
GOOS="${pkgsBuildBuild.go.GOOS}" \
|
||||
GOARCH="${pkgsBuildBuild.go.GOARCH}" \
|
||||
@@ -381,7 +379,7 @@ buildGoModule rec {
|
||||
|
||||
k3sKillallDeps = [
|
||||
bash
|
||||
systemd
|
||||
systemdMinimal
|
||||
procps
|
||||
coreutils
|
||||
gnugrep
|
||||
@@ -389,10 +387,10 @@ buildGoModule rec {
|
||||
gnused
|
||||
];
|
||||
|
||||
buildInputs = k3sRuntimeDeps;
|
||||
buildInputs = finalAttrs.k3sRuntimeDeps;
|
||||
|
||||
nativeBuildInputs = [
|
||||
makeWrapper
|
||||
makeBinaryWrapper
|
||||
rsync
|
||||
yq-go
|
||||
zstd
|
||||
@@ -439,23 +437,20 @@ buildGoModule rec {
|
||||
# wildcard to match the arm64 build too
|
||||
install -m 0755 dist/artifacts/k3s* -D $out/bin/k3s
|
||||
wrapProgram $out/bin/k3s \
|
||||
--prefix PATH : ${lib.makeBinPath k3sRuntimeDeps} \
|
||||
--prefix PATH : ${lib.makeBinPath finalAttrs.k3sRuntimeDeps} \
|
||||
--prefix PATH : "$out/bin"
|
||||
ln -s $out/bin/k3s $out/bin/kubectl
|
||||
ln -s $out/bin/k3s $out/bin/crictl
|
||||
ln -s $out/bin/k3s $out/bin/ctr
|
||||
install -m 0755 ${k3sKillallSh} -D $out/bin/k3s-killall.sh
|
||||
wrapProgram $out/bin/k3s-killall.sh \
|
||||
--prefix PATH : ${lib.makeBinPath (k3sRuntimeDeps ++ k3sKillallDeps)}
|
||||
--prefix PATH : ${lib.makeBinPath (finalAttrs.k3sRuntimeDeps ++ finalAttrs.k3sKillallDeps)}
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
doInstallCheck = true;
|
||||
installCheckPhase = ''
|
||||
runHook preInstallCheck
|
||||
$out/bin/k3s --version | grep -F "v${k3sVersion}" >/dev/null
|
||||
runHook postInstallCheck
|
||||
'';
|
||||
nativeInstallCheckInputs = [ versionCheckHook ];
|
||||
versionCheckProgramArg = "--version";
|
||||
|
||||
passthru = {
|
||||
inherit airgap-images;
|
||||
@@ -464,13 +459,16 @@ buildGoModule rec {
|
||||
k3sRepo = k3sRepo;
|
||||
k3sRoot = k3sRoot;
|
||||
k3sBundle = k3sBundle;
|
||||
mkTests =
|
||||
version:
|
||||
tests =
|
||||
let
|
||||
k3s_version = "k3s_" + lib.replaceStrings [ "." ] [ "_" ] (lib.versions.majorMinor version);
|
||||
mkTests =
|
||||
version:
|
||||
let
|
||||
k3s_version = "k3s_" + lib.replaceStrings [ "." ] [ "_" ] (lib.versions.majorMinor version);
|
||||
in
|
||||
lib.mapAttrs (name: value: nixosTests.k3s.${name}.${k3s_version}) nixosTests.k3s;
|
||||
in
|
||||
lib.mapAttrs (name: value: nixosTests.k3s.${name}.${k3s_version}) nixosTests.k3s;
|
||||
tests = passthru.mkTests k3sVersion;
|
||||
mkTests k3sVersion;
|
||||
updateScript = updateScript;
|
||||
imagesList = throw "k3s.imagesList was removed";
|
||||
airgapImages = throw "k3s.airgapImages was renamed to k3s.airgap-images";
|
||||
@@ -481,4 +479,4 @@ buildGoModule rec {
|
||||
// (lib.mapAttrs (_: value: fetchurl value) imagesVersions);
|
||||
|
||||
meta = baseMeta;
|
||||
}
|
||||
})
|
||||
|
||||
@@ -261,13 +261,13 @@
|
||||
"vendorHash": null
|
||||
},
|
||||
"cloudamqp": {
|
||||
"hash": "sha256-v+hbbmGAbCY+DlgQPzZmiknQ/88icn6ja6UIecoMDbU=",
|
||||
"hash": "sha256-j1zPlyljBpBgOxFA2hOQAvPAl9sR5UpN899kshXf4GA=",
|
||||
"homepage": "https://registry.terraform.io/providers/cloudamqp/cloudamqp",
|
||||
"owner": "cloudamqp",
|
||||
"repo": "terraform-provider-cloudamqp",
|
||||
"rev": "v1.35.1",
|
||||
"rev": "v1.36.0",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": "sha256-shRiTPn4A1rmwBnoSlRDfdYuHqSFvL4o6o8vAJutu3Q="
|
||||
"vendorHash": "sha256-O/MSx6iZ0SkCsMLKMr1cetkPaePoVq62UTOhiPTzF6g="
|
||||
},
|
||||
"cloudflare": {
|
||||
"hash": "sha256-EsbktS0pP+tJtIPHckMmgdeIBLyL9T+lVyoDzJAzi98=",
|
||||
@@ -534,13 +534,13 @@
|
||||
"vendorHash": "sha256-KWXHXLIt0fI9k3XRhch8VLLnVXwkSH2uUS5APfCcNdI="
|
||||
},
|
||||
"google-beta": {
|
||||
"hash": "sha256-lmn6hHVJ65Q65bATLV8XeyGOh9lsMcOprJt7vbGBCeE=",
|
||||
"hash": "sha256-l08jmxkWsTrk32cJM28OuwSZgSKIB3EPODaUf7821uY=",
|
||||
"homepage": "https://registry.terraform.io/providers/hashicorp/google-beta",
|
||||
"owner": "hashicorp",
|
||||
"repo": "terraform-provider-google-beta",
|
||||
"rev": "v7.0.1",
|
||||
"rev": "v7.1.1",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": "sha256-l5UkyXzoy3lY5bAus6pHnYKa6QniebN6nmQ5gANxr/Y="
|
||||
"vendorHash": "sha256-9tXElUSD6WSfEn6Urt0GZFkxGXj/iUO83ZkKw3GfAgo="
|
||||
},
|
||||
"googleworkspace": {
|
||||
"hash": "sha256-dedYnsKHizxJZibuvJOMbJoux0W6zgKaK5fxIofKqCY=",
|
||||
@@ -768,13 +768,13 @@
|
||||
"vendorHash": "sha256-fP6brpY/wRI1Yjgapzi+FfOci65gxWeOZulXbGdilrE="
|
||||
},
|
||||
"linode": {
|
||||
"hash": "sha256-zqMknrd8W49RijEVn1TlsV3PT1KGmtdAZUE+Gj8AI5g=",
|
||||
"hash": "sha256-CSxYyKDHYCAZyVQaPabQ/qks4aEIxN/Oc109luEcaXc=",
|
||||
"homepage": "https://registry.terraform.io/providers/linode/linode",
|
||||
"owner": "linode",
|
||||
"repo": "terraform-provider-linode",
|
||||
"rev": "v3.1.1",
|
||||
"rev": "v3.2.0",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": "sha256-ormU5oDUFb0FQK2L6NDGD/GRy4XXuoFTnq6VKSDVtSw="
|
||||
"vendorHash": "sha256-nRJmUQW9vCmqnVgsw4JGozLbxkVVDYUa0Hot5mA4vaM="
|
||||
},
|
||||
"linuxbox": {
|
||||
"hash": "sha256-svQRz1/PdVLpHoxOam1sfRTwHqgqs4ohJQs3IPMMAM4=",
|
||||
@@ -885,13 +885,13 @@
|
||||
"vendorHash": null
|
||||
},
|
||||
"newrelic": {
|
||||
"hash": "sha256-4l7q9umrbic4lOKMtTWwBDRHMJUlVyrl5un7KAYYiAM=",
|
||||
"hash": "sha256-Lmt3ZIrFW/NPLlWlOlXH/sxh4CpBPAJfsJOjjQy9uZA=",
|
||||
"homepage": "https://registry.terraform.io/providers/newrelic/newrelic",
|
||||
"owner": "newrelic",
|
||||
"repo": "terraform-provider-newrelic",
|
||||
"rev": "v3.66.0",
|
||||
"rev": "v3.68.0",
|
||||
"spdx": "MPL-2.0",
|
||||
"vendorHash": "sha256-+ogtadT0zekeaynXQCwDBrD+bBnKUsyzLGPQyLsCSR8="
|
||||
"vendorHash": "sha256-7eRDz/MAKYnUsBAJOSssqzdSfsRSboQX4E/8qBjnGDk="
|
||||
},
|
||||
"nexus": {
|
||||
"hash": "sha256-Lm5CZ+eBDUNIL2KuK/iKc5dTif7P+E9II714vwvYuyU=",
|
||||
|
||||
@@ -194,8 +194,8 @@ rec {
|
||||
mkTerraform = attrs: pluggable (generic attrs);
|
||||
|
||||
terraform_1 = mkTerraform {
|
||||
version = "1.13.1";
|
||||
hash = "sha256-PuC2wOEEMFaiR9eyF3yI6PLSkqnT/MWdy6RZo6B9zWM=";
|
||||
version = "1.13.2";
|
||||
hash = "sha256-YzPX1PYm8lj3kxOtpenOsiE6zEW8Gq+4UifyP6qDqGw=";
|
||||
vendorHash = "sha256-UcsB5cTae55meJ945fvgowch4EBdaTET2+t5KWvpPQ8=";
|
||||
patches = [ ./provider-path-0_15.patch ];
|
||||
passthru = {
|
||||
|
||||
@@ -11,14 +11,14 @@ let
|
||||
{
|
||||
stable = "0.0.108";
|
||||
ptb = "0.0.159";
|
||||
canary = "0.0.751";
|
||||
canary = "0.0.752";
|
||||
development = "0.0.85";
|
||||
}
|
||||
else
|
||||
{
|
||||
stable = "0.0.359";
|
||||
ptb = "0.0.190";
|
||||
canary = "0.0.857";
|
||||
canary = "0.0.858";
|
||||
development = "0.0.97";
|
||||
};
|
||||
version = versions.${branch};
|
||||
@@ -34,7 +34,7 @@ let
|
||||
};
|
||||
canary = fetchurl {
|
||||
url = "https://canary.dl2.discordapp.net/apps/linux/${version}/discord-canary-${version}.tar.gz";
|
||||
hash = "sha256-cE1BiWwZGrSzvdKDSiAs+Dz/nnxhuVs4JQYMwwY/F5k=";
|
||||
hash = "sha256-6hq0KIXR9j/AHGPyQIXjhf1uJiYizxB5Nu+0unn/frE=";
|
||||
};
|
||||
development = fetchurl {
|
||||
url = "https://development.dl2.discordapp.net/apps/linux/${version}/discord-development-${version}.tar.gz";
|
||||
@@ -52,7 +52,7 @@ let
|
||||
};
|
||||
canary = fetchurl {
|
||||
url = "https://canary.dl2.discordapp.net/apps/osx/${version}/DiscordCanary.dmg";
|
||||
hash = "sha256-omk2vau5LKRhxgcG3k4dYqyc3YH7mZ72Nz4lQyaoO0c=";
|
||||
hash = "sha256-/dVr7ZS6bRccLPz85xxoniZEbkK1qQ3lqedhGuaBIRk=";
|
||||
};
|
||||
development = fetchurl {
|
||||
url = "https://development.dl2.discordapp.net/apps/osx/${version}/DiscordDevelopment.dmg";
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
nspr,
|
||||
nss,
|
||||
pango,
|
||||
systemd,
|
||||
systemdLibs,
|
||||
libappindicator-gtk3,
|
||||
libdbusmenu,
|
||||
writeScript,
|
||||
@@ -99,7 +99,7 @@ in
|
||||
assert lib.assertMsg (
|
||||
enabledDiscordModsCount <= 1
|
||||
) "discord: Only one of Vencord, Equicord or Moonlight can be enabled at the same time";
|
||||
stdenv.mkDerivation rec {
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
inherit
|
||||
pname
|
||||
version
|
||||
@@ -130,7 +130,7 @@ stdenv.mkDerivation rec {
|
||||
libPath = lib.makeLibraryPath (
|
||||
[
|
||||
libcxx
|
||||
systemd
|
||||
systemdLibs
|
||||
libpulseaudio
|
||||
libdrm
|
||||
libgbm
|
||||
@@ -170,7 +170,7 @@ stdenv.mkDerivation rec {
|
||||
libdbusmenu
|
||||
wayland
|
||||
]
|
||||
++ lib.optional withTTS speechd-minimal
|
||||
++ lib.optionals withTTS [ speechd-minimal ]
|
||||
);
|
||||
|
||||
installPhase = ''
|
||||
@@ -192,7 +192,7 @@ stdenv.mkDerivation rec {
|
||||
''} \
|
||||
${lib.strings.optionalString enableAutoscroll "--add-flags \"--enable-blink-features=MiddleClickAutoscroll\""} \
|
||||
--prefix XDG_DATA_DIRS : "${gtk3}/share/gsettings-schemas/${gtk3.name}/" \
|
||||
--prefix LD_LIBRARY_PATH : ${libPath}:$out/opt/${binaryName} \
|
||||
--prefix LD_LIBRARY_PATH : ${finalAttrs.libPath}:$out/opt/${binaryName} \
|
||||
${lib.strings.optionalString disableUpdates "--run ${lib.getExe disableBreakingUpdates}"} \
|
||||
--add-flags ${lib.escapeShellArg commandLineArgs}
|
||||
|
||||
@@ -257,4 +257,4 @@ stdenv.mkDerivation rec {
|
||||
update-source-version ${pname} "$version" --file=./pkgs/applications/networking/instant-messengers/discord/default.nix --version-key=${branch}
|
||||
'';
|
||||
};
|
||||
}
|
||||
})
|
||||
|
||||
@@ -42,14 +42,14 @@
|
||||
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "telegram-desktop-unwrapped";
|
||||
version = "6.1.1";
|
||||
version = "6.1.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "telegramdesktop";
|
||||
repo = "tdesktop";
|
||||
rev = "v${finalAttrs.version}";
|
||||
fetchSubmodules = true;
|
||||
hash = "sha256-gCakI7r0xyJt8rGtaz6vXuG022alezcipNIkyzZEvoA=";
|
||||
hash = "sha256-ElbKzv+QMqH62BGAvNjDDNp7NSJYIEvoDzxKCbEdwqM=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
|
||||
@@ -31,6 +31,11 @@ stdenv.mkDerivation rec {
|
||||
hash = "sha256-KSS8s6Hti1UfwQH3QLnw/gogKxFQJ2R89phQ1l/YjFI=";
|
||||
};
|
||||
|
||||
patches = [
|
||||
# See: <https://github.com/RsyncProject/rsync/pull/790>
|
||||
./fix-tests-in-darwin-sandbox.patch
|
||||
];
|
||||
|
||||
nativeBuildInputs = [
|
||||
updateAutotoolsGnuConfigScriptsHook
|
||||
perl
|
||||
@@ -75,6 +80,8 @@ stdenv.mkDerivation rec {
|
||||
|
||||
doCheck = true;
|
||||
|
||||
__darwinAllowLocalNetworking = true;
|
||||
|
||||
meta = with lib; {
|
||||
description = "Fast incremental file transfer utility";
|
||||
homepage = "https://rsync.samba.org/";
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
From 9b104ed9859f17b6ed4c4ad01806c75a0c197dd7 Mon Sep 17 00:00:00 2001
|
||||
From: Emily <hello@emily.moe>
|
||||
Date: Tue, 5 Aug 2025 15:55:24 +0100
|
||||
Subject: [PATCH] Allow `ls(1)` to fail in test setup
|
||||
|
||||
This can happen when the tests are unable to `stat(2)` some files in
|
||||
`/etc`, `/bin`, or `/`, due to Unix permissions or other sandboxing. We
|
||||
still guard against serious errors, which use exit code 2.
|
||||
---
|
||||
testsuite/longdir.test | 4 ++--
|
||||
testsuite/rsync.fns | 8 ++++----
|
||||
2 files changed, 6 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/testsuite/longdir.test b/testsuite/longdir.test
|
||||
index 8d66bb5f..26747292 100644
|
||||
--- a/testsuite/longdir.test
|
||||
+++ b/testsuite/longdir.test
|
||||
@@ -16,9 +16,9 @@ makepath "$longdir" || test_skipped "unable to create long directory"
|
||||
touch "$longdir/1" || test_skipped "unable to create files in long directory"
|
||||
date > "$longdir/1"
|
||||
if [ -r /etc ]; then
|
||||
- ls -la /etc >"$longdir/2"
|
||||
+ ls -la /etc >"$longdir/2" || [ $? -eq 1 ]
|
||||
else
|
||||
- ls -la / >"$longdir/2"
|
||||
+ ls -la / >"$longdir/2" || [ $? -eq 1 ]
|
||||
fi
|
||||
checkit "$RSYNC --delete -avH '$fromdir/' '$todir'" "$fromdir/" "$todir"
|
||||
|
||||
diff --git a/testsuite/rsync.fns b/testsuite/rsync.fns
|
||||
index 2ab97b69..f7da363f 100644
|
||||
--- a/testsuite/rsync.fns
|
||||
+++ b/testsuite/rsync.fns
|
||||
@@ -195,15 +195,15 @@ hands_setup() {
|
||||
echo some data > "$fromdir/dir/subdir/foobar.baz"
|
||||
mkdir "$fromdir/dir/subdir/subsubdir"
|
||||
if [ -r /etc ]; then
|
||||
- ls -ltr /etc > "$fromdir/dir/subdir/subsubdir/etc-ltr-list"
|
||||
+ ls -ltr /etc > "$fromdir/dir/subdir/subsubdir/etc-ltr-list" || [ $? -eq 1 ]
|
||||
else
|
||||
- ls -ltr / > "$fromdir/dir/subdir/subsubdir/etc-ltr-list"
|
||||
+ ls -ltr / > "$fromdir/dir/subdir/subsubdir/etc-ltr-list" || [ $? -eq 1 ]
|
||||
fi
|
||||
mkdir "$fromdir/dir/subdir/subsubdir2"
|
||||
if [ -r /bin ]; then
|
||||
- ls -lt /bin > "$fromdir/dir/subdir/subsubdir2/bin-lt-list"
|
||||
+ ls -lt /bin > "$fromdir/dir/subdir/subsubdir2/bin-lt-list" || [ $? -eq 1 ]
|
||||
else
|
||||
- ls -lt / > "$fromdir/dir/subdir/subsubdir2/bin-lt-list"
|
||||
+ ls -lt / > "$fromdir/dir/subdir/subsubdir2/bin-lt-list" || [ $? -eq 1 ]
|
||||
fi
|
||||
|
||||
# echo testing head:
|
||||
--
|
||||
2.50.1
|
||||
|
||||
@@ -19,13 +19,13 @@ let
|
||||
}:
|
||||
buildGoModule rec {
|
||||
pname = stname;
|
||||
version = "2.0.6";
|
||||
version = "2.0.8";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "syncthing";
|
||||
repo = "syncthing";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-BHrZJSNuq4PZI6fgbTCfo2hXUmXW/C0TvWzZRkoiaFU=";
|
||||
hash = "sha256-QkCLFztzaH9MvgP6HWUr5Z8yIrKlY6/t2VaZwai/H8Q=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-iYTAnEy0MqJaTz/cdpteealyviwVrpwDzVigo8nnXqs=";
|
||||
@@ -106,6 +106,12 @@ in
|
||||
done
|
||||
|
||||
install -Dm644 etc/linux-desktop/syncthing-ui.desktop $out/share/applications/syncthing-ui.desktop
|
||||
install -Dm644 assets/logo-32.png $out/share/icons/hicolor/32x32/apps/syncthing.png
|
||||
install -Dm644 assets/logo-64.png $out/share/icons/hicolor/64x64/apps/syncthing.png
|
||||
install -Dm644 assets/logo-128.png $out/share/icons/hicolor/128x128/apps/syncthing.png
|
||||
install -Dm644 assets/logo-256.png $out/share/icons/hicolor/256x256/apps/syncthing.png
|
||||
install -Dm644 assets/logo-512.png $out/share/icons/hicolor/512x512/apps/syncthing.png
|
||||
install -Dm644 assets/logo-only.svg $out/share/icons/hicolor/scalable/apps/syncthing.svg
|
||||
|
||||
''
|
||||
+ lib.optionalString (stdenv.hostPlatform.isLinux) ''
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user