Merge branch 'master' into haskell-updates

This commit is contained in:
maralorn 2023-06-19 23:22:52 +02:00
commit 0f1be08db8
No known key found for this signature in database
710 changed files with 25628 additions and 13450 deletions

View file

@ -22,7 +22,7 @@ For new packages please briefly describe the package or provide a link to its ho
- made sure NixOS tests are [linked](https://nixos.org/manual/nixpkgs/unstable/#ssec-nixos-tests-linking) to the relevant packages
- [ ] Tested compilation of all packages that depend on this change using `nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD"`. Note: all changes have to be committed, also see [nixpkgs-review usage](https://github.com/Mic92/nixpkgs-review#usage)
- [ ] Tested basic functionality of all binary files (usually in `./result/bin/`)
- [23.11 Release Notes (or backporting 23.05 Release notes)](https://github.com/NixOS/nixpkgs/blob/master/CONTRIBUTING.md#generating-2305-release-notes)
- [23.11 Release Notes](https://github.com/NixOS/nixpkgs/blob/master/nixos/doc/manual/release-notes/rl-2311.section.md) (or backporting [23.05 Release notes](https://github.com/NixOS/nixpkgs/blob/master/nixos/doc/manual/release-notes/rl-2305.section.md))
- [ ] (Package updates) Added a release notes entry if the change is major or breaking
- [ ] (Module updates) Added a release notes entry if the change is significant
- [ ] (Module addition) Added a release notes entry if adding a new NixOS module

View file

@ -24,7 +24,7 @@ jobs:
with:
ref: ${{ github.event.pull_request.head.sha }}
- name: Create backport PRs
uses: korthout/backport-action@v1.2.0
uses: korthout/backport-action@v1.3.1
with:
# Config README: https://github.com/korthout/backport-action#backport-action
copy_labels_pattern: 'severity:\ssecurity'

View file

@ -19,7 +19,7 @@ jobs:
# we don't limit this action to only NixOS repo since the checks are cheap and useful developer feedback
steps:
- uses: actions/checkout@v3
- uses: cachix/install-nix-action@v21
- uses: cachix/install-nix-action@v22
- uses: cachix/cachix-action@v12
with:
# This cache is for the nixpkgs repo checks and should not be trusted or used elsewhere.

View file

@ -16,7 +16,7 @@ jobs:
with:
# pull_request_target checks out the base branch by default
ref: refs/pull/${{ github.event.pull_request.number }}/merge
- uses: cachix/install-nix-action@v21
- uses: cachix/install-nix-action@v22
with:
# explicitly enable sandbox
extra_nix_config: sandbox = true

View file

@ -1,21 +0,0 @@
#!/usr/bin/env nix-shell
#! nix-shell -i bash -p html-tidy
set -euo pipefail
shopt -s inherit_errexit
normalize() {
tidy \
--anchor-as-name no \
--coerce-endtags no \
--escape-scripts no \
--fix-backslash no \
--fix-style-tags no \
--fix-uri no \
--indent yes \
--wrap 0 \
< "$1" \
2> /dev/null
}
diff -U3 <(normalize "$1") <(normalize "$2")

View file

@ -28,7 +28,7 @@ jobs:
with:
# pull_request_target checks out the base branch by default
ref: refs/pull/${{ github.event.pull_request.number }}/merge
- uses: cachix/install-nix-action@v21
- uses: cachix/install-nix-action@v22
with:
# nixpkgs commit is pinned so that it doesn't break
# editorconfig-checker 2.4.0

View file

@ -18,7 +18,7 @@ jobs:
with:
# pull_request_target checks out the base branch by default
ref: refs/pull/${{ github.event.pull_request.number }}/merge
- uses: cachix/install-nix-action@v21
- uses: cachix/install-nix-action@v22
with:
# explicitly enable sandbox
extra_nix_config: sandbox = true
@ -27,13 +27,5 @@ jobs:
# This cache is for the nixpkgs repo checks and should not be trusted or used elsewhere.
name: nixpkgs-ci
signingKey: '${{ secrets.CACHIX_SIGNING_KEY }}'
- name: Building NixOS manual with DocBook options
- name: Building NixOS manual
run: NIX_PATH=nixpkgs=$(pwd) nix-build --option restrict-eval true nixos/release.nix -A manual.x86_64-linux
- name: Building NixOS manual with Markdown options
run: |
export NIX_PATH=nixpkgs=$(pwd)
nix-build \
--option restrict-eval true \
--arg configuration '{ documentation.nixos.options.allowDocBook = false; }' \
nixos/release.nix \
-A manual.x86_64-linux

View file

@ -19,7 +19,7 @@ jobs:
with:
# pull_request_target checks out the base branch by default
ref: refs/pull/${{ github.event.pull_request.number }}/merge
- uses: cachix/install-nix-action@v21
- uses: cachix/install-nix-action@v22
with:
# explicitly enable sandbox
extra_nix_config: sandbox = true

View file

@ -1,64 +0,0 @@
name: "Check NixOS Manual DocBook rendering against MD rendering"
on:
schedule:
# * is a special character in YAML so you have to quote this string
# Check every 24 hours
- cron: '0 0 * * *'
permissions:
contents: read
jobs:
check-rendering-equivalence:
permissions:
pull-requests: write # for peter-evans/create-or-update-comment to create or update comment
if: github.repository_owner == 'NixOS'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: cachix/install-nix-action@v21
with:
# explicitly enable sandbox
extra_nix_config: sandbox = true
- uses: cachix/cachix-action@v12
with:
# This cache is for the nixpkgs repo checks and should not be trusted or used elsewhere.
name: nixpkgs-ci
signingKey: '${{ secrets.CACHIX_SIGNING_KEY }}'
- name: Build DocBook and MD manuals
run: |
export NIX_PATH=nixpkgs=$(pwd)
nix-build \
--option restrict-eval true \
-o docbook nixos/release.nix \
-A manual.x86_64-linux
nix-build \
--option restrict-eval true \
--arg configuration '{ documentation.nixos.options.allowDocBook = false; }' \
-o md nixos/release.nix \
-A manual.x86_64-linux
- name: Compare DocBook and MD manuals
id: check
run: |
export NIX_PATH=nixpkgs=$(pwd)
.github/workflows/compare-manuals.sh \
docbook/share/doc/nixos/options.html \
md/share/doc/nixos/options.html
# if the manual can't be built we don't want to notify anyone.
# while this may temporarily hide rendering failures it will be a lot
# less noisy until all nixpkgs pull requests have stopped using
# docbook for option docs.
- name: Comment on failure
uses: peter-evans/create-or-update-comment@v3
if: ${{ failure() && steps.check.conclusion == 'failure' }}
with:
issue-number: 189318
body: |
Markdown and DocBook manuals do not agree.
Check https://github.com/NixOS/nixpkgs/actions/runs/${{ github.run_id }} for details.

View file

@ -17,7 +17,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: cachix/install-nix-action@v21
- uses: cachix/install-nix-action@v22
with:
nix_path: nixpkgs=channel:nixpkgs-unstable
- name: setup

View file

@ -161,19 +161,6 @@ Anything that does not cause user or downstream dependency regressions can be ba
- Services which require a client to be up-to-date regardless. (E.g. `spotify`, `steam`, or `discord`)
- Security critical applications (E.g. `firefox`)
## Generating 23.11 Release Notes
<!--
note: title unchanged even though we don't need regeneration because extant
PRs will link here. definitely change the title for 23.11 though.
-->
Documentation in nixpkgs is transitioning to a markdown-centric workflow. In the past release notes required a translation step to convert from markdown to a compatible docbook document, but this is no longer necessary.
Steps for updating 23.11 Release notes:
1. Edit `nixos/doc/manual/release-notes/rl-2311.section.md` with the desired changes
2. Commit changes to `rl-2311.section.md`.
## Reviewing contributions
See the nixpkgs manual for more details on how to [Review contributions](https://nixos.org/nixpkgs/manual/#chap-reviewing-contributions).

View file

@ -138,7 +138,7 @@ let
mergeDefaultOption mergeOneOption mergeEqualOption mergeUniqueOption
getValues getFiles
optionAttrSetToDocList optionAttrSetToDocList'
scrubOptionValue literalExpression literalExample literalDocBook
scrubOptionValue literalExpression literalExample
showOption showOptionWithDefLocs showFiles
unknownModule mkOption mkPackageOption mkPackageOptionMD
mdDoc literalMD;

View file

@ -98,6 +98,11 @@ in mkLicense lset) ({
fullName = "Artistic License 1.0";
};
artistic1-cl8 = {
spdxId = "Artistic-1.0-cl8";
fullName = "Artistic License 1.0 w/clause 8";
};
artistic2 = {
spdxId = "Artistic-2.0";
fullName = "Artistic License 2.0";
@ -295,11 +300,26 @@ in mkLicense lset) ({
free = false;
};
cc-by-sa-10 = {
spdxId = "CC-BY-SA-1.0";
fullName = "Creative Commons Attribution Share Alike 1.0";
};
cc-by-sa-20 = {
spdxId = "CC-BY-SA-2.0";
fullName = "Creative Commons Attribution Share Alike 2.0";
};
cc-by-sa-25 = {
spdxId = "CC-BY-SA-2.5";
fullName = "Creative Commons Attribution Share Alike 2.5";
};
cc-by-10 = {
spdxId = "CC-BY-1.0";
fullName = "Creative Commons Attribution 1.0";
};
cc-by-30 = {
spdxId = "CC-BY-3.0";
fullName = "Creative Commons Attribution 3.0";
@ -486,6 +506,16 @@ in mkLicense lset) ({
url = "http://www.schristiancollins.com/generaluser.php"; # license included in sources
};
gfl = {
fullName = "GUST Font License";
url = "http://www.gust.org.pl/fonts/licenses/GUST-FONT-LICENSE.txt";
};
gfsl = {
fullName = "GUST Font Source License";
url = "http://www.gust.org.pl/fonts/licenses/GUST-FONT-SOURCE-LICENSE.txt";
};
gpl1Only = {
spdxId = "GPL-1.0-only";
fullName = "GNU General Public License v1.0 only";
@ -626,6 +656,11 @@ in mkLicense lset) ({
free = false;
};
knuth = {
fullName = "Knuth CTAN License";
spdxId = "Knuth-CTAN";
};
lal12 = {
spdxId = "LAL-1.2";
fullName = "Licence Art Libre 1.2";
@ -702,11 +737,21 @@ in mkLicense lset) ({
url = "https://opensource.franz.com/preamble.html";
};
lppl1 = {
spdxId = "LPPL-1.0";
fullName = "LaTeX Project Public License v1.0";
};
lppl12 = {
spdxId = "LPPL-1.2";
fullName = "LaTeX Project Public License v1.2";
};
lppl13a = {
spdxId = "LPPL-1.3a";
fullName = "LaTeX Project Public License v1.3a";
};
lppl13c = {
spdxId = "LPPL-1.3c";
fullName = "LaTeX Project Public License v1.3c";

View file

@ -134,11 +134,6 @@ let
${if prefix == []
then null # unset => visible
else "internal"} = true;
# TODO: hidden during the markdown transition to not expose downstream
# users of the docs infra to markdown if they're not ready for it.
# we don't make this visible conditionally because it can impact
# performance (https://github.com/NixOS/nixpkgs/pull/208407#issuecomment-1368246192)
visible = false;
# TODO: Change the type of this option to a submodule with a
# freeformType, so that individual arguments can be documented
# separately
@ -1146,14 +1141,11 @@ let
use = id;
};
/* Transitional version of mkAliasOptionModule that uses MD docs. */
mkAliasOptionModuleMD = from: to: doRename {
inherit from to;
visible = true;
warn = false;
use = id;
markdown = true;
};
/* Transitional version of mkAliasOptionModule that uses MD docs.
This function is no longer necessary and merely an alias of `mkAliasOptionModule`.
*/
mkAliasOptionModuleMD = mkAliasOptionModule;
/* mkDerivedConfig : Option a -> (a -> Definition b) -> Definition b
@ -1175,7 +1167,7 @@ let
(opt.highestPrio or defaultOverridePriority)
(f opt.value);
doRename = { from, to, visible, warn, use, withPriority ? true, markdown ? false }:
doRename = { from, to, visible, warn, use, withPriority ? true }:
{ config, options, ... }:
let
fromOpt = getAttrFromPath from options;
@ -1186,9 +1178,7 @@ let
{
options = setAttrByPath from (mkOption {
inherit visible;
description = if markdown
then lib.mdDoc "Alias of {option}`${showOption to}`."
else "Alias of <option>${showOption to}</option>.";
description = "Alias of {option}`${showOption to}`.";
apply = x: use (toOf config);
} // optionalAttrs (toType != null) {
type = toType;

View file

@ -100,10 +100,7 @@ rec {
name: mkOption {
default = false;
example = true;
description =
if name ? _type && name._type == "mdDoc"
then lib.mdDoc "Whether to enable ${name.text}."
else "Whether to enable ${name}.";
description = "Whether to enable ${name}.";
type = lib.types.bool;
};
@ -185,10 +182,10 @@ rec {
(if isList example then "pkgs." + concatStringsSep "." example else example);
});
/* Like mkPackageOption, but emit an mdDoc description instead of DocBook. */
mkPackageOptionMD = pkgs: name: extra:
let option = mkPackageOption pkgs name extra;
in option // { description = lib.mdDoc option.description; };
/* Alias of mkPackageOption. Previously used to create options with markdown
documentation, which is no longer required.
*/
mkPackageOptionMD = mkPackageOption;
/* This option accepts anything, but it does not produce any result.
@ -344,26 +341,12 @@ rec {
if ! isString text then throw "literalExpression expects a string."
else { _type = "literalExpression"; inherit text; };
literalExample = lib.warn "literalExample is deprecated, use literalExpression instead, or use literalDocBook for a non-Nix description." literalExpression;
/* For use in the `defaultText` and `example` option attributes. Causes the
given DocBook text to be inserted verbatim in the documentation, for when
a `literalExpression` would be too hard to read.
*/
literalDocBook = text:
if ! isString text then throw "literalDocBook expects a string."
else
lib.warnIf (lib.isInOldestRelease 2211)
"literalDocBook is deprecated, use literalMD instead"
{ _type = "literalDocBook"; inherit text; };
literalExample = lib.warn "literalExample is deprecated, use literalExpression instead, or use literalMD for a non-Nix description." literalExpression;
/* Transition marker for documentation that's already migrated to markdown
syntax.
syntax. This is a no-op and no longer needed.
*/
mdDoc = text:
if ! isString text then throw "mdDoc expects a string."
else { _type = "mdDoc"; inherit text; };
mdDoc = lib.id;
/* For use in the `defaultText` and `example` option attributes. Causes the
given MD text to be inserted verbatim in the documentation, for when

View file

@ -18,6 +18,7 @@ rec {
cascadelake = [ "sse3" "ssse3" "sse4_1" "sse4_2" "aes" "avx" "avx2" "avx512" "fma" ];
cooperlake = [ "sse3" "ssse3" "sse4_1" "sse4_2" "aes" "avx" "avx2" "avx512" "fma" ];
tigerlake = [ "sse3" "ssse3" "sse4_1" "sse4_2" "aes" "avx" "avx2" "avx512" "fma" ];
alderlake = [ "sse3" "ssse3" "sse4_1" "sse4_2" "aes" "avx" "avx2" "fma" ];
# x86_64 AMD
btver1 = [ "sse3" "ssse3" "sse4_1" "sse4_2" ];
btver2 = [ "sse3" "ssse3" "sse4_1" "sse4_2" "aes" "avx" ];
@ -28,6 +29,7 @@ rec {
znver1 = [ "sse3" "ssse3" "sse4_1" "sse4_2" "sse4a" "aes" "avx" "avx2" "fma" ];
znver2 = [ "sse3" "ssse3" "sse4_1" "sse4_2" "sse4a" "aes" "avx" "avx2" "fma" ];
znver3 = [ "sse3" "ssse3" "sse4_1" "sse4_2" "sse4a" "aes" "avx" "avx2" "fma" ];
znver4 = [ "sse3" "ssse3" "sse4_1" "sse4_2" "sse4a" "aes" "avx" "avx2" "avx512" "fma" ];
# other
armv5te = [ ];
armv6 = [ ];
@ -55,6 +57,8 @@ rec {
cascadelake = [ "skylake-avx512" ] ++ inferiors.cannonlake;
cooperlake = [ "cascadelake" ] ++ inferiors.cascadelake;
tigerlake = [ "icelake-server" ] ++ inferiors.icelake-server;
# CX16 does not exist on alderlake, while it does on nearly all other intel CPUs
alderlake = [ ];
# x86_64 AMD
# TODO: fill this (need testing)
@ -86,6 +90,7 @@ rec {
znver1 = [ "skylake" ] ++ inferiors.skylake;
znver2 = [ "znver1" ] ++ inferiors.znver1;
znver3 = [ "znver2" ] ++ inferiors.znver2;
znver4 = [ "znver3" ] ++ inferiors.znver3;
# other
armv5te = [ ];

View file

@ -226,8 +226,7 @@ rec {
};
wine = (pkgs.winePackagesFor "wine${toString final.parsed.cpu.bits}").minimal;
in
if final.parsed.kernel.name == pkgs.stdenv.hostPlatform.parsed.kernel.name &&
pkgs.stdenv.hostPlatform.canExecute final
if pkgs.stdenv.hostPlatform.canExecute final
then "${pkgs.runtimeShell} -c '\"$@\"' --"
else if final.isWindows
then "${wine}/bin/wine${lib.optionalString (final.parsed.cpu.bits == 64) "64"}"

View file

@ -1957,6 +1957,16 @@
fingerprint = "E9A3 7864 2165 28CE 507C CA82 72EA BF75 C331 CD25";
}];
};
Benjamin-L = {
name = "Benjamin Lee";
email = "benjamin@computer.surgery";
matrix = "@benjamin:computer.surgery";
github = "Benjamin-L";
githubId = 6504174;
keys = [{
fingerprint = "9D84 09A0 44FC 1EEB AE2D FA30 FB96 24E2 885D 55A4";
}];
};
benkuhn = {
email = "ben@ben-kuhn.com";
github = "ben-kuhn";
@ -5795,6 +5805,13 @@
githubId = 48872998;
name = "Seth";
};
getpsyched = {
name = "Priyanshu Tripathi";
email = "priyanshutr@proton.me";
matrix = "@getpsyched:matrix.org";
github = "getpsyched";
githubId = 43472218;
};
gfrascadorio = {
email = "gfrascadorio@tutanota.com";
github = "gfrascadorio";
@ -6623,6 +6640,11 @@
fingerprint = "78C2 E81C 828A 420B 269A EBC1 49FA 39F8 A7F7 35F9";
}];
};
hulr = {
github = "hulr";
githubId = 17255815;
name = "hulr";
};
humancalico = {
email = "humancalico@disroot.org";
github = "humancalico";
@ -7109,6 +7131,12 @@
github = "j4m3s-s";
githubId = 9413812;
};
jacfal = {
name = "Jakub Pravda";
email = "me@jakubpravda.net";
github = "jakub-pravda";
githubId = 16310411;
};
jacg = {
name = "Jacek Generowicz";
email = "jacg@my-post-office.net";
@ -11852,7 +11880,7 @@
name = "Kartik Gokte";
};
nullishamy = {
email = "amy.codes@null.net";
email = "spam@amyerskine.me";
name = "nullishamy";
github = "nullishamy";
githubId = 99221043;
@ -12050,6 +12078,15 @@
github = "jackyliu16";
githubId = 50787361;
};
onemoresuza = {
name = "Coutinho de Souza";
email = "dev@onemoresuza.mailer.me";
github = "onemoresuza";
githubId = 106456302;
keys = [{
fingerprint = "484F D3B8 BAD7 BF5D 8B68 2AEA A2ED 1159 935E 4D7E";
}];
};
onixie = {
email = "onixie@gmail.com";
github = "onixie";
@ -12614,6 +12651,12 @@
githubId = 421510;
name = "Noé Rubinstein";
};
pho = {
email = "phofin@gmail.com";
github = "pho";
githubId = 88469;
name = "Jaime Breva";
};
photex = {
email = "photex@gmail.com";
github = "photex";
@ -13675,7 +13718,7 @@
name = "Riley Inman";
};
riotbib = {
email = "github-nix@lnrt.de";
email = "lennart@cope.cool";
github = "riotbib";
githubId = 43172581;
name = "Lennart Mühlenmeier";
@ -14543,6 +14586,12 @@
fingerprint = "A317 37B3 693C 921B 480C C629 4A2A AAA3 82F8 294C";
}];
};
sestrella = {
email = "sestrella.me@gmail.com";
github = "sestrella";
githubId = 2049686;
name = "Sebastián Estrella";
};
seylerius = {
name = "Sable Seyler";
email = "sable@seyleri.us";
@ -14767,6 +14816,12 @@
githubId = 16090;
name = "Yann Hodique";
};
sigmanificient = {
email = "sigmanificient@gmail.com";
github = "Sigmanificient";
githubId = 53050011;
name = "Yohann Boniface";
};
sikmir = {
email = "sikmir@disroot.org";
github = "sikmir";

View file

@ -6,7 +6,6 @@
, extraSources ? []
, baseOptionsJSON ? null
, warningsAreErrors ? true
, allowDocBook ? true
, prefix ? ../../..
}:
@ -17,10 +16,6 @@ let
lib = pkgs.lib;
docbook_xsl_ns = pkgs.docbook-xsl-ns.override {
withManOptDedupPatch = true;
};
manpageUrls = pkgs.path + "/doc/manpage-urls.json";
# We need to strip references to /nix/store/* from options,
@ -33,7 +28,7 @@ let
stripAnyPrefixes = lib.flip (lib.foldr lib.removePrefix) prefixesToStrip;
optionsDoc = buildPackages.nixosOptionsDoc {
inherit options revision baseOptionsJSON warningsAreErrors allowDocBook;
inherit options revision baseOptionsJSON warningsAreErrors;
transformOptions = opt: opt // {
# Clean up declaration sites to not refer to the NixOS source tree.
declarations = map stripAnyPrefixes opt.declarations;
@ -68,73 +63,6 @@ let
optionIdPrefix = "test-opt-";
};
toc = builtins.toFile "toc.xml"
''
<toc role="chunk-toc">
<d:tocentry xmlns:d="http://docbook.org/ns/docbook" linkend="book-nixos-manual"><?dbhtml filename="index.html"?>
<d:tocentry linkend="ch-options"><?dbhtml filename="options.html"?></d:tocentry>
<d:tocentry linkend="ch-release-notes"><?dbhtml filename="release-notes.html"?></d:tocentry>
</d:tocentry>
</toc>
'';
manualXsltprocOptions = toString [
"--param chapter.autolabel 0"
"--param part.autolabel 0"
"--param preface.autolabel 0"
"--param reference.autolabel 0"
"--param section.autolabel 0"
"--stringparam html.stylesheet 'style.css overrides.css highlightjs/mono-blue.css'"
"--stringparam html.script './highlightjs/highlight.pack.js ./highlightjs/loader.js'"
"--param xref.with.number.and.title 0"
"--param toc.section.depth 0"
"--param generate.consistent.ids 1"
"--stringparam admon.style ''"
"--stringparam callout.graphics.extension .svg"
"--stringparam current.docid manual"
"--param chunk.section.depth 0"
"--param chunk.first.sections 1"
"--param use.id.as.filename 1"
"--stringparam chunk.toc ${toc}"
];
linterFunctions = ''
# outputs the context of an xmllint error output
# LEN lines around the failing line are printed
function context {
# length of context
local LEN=6
# lines to print before error line
local BEFORE=4
# xmllint output lines are:
# file.xml:1234: there was an error on line 1234
while IFS=':' read -r file line rest; do
echo
if [[ -n "$rest" ]]; then
echo "$file:$line:$rest"
local FROM=$(($line>$BEFORE ? $line - $BEFORE : 1))
# number lines & filter context
nl --body-numbering=a "$file" | sed -n "$FROM,+$LEN p"
else
if [[ -n "$line" ]]; then
echo "$file:$line"
else
echo "$file"
fi
fi
done
}
function lintrng {
xmllint --debug --noout --nonet \
--relaxng ${docbook5}/xml/rng/docbook/docbook.rng \
"$1" \
2>&1 | context 1>&2
# ^ redirect assumes xmllint doesnt print to stdout
}
'';
prepareManualFromMD = ''
cp -r --no-preserve=all $inputs/* .
@ -154,61 +82,13 @@ let
${testOptionsDoc.optionsJSON}/share/doc/nixos/options.json
'';
manual-combined = runCommand "nixos-manual-combined"
{ inputs = lib.sourceFilesBySuffices ./. [ ".xml" ".md" ];
nativeBuildInputs = [ pkgs.nixos-render-docs pkgs.libxml2.bin pkgs.libxslt.bin ];
meta.description = "The NixOS manual as plain docbook XML";
}
''
${prepareManualFromMD}
nixos-render-docs -j $NIX_BUILD_CORES manual docbook \
--manpage-urls ${manpageUrls} \
--revision ${lib.escapeShellArg revision} \
./manual.md \
./manual-combined-pre.xml
xsltproc \
-o manual-combined.xml ${./../../lib/make-options-doc/postprocess-option-descriptions.xsl} \
manual-combined-pre.xml
${linterFunctions}
mkdir $out
cp manual-combined.xml $out/
lintrng $out/manual-combined.xml
'';
manpages-combined = runCommand "nixos-manpages-combined.xml"
{ nativeBuildInputs = [ buildPackages.libxml2.bin buildPackages.libxslt.bin ];
meta.description = "The NixOS manpages as plain docbook XML";
}
''
mkdir generated
cp -prd ${./man-pages.xml} man-pages.xml
ln -s ${optionsDoc.optionsDocBook} generated/options-db.xml
xmllint --xinclude --noxincludenode --output $out ./man-pages.xml
${linterFunctions}
lintrng $out
'';
in rec {
inherit (optionsDoc) optionsJSON optionsNix optionsDocBook optionsUsedDocbook;
inherit (optionsDoc) optionsJSON optionsNix optionsDocBook;
# Generate the NixOS manual.
manualHTML = runCommand "nixos-manual-html"
{ nativeBuildInputs =
if allowDocBook then [
buildPackages.libxml2.bin
buildPackages.libxslt.bin
] else [
buildPackages.nixos-render-docs
];
inputs = lib.optionals (! allowDocBook) (lib.sourceFilesBySuffices ./. [ ".md" ]);
{ nativeBuildInputs = [ buildPackages.nixos-render-docs ];
inputs = lib.sourceFilesBySuffices ./. [ ".md" ];
meta.description = "The NixOS manual in HTML format";
allowedReferences = ["out"];
}
@ -221,38 +101,21 @@ in rec {
cp ${../../../doc/overrides.css} $dst/overrides.css
cp -r ${pkgs.documentation-highlighter} $dst/highlightjs
${if allowDocBook then ''
xsltproc \
${manualXsltprocOptions} \
--stringparam id.warnings "1" \
--nonet --output $dst/ \
${docbook_xsl_ns}/xml/xsl/docbook/xhtml/chunktoc.xsl \
${manual-combined}/manual-combined.xml \
|& tee xsltproc.out
grep "^ID recommended on" xsltproc.out &>/dev/null && echo "error: some IDs are missing" && false
rm xsltproc.out
${prepareManualFromMD}
mkdir -p $dst/images/callouts
cp ${docbook_xsl_ns}/xml/xsl/docbook/images/callouts/*.svg $dst/images/callouts/
'' else ''
${prepareManualFromMD}
# TODO generator is set like this because the docbook/md manual compare workflow will
# trigger if it's different
nixos-render-docs -j $NIX_BUILD_CORES manual html \
--manpage-urls ${manpageUrls} \
--revision ${lib.escapeShellArg revision} \
--generator "DocBook XSL Stylesheets V${docbook_xsl_ns.version}" \
--stylesheet style.css \
--stylesheet overrides.css \
--stylesheet highlightjs/mono-blue.css \
--script ./highlightjs/highlight.pack.js \
--script ./highlightjs/loader.js \
--toc-depth 1 \
--chunk-toc-depth 1 \
./manual.md \
$dst/index.html
''}
nixos-render-docs -j $NIX_BUILD_CORES manual html \
--manpage-urls ${manpageUrls} \
--revision ${lib.escapeShellArg revision} \
--generator "nixos-render-docs ${lib.version}" \
--stylesheet style.css \
--stylesheet overrides.css \
--stylesheet highlightjs/mono-blue.css \
--script ./highlightjs/highlight.pack.js \
--script ./highlightjs/loader.js \
--toc-depth 1 \
--chunk-toc-depth 1 \
./manual.md \
$dst/index.html
mkdir -p $out/nix-support
echo "nix-build out $out" >> $out/nix-support/hydra-build-products
@ -318,10 +181,6 @@ in rec {
manpages = runCommand "nixos-manpages"
{ nativeBuildInputs = [
buildPackages.installShellFiles
] ++ lib.optionals allowDocBook [
buildPackages.libxml2.bin
buildPackages.libxslt.bin
] ++ lib.optionals (! allowDocBook) [
buildPackages.nixos-render-docs
];
allowedReferences = ["out"];
@ -330,24 +189,11 @@ in rec {
# Generate manpages.
mkdir -p $out/share/man/man8
installManPage ${./manpages}/*
${if allowDocBook
then ''
xsltproc --nonet \
--maxdepth 6000 \
--param man.output.in.separate.dir 1 \
--param man.output.base.dir "'$out/share/man/'" \
--param man.endnotes.are.numbered 0 \
--param man.break.after.slash 1 \
${docbook_xsl_ns}/xml/xsl/docbook/manpages/docbook.xsl \
${manpages-combined}
''
else ''
mkdir -p $out/share/man/man5
nixos-render-docs -j $NIX_BUILD_CORES options manpage \
--revision ${lib.escapeShellArg revision} \
${optionsJSON}/share/doc/nixos/options.json \
$out/share/man/man5/configuration.nix.5
''}
mkdir -p $out/share/man/man5
nixos-render-docs -j $NIX_BUILD_CORES options manpage \
--revision ${lib.escapeShellArg revision} \
${optionsJSON}/share/doc/nixos/options.json \
$out/share/man/man5/configuration.nix.5
'';
}

View file

@ -1,46 +0,0 @@
<reference xmlns="http://docbook.org/ns/docbook"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:xi="http://www.w3.org/2001/XInclude">
<title>NixOS Reference Pages</title>
<info>
<author>
<personname><firstname>Eelco</firstname><surname>Dolstra</surname></personname>
<contrib>Author</contrib>
</author>
<author>
<personname><othername>The Nixpkgs/NixOS contributors</othername></personname>
<contrib>Author</contrib>
</author>
<copyright><year>2007-2022</year><holder>Eelco Dolstra and the Nixpkgs/NixOS contributors</holder>
</copyright>
</info>
<refentry>
<refmeta>
<refentrytitle><filename>configuration.nix</filename>
</refentrytitle><manvolnum>5</manvolnum>
<refmiscinfo class="source">NixOS</refmiscinfo>
<!-- <refmiscinfo class="version"><xi:include href="version.txt" parse="text"/></refmiscinfo> -->
</refmeta>
<refnamediv>
<refname><filename>configuration.nix</filename></refname>
<refpurpose>NixOS system configuration specification</refpurpose>
</refnamediv>
<refsection>
<title>Description</title>
<para>
The file <filename>/etc/nixos/configuration.nix</filename> contains the
declarative specification of your NixOS system configuration. The command
<command>nixos-rebuild</command> takes this file and realises the system
configuration specified therein.
</para>
</refsection>
<refsection>
<title>Options</title>
<para>
You can use the following options in <filename>configuration.nix</filename>.
</para>
<xi:include href="./generated/options-db.xml"
xpointer="configuration-variable-list" />
</refsection>
</refentry>
</reference>

View file

@ -36,17 +36,44 @@
- `util-linux` is now supported on Darwin and is no longer an alias to `unixtools`. Use the `unixtools.util-linux` package for access to the Apple variants of the utilities.
- The `vlock` program from the `kbd` package has been moved into its own package output and should now be referenced explicitly as `kbd.vlock` or replaced with an alternative such as the standalone `vlock` package or `physlock`.
- `fileSystems.<name>.autoFormat` now uses `systemd-makefs`, which does not accept formatting options. Therefore, `fileSystems.<name>.formatOptions` has been removed.
- `fileSystems.<name>.autoResize` now uses `systemd-growfs` to resize the file system online in stage 2. This means that `f2fs` and `ext2` can no longer be auto resized, while `xfs` and `btrfs` now can be.
- The following packages in `haskellPackages` have now a separate bin output: `cabal-fmt`, `calligraphy`, `eventlog2html`, `ghc-debug-brick`, `hindent`, `nixfmt`, `releaser`. This means you need to replace e.g. `"${pkgs.haskellPackages.nixfmt}/bin/nixfmt"` with `"${lib.getBin pkgs.haskellPackages.nixfmt}/bin/nixfmt"` or `"${lib.getExe pkgs.haskellPackages.nixfmt}"`. The binaries also wont be in scope if you rely on them being installed e.g. via `ghcWithPackages`. `environment.packages` picks the `bin` output automatically, so for normal installation no intervention is required. Also, toplevel attributes like `pkgs.nixfmt` are not impacted negatively by this change.
- `services.lemmy.settings.federation` was removed in 0.17.0 and no longer has any effect. To enable federation, the hostname must be set in the configuration file and then federation must be enabled in the admin web UI. See the [release notes](https://github.com/LemmyNet/lemmy/blob/c32585b03429f0f76d1e4ff738786321a0a9df98/RELEASES.md#upgrade-instructions) for more details.
- The following packages in `haskellPackages` have now a separate bin output: `cabal-fmt`, `calligraphy`, `eventlog2html`, `ghc-debug-brick`, `hindent`, `nixfmt`, `releaser`. This means you need to replace e.g. `"${pkgs.haskellPackages.nixfmt}/bin/nixfmt"` with `"${lib.getBin pkgs.haskellPackages.nixfmt}/bin/nixfmt"` or `"${lib.getExe pkgs.haskellPackages.nixfmt}"`. The binaries also wont be in scope if you rely on them being installed e.g. via `ghcWithPackages`. `environment.packages` picks the `bin` output automatically, so for normal installation no intervention is required. Also, toplevel attributes like `pkgs.nixfmt` are not impacted negatively by this change.
## Other Notable Changes {#sec-release-23.11-notable-changes}
- The Cinnamon module now enables XDG desktop integration by default. If you are experiencing collisions related to xdg-desktop-portal-gtk you can safely remove `xdg.portal.extraPortals = [ pkgs.xdg-desktop-portal-gtk ];` from your NixOS configuration.
- `fontconfig` now defaults to using greyscale antialiasing instead of subpixel antialiasing because of a [recommendation from one of the downstreams](https://gitlab.freedesktop.org/fontconfig/fontconfig/-/issues/337). You can change this value by configuring [](#opt-fonts.fontconfig.subpixel.rgba) accordingly.
- The latest available version of Nextcloud is v27 (available as `pkgs.nextcloud27`). The installation logic is as follows:
- If [`services.nextcloud.package`](#opt-services.nextcloud.package) is specified explicitly, this package will be installed (**recommended**)
- If [`system.stateVersion`](#opt-system.stateVersion) is >=23.11, `pkgs.nextcloud27` will be installed by default.
- If [`system.stateVersion`](#opt-system.stateVersion) is >=23.05, `pkgs.nextcloud26` will be installed by default.
- Please note that an upgrade from v25 (or older) to v27 directly is not possible. Please upgrade to `nextcloud26` (or earlier) first. Nextcloud prohibits skipping major versions while upgrading. You can upgrade by declaring [`services.nextcloud.package = pkgs.nextcloud26;`](options.html#opt-services.nextcloud.package).
- A new option was added to the virtualisation module that enables specifying explicitly named network interfaces in QEMU VMs. The existing `virtualisation.vlans` is still supported for cases where the name of the network interface is irrelevant.
- DocBook option documentation is no longer supported, all module documentation now uses markdown.
- `services.nginx` gained a `defaultListen` option at server-level with support for PROXY protocol listeners, also `proxyProtocol` is now exposed in `services.nginx.virtualHosts.<name>.listen` option. It is now possible to run PROXY listeners and non-PROXY listeners at a server-level, see [#213510](https://github.com/NixOS/nixpkgs/pull/213510/) for more details.
## Nixpkgs internals {#sec-release-23.11-nixpkgs-internals}
- The `qemu-vm.nix` module by default now identifies block devices via
persistent names available in `/dev/disk/by-*`. Because the rootDevice is
identfied by its filesystem label, it needs to be formatted before the VM is
started. The functionality of automatically formatting the rootDevice in the
initrd is removed from the QEMU module. However, for tests that depend on
this functionality, a test utility for the scripted initrd is added
(`nixos/tests/common/auto-format-root-device.nix`). To use this in a NixOS
test, import the module, e.g. `imports = [
./common/auto-format-root-device.nix ];` When you use the systemd initrd, you
can automatically format the root device by setting
`virtualisation.fileSystems."/".autoFormat = true;`.

View file

@ -573,6 +573,7 @@ let format' = format; in let
# In this throwaway resource, we only have /dev/vda, but the actual VM may refer to another disk for bootloader, e.g. /dev/vdb
# Use this option to create a symlink from vda to any arbitrary device you want.
${optionalString (config.boot.loader.grub.device != "/dev/vda") ''
mkdir -p $(dirname ${config.boot.loader.grub.device})
ln -s /dev/vda ${config.boot.loader.grub.device}
''}

View file

@ -39,12 +39,17 @@
# allow docbook option docs if `true`. only markdown documentation is allowed when set to
# `false`, and a different renderer may be used with different bugs and performance
# characteristics but (hopefully) indistinguishable output.
, allowDocBook ? true
# deprecated since 23.11.
# TODO remove in a while.
, allowDocBook ? false
# whether lib.mdDoc is required for descriptions to be read as markdown.
# !!! when this is eventually flipped to true, `lib.doRename` should also default to emitting Markdown
, markdownByDefault ? false
# deprecated since 23.11.
# TODO remove in a while.
, markdownByDefault ? true
}:
assert markdownByDefault && ! allowDocBook;
let
rawOpts = lib.optionAttrSetToDocList options;
transformedOpts = map transformOptions rawOpts;
@ -134,10 +139,17 @@ in rec {
TOUCH_IF_DB=$dst/.used-docbook \
python ${./mergeJSON.py} \
${lib.optionalString warningsAreErrors "--warnings-are-errors"} \
${if allowDocBook then "--warn-on-docbook" else "--error-on-docbook"} \
$baseJSON $options \
> $dst/options.json
if grep /nixpkgs/nixos/modules $dst/options.json; then
echo "The manual appears to depend on the location of Nixpkgs, which is bad"
echo "since this prevents sharing via the NixOS channel. This is typically"
echo "caused by an option default that refers to a relative path (see above"
echo "for hints about the offending path)."
exit 1
fi
brotli -9 < $dst/options.json > $dst/options.json.br
mkdir -p $out/nix-support
@ -145,38 +157,19 @@ in rec {
echo "file json-br $dst/options.json.br" >> $out/nix-support/hydra-build-products
'';
optionsUsedDocbook = pkgs.runCommand "options-used-docbook" {} ''
if [ -e ${optionsJSON}/share/doc/nixos/.used-docbook ]; then
echo 1
else
echo 0
fi >"$out"
'';
optionsDocBook = pkgs.runCommand "options-docbook.xml" {
nativeBuildInputs = [
pkgs.nixos-render-docs
];
} ''
nixos-render-docs -j $NIX_BUILD_CORES options docbook \
--manpage-urls ${pkgs.path + "/doc/manpage-urls.json"} \
--revision ${lib.escapeShellArg revision} \
--document-type ${lib.escapeShellArg documentType} \
--varlist-id ${lib.escapeShellArg variablelistId} \
--id-prefix ${lib.escapeShellArg optionIdPrefix} \
${lib.optionalString markdownByDefault "--markdown-by-default"} \
${optionsJSON}/share/doc/nixos/options.json \
options.xml
if grep /nixpkgs/nixos/modules options.xml; then
echo "The manual appears to depend on the location of Nixpkgs, which is bad"
echo "since this prevents sharing via the NixOS channel. This is typically"
echo "caused by an option default that refers to a relative path (see above"
echo "for hints about the offending path)."
exit 1
fi
${pkgs.libxslt.bin}/bin/xsltproc \
-o "$out" ${./postprocess-option-descriptions.xsl} options.xml
'';
optionsDocBook = lib.warn "optionsDocBook is deprecated since 23.11 and will be removed in 24.05"
(pkgs.runCommand "options-docbook.xml" {
nativeBuildInputs = [
pkgs.nixos-render-docs
];
} ''
nixos-render-docs -j $NIX_BUILD_CORES options docbook \
--manpage-urls ${pkgs.path + "/doc/manpage-urls.json"} \
--revision ${lib.escapeShellArg revision} \
--document-type ${lib.escapeShellArg documentType} \
--varlist-id ${lib.escapeShellArg variablelistId} \
--id-prefix ${lib.escapeShellArg optionIdPrefix} \
${optionsJSON}/share/doc/nixos/options.json \
"$out"
'');
}

View file

@ -43,19 +43,11 @@ def unpivot(options: Dict[Key, Option]) -> Dict[str, JSON]:
return result
warningsAreErrors = False
warnOnDocbook = False
errorOnDocbook = False
optOffset = 0
for arg in sys.argv[1:]:
if arg == "--warnings-are-errors":
optOffset += 1
warningsAreErrors = True
if arg == "--warn-on-docbook":
optOffset += 1
warnOnDocbook = True
elif arg == "--error-on-docbook":
optOffset += 1
errorOnDocbook = True
options = pivot(json.load(open(sys.argv[1 + optOffset], 'r')))
overrides = pivot(json.load(open(sys.argv[2 + optOffset], 'r')))
@ -84,38 +76,10 @@ for (k, v) in overrides.items():
severity = "error" if warningsAreErrors else "warning"
def is_docbook(o, key):
val = o.get(key, {})
if not isinstance(val, dict):
return False
return val.get('_type', '') == 'literalDocBook'
# check that every option has a description
hasWarnings = False
hasErrors = False
hasDocBook = False
for (k, v) in options.items():
if warnOnDocbook or errorOnDocbook:
kind = "error" if errorOnDocbook else "warning"
if isinstance(v.value.get('description', {}), str):
hasErrors |= errorOnDocbook
hasDocBook = True
print(
f"\x1b[1;31m{kind}: option {v.name} description uses DocBook\x1b[0m",
file=sys.stderr)
elif is_docbook(v.value, 'defaultText'):
hasErrors |= errorOnDocbook
hasDocBook = True
print(
f"\x1b[1;31m{kind}: option {v.name} default uses DocBook\x1b[0m",
file=sys.stderr)
elif is_docbook(v.value, 'example'):
hasErrors |= errorOnDocbook
hasDocBook = True
print(
f"\x1b[1;31m{kind}: option {v.name} example uses DocBook\x1b[0m",
file=sys.stderr)
if v.value.get('description', None) is None:
hasWarnings = True
print(f"\x1b[1;31m{severity}: option {v.name} has no description\x1b[0m", file=sys.stderr)
@ -126,30 +90,6 @@ for (k, v) in options.items():
f"\x1b[1;31m{severity}: option {v.name} has no type. Please specify a valid type, see " +
"https://nixos.org/manual/nixos/stable/index.html#sec-option-types\x1b[0m", file=sys.stderr)
if hasDocBook:
(why, what) = (
("disallowed for in-tree modules", "contribution") if errorOnDocbook
else ("deprecated for option documentation", "module")
)
print("Explanation: The documentation contains descriptions, examples, or defaults written in DocBook. " +
"NixOS is in the process of migrating from DocBook to Markdown, and " +
f"DocBook is {why}. To change your {what} to "+
"use Markdown, apply mdDoc and literalMD and use the *MD variants of option creation " +
"functions where they are available. For example:\n" +
"\n" +
" example.foo = mkOption {\n" +
" description = lib.mdDoc ''your description'';\n" +
" defaultText = lib.literalMD ''your description of default'';\n" +
" };\n" +
"\n" +
" example.enable = mkEnableOption (lib.mdDoc ''your thing'');\n" +
" example.package = mkPackageOptionMD pkgs \"your-package\" {};\n" +
" imports = [ (mkAliasOptionModuleMD [ \"example\" \"args\" ] [ \"example\" \"settings\" ]) ];",
file = sys.stderr)
with open(os.getenv('TOUCH_IF_DB'), 'x'):
# just make sure it exists
pass
if hasErrors:
sys.exit(1)
if hasWarnings and warningsAreErrors:

View file

@ -1,115 +0,0 @@
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:str="http://exslt.org/strings"
xmlns:exsl="http://exslt.org/common"
xmlns:db="http://docbook.org/ns/docbook"
xmlns:nixos="tag:nixos.org"
extension-element-prefixes="str exsl">
<xsl:output method='xml' encoding="UTF-8" />
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()" />
</xsl:copy>
</xsl:template>
<xsl:template name="break-up-description">
<xsl:param name="input" />
<xsl:param name="buffer" />
<!-- Every time we have two newlines following each other, we want to
break it into </para><para>. -->
<xsl:variable name="parbreak" select="'&#xa;&#xa;'" />
<!-- Similar to "(head:tail) = input" in Haskell. -->
<xsl:variable name="head" select="$input[1]" />
<xsl:variable name="tail" select="$input[position() &gt; 1]" />
<xsl:choose>
<xsl:when test="$head/self::text() and contains($head, $parbreak)">
<!-- If the haystack provided to str:split() directly starts or
ends with $parbreak, it doesn't generate a <token/> for that,
so we are doing this here. -->
<xsl:variable name="splitted-raw">
<xsl:if test="starts-with($head, $parbreak)"><token /></xsl:if>
<xsl:for-each select="str:split($head, $parbreak)">
<token><xsl:value-of select="node()" /></token>
</xsl:for-each>
<!-- Something like ends-with($head, $parbreak), but there is
no ends-with() in XSLT, so we need to use substring(). -->
<xsl:if test="
substring($head, string-length($head) -
string-length($parbreak) + 1) = $parbreak
"><token /></xsl:if>
</xsl:variable>
<xsl:variable name="splitted"
select="exsl:node-set($splitted-raw)/token" />
<!-- The buffer we had so far didn't contain any text nodes that
contain a $parbreak, so we can put the buffer along with the
first token of $splitted into a para element. -->
<para xmlns="http://docbook.org/ns/docbook">
<xsl:apply-templates select="exsl:node-set($buffer)" />
<xsl:apply-templates select="$splitted[1]/node()" />
</para>
<!-- We have already emitted the first splitted result, so the
last result is going to be set as the new $buffer later
because its contents may not be directly followed up by a
$parbreak. -->
<xsl:for-each select="$splitted[position() &gt; 1
and position() &lt; last()]">
<para xmlns="http://docbook.org/ns/docbook">
<xsl:apply-templates select="node()" />
</para>
</xsl:for-each>
<xsl:call-template name="break-up-description">
<xsl:with-param name="input" select="$tail" />
<xsl:with-param name="buffer" select="$splitted[last()]/node()" />
</xsl:call-template>
</xsl:when>
<!-- Either non-text node or one without $parbreak, which we just
want to buffer and continue recursing. -->
<xsl:when test="$input">
<xsl:call-template name="break-up-description">
<xsl:with-param name="input" select="$tail" />
<!-- This essentially appends $head to $buffer. -->
<xsl:with-param name="buffer">
<xsl:if test="$buffer">
<xsl:for-each select="exsl:node-set($buffer)">
<xsl:apply-templates select="." />
</xsl:for-each>
</xsl:if>
<xsl:apply-templates select="$head" />
</xsl:with-param>
</xsl:call-template>
</xsl:when>
<!-- No more $input, just put the remaining $buffer in a para. -->
<xsl:otherwise>
<para xmlns="http://docbook.org/ns/docbook">
<xsl:apply-templates select="exsl:node-set($buffer)" />
</para>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="nixos:option-description">
<xsl:choose>
<!--
Only process nodes that are comprised of a single <para/> element,
because if that's not the case the description already contains
</para><para> in between and we need no further processing.
-->
<xsl:when test="count(db:para) > 1">
<xsl:apply-templates select="node()" />
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="break-up-description">
<xsl:with-param name="input"
select="exsl:node-set(db:para/node())" />
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>

View file

@ -514,7 +514,11 @@ class Machine:
return "".join(output_buffer)
def execute(
self, command: str, check_return: bool = True, timeout: Optional[int] = 900
self,
command: str,
check_return: bool = True,
check_output: bool = True,
timeout: Optional[int] = 900,
) -> Tuple[int, str]:
self.run_callbacks()
self.connect()
@ -535,6 +539,9 @@ class Machine:
assert self.shell
self.shell.send(out_command.encode())
if not check_output:
return (-2, "")
# Get the output
output = base64.b64decode(self._next_newline_closed_block_from_shell())

View file

@ -77,18 +77,6 @@ let
<edit mode="append" name="autohint">
${fcBool cfg.hinting.autohint}
</edit>
<edit mode="append" name="hintstyle">
<const>${cfg.hinting.style}</const>
</edit>
<edit mode="append" name="antialias">
${fcBool cfg.antialias}
</edit>
<edit mode="append" name="rgba">
<const>${cfg.subpixel.rgba}</const>
</edit>
<edit mode="append" name="lcdfilter">
<const>lcd${cfg.subpixel.lcdfilter}</const>
</edit>
</match>
</fontconfig>
@ -177,6 +165,13 @@ let
</fontconfig>
'';
# Replace default linked config with a different variant
replaceDefaultConfig = defaultConfig: newConfig: ''
rm $dst/${defaultConfig}
ln -s ${pkg.out}/share/fontconfig/conf.avail/${newConfig} \
$dst/
'';
# fontconfig configuration package
confPkg = pkgs.runCommand "fontconfig-conf" {
preferLocalBuild = true;
@ -196,6 +191,26 @@ let
ln -s ${pkg.out}/etc/fonts/conf.d/*.conf \
$dst/
${optionalString (!cfg.antialias)
(replaceDefaultConfig "10-yes-antialias.conf"
"10-no-antialias.conf")
}
${optionalString (cfg.hinting.style != "slight")
(replaceDefaultConfig "10-hinting-slight.conf"
"10-hinting-${cfg.hinting.style}.conf")
}
${optionalString (cfg.subpixel.rgba != "none")
(replaceDefaultConfig "10-sub-pixel-none.conf"
"10-sub-pixel-${cfg.subpixel.rgba}.conf")
}
${optionalString (cfg.subpixel.lcdfilter != "default")
(replaceDefaultConfig "11-lcdfilter-default.conf"
"11-lcdfilter-${cfg.subpixel.lcdfilter}.conf")
}
# 00-nixos-cache.conf
ln -s ${cacheConf} $dst/00-nixos-cache.conf
@ -367,17 +382,25 @@ in
};
style = mkOption {
type = types.enum [ "hintnone" "hintslight" "hintmedium" "hintfull" ];
default = "hintslight";
type = types.enum ["none" "slight" "medium" "full"];
default = "slight";
description = lib.mdDoc ''
Hintstyle is the amount of font reshaping done to line up
to the grid.
hintslight will make the font more fuzzy to line up to the grid
but will be better in retaining font shape, while hintfull will
be a crisp font that aligns well to the pixel grid but will lose
a greater amount of font shape.
slight will make the font more fuzzy to line up to the grid but
will be better in retaining font shape, while full will be a
crisp font that aligns well to the pixel grid but will lose a
greater amount of font shape.
'';
apply =
val:
let
from = "fonts.fontconfig.hinting.style";
val' = lib.removePrefix "hint" val;
warning = "The option `${from}` contains a deprecated value `${val}`. Use `${val'}` instead.";
in
lib.warnIf (lib.hasPrefix "hint" val) warning val';
};
};
@ -394,7 +417,7 @@ in
subpixel = {
rgba = mkOption {
default = "rgb";
default = "none";
type = types.enum ["rgb" "bgr" "vrgb" "vbgr" "none"];
description = lib.mdDoc ''
Subpixel order. The overwhelming majority of displays are

View file

@ -39,7 +39,8 @@ with lib;
graphviz = super.graphviz-nox;
gst_all_1 = super.gst_all_1 // {
gst-plugins-bad = super.gst_all_1.gst-plugins-bad.override { guiSupport = false; };
gst-plugins-base = super.gst_all_1.gst-plugins-base.override { enableX11 = false; };
gst-plugins-base = super.gst_all_1.gst-plugins-base.override { enableWayland = false; enableX11 = false; };
gst-plugins-good = super.gst_all_1.gst-plugins-good.override { enableX11 = false; };
};
imagemagick = super.imagemagick.override { libX11Support = false; libXtSupport = false; };
imagemagickBig = super.imagemagickBig.override { libX11Support = false; libXtSupport = false; };

View file

@ -107,7 +107,7 @@ let
} >&2
'';
inherit (cfg.nixos.options) warningsAreErrors allowDocBook;
inherit (cfg.nixos.options) warningsAreErrors;
};
@ -160,6 +160,9 @@ in
(mkRenamedOptionModule [ "programs" "info" "enable" ] [ "documentation" "info" "enable" ])
(mkRenamedOptionModule [ "programs" "man" "enable" ] [ "documentation" "man" "enable" ])
(mkRenamedOptionModule [ "services" "nixosManual" "enable" ] [ "documentation" "nixos" "enable" ])
(mkRemovedOptionModule
[ "documentation" "nixos" "options" "allowDocBook" ]
"DocBook option documentation is no longer supported")
];
options = {
@ -264,23 +267,6 @@ in
'';
};
nixos.options.allowDocBook = mkOption {
type = types.bool;
default = true;
description = lib.mdDoc ''
Whether to allow DocBook option docs. When set to `false` all option using
DocBook documentation will cause a manual build error; additionally a new
renderer may be used.
::: {.note}
The `false` setting for this option is not yet fully supported. While it
should work fine and produce the same output as the previous toolchain
using DocBook it may not work in all circumstances. Whether markdown option
documentation is allowed is independent of this option.
:::
'';
};
nixos.options.warningsAreErrors = mkOption {
type = types.bool;
default = true;
@ -359,14 +345,6 @@ in
(mkIf cfg.nixos.enable {
system.build.manual = manual;
system.activationScripts.check-manual-docbook = ''
if [[ $(cat ${manual.optionsUsedDocbook}) = 1 ]]; then
echo -e "\e[31;1mwarning\e[0m: This configuration contains option documentation in docbook." \
"Support for docbook is deprecated and will be removed after NixOS 23.05." \
"See nix-store --read-log ${builtins.unsafeDiscardStringContext manual.optionsJSON.drvPath}"
fi
'';
environment.systemPackages = []
++ optional cfg.man.enable manual.manpages
++ optionals cfg.doc.enable [ manual.manualHTML nixos-help ];

View file

@ -13,16 +13,13 @@ let
};
customEtc = {
"fwupd/daemon.conf" = {
source = format.generate "daemon.conf" {
"fwupd/fwupd.conf" = {
source = format.generate "fwupd.conf" {
fwupd = cfg.daemonSettings;
};
};
"fwupd/uefi_capsule.conf" = {
source = format.generate "uefi_capsule.conf" {
uefi_capsule = cfg.uefiCapsuleSettings;
};
# fwupd tries to chmod the file if it doesn't have the right permissions
mode = "0640";
};
};

View file

@ -177,8 +177,7 @@ in
description = lib.mdDoc "The email addresses of the public-inbox.";
};
options.url = mkOption {
type = with types; nullOr str;
default = null;
type = types.nonEmptyStr;
example = "https://example.org/lists/example-discuss";
description = lib.mdDoc "URL where this inbox can be accessed over HTTP.";
};

File diff suppressed because it is too large Load diff

View file

@ -159,6 +159,15 @@ in {
'';
};
claimTokenFile = mkOption {
type = types.nullOr types.path;
default = null;
description = lib.mdDoc ''
If set, automatically registers the agent using the given claim token
file.
'';
};
enableAnalyticsReporting = mkOption {
type = types.bool;
default = false;
@ -260,7 +269,25 @@ in {
PrivateTmp = true;
ProtectControlGroups = true;
PrivateMounts = true;
};
} // (lib.optionalAttrs (cfg.claimTokenFile != null) {
LoadCredential = [
"netdata_claim_token:${cfg.claimTokenFile}"
];
ExecStartPre = pkgs.writeShellScript "netdata-claim" ''
set -euo pipefail
if [[ -f /var/lib/netdata/cloud.d/claimed_id ]]; then
# Already registered
exit
fi
exec ${cfg.package}/bin/netdata-claim.sh \
-token="$(< "$CREDENTIALS_DIRECTORY/netdata_claim_token")" \
-url=https://app.netdata.cloud \
-daemon-not-running
'';
});
};
systemd.enableCgroupAccounting = true;

View file

@ -60,6 +60,7 @@ in {
config.networking.resolvconf.package # for configuring DNS in some configs
pkgs.procps # for collecting running services (opt-in feature)
pkgs.glibc # for `getent` to look up user shells
pkgs.kmod # required to pass tailscale's v6nat check
];
serviceConfig.Environment = [
"PORT=${toString cfg.port}"

View file

@ -99,6 +99,7 @@ in {
systemd.units."kmsconvt@.service".aliases = [ "autovt@.service" ];
systemd.services.systemd-vconsole-setup.enable = false;
systemd.services.reload-systemd-vconsole-setup.enable = false;
services.kmscon.extraConfig =
let

View file

@ -9,7 +9,17 @@ in {
services.code-server = {
enable = lib.mkEnableOption (lib.mdDoc "code-server");
package = lib.mkPackageOptionMD pkgs "code-server" { };
package = lib.mkPackageOptionMD pkgs "code-server" {
example = ''
pkgs.vscode-with-extensions.override {
vscode = pkgs.code-server;
vscodeExtensions = with pkgs.vscode-extensions; [
bbenoist.nix
dracula-theme.theme-dracula
];
}
'';
};
extraPackages = lib.mkOption {
default = [ ];

View file

@ -62,10 +62,6 @@ in
description = lib.mdDoc "Port where lemmy should listen for incoming requests.";
};
options.federation = {
enabled = (mkEnableOption (lib.mdDoc "activitypub federation")) // { visible = false; };
};
options.captcha = {
enabled = mkOption {
type = types.bool;
@ -85,10 +81,6 @@ in
config =
lib.mkIf cfg.enable {
warnings = lib.optional (cfg.settings.federation.enabled) ''
This option was removed in 0.17.0 and no longer has any effect.
'';
services.lemmy.settings = (mapAttrs (name: mkDefault)
{
bind = "127.0.0.1";
@ -194,10 +186,16 @@ in
};
};
assertions = [{
assertion = cfg.database.createLocally -> cfg.settings.database.host == "localhost" || cfg.settings.database.host == "/run/postgresql";
message = "if you want to create the database locally, you need to use a local database";
}];
assertions = [
{
assertion = cfg.database.createLocally -> cfg.settings.database.host == "localhost" || cfg.settings.database.host == "/run/postgresql";
message = "if you want to create the database locally, you need to use a local database";
}
{
assertion = (!(hasAttrByPath ["federation"] cfg.settings)) && (!(hasAttrByPath ["federation" "enabled"] cfg.settings));
message = "`services.lemmy.settings.federation` was removed in 0.17.0 and no longer has any effect";
}
];
systemd.services.lemmy = {
description = "Lemmy server";

View file

@ -1,4 +1,4 @@
{ config, lib, pkgs, buildEnv, ... }:
{ config, lib, pkgs, ... }:
with lib;
@ -261,6 +261,7 @@ in {
StateDirectory = "netbox";
StateDirectoryMode = "0750";
Restart = "on-failure";
RestartSec = 30;
};
in {
netbox-migration = {
@ -276,13 +277,18 @@ in {
ExecStart = ''
${pkg}/bin/netbox migrate
'';
PrivateTmp = true;
};
};
netbox = {
description = "NetBox WSGI Service";
documentation = [ "https://docs.netbox.dev/" ];
wantedBy = [ "netbox.target" ];
after = [ "netbox-migration.service" ];
after = [ "network-online.target" "netbox-migration.service" ];
wants = [ "network-online.target" ];
preStart = ''
${pkg}/bin/netbox trace_paths --no-input
@ -290,9 +296,7 @@ in {
${pkg}/bin/netbox remove_stale_contenttypes --no-input
'';
environment = {
PYTHONPATH = pkg.pythonPath;
};
environment.PYTHONPATH = pkg.pythonPath;
serviceConfig = defaultServiceConfig // {
ExecStart = ''
@ -300,32 +304,37 @@ in {
--bind ${cfg.listenAddress}:${toString cfg.port} \
--pythonpath ${pkg}/opt/netbox/netbox
'';
PrivateTmp = true;
};
};
netbox-rq = {
description = "NetBox Request Queue Worker";
documentation = [ "https://docs.netbox.dev/" ];
wantedBy = [ "netbox.target" ];
after = [ "netbox.service" ];
environment = {
PYTHONPATH = pkg.pythonPath;
};
environment.PYTHONPATH = pkg.pythonPath;
serviceConfig = defaultServiceConfig // {
ExecStart = ''
${pkg}/bin/netbox rqworker high default low
'';
PrivateTmp = true;
};
};
netbox-housekeeping = {
description = "NetBox housekeeping job";
after = [ "netbox.service" ];
documentation = [ "https://docs.netbox.dev/" ];
environment = {
PYTHONPATH = pkg.pythonPath;
};
wantedBy = [ "multi-user.target" ];
after = [ "network-online.target" ];
wants = [ "network-online.target" ];
environment.PYTHONPATH = pkg.pythonPath;
serviceConfig = defaultServiceConfig // {
Type = "oneshot";
@ -338,10 +347,17 @@ in {
systemd.timers.netbox-housekeeping = {
description = "Run NetBox housekeeping job";
wantedBy = [ "timers.target" ];
documentation = [ "https://docs.netbox.dev/" ];
wantedBy = [ "multi-user.target" ];
after = [ "network-online.target" ];
wants = [ "network-online.target" ];
timerConfig = {
OnCalendar = "daily";
AccuracySec = "1h";
Persistent = true;
};
};

View file

@ -5,7 +5,7 @@ self-hostable cloud platform. The server setup can be automated using
[services.nextcloud](#opt-services.nextcloud.enable). A
desktop client is packaged at `pkgs.nextcloud-client`.
The current default by NixOS is `nextcloud26` which is also the latest
The current default by NixOS is `nextcloud27` which is also the latest
major version available.
## Basic usage {#module-services-nextcloud-basic-usage}

View file

@ -207,7 +207,7 @@ in {
package = mkOption {
type = types.package;
description = lib.mdDoc "Which package to use for the Nextcloud instance.";
relatedPackages = [ "nextcloud25" "nextcloud26" ];
relatedPackages = [ "nextcloud25" "nextcloud26" "nextcloud27" ];
};
phpPackage = mkOption {
type = types.package;
@ -689,7 +689,7 @@ in {
config = mkIf cfg.enable (mkMerge [
{ warnings = let
latest = 26;
latest = 27;
upgradeWarning = major: nixos:
''
A legacy Nextcloud install (from before NixOS ${nixos}) may be installed.
@ -708,10 +708,9 @@ in {
Using config.services.nextcloud.poolConfig is deprecated and will become unsupported in a future release.
Please migrate your configuration to config.services.nextcloud.poolSettings.
'')
++ (optional (versionOlder cfg.package.version "23") (upgradeWarning 22 "22.05"))
++ (optional (versionOlder cfg.package.version "24") (upgradeWarning 23 "22.05"))
++ (optional (versionOlder cfg.package.version "25") (upgradeWarning 24 "22.11"))
++ (optional (versionOlder cfg.package.version "26") (upgradeWarning 25 "23.05"))
++ (optional (versionOlder cfg.package.version "27") (upgradeWarning 26 "23.11"))
++ (optional cfg.enableBrokenCiphersForSSE ''
You're using PHP's openssl extension built against OpenSSL 1.1 for Nextcloud.
This is only necessary if you're using Nextcloud's server-side encryption.
@ -744,7 +743,8 @@ in {
''
else if versionOlder stateVersion "22.11" then nextcloud24
else if versionOlder stateVersion "23.05" then nextcloud25
else nextcloud26
else if versionOlder stateVersion "23.11" then nextcloud26
else nextcloud27
);
services.nextcloud.phpPackage =
@ -1065,10 +1065,8 @@ in {
services.nextcloud = lib.mkIf cfg.configureRedis {
caching.redis = true;
extraOptions = {
memcache = {
distributed = ''\OC\Memcache\Redis'';
locking = ''\OC\Memcache\Redis'';
};
"memcache.distributed" = ''\OC\Memcache\Redis'';
"memcache.locking" = ''\OC\Memcache\Redis'';
redis = {
host = config.services.redis.servers.nextcloud.unixSocket;
port = 0;

View file

@ -113,6 +113,7 @@ in
services.xserver.displayManager.sessionCommands = ''
if test "$XDG_CURRENT_DESKTOP" = "Pantheon"; then
true
${concatMapStrings (p: ''
if [ -d "${p}/share/gsettings-schemas/${p.name}" ]; then
export XDG_DATA_DIRS=$XDG_DATA_DIRS''${XDG_DATA_DIRS:+:}${p}/share/gsettings-schemas/${p.name}

View file

@ -587,7 +587,7 @@ in
# Some overrides to upstream units.
systemd.services."systemd-backlight@".restartIfChanged = false;
systemd.services."systemd-fsck@".restartIfChanged = false;
systemd.services."systemd-fsck@".path = [ config.system.path ];
systemd.services."systemd-fsck@".path = [ pkgs.util-linux ] ++ config.system.fsPackages;
systemd.services."systemd-makefs@" = {
restartIfChanged = false;
path = [ pkgs.util-linux ] ++ config.system.fsPackages;

View file

@ -523,6 +523,15 @@ in
assertion = cfgZfs.allowHibernation -> !cfgZfs.forceImportRoot && !cfgZfs.forceImportAll;
message = "boot.zfs.allowHibernation while force importing is enabled will cause data corruption";
}
{
assertion = !(elem "" allPools);
message = ''
Automatic pool detection found an empty pool name, which can't be used.
Hint: for `fileSystems` entries with `fsType = zfs`, the `device` attribute
should be a zfs dataset name, like `device = "pool/data/set"`.
This error can be triggered by using an absolute path, such as `"/dev/disk/..."`.
'';
}
];
boot = {

View file

@ -81,25 +81,6 @@ let
drivesCmdLine = drives: concatStringsSep "\\\n " (imap1 driveCmdline drives);
# Creates a device name from a 1-based a numerical index, e.g.
# * `driveDeviceName 1` -> `/dev/vda`
# * `driveDeviceName 2` -> `/dev/vdb`
driveDeviceName = idx:
let letter = elemAt lowerChars (idx - 1);
in if cfg.qemu.diskInterface == "scsi" then
"/dev/sd${letter}"
else
"/dev/vd${letter}";
lookupDriveDeviceName = driveName: driveList:
(findSingle (drive: drive.name == driveName)
(throw "Drive ${driveName} not found")
(throw "Multiple drives named ${driveName}") driveList).device;
addDeviceNames =
imap1 (idx: drive: drive // { device = driveDeviceName idx; });
# Shell script to start the VM.
startVM =
''
@ -109,25 +90,41 @@ let
set -e
# Create an empty ext4 filesystem image. A filesystem image does not
# contain a partition table but just a filesystem.
createEmptyFilesystemImage() {
local name=$1
local size=$2
local temp=$(mktemp)
${qemu}/bin/qemu-img create -f raw "$temp" "$size"
${pkgs.e2fsprogs}/bin/mkfs.ext4 -L ${rootFilesystemLabel} "$temp"
${qemu}/bin/qemu-img convert -f raw -O qcow2 "$temp" "$name"
rm "$temp"
}
NIX_DISK_IMAGE=$(readlink -f "''${NIX_DISK_IMAGE:-${toString config.virtualisation.diskImage}}") || test -z "$NIX_DISK_IMAGE"
if test -n "$NIX_DISK_IMAGE" && ! test -e "$NIX_DISK_IMAGE"; then
echo "Disk image do not exist, creating the virtualisation disk image..."
# If we are using a bootloader and default filesystems layout.
# We have to reuse the system image layout as a backing image format (CoW)
# So we can write on the top of it.
# If we are not using the default FS layout, potentially, we are interested into
# performing operations in postDeviceCommands or at early boot on the raw device.
# We can still boot through QEMU direct kernel boot feature.
${if (cfg.useBootLoader && cfg.useDefaultFilesystems) then ''
# Create a writable qcow2 image using the systemImage as a backing
# image.
# CoW prevent size to be attributed to an image.
# FIXME: raise this issue to upstream.
${qemu}/bin/qemu-img create \
${concatStringsSep " \\\n" ([ "-f qcow2" ]
++ optional (cfg.useBootLoader && cfg.useDefaultFilesystems) "-F qcow2 -b ${systemImage}/nixos.qcow2"
++ optional (!(cfg.useBootLoader && cfg.useDefaultFilesystems)) "-o size=${toString config.virtualisation.diskSize}M"
++ [ ''"$NIX_DISK_IMAGE"'' ])}
# CoW prevent size to be attributed to an image.
# FIXME: raise this issue to upstream.
${qemu}/bin/qemu-img create \
-f qcow2 \
-b ${systemImage}/nixos.qcow2 \
-F qcow2 \
"$NIX_DISK_IMAGE"
'' else if cfg.useDefaultFilesystems then ''
createEmptyFilesystemImage "$NIX_DISK_IMAGE" "${toString cfg.diskSize}M"
'' else ''
# Create an empty disk image without a filesystem.
${qemu}/bin/qemu-img create -f qcow2 "$NIX_DISK_IMAGE" "${toString cfg.diskSize}M"
''
}
echo "Virtualisation disk image created."
fi
@ -148,6 +145,7 @@ let
${pkgs.erofs-utils}/bin/mkfs.erofs \
--force-uid=0 \
--force-gid=0 \
-L ${nixStoreFilesystemLabel} \
-U eb176051-bd15-49b7-9e6b-462e0b467019 \
-T 0 \
--exclude-regex="$(
@ -218,6 +216,19 @@ let
regInfo = pkgs.closureInfo { rootPaths = config.virtualisation.additionalPaths; };
# Use well-defined and persistent filesystem labels to identify block devices.
rootFilesystemLabel = "nixos";
espFilesystemLabel = "ESP"; # Hard-coded by make-disk-image.nix
nixStoreFilesystemLabel = "nix-store";
# The root drive is a raw disk which does not necessarily contain a
# filesystem or partition table. It thus cannot be identified via the typical
# persistent naming schemes (e.g. /dev/disk/by-{label, uuid, partlabel,
# partuuid}. Instead, supply a well-defined and persistent serial attribute
# via QEMU. Inside the running system, the disk can then be identified via
# the /dev/disk/by-id scheme.
rootDriveSerialAttr = "root";
# System image is akin to a complete NixOS install with
# a boot partition and root partition.
systemImage = import ../../lib/make-disk-image.nix {
@ -225,6 +236,7 @@ let
additionalPaths = [ regInfo ];
format = "qcow2";
onlyNixStore = false;
label = rootFilesystemLabel;
partitionTableType = selectPartitionTableLayout { inherit (cfg) useDefaultFilesystems useEFIBoot; };
# Bootloader should be installed on the system image only if we are booting through bootloaders.
# Though, if a user is not using our default filesystems, it is possible to not have any ESP
@ -247,6 +259,7 @@ let
additionalPaths = [ regInfo ];
format = "qcow2";
onlyNixStore = true;
label = nixStoreFilesystemLabel;
partitionTableType = "none";
installBootLoader = false;
touchEFIVars = false;
@ -255,28 +268,6 @@ let
copyChannel = false;
};
bootConfiguration =
if cfg.useDefaultFilesystems
then
if cfg.useBootLoader
then
if cfg.useEFIBoot then "efi_bootloading_with_default_fs"
else "legacy_bootloading_with_default_fs"
else
if cfg.directBoot.enable then "direct_boot_with_default_fs"
else "custom"
else
"custom";
suggestedRootDevice = {
"efi_bootloading_with_default_fs" = "${cfg.bootLoaderDevice}2";
"legacy_bootloading_with_default_fs" = "${cfg.bootLoaderDevice}1";
"direct_boot_with_default_fs" = cfg.bootLoaderDevice;
# This will enforce a NixOS module type checking error
# to ask explicitly the user to set a rootDevice.
# As it will look like `rootDevice = lib.mkDefault null;` after
# all "computations".
"custom" = null;
}.${bootConfiguration};
in
{
@ -343,44 +334,39 @@ in
virtualisation.bootLoaderDevice =
mkOption {
type = types.path;
default = lookupDriveDeviceName "root" cfg.qemu.drives;
defaultText = literalExpression ''lookupDriveDeviceName "root" cfg.qemu.drives'';
example = "/dev/vda";
default = "/dev/disk/by-id/virtio-${rootDriveSerialAttr}";
defaultText = literalExpression ''/dev/disk/by-id/virtio-${rootDriveSerialAttr}'';
example = "/dev/disk/by-id/virtio-boot-loader-device";
description =
lib.mdDoc ''
The disk to be used for the boot filesystem.
By default, it is the same disk as the root filesystem.
The path (inside th VM) to the device to boot from when legacy booting.
'';
};
virtualisation.bootPartition =
mkOption {
type = types.nullOr types.path;
default = if cfg.useEFIBoot then "${cfg.bootLoaderDevice}1" else null;
defaultText = literalExpression ''if cfg.useEFIBoot then "''${cfg.bootLoaderDevice}1" else null'';
example = "/dev/vda1";
default = if cfg.useEFIBoot then "/dev/disk/by-label/${espFilesystemLabel}" else null;
defaultText = literalExpression ''if cfg.useEFIBoot then "/dev/disk/by-label/${espFilesystemLabel}" else null'';
example = "/dev/disk/by-label/esp";
description =
lib.mdDoc ''
The boot partition to be used to mount /boot filesystem.
In legacy boots, this should be null.
By default, in EFI boot, it is the first partition of the boot device.
The path (inside the VM) to the device containing the EFI System Partition (ESP).
If you are *not* booting from a UEFI firmware, this value is, by
default, `null`. The ESP is mounted under `/boot`.
'';
};
virtualisation.rootDevice =
mkOption {
type = types.nullOr types.path;
example = "/dev/vda2";
default = "/dev/disk/by-label/${rootFilesystemLabel}";
defaultText = literalExpression ''/dev/disk/by-label/${rootFilesystemLabel}'';
example = "/dev/disk/by-label/nixos";
description =
lib.mdDoc ''
The disk or partition to be used for the root filesystem.
By default (read the source code for more details):
- under EFI with a bootloader: 2nd partition of the boot disk
- in legacy boot with a bootloader: 1st partition of the boot disk
- in direct boot (i.e. without a bootloader): whole disk
In case you are not using a default boot device or a default filesystem, you have to set explicitly your root device.
The path (inside the VM) to the device containing the root filesystem.
'';
};
@ -711,7 +697,6 @@ in
mkOption {
type = types.listOf (types.submodule driveOpts);
description = lib.mdDoc "Drives passed to qemu.";
apply = addDeviceNames;
};
diskInterface =
@ -975,29 +960,11 @@ in
# FIXME: make a sense of this mess wrt to multiple ESP present in the system, probably use boot.efiSysMountpoint?
boot.loader.grub.device = mkVMOverride (if cfg.useEFIBoot then "nodev" else cfg.bootLoaderDevice);
boot.loader.grub.gfxmodeBios = with cfg.resolution; "${toString x}x${toString y}";
virtualisation.rootDevice = mkDefault suggestedRootDevice;
boot.initrd.kernelModules = optionals (cfg.useNixStoreImage && !cfg.writableStore) [ "erofs" ];
boot.loader.supportsInitrdSecrets = mkIf (!cfg.useBootLoader) (mkVMOverride false);
boot.initrd.extraUtilsCommands = lib.mkIf (cfg.useDefaultFilesystems && !config.boot.initrd.systemd.enable)
''
# We need mke2fs in the initrd.
copy_bin_and_libs ${pkgs.e2fsprogs}/bin/mke2fs
'';
boot.initrd.postDeviceCommands = lib.mkIf (cfg.useDefaultFilesystems && !config.boot.initrd.systemd.enable)
''
# If the disk image appears to be empty, run mke2fs to
# initialise.
FSTYPE=$(blkid -o value -s TYPE ${cfg.rootDevice} || true)
PARTTYPE=$(blkid -o value -s PTTYPE ${cfg.rootDevice} || true)
if test -z "$FSTYPE" -a -z "$PARTTYPE"; then
mke2fs -t ext4 ${cfg.rootDevice}
fi
'';
boot.initrd.postMountCommands = lib.mkIf (!config.boot.initrd.systemd.enable)
''
# Mark this as a NixOS machine.
@ -1112,6 +1079,7 @@ in
driveExtraOpts.cache = "writeback";
driveExtraOpts.werror = "report";
deviceExtraOpts.bootindex = "1";
deviceExtraOpts.serial = rootDriveSerialAttr;
}])
(mkIf cfg.useNixStoreImage [{
name = "nix-store";
@ -1154,7 +1122,6 @@ in
} else {
device = cfg.rootDevice;
fsType = "ext4";
autoFormat = true;
});
"/tmp" = lib.mkIf config.boot.tmp.useTmpfs {
device = "tmpfs";
@ -1164,7 +1131,7 @@ in
options = [ "mode=1777" "strictatime" "nosuid" "nodev" "size=${toString config.boot.tmp.tmpfsSize}" ];
};
"/nix/${if cfg.writableStore then ".ro-store" else "store"}" = lib.mkIf cfg.useNixStoreImage {
device = "${lookupDriveDeviceName "nix-store" cfg.qemu.drives}";
device = "/dev/disk/by-label/${nixStoreFilesystemLabel}";
neededForBoot = true;
options = [ "ro" ];
};
@ -1174,7 +1141,7 @@ in
neededForBoot = true;
};
"/boot" = lib.mkIf (cfg.useBootLoader && cfg.bootPartition != null) {
device = cfg.bootPartition; # 1 for e.g. `vda1`, as created in `systemImage`
device = cfg.bootPartition;
fsType = "vfat";
noCheck = true; # fsck fails on a r/o filesystem
};

View file

@ -643,6 +643,7 @@ in {
qemu-vm-restrictnetwork = handleTest ./qemu-vm-restrictnetwork.nix {};
quorum = handleTest ./quorum.nix {};
quake3 = handleTest ./quake3.nix {};
qownnotes = handleTest ./qownnotes.nix {};
rabbitmq = handleTest ./rabbitmq.nix {};
radarr = handleTest ./radarr.nix {};
radicale = handleTest ./radicale.nix {};

View file

@ -0,0 +1,29 @@
# This is a test utility that automatically formats
# `config.virtualisation.rootDevice` in the initrd.
# Note that when you are using
# `boot.initrd.systemd.enable = true`, you can use
# `virtualisation.fileSystems."/".autoFormat = true;`
# instead.
{ config, pkgs, ... }:
let
rootDevice = config.virtualisation.rootDevice;
in
{
boot.initrd.extraUtilsCommands = ''
# We need mke2fs in the initrd.
copy_bin_and_libs ${pkgs.e2fsprogs}/bin/mke2fs
'';
boot.initrd.postDeviceCommands = ''
# If the disk image appears to be empty, run mke2fs to
# initialise.
FSTYPE=$(blkid -o value -s TYPE ${rootDevice} || true)
PARTTYPE=$(blkid -o value -s PTTYPE ${rootDevice} || true)
if test -z "$FSTYPE" -a -z "$PARTTYPE"; then
mke2fs -t ext4 ${rootDevice}
fi
'';
}

View file

@ -21,13 +21,17 @@ import ./make-test-python.nix {
boot.initrd.systemd.enable = systemdStage1;
};
testScript = ''
testScript = { nodes, ...}:
let
rootDevice = nodes.machine.virtualisation.rootDevice;
in
''
machine.wait_for_unit("default.target")
with subtest("root fs is fsckd"):
machine.succeed("journalctl -b | grep '${if systemdStage1
then "fsck.*vda.*clean"
else "fsck.ext4.*/dev/vda"}'")
then "fsck.*${builtins.baseNameOf rootDevice}.*clean"
else "fsck.ext4.*${rootDevice}"}'")
with subtest("mnt fs is fsckd"):
machine.succeed("journalctl -b | grep 'fsck.*vdb.*clean'")

View file

@ -50,6 +50,7 @@ in makeTest {
imports = [
../modules/profiles/installation-device.nix
../modules/profiles/base.nix
./common/auto-format-root-device.nix
];
nix.settings = {

View file

@ -14,6 +14,8 @@ in {
name = "initrd-luks-empty-passphrase";
nodes.machine = { pkgs, ... }: {
imports = lib.optionals (!systemdStage1) [ ./common/auto-format-root-device.nix ];
virtualisation = {
emptyDiskImages = [ 512 ];
useBootLoader = true;
@ -23,6 +25,7 @@ in {
# the new root device is /dev/vdb
# an empty 512MiB drive, containing no Nix store.
mountHostNixStore = true;
fileSystems."/".autoFormat = lib.mkIf systemdStage1 true;
};
boot.loader.systemd-boot.enable = true;

View file

@ -286,7 +286,7 @@ let
makeTest {
inherit enableOCR;
name = "installer-" + name;
meta = with pkgs.lib.maintainers; {
meta = {
# put global maintainers here, individuals go into makeInstallerTest fkt call
maintainers = (meta.maintainers or []);
};
@ -298,8 +298,13 @@ let
../modules/profiles/installation-device.nix
../modules/profiles/base.nix
extraInstallerConfig
./common/auto-format-root-device.nix
];
# In systemdStage1, also automatically format the device backing the
# root filesystem.
virtualisation.fileSystems."/".autoFormat = systemdStage1;
# builds stuff in the VM, needs more juice
virtualisation.diskSize = 8 * 1024;
virtualisation.cores = 8;
@ -335,9 +340,6 @@ let
desktop-file-utils
docbook5
docbook_xsl_ns
(docbook-xsl-ns.override {
withManOptDedupPatch = true;
})
kbd.dev
kmod.dev
libarchive.dev

View file

@ -8,10 +8,6 @@ import ./make-test-python.nix ({ pkgs, lib, ... }: {
node1 = { ... }: {
virtualisation.vlans = [ ];
virtualisation.memorySize = 4 * 1024;
virtualisation.useBootLoader = true;
virtualisation.useEFIBoot = true;
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
};
node2 = { modulesPath, ... }: {
@ -19,6 +15,8 @@ import ./make-test-python.nix ({ pkgs, lib, ... }: {
environment.systemPackages = [ pkgs.hello ];
imports = [
"${modulesPath}/installer/netboot/netboot-minimal.nix"
"${modulesPath}/testing/test-instrumentation.nix"
"${modulesPath}/profiles/qemu-guest.nix"
];
};
};
@ -39,7 +37,10 @@ import ./make-test-python.nix ({ pkgs, lib, ... }: {
# Kexec node1 to the toplevel of node2 via the kexec-boot script
node1.succeed('touch /run/foo')
node1.fail('hello')
node1.execute('${nodes.node2.config.system.build.kexecTree}/kexec-boot', check_return=False)
node1.execute('${nodes.node2.system.build.kexecTree}/kexec-boot', check_output=False)
node1.connected = False
node1.connect()
node1.wait_for_unit("multi-user.target")
node1.succeed('! test -e /run/foo')
node1.succeed('hello')
node1.succeed('[ "$(hostname)" = "node2" ]')

View file

@ -2,6 +2,8 @@ import ./make-test-python.nix ({ lib, pkgs, ... }: {
name = "luks";
nodes.machine = { pkgs, ... }: {
imports = [ ./common/auto-format-root-device.nix ];
# Use systemd-boot
virtualisation = {
emptyDiskImages = [ 512 512 ];

View file

@ -26,4 +26,4 @@ foldl
};
})
{ }
[ 25 26 ]
[ 25 26 27 ]

View file

@ -1,4 +1,5 @@
import ../make-test-python.nix ({ pkgs, ...}: let
args@{ nextcloudVersion ? 27, ... }:
(import ../make-test-python.nix ({ pkgs, ...}: let
username = "custom_admin_username";
# This will be used both for redis and postgresql
pass = "hunter2";
@ -9,7 +10,7 @@ import ../make-test-python.nix ({ pkgs, ...}: let
in {
name = "nextcloud-with-declarative-redis";
meta = with pkgs.lib.maintainers; {
maintainers = [ eqyiel ];
maintainers = [ eqyiel ma27 ];
};
nodes = {
@ -22,6 +23,7 @@ in {
services.nextcloud = {
enable = true;
hostName = "nextcloud";
package = pkgs.${"nextcloud" + (toString nextcloudVersion)};
caching = {
apcu = false;
redis = true;
@ -40,20 +42,18 @@ in {
secretFile = "/etc/nextcloud-secrets.json";
extraOptions.redis = {
host = "/run/redis/redis.sock";
port = 0;
dbindex = 0;
timeout = 1.5;
# password handled via secretfile below
};
extraOptions.memcache = {
local = "\OC\Memcache\Redis";
locking = "\OC\Memcache\Redis";
};
configureRedis = true;
};
services.redis.servers."nextcloud".enable = true;
services.redis.servers."nextcloud".port = 6379;
services.redis.servers."nextcloud" = {
enable = true;
port = 6379;
requirePass = "secret";
};
systemd.services.nextcloud-setup= {
requires = ["postgresql.service"];
@ -74,7 +74,7 @@ in {
# This file is meant to contain secret options which should
# not go into the nix store. Here it is just used to set the
# databyse type to postgres.
# redis password.
environment.etc."nextcloud-secrets.json".text = ''
{
"redis": {
@ -117,6 +117,6 @@ in {
)
# redis cache should not be empty
nextcloud.fail("redis-cli KEYS * | grep -q 'empty array'")
nextcloud.fail('test "[]" = "$(redis-cli --json KEYS "*")"')
'';
})
})) args

View file

@ -89,5 +89,8 @@ in {
"${withRcloneEnv} ${diffSharedFile}"
)
nextcloud.wait_until_succeeds("journalctl -u nextcloud-notify_push | grep -q \"Sending ping to ${adminuser}\"")
# redis cache should not be empty
nextcloud.fail('test "[]" = "$(redis-cli --json KEYS "*")"')
'';
})) args

70
nixos/tests/qownnotes.nix Normal file
View file

@ -0,0 +1,70 @@
import ./make-test-python.nix ({ lib, pkgs, ...} :
{
name = "qownnotes";
meta.maintainers = [ lib.maintainers.pbek ];
nodes.machine = { ... }:
{
imports = [
./common/user-account.nix
./common/x11.nix
];
test-support.displayManager.auto.user = "alice";
environment.systemPackages = [
pkgs.qownnotes
pkgs.xdotool
];
};
enableOCR = true;
testScript = { nodes, ... }: let
aliceDo = cmd: ''machine.succeed("su - alice -c '${cmd}' >&2 &");'';
in ''
with subtest("Ensure X starts"):
start_all()
machine.wait_for_x()
with subtest("Check QOwnNotes version on CLI"):
${aliceDo "qownnotes --version"}
machine.wait_for_console_text("QOwnNotes ${pkgs.qownnotes.version}")
with subtest("Ensure QOwnNotes starts"):
# start QOwnNotes window
${aliceDo "qownnotes"}
machine.wait_for_text("Welcome to QOwnNotes")
machine.screenshot("QOwnNotes-Welcome")
with subtest("Finish first-run wizard"):
# The wizard should show up now
machine.wait_for_text("Note folder")
machine.send_key("ret")
machine.wait_for_console_text("Note path '/home/alice/Notes' was now created.")
machine.wait_for_text("Panel layout")
machine.send_key("ret")
machine.wait_for_text("Nextcloud")
machine.send_key("ret")
machine.wait_for_text("App metric")
machine.send_key("ret")
# The main window should now show up
machine.wait_for_text("QOwnNotes - ${pkgs.qownnotes.version}")
machine.wait_for_open_port(22222)
machine.wait_for_console_text("QOwnNotes server listening on port 22222")
machine.screenshot("QOwnNotes-DemoNote")
with subtest("Create a new note"):
machine.send_key("ctrl-n")
machine.sleep(1)
machine.send_chars("This is a NixOS test!\n")
machine.wait_for_text("This is a NixOS test!")
machine.screenshot("QOwnNotes-NewNote")
'';
})

View file

@ -15,7 +15,7 @@ import ./make-test-python.nix ({ ... }:
fsType = "btrfs";
};
};
services.snapper.configs.home.subvolume = "/home";
services.snapper.configs.home.SUBVOLUME = "/home";
services.snapper.filters = "/nix";
};

View file

@ -258,7 +258,8 @@ in
'';
};
# See: [Firmware file size bug] in systemd/default.nix
# Some UEFI firmwares fail on large reads. Now that systemd-boot loads initrd
# itself, systems with such firmware won't boot without this fix
uefiLargeFileWorkaround = makeTest {
name = "uefi-large-file-workaround";

View file

@ -26,6 +26,7 @@ import ./make-test-python.nix ({ lib, pkgs, ... }: {
};
};
virtualisation.rootDevice = "/dev/mapper/cryptroot";
virtualisation.fileSystems."/".autoFormat = true;
};
};

View file

@ -34,6 +34,7 @@ in {
};
};
virtualisation.rootDevice = "/dev/mapper/cryptroot";
virtualisation.fileSystems."/".autoFormat = true;
boot.initrd.secrets."/etc/cryptroot.key" = keyfile;
};
};

View file

@ -25,6 +25,7 @@ import ./make-test-python.nix ({ lib, pkgs, ... }: {
cryptroot2.device = "/dev/vdc";
};
virtualisation.rootDevice = "/dev/mapper/cryptroot";
virtualisation.fileSystems."/".autoFormat = true;
# test mounting device unlocked in initrd after switching root
virtualisation.fileSystems."/cryptroot2".device = "/dev/mapper/cryptroot2";
};

View file

@ -28,6 +28,7 @@ import ./make-test-python.nix ({ lib, pkgs, ... }: {
};
};
virtualisation.rootDevice = "/dev/mapper/cryptroot";
virtualisation.fileSystems."/".autoFormat = true;
};
};

View file

@ -17,6 +17,7 @@ import ./make-test-python.nix ({ lib, ... }: {
specialisation.encrypted-root.configuration = {
virtualisation.rootDevice = "/dev/mapper/root";
virtualisation.fileSystems."/".autoFormat = true;
boot.initrd.luks.devices = lib.mkVMOverride {
root.device = "/dev/vdb";
};

View file

@ -18,7 +18,7 @@
python3Packages.buildPythonApplication rec {
pname = "eartag";
version = "0.4.0";
version = "0.4.1";
format = "other";
src = fetchFromGitLab {
@ -26,7 +26,7 @@ python3Packages.buildPythonApplication rec {
owner = "knuxify";
repo = pname;
rev = version;
sha256 = "sha256-4Kk/+iQNRqba5W/AdPlZ17Siwyy+WQuRYCb7M68S71I=";
sha256 = "sha256-awH+SA0xef1dMDqfLOg5htYH5ywWzK2xbWWSaan0aRg=";
};
postPatch = ''

View file

@ -17,13 +17,13 @@
stdenv.mkDerivation rec {
pname = "osdlyrics";
version = "0.5.13";
version = "0.5.14";
src = fetchFromGitHub {
owner = "osdlyrics";
repo = "osdlyrics";
rev = version;
sha256 = "sha256-E4pVXopqQYJW+a5nUf9dMabxJ9nYPu3C2ti8LlY470c=";
sha256 = "sha256-NVUQLmddXnpryt1AuHSwgPnWkgxWMBNJac09TJ12Yzo=";
};
nativeBuildInputs = [

View file

@ -2,13 +2,13 @@
buildGoModule rec {
pname = "Subtitlr";
version = "0.1.1";
version = "0.2.0";
src = fetchFromGitHub {
owner = "yoanbernabeu";
repo = pname;
rev = version;
hash = "sha256-1EjOpWVTp7CqwqSJAhqicvY2crzw1n7Id+TIwYrSQAs=";
hash = "sha256-PbeQzNkFj4eSg/zhk8bXij36DvJ9+g22kF5TqdX5O04=";
};
vendorHash = "sha256-ZgJCk9vbbQ0dcYSdKm0Cbw2AmwjpMvGb5zJkgbD+xig=";

View file

@ -1,15 +1,17 @@
{ lib, stdenv, fetchurl, pkg-config, alsa-lib, libxmp, AudioUnit, CoreAudio }:
{ lib, stdenv, fetchFromGitHub, autoreconfHook, pkg-config, alsa-lib, libxmp, AudioUnit, CoreAudio }:
stdenv.mkDerivation rec {
pname = "xmp";
version = "4.1.0";
version = "4.2.0";
src = fetchurl {
url = "mirror://sourceforge/${pname}/${pname}/${pname}-${version}.tar.gz";
sha256 = "17i8fc7x7yn3z1x963xp9iv108gxfakxmdgmpv3mlm438w3n3g8x";
src = fetchFromGitHub {
owner = "libxmp";
repo = "xmp-cli";
rev = "${pname}-${version}";
hash = "sha256-037k1rFjGR6XFtr08bzs4zVz+GyUGuuutuWFlNEuATA=";
};
nativeBuildInputs = [ pkg-config ];
nativeBuildInputs = [ autoreconfHook pkg-config ];
buildInputs = [ libxmp ]
++ lib.optionals stdenv.isLinux [ alsa-lib ]
++ lib.optionals stdenv.isDarwin [ AudioUnit CoreAudio ];

View file

@ -85,7 +85,8 @@ let
hash = "sha256-yfVzZV8G4AUDM8+yS9finzobpOb1PUEPgBWFhEY4nFQ=";
};
});
in stdenv.mkDerivation rec {
in
stdenv.mkDerivation rec {
pname = "zrythm";
version = "1.0.0-beta.4.9.1";
@ -172,6 +173,8 @@ in stdenv.mkDerivation rec {
# Zrythm uses meson to build, but requires cmake for dependency detection.
dontUseCmakeConfigure = true;
dontWrapQtApps = true;
mesonFlags = [
"-Db_lto=false"
"-Dcarla=enabled"

View file

@ -10,16 +10,16 @@
}:
rustPlatform.buildRustPackage rec {
pname = "snarkos";
version = "2.0.2";
version = "2.1.1";
src = fetchFromGitHub {
owner = "AleoHQ";
repo = "snarkOS";
rev = "v${version}";
sha256 = "sha256-sS8emB+uhWuoq5ISuT8FgSSzX7/WDoOY8hHzPE/EX3o=";
sha256 = "sha256-ewWsiDyPaQ2GOMA31b1bc+wtRbkoWXyPzDhy0Qq2vKI=";
};
cargoSha256 = "sha256-XS6dw6BIoJdigEso/J1dUaAp7AIAda3HrKnCoBynRv8=";
cargoHash = "sha256-HD+oVwFMUK00GQbJCrvLC+VWJ9p1L3j2f8rpQUIDKf8=";
# buildAndTestSubdir = "cli";

View file

@ -1,38 +1,75 @@
{ lib, stdenv, fetchFromGitea, cmake, boost, miniupnpc, openssl, unbound
, readline, libsodium, rapidjson
{ lib
, stdenv
, fetchFromGitHub
, cmake
, boost
, libsodium
, openssl
, rapidjson
, readline
, unbound
, zeromq
, darwin
}:
let
# submodules
miniupnp = fetchFromGitHub {
owner = "miniupnp";
repo = "miniupnp";
rev = "miniupnpc_2_2_1";
hash = "sha256-opd0hcZV+pjC3Mae3Yf6AR5fj6xVwGm9LuU5zEPxBKc=";
};
supercop = fetchFromGitHub {
owner = "monero-project";
repo = "supercop";
rev = "633500ad8c8759995049ccd022107d1fa8a1bbc9";
hash = "sha256-26UmESotSWnQ21VbAYEappLpkEMyl0jiuCaezRYd/sE=";
};
randomwow = fetchFromGitHub {
owner = "wownero-project";
repo = "RandomWOW";
rev = "607bad48f3687c2490d90f8c55efa2dcd7cbc195";
hash = "sha256-CJv96TbPv1k/C7MQWEntE6khIRX1iIEiF9wEdsQGiFQ=";
};
in
stdenv.mkDerivation rec {
pname = "wownero";
version = "0.8.0.1";
randomwowVersion = "1.1.7";
version = "0.11.0.1";
src = fetchFromGitea {
domain = "git.wownero.com";
owner = "wownero";
src = fetchFromGitHub {
owner = "wownero-project";
repo = "wownero";
rev = "v${version}";
sha256 = "sha256-+cUdousEiZMNwqhTvjoqw/k21x3dg7Lhb/5KyNUGrjQ=";
fetchSubmodules = false;
hash = "sha256-zmGsSbPpVwL0AhCQkdMKORruM5kYrrLe/BYfMphph8c=";
};
randomwow = fetchFromGitea {
domain = "git.wownero.com";
owner = "wownero";
repo = "RandomWOW";
rev = randomwowVersion;
sha256 = "sha256-JzyRlHwM8rmJ5OaKHz+6vHGfpSz+X4zkFAKn4Jmo+EE=";
};
nativeBuildInputs = [ cmake ];
nativeBuildInputs = [
cmake
];
buildInputs = [
boost miniupnpc openssl unbound rapidjson readline libsodium
boost
libsodium
openssl
rapidjson
readline
unbound
zeromq
] ++ lib.optionals stdenv.isDarwin [
darwin.apple_sdk.frameworks.IOKit
];
postUnpack = ''
rm -r $sourceRoot/external/RandomWOW
ln -s ${randomwow} $sourceRoot/external/RandomWOW
rm -r $sourceRoot/external/miniupnp
ln -s ${miniupnp} $sourceRoot/external/miniupnp
rm -r $sourceRoot/external/randomwow
ln -s ${randomwow} $sourceRoot/external/randomwow
rm -r $sourceRoot/external/supercop
ln -s ${supercop} $sourceRoot/external/supercop
'';
cmakeFlags = [
@ -52,9 +89,9 @@ stdenv.mkDerivation rec {
signatures using different participants for the same tx outputs on
opposing forks.
'';
homepage = "https://wownero.org/";
license = licenses.bsd3;
platforms = platforms.linux;
homepage = "https://wownero.org/";
license = licenses.bsd3;
maintainers = with maintainers; [ ];
platforms = platforms.unix;
};
}

View file

@ -1,19 +1,20 @@
{ stdenv, lib, fetchFromGitHub, linux-pam }:
{ stdenv, lib, fetchFromGitHub, git, linux-pam, libxcb }:
stdenv.mkDerivation rec {
pname = "ly";
version = "0.2.1";
version = "0.6.0";
src = fetchFromGitHub {
owner = "cylgom";
owner = "fairyglade";
repo = "ly";
rev = version;
sha256 = "16gjcrd4a6i4x8q8iwlgdildm7cpdsja8z22pf2izdm6rwfki97d";
rev = "v${version}";
hash = "sha256-78XD6DK9aQi8hITWJWnFZ3U9zWTcuw3vtRiU3Lhu7O4=";
fetchSubmodules = true;
};
buildInputs = [ linux-pam ];
makeFlags = [ "FLAGS=-Wno-error" ];
hardeningDisable = [ "all" ];
nativeBuildInputs = [ git ];
buildInputs = [ libxcb linux-pam ];
installPhase = ''
mkdir -p $out/bin
@ -23,7 +24,8 @@ stdenv.mkDerivation rec {
meta = with lib; {
description = "TUI display manager";
license = licenses.wtfpl;
homepage = "https://github.com/cylgom/ly";
homepage = "https://github.com/fairyglade/ly";
maintainers = [ maintainers.vidister ];
platforms = platforms.linux;
};
}

View file

@ -0,0 +1,35 @@
{ lib
, appimageTools
, fetchurl
}:
let
pname = "codux";
version = "15.4.4";
src = fetchurl {
url = "https://github.com/wixplosives/codux-versions/releases/download/${version}/Codux-${version}.x86_64.AppImage";
sha256 = "sha256-6XLKXw+e/310mCQxM/X/kzok562vGjEhmF1eLfakB4Q=";
};
appimageContents = appimageTools.extractType2 { inherit pname version src; };
in
appimageTools.wrapType2 rec {
inherit pname version src;
extraInstallCommands = ''
mv $out/bin/${pname}-${version} $out/bin/${pname}
install -m 444 -D ${appimageContents}/${pname}.desktop -t $out/share/applications
cp -r ${appimageContents}/usr/share/icons $out/share
substituteInPlace $out/share/applications/${pname}.desktop --replace 'Exec=AppRun' 'Exec=${pname}'
'';
meta = with lib; {
description = "A visual IDE for React";
homepage = "https://www.codux.com";
license = licenses.unfree;
platforms = [ "x86_64-linux" ];
maintainers = with maintainers; [ dit7ya ];
};
}

View file

@ -2,11 +2,11 @@
trivialBuild rec {
pname = "ebuild-mode";
version = "1.63";
version = "1.64";
src = fetchurl {
url = "https://dev.gentoo.org/~ulm/emacs/${pname}-${version}.tar.xz";
sha256 = "sha256-Ar11zz0IVMu0g9+PN9dXvj8yeKnUGi8M+CTJfGP3bd4=";
sha256 = "sha256-ewn8pFuuXrNzkh7UKWa71Tc3hGM11iqjU9AVNOKSHKA=";
};
meta = with lib; {

View file

@ -18,17 +18,17 @@
, fmt_8
, nlohmann_json
, yara
, rsync
}:
let
# when bumping the version, check if imhex has gotten support for the capstone version in nixpkgs
version = "1.27.1";
version = "1.29.0";
patterns_src = fetchFromGitHub {
owner = "WerWolv";
repo = "ImHex-Patterns";
rev = "ImHex-v${version}";
hash = "sha256-7Aaj+W+zXjHO8A2gmWtp5Pa/i5Uk8lXzX2WHjPIPRZI=";
hash = "sha256-lTTXu9RxoD582lXWI789gNcWvJmxmBIlBRIiyY3DseM=";
};
in
@ -41,10 +41,10 @@ stdenv.mkDerivation rec {
owner = "WerWolv";
repo = pname;
rev = "v${version}";
hash = "sha256-meOx8SkufXbXuBIVefr/mO9fsUi3zeQmqmf86+aDMaI=";
hash = "sha256-dghyv7rpqGs5dt51ziAaeb/Ba7rGEcJ54AYKRJ2xXuk=";
};
nativeBuildInputs = [ cmake llvm python3 perl pkg-config ];
nativeBuildInputs = [ cmake llvm python3 perl pkg-config rsync ];
buildInputs = [
capstone
@ -63,8 +63,7 @@ stdenv.mkDerivation rec {
cmakeFlags = [
"-DIMHEX_OFFLINE_BUILD=ON"
# see comment at the top about our version of capstone
"-DUSE_SYSTEM_CAPSTONE=OFF"
"-DUSE_SYSTEM_CAPSTONE=ON"
"-DUSE_SYSTEM_CURL=ON"
"-DUSE_SYSTEM_FMT=ON"
"-DUSE_SYSTEM_LLVM=ON"
@ -72,11 +71,10 @@ stdenv.mkDerivation rec {
"-DUSE_SYSTEM_YARA=ON"
];
# rsync is used here so we can not copy the _schema.json files
postInstall = ''
mkdir -p $out/share/imhex
for d in ${patterns_src}/{constants,encodings,includes,magic,patterns}; do
cp -r $d $out/share/imhex/
done
rsync -av --exclude="*_schema.json" ${patterns_src}/{constants,encodings,includes,magic,patterns} $out/share/imhex
'';
meta = with lib; {

View file

@ -9,20 +9,20 @@
, gtk3
, gtksourceview
, gtkspell3
, webkitgtk
, webkitgtk_4_1
, pandoc
}:
stdenv.mkDerivation rec {
pname = "marker";
version = "2020.04.04.2";
version = "2023.05.02";
src = fetchFromGitHub {
owner = "fabiocolacio";
repo = "Marker";
rev = version;
fetchSubmodules = true;
sha256 = "sha256-wLR1FQqlLA02ed/JoAcxRHhIVua1FibAee1PC2zOPOM=";
sha256 = "sha256-HhDhigQ6Aqo8R57Yrf1i69sM0feABB9El5R5OpzOyB0=";
};
nativeBuildInputs = [
@ -37,14 +37,18 @@ stdenv.mkDerivation rec {
gtk3
gtksourceview
gtkspell3
webkitgtk
webkitgtk_4_1
pandoc
];
postPatch = ''
meson rewrite kwargs set project / version '${version}'
'';
meta = with lib; {
homepage = "https://fabiocolacio.github.io/Marker/";
description = "Markdown editor for the Linux desktop";
maintainers = with maintainers; [ trepetti ];
description = "Markdown editor for the Linux desktop made with GTK3";
maintainers = with maintainers; [ trepetti aleksana ];
license = licenses.gpl3Plus;
platforms = platforms.linux;
changelog = "https://github.com/fabiocolacio/Marker/releases/tag/${version}";

View file

@ -11,9 +11,9 @@ in
} {};
sublime4-dev = common {
buildVersion = "4149";
buildVersion = "4150";
dev = true;
x64sha256 = "heP37UBUNula8RV82tSXwKAYwi2DNubHASD2FcLRkjs=";
aarch64sha256 = "u1KUI+st/+T9tNVh+u9+5ZSQIj26YyXGtQRrjB+paOQ=";
x64sha256 = "6Kafp4MxmCn978SqjSY8qAT6Yc/7WC8U9jVkIUUmUHs=";
aarch64sha256 = "dPxe2RLoMJS+rVtcVZZpMPQ5gfTEnW/INcnzYYeFEIQ=";
} {};
}

File diff suppressed because it is too large Load diff

View file

@ -27,23 +27,23 @@
};
arduino = buildGrammar {
language = "arduino";
version = "0.0.0+rev=833b53d";
version = "0.0.0+rev=0804efc";
src = fetchFromGitHub {
owner = "ObserverOfTime";
repo = "tree-sitter-arduino";
rev = "833b53df97143bc46e014608dee9f64f78d7473c";
hash = "sha256-M3mAZ5CORunUEIxy4+yQ8qTSbpmEgEmHgTB98niTbXo=";
rev = "0804efc41c42cf5b0a6ea8d500ea6f4e49a15ef6";
hash = "sha256-oTraIxeZLLbnxatXEfxjK6pw17aplxhyUJpzld5m3cs=";
};
meta.homepage = "https://github.com/ObserverOfTime/tree-sitter-arduino";
};
astro = buildGrammar {
language = "astro";
version = "0.0.0+rev=d111ae5";
version = "0.0.0+rev=a4535d1";
src = fetchFromGitHub {
owner = "virchau13";
repo = "tree-sitter-astro";
rev = "d111ae5ebbd30ffeaf58a3bebd2eb99682c0f6a3";
hash = "sha256-hJqAyzKoT0uGfErhYEC5s4zEJDdlDc80HpgLhTnjBSg=";
rev = "a4535d1530558866a543c1660c90c57fbf2fd709";
hash = "sha256-ZWpxKAyja6bW2kNxalHOL2E+WFbEKc40dMGrB1Ihs6I=";
};
meta.homepage = "https://github.com/virchau13/tree-sitter-astro";
};
@ -126,23 +126,23 @@
};
c = buildGrammar {
language = "c";
version = "0.0.0+rev=0906255";
version = "0.0.0+rev=f1b2a0b";
src = fetchFromGitHub {
owner = "tree-sitter";
repo = "tree-sitter-c";
rev = "0906255f8de1d319b8ec682ac8c43e7d2524b4fa";
hash = "sha256-p6k04hWIWawwd99+5OMohr9G2X1HLYJ0VClVsVADalE=";
rev = "f1b2a0b2102ff001a4ed9a26cd9a9405d09c590c";
hash = "sha256-35aKCSulI4Fi5Y8DMjCUSnUMvR6JdnVAF7dirVAWptM=";
};
meta.homepage = "https://github.com/tree-sitter/tree-sitter-c";
};
c_sharp = buildGrammar {
language = "c_sharp";
version = "0.0.0+rev=aaafc3d";
version = "0.0.0+rev=03b9b62";
src = fetchFromGitHub {
owner = "tree-sitter";
repo = "tree-sitter-c-sharp";
rev = "aaafc3d75f058ca5fe639b7ed5829964a3ca4575";
hash = "sha256-rKP6KfNCkytcAXHVv3EtOQEuhY+dxawFEFQr7kjuA6I=";
rev = "03b9b6272ef3df674f9c54507cc042412f257eed";
hash = "sha256-LS+NJ+oQDQ78lu7ozCh/E5dQuDprtb3e73MrJutX8P0=";
};
meta.homepage = "https://github.com/tree-sitter/tree-sitter-c-sharp";
};
@ -181,34 +181,34 @@
};
cmake = buildGrammar {
language = "cmake";
version = "0.0.0+rev=399605a";
version = "0.0.0+rev=24ed4fd";
src = fetchFromGitHub {
owner = "uyha";
repo = "tree-sitter-cmake";
rev = "399605a02bcd5daa309ce63a6459c600dce3473f";
hash = "sha256-7pzKyfR9RmfgzuX9/elUesmsdbLlwgrfiRP73YQu+gM=";
rev = "24ed4fd565cd95fcba4f42e995cf186cab180ccb";
hash = "sha256-0ixZL+Tpr8YLUvdGGBveI127DIOwkfqsq2D3xKLExck=";
};
meta.homepage = "https://github.com/uyha/tree-sitter-cmake";
};
comment = buildGrammar {
language = "comment";
version = "0.0.0+rev=94c99a6";
version = "0.0.0+rev=fd1e102";
src = fetchFromGitHub {
owner = "stsewd";
repo = "tree-sitter-comment";
rev = "94c99a66bb5051d8321b5900aee92b76450c50ce";
hash = "sha256-ma1LIiNuccXNftijehRzABVv7R3Jw9Wcjz0X2vGqaIc=";
rev = "fd1e1026d1a33b996db91a01dafeeff0a41d536c";
hash = "sha256-IsGvDejgdkgt4zu8VSy6i/tZNN9eyye3ewe901CvKw8=";
};
meta.homepage = "https://github.com/stsewd/tree-sitter-comment";
};
commonlisp = buildGrammar {
language = "commonlisp";
version = "0.0.0+rev=7a61fd7";
version = "0.0.0+rev=338db38";
src = fetchFromGitHub {
owner = "theHamsta";
repo = "tree-sitter-commonlisp";
rev = "7a61fd78c1673da5c38b7bef56794f0ac6250e91";
hash = "sha256-Rqv2ZcxtOBvoii+wO7LfwOztHmE8S/+Ia5SaKb8um7g=";
rev = "338db38330f0d25cba8e2c6428240ebc5e020264";
hash = "sha256-mTBxnj/kqrHx8q7cAKTjfD0FOyVKjDub01Y50DXXjg0=";
};
meta.homepage = "https://github.com/theHamsta/tree-sitter-commonlisp";
};
@ -225,12 +225,12 @@
};
corn = buildGrammar {
language = "corn";
version = "0.0.0+rev=6a6b0f4";
version = "0.0.0+rev=604d73c";
src = fetchFromGitHub {
owner = "jakestanger";
repo = "tree-sitter-corn";
rev = "6a6b0f4b1d564392c1b6a8ebcc27d94185f72ede";
hash = "sha256-7sBdw8AsRvWo8iSALt9slO0HLVoLTPrU7Tt46mMPLoc=";
rev = "604d73c38d4c28ca68e9e441ffd405d68cb63051";
hash = "sha256-ewpLp+se6XTY8aRoz247YlouS1p/kaS7CqVFu412C+Q=";
};
meta.homepage = "https://github.com/jakestanger/tree-sitter-corn";
};
@ -247,12 +247,12 @@
};
cpp = buildGrammar {
language = "cpp";
version = "0.0.0+rev=4c917d5";
version = "0.0.0+rev=d63acf7";
src = fetchFromGitHub {
owner = "tree-sitter";
repo = "tree-sitter-cpp";
rev = "4c917d560572dc2b3704b041715b2729fa199963";
hash = "sha256-pBlhhUV1lN7wIP1E0vfzAcGGlGDnByp7pdKJzvn4/ts=";
rev = "d63acf7c2ae9599a2f01c8e8beb7d333e54956e4";
hash = "sha256-pZ0V7WqlLQbqHP4QAKB/hcUmweKkFcopish5lm6JOiM=";
};
meta.homepage = "https://github.com/tree-sitter/tree-sitter-cpp";
};
@ -269,12 +269,12 @@
};
cuda = buildGrammar {
language = "cuda";
version = "0.0.0+rev=32efc63";
version = "0.0.0+rev=90446ed";
src = fetchFromGitHub {
owner = "theHamsta";
repo = "tree-sitter-cuda";
rev = "32efc637d841d3adcebb182e4420bc1dd48dab9f";
hash = "sha256-iD/cfP2pkHAZ207VEcronrbaBgHF13lyQjpkGOrmyEY=";
rev = "90446edd3e2e1eed0cb77755a083d9ed91ddea63";
hash = "sha256-jYD77AomQ4Wkhd6ZjcyCduFRbe2BhneuYQ9Dt/u73GI=";
};
meta.homepage = "https://github.com/theHamsta/tree-sitter-cuda";
};
@ -303,12 +303,12 @@
};
dart = buildGrammar {
language = "dart";
version = "0.0.0+rev=9211496";
version = "0.0.0+rev=e398400";
src = fetchFromGitHub {
owner = "UserNobody14";
repo = "tree-sitter-dart";
rev = "921149688d70f163d650f26c23f1bc42fac5d303";
hash = "sha256-XO7nh8JcLJanuelDcLS28E/55CzPs2F+mL60NMdbDVs=";
rev = "e398400a0b785af3cf571f5a57eccab242f0cdf9";
hash = "sha256-+DFqJFR5raOnNG1oyGfO+tzpBXYBk0BBc8GbEkpEBhU=";
};
meta.homepage = "https://github.com/UserNobody14/tree-sitter-dart";
};
@ -447,12 +447,12 @@
};
erlang = buildGrammar {
language = "erlang";
version = "0.0.0+rev=c431b0b";
version = "0.0.0+rev=5dba13d";
src = fetchFromGitHub {
owner = "WhatsApp";
repo = "tree-sitter-erlang";
rev = "c431b0b2d9228ed0869f7a6bb88fc9d2796d44b1";
hash = "sha256-dawA0Iem7naBhEvrrvQwk+wNBDPflC1UmLVqewTiLlA=";
rev = "5dba13dcd531c19bf99829e2e0bb31f2e08e16fe";
hash = "sha256-FH8DNE03k95ZsRwaiXHkaU9/cdWrWALCEdChN5ZPdog=";
};
meta.homepage = "https://github.com/WhatsApp/tree-sitter-erlang";
};
@ -733,12 +733,12 @@
};
haskell = buildGrammar {
language = "haskell";
version = "0.0.0+rev=e002d60";
version = "0.0.0+rev=a75238f";
src = fetchFromGitHub {
owner = "tree-sitter";
repo = "tree-sitter-haskell";
rev = "e002d60072c73ab09bafedc82d3e35a4349ca6c0";
hash = "sha256-BHpZjxWARMiInJ3S7nhOcRflKK7oR6pM+CqJgUbK3aQ=";
rev = "a75238fdefc2281cdba7dc4dca13f1d68a91f177";
hash = "sha256-KCP6nP2AI6ZwuADSlWTP21I+U4aUr40/sYTn1FVqVMA=";
};
meta.homepage = "https://github.com/tree-sitter/tree-sitter-haskell";
};
@ -1509,12 +1509,12 @@
};
racket = buildGrammar {
language = "racket";
version = "0.0.0+rev=0c8791f";
version = "0.0.0+rev=2804e03";
src = fetchFromGitHub {
owner = "6cdh";
repo = "tree-sitter-racket";
rev = "0c8791fdfed9412ea44177f1108da618d8a0470f";
hash = "sha256-rpDSlgRtBoQf2iOetyi8meqz0HfddCZalVHxnplR3iE=";
rev = "2804e03223953dc4709f4c041b57b722095a0397";
hash = "sha256-mPG0faYCxML1Ehu6bZS86rEV9Ys+tgwsGlNKgA4U3zQ=";
};
meta.homepage = "https://github.com/6cdh/tree-sitter-racket";
};
@ -1586,12 +1586,12 @@
};
ruby = buildGrammar {
language = "ruby";
version = "0.0.0+rev=2edbd43";
version = "0.0.0+rev=f257f3f";
src = fetchFromGitHub {
owner = "tree-sitter";
repo = "tree-sitter-ruby";
rev = "2edbd437ee901b8fa95861ec538e56efe3ebd127";
hash = "sha256-VJQrAU1irsGN1/V7/fjDaIiSzunUGTs0imSHUHyWex4=";
rev = "f257f3f57833d584050336921773738a3fd8ca22";
hash = "sha256-0EaU9O67faGwtO1GIxjK4Uv1etd0p1vtfrVB3d6TDF8=";
};
meta.homepage = "https://github.com/tree-sitter/tree-sitter-ruby";
};
@ -1608,12 +1608,12 @@
};
scala = buildGrammar {
language = "scala";
version = "0.0.0+rev=199cf06";
version = "0.0.0+rev=a5c4c29";
src = fetchFromGitHub {
owner = "tree-sitter";
repo = "tree-sitter-scala";
rev = "199cf060eec9e0d427ae3c6fe46de2c830d0c1e9";
hash = "sha256-s18lg8/ARxal2k3fSdVAPwso3uxTb5fy1L2LEnRsztY=";
rev = "a5c4c29b95aca29dea71f34bf046ad0b36499045";
hash = "sha256-R7503gLEWdktp/OKBc2hCAf6YzS4RInzYU99ohLJZ+g=";
};
meta.homepage = "https://github.com/tree-sitter/tree-sitter-scala";
};
@ -1966,12 +1966,12 @@
};
v = buildGrammar {
language = "v";
version = "0.0.0+rev=234c102";
version = "0.0.0+rev=519e0f6";
src = fetchFromGitHub {
owner = "vlang";
repo = "vls";
rev = "234c1028883187c6b48e030780b7332229faefa3";
hash = "sha256-4DqMn9rPTxOtQOfy8fy6R7z/+z50XnCLV0J/4QFrRz4=";
rev = "519e0f64007a40852e59bb72ff1b6e2375068664";
hash = "sha256-ps5VmLSDoc5PF/rGhNAmKkOBsuVxgjn+ZQTit8MGyvk=";
};
location = "tree_sitter_v";
meta.homepage = "https://github.com/vlang/vls";
@ -2000,12 +2000,12 @@
};
vhs = buildGrammar {
language = "vhs";
version = "0.0.0+rev=77fd8a8";
version = "0.0.0+rev=fec6e98";
src = fetchFromGitHub {
owner = "charmbracelet";
repo = "tree-sitter-vhs";
rev = "77fd8a8fcc0b4788e0b1569b1a4fa070b36add28";
hash = "sha256-6/Mg3oDjIzVnqbvZ8Q/HLyycGyHIBn3aBRcechWht/s=";
rev = "fec6e981b7795b68262ddf229d73d2aa03a89b9a";
hash = "sha256-vGRmIFWUXSG3uDpKPcxALndV7gWiQ2nG4BOGL05oZ6U=";
};
meta.homepage = "https://github.com/charmbracelet/tree-sitter-vhs";
};

View file

@ -799,6 +799,10 @@ self: super: {
dependencies = with self; [ plenary-nvim ];
});
nvim-coverage = super.nvim-coverage.overrideAttrs(old: {
dependencies = with self; [ plenary-nvim ];
});
nvim-dap-python = super.nvim-dap-python.overrideAttrs (old: {
dependencies = with self; [ nvim-dap ];
});
@ -946,24 +950,18 @@ self: super: {
sniprun =
let
version = "1.3.3";
version = "1.3.4";
src = fetchFromGitHub {
owner = "michaelb";
repo = "sniprun";
rev = "v${version}";
hash = "sha256-my06P2fqWjZAnxVjVzIV8q+FQOlxRLVZs3OZ0XBR6N0=";
hash = "sha256-H1PmjiNyUp+fTDqnfppFii+aDh8gPD/ALHFNWVXch3w=";
};
sniprun-bin = rustPlatform.buildRustPackage {
pname = "sniprun-bin";
inherit version src;
cargoLock = {
lockFile = ./sniprun/Cargo.lock;
};
postPatch = ''
ln -s ${./sniprun/Cargo.lock} Cargo.lock
'';
cargoHash = "sha256-WXhH0zqGj/D83AoEfs0kPqW7UXIAkURTJ+/BKbuUvss=";
nativeBuildInputs = [ makeWrapper ];

View file

@ -546,6 +546,7 @@ https://github.com/terrortylor/nvim-comment/,,
https://github.com/hrsh7th/nvim-compe/,,
https://github.com/roxma/nvim-completion-manager/,,
https://github.com/klen/nvim-config-local/,,
https://github.com/andythigpen/nvim-coverage/,HEAD,
https://github.com/yamatsum/nvim-cursorline/,,
https://github.com/mfussenegger/nvim-dap/,,
https://github.com/leoluz/nvim-dap-go/,HEAD,
@ -670,6 +671,7 @@ https://github.com/theprimeagen/refactoring.nvim/,,
https://github.com/tversteeg/registers.nvim/,,
https://github.com/filipdutescu/renamer.nvim/,,
https://github.com/NTBBloodbath/rest.nvim/,,
https://github.com/vim-scripts/restore_view.vim/,HEAD,restore-view-vim
https://github.com/gu-fan/riv.vim/,,
https://github.com/kevinhwang91/rnvimr/,,
https://github.com/mfukar/robotframework-vim/,,
@ -681,6 +683,7 @@ https://github.com/rust-lang/rust.vim/,,
https://github.com/hauleth/sad.vim/,,
https://github.com/vmware-archive/salt-vim/,,
https://github.com/lewis6991/satellite.nvim/,HEAD,
https://github.com/davidgranstrom/scnvim/,HEAD,
https://github.com/tiagovla/scope.nvim/,HEAD,
https://github.com/Xuyuanp/scrollbar.nvim/,,
https://github.com/cakebaker/scss-syntax.vim/,,
@ -1020,6 +1023,7 @@ https://github.com/ludovicchabant/vim-lawrencium/,,
https://github.com/hecal3/vim-leader-guide/,,
https://github.com/mk12/vim-lean/,,
https://github.com/ledger/vim-ledger/,,
https://github.com/reedes/vim-lexical/,HEAD,
https://github.com/lfe-support/vim-lfe/,,
https://github.com/josa42/vim-lightline-coc/,,
https://github.com/tommcdo/vim-lion/,,
@ -1131,6 +1135,7 @@ https://github.com/thinca/vim-scouter/,,
https://github.com/tpope/vim-scriptease/,,
https://github.com/inside/vim-search-pulse/,,
https://github.com/tpope/vim-sensible/,,
https://github.com/Konfekt/vim-sentence-chopper/,HEAD,
https://github.com/guns/vim-sexp/,,
https://github.com/tpope/vim-sexp-mappings-for-regular-people/,,
https://github.com/itspriddle/vim-shellcheck/,,

View file

@ -651,15 +651,15 @@ let
mktplcRef = {
name = "ruff";
publisher = "charliermarsh";
version = "2023.16.0";
sha256 = "sha256-MCRfG2CmGXLX15Qv/cxuH8VE1lJLPs4tXlCNnFqm5lc=";
version = "2023.24.0";
sha256 = "sha256-wwunbseX/VxoU8mRDankDim6PQy8uwEhLXR4RUVo7Xw=";
};
meta = {
license = lib.licenses.mit;
changelog = "https://github.com/charliermarsh/ruff-vscode/releases";
changelog = "https://github.com/astral-sh/ruff-vscode/releases";
description = "Ruff extension for Visual Studio Code";
downloadPage = "https://marketplace.visualstudio.com/items?itemName=charliermarsh.ruff";
homepage = "https://github.com/charliermarsh/ruff-vscode/";
homepage = "https://github.com/astral-sh/ruff-vscode/";
maintainers = [ lib.maintainers.azd325 ];
};
};
@ -914,8 +914,8 @@ let
mktplcRef = {
name = "composer-php-vscode";
publisher = "devsense";
version = "1.33.13032";
sha256 = "sha256-4SL7hPcnxN6Bq0Cclaszk2zlYF1xR2w/8zaJo16OT+U=";
version = "1.34.13295";
sha256 = "sha256-1gmw9GKG6ak/TIDq8aI63KmiHhup9EsCS583Oc6jQ0I=";
};
meta = {
changelog = "https://marketplace.visualstudio.com/items/DEVSENSE.composer-php-vscode/changelog";
@ -932,25 +932,25 @@ let
sources = {
"x86_64-linux" = {
arch = "linux-x64";
sha256 = "sha256-ccMkaXppkgdsN2XtSFaw85xLUCFMDF1z+XidP0KAHCA=";
sha256 = "sha256-L56vG9U2fqtaZIXQ5xepwLibOs/WyHQj/t2EIY7ZXvM=";
};
"x86_64-darwin" = {
arch = "darwin-x64";
sha256 = "17lsf736jagw2q6dwxvpj2dspiqrlyvmmhv6p6cf81vxijpgmq9d";
sha256 = "0rx2dkaz0qpmck1k4hg0jpksixhwcrq0sndimx0f44jcnc7aby21";
};
"aarch64-linux" = {
arch = "linux-arm64";
sha256 = "1cnfzzpikcsp1l1a8amim0fz5r1pkszn231cfl745ggiksbjyhsp";
sha256 = "13swwh1br6ry64hlq1yjbrbq71vyg44h0pb907zdjabwim27y88x";
};
"aarch64-darwin" = {
arch = "darwin-arm64";
sha256 = "0jli6l9qrssnpm5a3m1g7g1dw2i5bv9wxd0gqg6vda7dwfs2f494";
sha256 = "0fsisxc3vcyqk634xbk2rdcw2g8ablv3n46y6bz20i0npa4clhpa";
};
};
in {
name = "phptools-vscode";
publisher = "devsense";
version = "1.33.13032";
version = "1.34.13295";
} // sources.${stdenv.system};
nativeBuildInputs = [
@ -981,8 +981,8 @@ let
mktplcRef = {
name = "profiler-php-vscode";
publisher = "devsense";
version = "1.33.13032";
sha256 = "sha256-P0lzZkCHtLHJI/gwB+wbrZPR3OOia5VxTMCC2ZQULBg=";
version = "1.34.13295";
sha256 = "sha256-ZGklnPnSaHCGCRukVHie5ShvX94rXp2z3e/5PP2dq7I=";
};
meta = {
changelog = "https://marketplace.visualstudio.com/items/DEVSENSE.profiler-php-vscode/changelog";
@ -1463,8 +1463,8 @@ let
mktplcRef = {
publisher = "github";
name = "codespaces";
version = "1.14.7";
sha256 = "pcZGMxTVnMeD6rnNV0d9Wysk6MrYiYcJ+byuH9VR0ds=";
version = "1.14.8";
sha256 = "sha256-kCgnOODT1KDi9PMWs3CATXESWoHnDRhCIZhEUSkm14o=";
};
meta = { license = lib.licenses.unfree; };
};
@ -1473,8 +1473,8 @@ let
mktplcRef = {
publisher = "github";
name = "copilot";
version = "1.86.82";
sha256 = "isaqjrAmu/08gnNKQPeMV4Xc8u0Hx8gB2c78WE54kYQ=";
version = "1.89.156";
sha256 = "sha256-BJnYd9D3bWrZI8UETnAua8ngVjZJ7EXB1UrZAjVnx1E=";
};
meta = {
description = "GitHub Copilot uses OpenAI Codex to suggest code and entire functions in real-time right from your editor.";
@ -1489,8 +1489,8 @@ let
mktplcRef = {
publisher = "github";
name = "copilot-chat";
version = "0.1.2023060101";
sha256 = "sha256-g3UIcy2TpD3m8EamxneUXYAV/bbCPvPhOWdcuXPkK9g=";
version = "0.3.2023061502";
sha256 = "sha256-sUoKwlPDMz+iQbmIsD2JhyDwmUQzOyCHXaXCUaizQ7k=";
};
meta = {
description = "GitHub Copilot Chat is a companion extension to GitHub Copilot that houses experimental chat features";
@ -1543,8 +1543,8 @@ let
# the VSCode Marketplace and use a calver scheme. We should avoid
# using preview versions, because they can require insider versions
# of VS Code
version = "0.64.0";
sha256 = "tgQD3o5uMbWofVx7FPyWT1yaeu2e4aPxterN4yXA33U=";
version = "0.66.0";
sha256 = "sha256-rhAFNX+/BoKkQeFlVdoHzA8UmZeQofq7+UPooWleYVw=";
};
meta = { license = lib.licenses.mit; };
};
@ -2197,8 +2197,8 @@ let
mktplcRef = {
name = "direnv";
publisher = "mkhl";
version = "0.12.0";
sha256 = "sha256-UMGTWAiPAxSjy5ALUkijD0GE9TW37TZ3UvMmgFBNYsU=";
version = "0.13.0";
sha256 = "sha256-KdLJ7QTi9jz+JbbQuhXqyE3WV9oF+wyC/9ZJ/XTFOYc=";
};
meta = {
description = "direnv support for Visual Studio Code";
@ -3029,8 +3029,8 @@ let
mktplcRef = {
name = "code-spell-checker";
publisher = "streetsidesoftware";
version = "2.20.4";
sha256 = "sha256-GOXKXZPEynyqRUUY0pdNwt+141kJleg74IbCP4/34R8=";
version = "2.20.5";
sha256 = "sha256-IR/mwEmiSPN/ZRiazclRSOie9RAjdNM0zXexVzImOs8=";
};
meta = {
changelog = "https://marketplace.visualstudio.com/items/streetsidesoftware.code-spell-checker/changelog";

View file

@ -0,0 +1,22 @@
From 4f64ad191ec79b9f40843f88e3ac5910720636da Mon Sep 17 00:00:00 2001
From: Changsheng Wu <Congee@users.noreply.github.com>
Date: Fri, 9 Jun 2023 15:41:53 -0400
Subject: [PATCH] Update Cargo.toml
---
adapter/Cargo.toml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/adapter/Cargo.toml b/adapter/Cargo.toml
index bc86723..f5f26ce 100644
--- a/adapter/Cargo.toml
+++ b/adapter/Cargo.toml
@@ -39,7 +39,7 @@ winapi = { version = "0.3.8", features = ["std", "wincon", "namedpipeapi"] }
winreg = "0.6.2"
[lib]
-crate-type = ["staticlib"]
+crate-type = ["dylib", "rlib"]
[[bin]]
name = "codelldb"

View file

@ -1,8 +1,7 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 6ae4dfb..519f544 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -16,13 +16,6 @@ endif()
@@ -16,13 +16,6 @@
set(VERSION "${VERSION}${VERSION_SUFFIX}")
message("Version ${VERSION}")
@ -16,11 +15,11 @@ index 6ae4dfb..519f544 100644
if (CMAKE_SYSROOT)
set(CMAKE_C_FLAGS "--sysroot=${CMAKE_SYSROOT} ${CMAKE_C_FLAGS}")
set(CMAKE_CXX_FLAGS "--sysroot=${CMAKE_SYSROOT} ${CMAKE_CXX_FLAGS}")
@@ -93,16 +86,6 @@ configure_file(package.json ${CMAKE_CURRENT_BINARY_DIR}/package.json @ONLY)
@@ -102,16 +95,6 @@
configure_file(webpack.config.js ${CMAKE_CURRENT_BINARY_DIR}/webpack.config.js @ONLY)
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/package-lock.json DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
-# Run 'npm install'
-# Install node_modules
-execute_process(
- COMMAND ${NPM} ci # like install, but actually respects package-lock file.
- WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
@ -30,10 +29,10 @@ index 6ae4dfb..519f544 100644
- message(FATAL_ERROR "npm intall failed: ${Result}")
-endif()
-
# Copy it back, so we can commit the lock file.
file(COPY ${CMAKE_CURRENT_BINARY_DIR}/package-lock.json DESTINATION ${CMAKE_CURRENT_SOURCE_DIR})
@@ -154,6 +137,7 @@ add_custom_target(tests
# Resolve $refs
execute_process(
COMMAND ${WithEnv} NODE_PATH=${CMAKE_CURRENT_BINARY_DIR}/node_modules node ${CMAKE_CURRENT_SOURCE_DIR}/tools/prep-package.js ${CMAKE_CURRENT_BINARY_DIR}/package.json ${CMAKE_CURRENT_BINARY_DIR}/package.json
@@ -169,6 +152,7 @@
add_copy_file(PackageFiles ${CMAKE_CURRENT_SOURCE_DIR}/README.md ${CMAKE_CURRENT_BINARY_DIR}/README.md)
add_copy_file(PackageFiles ${CMAKE_CURRENT_SOURCE_DIR}/CHANGELOG.md ${CMAKE_CURRENT_BINARY_DIR}/CHANGELOG.md)
@ -41,7 +40,7 @@ index 6ae4dfb..519f544 100644
add_copy_file(PackageFiles ${CMAKE_CURRENT_SOURCE_DIR}/images/lldb.png ${CMAKE_CURRENT_BINARY_DIR}/images/lldb.png)
add_copy_file(PackageFiles ${CMAKE_CURRENT_SOURCE_DIR}/images/user.svg ${CMAKE_CURRENT_BINARY_DIR}/images/user.svg)
add_copy_file(PackageFiles ${CMAKE_CURRENT_SOURCE_DIR}/images/users.svg ${CMAKE_CURRENT_BINARY_DIR}/images/users.svg)
@@ -170,6 +154,7 @@ add_custom_target(dev_debugging
@@ -185,6 +169,7 @@
set(PackagedFilesBootstrap
README.md
CHANGELOG.md
@ -49,4 +48,3 @@ index 6ae4dfb..519f544 100644
extension.js
images/*
syntaxes/*

View file

@ -5,7 +5,7 @@ assert lib.versionAtLeast python3.version "3.5";
let
publisher = "vadimcn";
pname = "vscode-lldb";
version = "1.9.1";
version = "1.9.2";
vscodeExtUniqueId = "${publisher}.${pname}";
vscodeExtPublisher = publisher;
@ -15,7 +15,7 @@ let
owner = "vadimcn";
repo = "vscode-lldb";
rev = "v${version}";
sha256 = "sha256-DqxdZtSW8TZaOFGXOZQ7a4tmgRj6iAWDppCNomdfVxY=";
hash = "sha256-6QmYRlSv8jY3OE3RcYuZt+c3z6GhFc8ESETVfCfF5RI=";
};
# need to build a custom version of lldb and llvm for enhanced rust support
@ -25,7 +25,7 @@ let
pname = "${pname}-adapter";
inherit version src;
cargoSha256 = "sha256-+hfNkr9cZbOcWdWKUWUqDj9a0PKjKeApFXYZzS1XokE=";
cargoHash = "sha256-Qq2igtH1XIB+NAEES6hdNZcMbEmaFN69qIJ+gTYupvQ=";
nativeBuildInputs = [ makeWrapper ];
@ -38,6 +38,8 @@ let
"--bin=codelldb"
];
patches = [ ./adapter-output-shared_object.patch ];
# Tests are linked to liblldb but it is not available here.
doCheck = false;
};
@ -46,7 +48,7 @@ let
pname = "${pname}-node-deps";
inherit version src;
npmDepsHash = "sha256-Cdlq1jxHSCfPjXhasClc6XzEUp3vlLgkStbhYtCyc7E=";
npmDepsHash = "sha256-fMKGi+AJTMlWl7SQtZ21hUwOLgqlFYDhwLvEergQLfI=";
nativeBuildInputs = [
python3
@ -82,12 +84,6 @@ in stdenv.mkDerivation {
patches = [ ./cmake-build-extension-only.patch ];
postPatch = ''
# temporary patch for forgotten version updates
substituteInPlace CMakeLists.txt \
--replace "1.9.0" ${version}
'';
postConfigure = ''
cp -r ${nodeDeps}/lib/node_modules .
'';

View file

@ -1,5 +1,5 @@
#! /usr/bin/env nix-shell
#! nix-shell ../../update-shell.nix -i bash -p wget prefetch-npm-deps
#! nix-shell ../../update-shell.nix -i bash -p nix-prefetch-github prefetch-npm-deps
set -eo pipefail
cd "$(dirname "${BASH_SOURCE[0]}")"
@ -18,7 +18,7 @@ version="$1"
if [[ $# -ne 1 ]]; then
# no version specified, find the newest one
version=$(
curl -s "https://api.github.com/repos/$owner/$repo/releases" |
curl -sL "https://api.github.com/repos/$owner/$repo/releases" |
jq 'map(select(.prerelease | not)) | .[0].tag_name' --raw-output |
sed 's/[\"v]//'
)
@ -29,19 +29,18 @@ if grep -q 'cargoSha256 = ""' ./default.nix; then
fi
if [[ "$version" == "$old_version" ]]; then
echo "Up to date: $version"
exit
fi
echo "$old_version -> $version"
# update hashes
sed -E 's/\bversion = ".*?"/version = "'$version'"/' --in-place "$nixFile"
srcHash=$(nix-prefetch fetchFromGitHub --owner vadimcn --repo vscode-lldb --rev "v$version")
srcHash=$(nix-prefetch-github vadimcn vscode-lldb --rev "v$version" | jq --raw-output .sha256)
sed -E 's#\bsha256 = ".*?"#sha256 = "'$srcHash'"#' --in-place "$nixFile"
cargoHash=$(nix-prefetch "{ sha256 }: (import $nixpkgs {}).vscode-extensions.vadimcn.vscode-lldb.adapter.cargoDeps.overrideAttrs (_: { outputHash = sha256; })")
sed -E 's#\bcargoSha256 = ".*?"#cargoSha256 = "'$cargoHash'"#' --in-place "$nixFile"
pushd $TMPDIR
wget https://raw.githubusercontent.com/$owner/$repo/v${version}/package-lock.json
curl -LO https://raw.githubusercontent.com/$owner/$repo/v${version}/package-lock.json
npmDepsHash=$(prefetch-npm-deps ./package-lock.json)
popd
sed -E 's#\bnpmDepsHash = ".*?"#npmDepsHash = "'$npmDepsHash'"#' --in-place "$nixFile"

View file

@ -36,3 +36,5 @@ update_vscodium $VSCODIUM_VER darwin-x64 x86_64-darwin zip
update_vscodium $VSCODIUM_VER linux-arm64 aarch64-linux tar.gz
update_vscodium $VSCODIUM_VER darwin-arm64 aarch64-darwin zip
update_vscodium $VSCODIUM_VER linux-armhf armv7l-linux tar.gz

View file

@ -24,21 +24,21 @@ let
archive_fmt = if stdenv.isDarwin then "zip" else "tar.gz";
sha256 = {
x86_64-linux = "10nanw9xbns3wkcy1vr0shqk2719cfql0aj0lxbza74mhm290izg";
x86_64-darwin = "1rffjb8p4vjwgvzrzpwqs3mb2hsf9hdml0r8zhzrzxlvrzzkkfdi";
aarch64-linux = "1fgvgma8s1y0fm3ynz9diz2plffmxjpgf0w2flnr5zr14yvzi072";
aarch64-darwin = "071vr52mcc0wrqa90kimmpmyj91nxwhg3jkfwcdssw2cr7qpjw67";
armv7l-linux = "0b4d70d9qxlafn2mmf7vnmg09gdmv3cr57f32nvsn361z18y7yi2";
x86_64-linux = "0ykchyksfc7aqar2f691jva36v0syn575rj6hydws0y79pplvinh";
x86_64-darwin = "1zayc6z4zfkjb238dx51b1f2s9clqzhxhvb91j5w0ayqk735bd5d";
aarch64-linux = "1nbnprf6sjqqrw7qha0r6f78n7jjvhn8kv1wxh5pi535nlmxza14";
aarch64-darwin = "0lijfhlbj0vsjd6kdfr0fmks2spjazrzwnlxxw0ka80psxghavs6";
armv7l-linux = "0dhgb1lxq8r4fk6nkb14h986w3dj19llvjvn8jq4mxdbscnik2j5";
}.${system} or throwSystem;
in
callPackage ./generic.nix rec {
# Please backport all compatible updates to the stable release.
# This is important for the extension ecosystem.
version = "1.79.1";
version = "1.79.2";
pname = "vscode";
# This is used for VS Code - Remote SSH test
rev = "b380da4ef1ee00e224a15c1d4d9793e27c2b6302";
rev = "695af097c7bd098fbf017ce3ac85e09bbc5dda06";
executableName = "code" + lib.optionalString isInsiders "-insiders";
longName = "Visual Studio Code" + lib.optionalString isInsiders " - Insiders";
@ -62,7 +62,7 @@ in
src = fetchurl {
name = "vscode-server-${rev}.tar.gz";
url = "https://update.code.visualstudio.com/commit:${rev}/server-linux-x64/stable";
sha256 = "0732wpl4fjknhn423k23zrcqz9psjj1iy8lqa0fc8970n1m7i58b";
sha256 = "0xbc20vh6rj2g6wvw73k8wqm1lxwirph3swwilq5f9hmkzha1z7i";
};
};

View file

@ -15,10 +15,11 @@ let
archive_fmt = if stdenv.isDarwin then "zip" else "tar.gz";
sha256 = {
x86_64-linux = "0ymgy0xisfxqrrmwpy0ga2rhlzhxqq39ppjfawxaf0dfdnkhgkgr";
x86_64-darwin = "1q5fg7cm8d4iwvx8b589aqby5vw1b66y85dxgrq6sapz9cg2pvhz";
aarch64-linux = "13vdqbhap9qd96y5n0immlwr61v8f7yvbwc9m0qas06f30b71f3z";
aarch64-darwin = "01dc7hv13ngr0xv2cmd2likmdc2gz0jbmgashmkm12gdrjp4q968";
x86_64-linux = "1qwgdvsqwkbfxf9xdxfxfmf10xcxgik4v6s5djggq130mqvrnv7x";
x86_64-darwin = "12cn369yi652fvk6lha5y6nglms2zqmvqsjwklj3dl0ms9329jzq";
aarch64-linux = "1fxmbz3qv027spgh6j075s00r69hff1m4fqvs9p2axb5m7ikdp16";
aarch64-darwin = "0g5ylxcn41x8ajl7lv3h2fkx52pkgmkw95malgh8h1y3rvg73a4n";
armv7l-linux = "0m1v24gg2dy79hgrz37gysgrazg8vkr1gkp52j6m6y76vi0l8249";
}.${system} or throwSystem;
sourceRoot = if stdenv.isDarwin then "" else ".";
@ -28,7 +29,7 @@ in
# Please backport all compatible updates to the stable release.
# This is important for the extension ecosystem.
version = "1.78.2.23132";
version = "1.79.2.23166";
pname = "vscodium";
executableName = "codium";

View file

@ -43,6 +43,13 @@ stdenv.mkDerivation rec {
gtk3
];
patches = [
(fetchpatch {
url = "https://github.com/visualboyadvance-m/visualboyadvance-m/commit/1d7e8ae4edc53a3380dfea88329b8b8337db1c52.patch";
sha256 = "sha256-SV1waz2JSKiM6itwkqwlE3aOZCcOl8iyBr06tyYlefo=";
})
];
cmakeFlags = [
"-DCMAKE_BUILD_TYPE='Release'"
"-DENABLE_FFMPEG='true'"

View file

@ -27,13 +27,13 @@
stdenv.mkDerivation (finalAttrs: {
pname = "xemu";
version = "0.7.92";
version = "0.7.95";
src = fetchFromGitHub {
owner = "xemu-project";
repo = "xemu";
rev = "v${finalAttrs.version}";
hash = "sha256-wRGoeud4EY2N/seG0Kd7CJt1IkDdJMJwFwpQNoLOl2g=";
hash = "sha256-JZEDVmW1Q+nAFv8oVaYl7w41Mvm+L/t8PamkkE1FaIk=";
fetchSubmodules = true;
};

View file

@ -317,7 +317,7 @@ checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91"
[[package]]
name = "felix"
version = "2.3.0"
version = "2.4.0"
dependencies = [
"chrono",
"content_inspector",

View file

@ -9,13 +9,13 @@
rustPlatform.buildRustPackage rec {
pname = "felix";
version = "2.3.0";
version = "2.4.0";
src = fetchFromGitHub {
owner = "kyoheiu";
repo = pname;
rev = "v${version}";
sha256 = "sha256-+8tYllK8UYW7hdA4qoH8Eiu6SbXvjRe4BFfEbwabuIY=";
sha256 = "sha256-yaAjw0Ayg0FuR5GVpmjwA7P1KfWFkXP0YsjNLhSl1FI=";
};
cargoLock = {

View file

@ -2,7 +2,7 @@
, perl # used to generate help tags
, pkg-config
, ncurses, libX11
, util-linux, file, which, groff
, file, which, groff
# adds support for handling removable media (vifm-media). Linux only!
, mediaSupport ? false, python3 ? null, udisks2 ? null, lib ? null
@ -20,7 +20,7 @@ in stdenv.mkDerivation rec {
};
nativeBuildInputs = [ perl pkg-config makeWrapper ];
buildInputs = [ ncurses libX11 util-linux file which groff ];
buildInputs = [ ncurses libX11 file which groff ];
postPatch = ''
# Avoid '#!/usr/bin/env perl' references to build help.

View file

@ -15,13 +15,13 @@
buildDotnetModule rec {
pname = "denaro";
version = "2023.5.0";
version = "2023.6.0";
src = fetchFromGitHub {
owner = "NickvisionApps";
repo = "Denaro";
rev = version;
hash = "sha256-kYN4Qm4xxOUkMi3twyVkT9PBnauDp7aenYy0YXzwKNA=";
hash = "sha256-oLEk3xHDkz98wOMwqr+lLtsFmOJdyPYK1YAutegic7U=";
};
dotnet-sdk = dotnetCorePackages.sdk_7_0;

View file

@ -4,6 +4,7 @@
{ fetchNuGet }: [
(fetchNuGet { pname = "Cake.Tool"; version = "3.0.0"; sha256 = "0gjacqdgnh1d40sm9vrdb8vr6jv3vyh6j265gj1aaf9af2569637"; })
(fetchNuGet { pname = "Docnet.Core"; version = "2.3.1"; sha256 = "03b39x0vlymdknwgwhsmnpw4gj3njmbl9pd57ls3rhfn9r832d44"; })
(fetchNuGet { pname = "GetText.NET"; version = "1.8.7"; sha256 = "0djn5sc7p33ayjmxmxs4hqagh51bg70wqs6mwbhlhsrc67bvgj9a"; })
(fetchNuGet { pname = "GirCore.Adw-1"; version = "0.3.0"; sha256 = "1bsjqxck58dff9hnw21cp3xk1afly8721sfsbnxcr5i39hlrbl37"; })
(fetchNuGet { pname = "GirCore.Cairo-1.0"; version = "0.3.0"; sha256 = "1zb8ilgywpwgjrzrbdvzvy70f46fb05iy49592mkjg2lv24q5l3y"; })
(fetchNuGet { pname = "GirCore.FreeType2-2.0"; version = "0.3.0"; sha256 = "1bc78409bdhfqqbirwr1lkzxl27adndv05q5fcm5sivmlzr7fbkm"; })

View file

@ -152,11 +152,11 @@ in mkDerivation rec {
--prefix PATH : ${lib.makeBinPath [ grass ]}
'';
meta = {
meta = with lib; {
description = "A Free and Open Source Geographic Information System";
homepage = "https://www.qgis.org";
license = lib.licenses.gpl2Plus;
platforms = with lib.platforms; linux;
maintainers = with lib.maintainers; [ lsix sikmir willcohen ];
license = licenses.gpl2Plus;
maintainers = with maintainers; teams.geospatial.members ++ [ lsix ];
platforms = with platforms; linux;
};
}

View file

@ -152,11 +152,11 @@ in mkDerivation rec {
--prefix PATH : ${lib.makeBinPath [ grass ]}
'';
meta = {
meta = with lib; {
description = "A Free and Open Source Geographic Information System";
homepage = "https://www.qgis.org";
license = lib.licenses.gpl2Plus;
platforms = with lib.platforms; linux;
maintainers = with lib.maintainers; [ lsix sikmir willcohen ];
license = licenses.gpl2Plus;
maintainers = with maintainers; teams.geospatial.members ++ [ lsix ];
platforms = with platforms; linux;
};
}

View file

@ -0,0 +1,68 @@
{ lib
, stdenv
, fetchFromGitHub
, cmake
, boost
, eigen
, glm
, libGL
, libpng
, openexr
, tbb
, xorg
, ilmbase
, llvmPackages
}:
stdenv.mkDerivation rec {
pname = "curv";
version = "0.5";
src = fetchFromGitHub {
owner = "curv3d";
repo = "curv";
rev = "refs/tags/${version}";
hash = "sha256-m4p5uxRk6kEJUilmbQ1zJcQDRvRCV7pkxnqupZJxyjo=";
fetchSubmodules = true;
};
strictDeps = true;
nativeBuildInputs = [
cmake
];
buildInputs = [
boost
eigen
glm
libGL
libpng
openexr
tbb
xorg.libX11
xorg.libXcursor
xorg.libXext
xorg.libXi
xorg.libXinerama
xorg.libXrandr
] ++ lib.optionals stdenv.isDarwin [
ilmbase
llvmPackages.openmp
];
# GPU tests do not work in sandbox, instead we do this for sanity
checkPhase = ''
runHook preCheck
test "$($out/bin/curv -x 2 + 2)" -eq "4"
runHook postCheck
'';
meta = with lib; {
description = "A 2D and 3D geometric modelling programming language for creating art with maths";
homepage = "https://github.com/curv3d/curv";
license = licenses.asl20;
platforms = platforms.all;
broken = stdenv.isDarwin;
maintainers = with maintainers; [ pbsds ];
};
}

View file

@ -14,19 +14,19 @@
stdenv.mkDerivation rec {
pname = "drawio";
version = "21.3.7";
version = "21.4.0";
src = fetchFromGitHub {
owner = "jgraph";
repo = "drawio-desktop";
rev = "v${version}";
fetchSubmodules = true;
hash = "sha256-f8QQA8qehB7wYJRoKizPxewBTVV64kxaBg2oTTNelBU=";
hash = "sha256-wiLeRku8/v7bB/Ml6rKPdZRtxJYFMAt3Xz9MixXhHnw=";
};
offlineCache = fetchYarnDeps {
yarnLock = src + "/yarn.lock";
hash = "sha256-gLt6a2Kq1LIzFiSnqLKKFTg8sd3Wrqsdys23SCFcrQ0=";
hash = "sha256-phB/KPIkgCJT4wEDmUWvaXj0ZPih0EQY40LbRfA58Ro=";
};
nativeBuildInputs = [

View file

@ -5,21 +5,15 @@
stdenv.mkDerivation rec {
pname = "feh";
version = "3.9";
version = "3.10";
src = fetchFromGitHub {
owner = "derf";
repo = pname;
rev = version;
sha256 = "sha256-rgNC4M1TJ5EPeWmVHVzgaxTGLY7CYQf7uOsOn5bkwKE=";
hash = "sha256-9NJ6zgQHcFJPmRlqJuCMXcKjLvDPUG+QvKGTJlWvWK4=";
};
postPatch = ''
substituteInPlace test/feh.t \
--replace "WARNING:" "WARNING: While loading" \
--replace "Does not look like an image \(magic bytes missing\)" "Unknown error \(15\)"
'';
outputs = [ "out" "man" "doc" ];
nativeBuildInputs = [ makeWrapper ];

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