mirror of
https://github.com/NixOS/nixpkgs.git
synced 2024-11-22 15:03:28 +00:00
Merge pull request #257100 from Ma27/version-info-lib
flake: fix `lib.trivial.version` when used from a flake
This commit is contained in:
commit
067ac02817
17
flake.nix
17
flake.nix
@ -9,7 +9,8 @@
|
||||
nixpkgs = self;
|
||||
};
|
||||
|
||||
lib = import ./lib;
|
||||
libVersionInfoOverlay = import ./lib/flake-version-info.nix self;
|
||||
lib = (import ./lib).extend libVersionInfoOverlay;
|
||||
|
||||
forAllSystems = lib.genAttrs lib.systems.flakeExposed;
|
||||
in
|
||||
@ -20,13 +21,7 @@
|
||||
|
||||
nixosSystem = args:
|
||||
import ./nixos/lib/eval-config.nix (
|
||||
args // {
|
||||
modules = args.modules ++ [{
|
||||
system.nixos.versionSuffix =
|
||||
".${final.substring 0 8 (self.lastModifiedDate or self.lastModified or "19700101")}.${self.shortRev or "dirty"}";
|
||||
system.nixos.revision = final.mkIf (self ? rev) self.rev;
|
||||
}];
|
||||
} // lib.optionalAttrs (! args?system) {
|
||||
args // { inherit (self) lib; } // lib.optionalAttrs (! args?system) {
|
||||
# Allow system to be set modularly in nixpkgs.system.
|
||||
# We set it to null, to remove the "legacy" entrypoint's
|
||||
# non-hermetic default.
|
||||
@ -53,7 +48,11 @@
|
||||
# attribute it displays `omitted` instead of evaluating all packages,
|
||||
# which keeps `nix flake show` on Nixpkgs reasonably fast, though less
|
||||
# information rich.
|
||||
legacyPackages = forAllSystems (system: import ./. { inherit system; });
|
||||
legacyPackages = forAllSystems (system:
|
||||
(import ./. { inherit system; }).extend (final: prev: {
|
||||
lib = prev.lib.extend libVersionInfoOverlay;
|
||||
})
|
||||
);
|
||||
|
||||
nixosModules = {
|
||||
notDetected = ./nixos/modules/installer/scan/not-detected.nix;
|
||||
|
20
lib/flake-version-info.nix
Normal file
20
lib/flake-version-info.nix
Normal file
@ -0,0 +1,20 @@
|
||||
# This function produces a lib overlay to be used by the nixpkgs
|
||||
# & nixpkgs/lib flakes to provide meaningful values for
|
||||
# `lib.trivial.version` et al..
|
||||
#
|
||||
# Internal and subject to change, don't use this anywhere else!
|
||||
# Instead, consider using a public interface, such as this flake here
|
||||
# in this directory, `lib/`, or use the nixpkgs flake, which applies
|
||||
# this logic for you in its `lib` output attribute.
|
||||
|
||||
self: # from the flake
|
||||
|
||||
finalLib: prevLib: # lib overlay
|
||||
|
||||
{
|
||||
trivial = prevLib.trivial // {
|
||||
versionSuffix =
|
||||
".${finalLib.substring 0 8 (self.lastModifiedDate or "19700101")}.${self.shortRev or "dirty"}";
|
||||
revisionWithDefault = default: self.rev or default;
|
||||
};
|
||||
}
|
@ -1,5 +1,10 @@
|
||||
{
|
||||
description = "Library of low-level helper functions for nix expressions.";
|
||||
|
||||
outputs = { self }: { lib = import ./.; };
|
||||
outputs = { self }:
|
||||
let
|
||||
lib0 = import ./.;
|
||||
in {
|
||||
lib = lib0.extend (import ./flake-version-info.nix self);
|
||||
};
|
||||
}
|
||||
|
@ -1,6 +1,18 @@
|
||||
{ lib }:
|
||||
|
||||
rec {
|
||||
let
|
||||
inherit (lib.trivial)
|
||||
isFunction
|
||||
isInt
|
||||
functionArgs
|
||||
pathExists
|
||||
release
|
||||
setFunctionArgs
|
||||
toBaseDigits
|
||||
version
|
||||
versionSuffix
|
||||
warn;
|
||||
in {
|
||||
|
||||
## Simple (higher order) functions
|
||||
|
||||
@ -439,7 +451,7 @@ rec {
|
||||
*/
|
||||
functionArgs = f:
|
||||
if f ? __functor
|
||||
then f.__functionArgs or (lib.functionArgs (f.__functor f))
|
||||
then f.__functionArgs or (functionArgs (f.__functor f))
|
||||
else builtins.functionArgs f;
|
||||
|
||||
/* Check whether something is a function or something
|
||||
|
Loading…
Reference in New Issue
Block a user