With removeUnknownConfigureFlags, it's impossible to express a package
that needs --enable-static, but will not accept --disable-shared,
without overriding the result of removeUnknownConfigureFlags _again_
in pkgs/top-level/static.nix.
It would be much better (and more in line with the rest of Nixpkgs) if
we encoded changes needed for static builds in package definitions
themselves, rather than in an ever-expanding list in static.nix. This
is especially true when doing it in static.nix is going to require
multiple overrides to express what could be expressed with stdenv
options.
So as a step in that direction, and to fix the problem described
above, here I replace removeUnknownConfigureFlags with a new stdenv
option, dontAddStaticConfigureFlags. With this mechanism, a package
that needs one but not both of the flags just needs to set
dontAddStaticConfigureFlags and then set up configureFlags manually
based on stdenv.hostPlatform.isStatic.
The attributes got renamed in PR #126440 and in some places this caused
evaluation errors, e.g. the tarball job was saying (locally)
> attribute 'alsaUtils' missing, at /build/source/nixos/modules/services/audio/alsa.nix:6:4
and I suspect that trunk-combined jobset's failure to evaluate was also caused.
We were using Pandoc’s Markdown parser. This is non-standard and might cause issues when we finally switch to some other tool.
Since RFC 0072 agreed on CommonMark, let’s switch to that.
We will use some extensions to make the limited syntax bearable but these are official so they should be more portable.
We are still using Pandoc’s Markdown parser, which differs from CommonMark spec slightly.
Notably:
- Line breaks in lists behave differently.
- Admonitions do not support the simpler syntax https://github.com/jgm/commonmark-hs/issues/75
- The auto_identifiers uses a different algorithm – I made the previous ones explicit.
- Languages (classes) of code blocks cannot contain whitespace so we have to use “pycon” alias instead of Python “console” as GitHub’s linguist
While at it, I also fixed the following issues:
- ShellSesssion was used
- Removed some pointless docbook tags.
The patch utility does not understand git formatted patches.
For text files, there is no problem, but binary files use the
git format.
The -a param makes git diff put binary files into the patch in
raw format that can be understood by the patch tool.
Previously it was not possible to define multiple ldflags, since only
the last definition applies, and there's some quoting issues with
`buildFlagsArray`. With the new `ldflags` argument it's possible to do
this, e.g.
ldflags = drv.ldflags or [] ++ [
"-X main.Version=1.0"
]
can now properly append a flag without clearing all previous ldflags.
This change introduces the cargoLock argument to buildRustPackage,
which can be used in place of cargo{Sha256,Hash} or cargoVendorDir. It
uses the importCargoLock function to build the vendor
directory. Differences compared to cargo{Sha256,Hash}:
- Requires a Cargo.lock file.
- Does not require a Cargo hash.
- Retrieves all dependencies as fixed-output derivations.
This makes buildRustPackage much easier to use as part of a Rust
project, since it does not require updating cargo{Sha256,Hash} for
every change to the lock file.
This function can be used to create an output path that is a cargo
vendor directory. In contrast to e.g. fetchCargoTarball all the
dependent crates are fetched using fixed-output derivations. The
hashes for the fixed-output derivations are gathered from the
Cargo.lock file.
Usage is very simple, e.g.:
importCargoLock {
lockFile = ./Cargo.lock;
}
would use the lockfile from the current directory.
The implementation of this function is based on Eelco Dolstra's
import-cargo:
https://github.com/edolstra/import-cargo/blob/master/flake.nix
Compared to upstream:
- We use fetchgit in place of builtins.fetchGit.
- Sync to current cargo vendoring.
To me, as a native English speaker, this doesn't change the meaning of
the sentence at all. But to a non-native speaker, this can read like
the staging-next rules are only recommendations. Let's make this
clearer.
This will ensure the sections have stable links as well as prevent conflicts (pandoc uses heading text for ids and DocBook requires unique ids across the book).
* restore mixBuild
remove bootstrapper by going through ERL_LIBS
mix will use ERL_LIBS to find compiled dependencies
Co-authored-by: Zach <zach@hipcreativeinc.com>
The distinction between the inputs doesn't really make sense in the
mkShell context. Technically speaking, we should be using the
nativeBuildInputs most of the time.
So in order to make this function more beginner-friendly, add "packages"
as an attribute, that maps to nativeBuildInputs.
This commit also updates all the uses in nixpkgs.
Android is deprecating ndk.dir in favor of specifying exact NDK
version in Gradle configuration. Ensure that we can support multiple
NDKs, and link them into the location the Android Gradle Plugin expects.
Describe how to package a plugin that doesn't exist in nixpkgs (and also how to include an external file).
Co-authored-by: Jörg Thalheim <Mic92@users.noreply.github.com>
It is now possible to pass a `fromImage` to `buildLayeredImage` and
`streamLayeredImage`, similar to what `buildImage` currently supports.
This will prepend the layers of the given base image to the resulting
image, while ensuring that at most `maxLayers` are used. It will also
ensure that environment variables from the base image are propagated
to the final image.
Added the following ids to avoid possible id conflicts from ids auto-generated from titles:
- setup-hook-perl
- setup-hook-python
- setup-hook-pkg-config
- setup-hook-automake
- setup-hook-autoconf
- setup-hook-libxml2
- setup-hook-gdk-pixbuf
- This is the first packages which uses Dune in order to build and install
so I had to refactor build-support/coq/default.nix in order to support it.
- I added a new feature: one can now release.v.sha256 empty to try to download
with a fake sha256, hence failures are reported and one can copy paste the
sha256 given by the error message.
- I updated the documentation of languages-frameworks/coq.section.md accordingly.
The `checkType` argument of buildRustPackage was not used anymore
since the refactoring of `buildRustPackage` into hooks. This was
an oversight that is fixed by this change.
The check type can also be passed directly to cargoCheckHook using the
`cargoCheckType` environment variable.
* stdenv/check-meta: change to allowlist and blocklist
* Update pkgs/stdenv/generic/check-meta.nix
Co-authored-by: Graham Christensen <graham@grahamc.com>
Specify that the merges from master to staging-next to staging are
performed by GitHub actions. This helps the reader understand the
relationship between the branches.
API change:
`cargoParallelTestThreads` suggests that this attribute sets the
number of threads used during tests, while it is actually a boolean
option (use 1 thread or NIX_BUILD_CORES threads). In the hook, this
is replaced by a more canonical name `dontUseCargoParallelTests`.
The directory in the tarball of vendored dependencies contains `name`,
which is by default set to `${pname}-${version}`. This adds an
additional attribute to permit setting the name to something of the
user's choosing.
Since `cargoSha256`/`cargoHash` depend on the name of the directory of
vendored dependencies, `cargoDepsName` can be used to e.g. make the
hash invariant to the package version by setting `cargoDepsName =
pname`.
Otherwise, running "nix-build" in the doc directory would create a
result symlink, so running "nix-build" again would produce a different
derivation, and so on forever, because the result symlink would keep
changing and wasn't ignored.
* doc: add function argument order convention
Ordering by usage is the de facto ordering given to arguments. It's
logical, and makes finding argument usage easier. Putting lib first is
common in NixOS modules, so it's reasonable to mirror this in nixpkgs
proper. Additionally, it's not a package as such, has zero dependencies,
and can be found used anywhere in a derivation.
* doc: clean up usage of lib
`PANDOC_LUA_FILTERS_DIR` is set in `makeFlags` in `doc/default.nix`,
and needs to be explicitely passed to `make` when called manually.
Signed-off-by: Pamplemousse <xav.maso@gmail.com>
I think we should have something in the manual people can point to
about this, to avoid rehashing it over and over in PRs. "stdenv.lib"
makes it look like lib is part of stdenv, which it isn't, and makes it
even more confusing as a newcomer to figure out what stdenv is (and
isn't).
androidenv did not previously write license files, which caused certain
gradle-based Android tools to fail. Restructure androidenv's list of
Android packages into a single repo.json file to prevent duplication
and enable us to extract the EULA texts, which we then hash with
builtins.hashString to produce the license files that Android gradle
tools look for.
Remove includeDocs and lldbVersions, as these have been removed
from the Android package repositories.
Improve documentation and examples.
The last snapshot was 4 months ago (2020-08-19). I also found that I needed newer definitions when I was trying to fix the R arrow package.
This update required a couple of manual changes:
1. Removing a few deleted packages from default.nix
2. Renaming the "assert" package to "r_assert" in generate-r-packages.R because "assert" is a keyword in Nix
I used the existing anchors generated by Docbook, so the anchor part
should be a no-op. This could be useful depending on the
infrastructure we choose to use, and it is better to be explicit than
rely on Docbook's id generating algorithms.
I got rid of the metadata segments of the Markdown files, because they
are outdated, inaccurate, and could make people less willing to change
them without speaking with the author.
See https://github.com/NixOS/nixpkgs/issues/106950
> They way it's worded says buildInputs are for build-time and nativeBuildInputs are for run-time. The other documentation leads me to believe it is the other way around.
The sectn and ulink hacks are not necessary since pandoc has been defaulting to Docbook 5 for a long time.
With the pandoc patches, we can get rid of id→xml:id replacement and xmlns hacks as well.
* converted texlive doc to markdown
Signed-off-by: GitHub <noreply@github.com>
* Remove frontmatter (suggestion)
Co-authored-by: Ryan Mulligan <ryan@ryantm.com>
* Add anchor (suggestion)
Co-authored-by: Ryan Mulligan <ryan@ryantm.com>
* apply suggestions from @ryantm
Signed-off-by: GitHub <noreply@github.com>
* fix nesting of codeblocks into list items as suggested by @jtojnar
Signed-off-by: GitHub <noreply@github.com>
* add anchors for subtopics as said by @jtojnar
Signed-off-by: GitHub <noreply@github.com>
Co-authored-by: Ryan Mulligan <ryan@ryantm.com>
I did double-check that the fixed version does what we would want. In
either case, the katamari script is mostly of historical value, and
there's nothing to change in pkgs.
I tested the shell snippets shown here; they work. Note that, because
they're intended for copy-and-paste, I did *not* make them into
ShellSessions with prompts. But that's something I can do if desired.
This example was confusing at first because the element the message
indicated wasn't in the list of possible values was but the possible
values didn't match up either. This ensures the example is consistent
with the logic being presented.
Each invocation of pkgs.extends adds 130MB of allocation to the hydra
evaluator. We are already struggling with the amount of memory nixpkgs
requires.
`pkgs.extend` is a useful escape-hatch, but should be not be used inside
of nixpkgs directly.
This is essentially an automatic pandoc conversion of the weechat
section in docbook as part of the larger CommonMark Docs project
(https://github.com/NixOS/nixpkgs/projects/37)
fixes#105264
Update doc/builders/packages/weechat.section.md
Co-authored-by: Frederik Rietdijk <freddyrietdijk@fridh.nl>
Update doc/builders/packages/weechat.section.md
Co-authored-by: Jan Tojnar <jtojnar@gmail.com>
* Updated QT section
* Fixed trailing whitespace
* Update doc/languages-frameworks/qt.section.md
Co-authored-by: Jan Tojnar <jtojnar@gmail.com>
* Update doc/languages-frameworks/qt.section.md
Co-authored-by: Jan Tojnar <jtojnar@gmail.com>
* Made changes to docs as per jtojnar's review
* Added docbook tags for callouts back in
Co-authored-by: Jan Tojnar <jtojnar@gmail.com>
With the addition of ruby.withPackages, manveru rewrote the nixpkgs
manual section for the ruby language but did not add it to the manual.
This commit replaces the previous documentation with manveru's updated
version.
Adding them to `maintainers/maintainer-list` in a separate commit.
Co-Authored-By: Pavol Rusnak <pavol@rusnak.io>
Co-Authored-By: Atemu <atemu.main@gmail.com>
Co-Authored-By: Kevin Cox <kevincox@kevincox.ca>
Add nice markdown documentation for how to use mvn2nix plugin and the
buildMaven function within nixpkgs.
Update doc/languages-frameworks/maven.md
Co-authored-by: Robert Hensing <roberth@users.noreply.github.com>
Apply suggestions from code review
Co-authored-by: Doron Behar <doron.behar@gmail.com>
Apply suggestions from code review
Co-authored-by: Doron Behar <doron.behar@gmail.com>
Apply suggestions from code review
Co-authored-by: Doron Behar <doron.behar@gmail.com>
The previous implementation of plugin-support for the kakoune derivation
was based on generating, at build time, a `plugins.kak` file that would
source all .kak files in the list of plugins, and wrap the `kak` binary
in a script that would add some command-line arguments so that this
file gets loaded on start-up. The main problem with this approach
is that the plugins' code get executed *after* the user's configuration
file is loaded, so effectively one cannot automatically activate/configure
these plugins.
The idiomatic way of loading plugins is ensuring they end up installed
somwhere under `share/kak/autoload`. Because plugins are already being
packaged to have their code in `share/kak/autoload/plugins/<name-of-plugin>`,
we can obtain a derivation that includes the plugins simply by doing a
`symlinkJoin` of `kakoune-unwrapped` and all the requested plugins.
For this to work, we need to fix two issues:
1. By default, kakoune makes `share/kak/autoload` a symbolic link to
`share/kak/rc`, which contains all builtin definitions. We need
to patch this to put the symlink under `share/kak/autoload/rc`, so that
the join works.
2. By default kakoune expects the `autoload` directory to be in
`../share/kak/autoload` relative to the location of the `kak` binary.
We need to set the `KAKOUNE_RUNTIME` to point the symlinked
share/kak for this to work.