summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorMichael Hoang <Enzime@users.noreply.github.com>2024-06-14 16:16:52 +1000
committerGitHub <noreply@github.com>2024-06-14 16:16:52 +1000
commitff988d78f2f55641efacdf9a585d2937f7e32a9b (patch)
tree526eba992256f6964e4bc9f975874c79cf054aec /modules
parentb2ee0b3c03b06bd70e4280c65ab8803c3456bb0f (diff)
parent2406909d7a2aa50f907a82e553d6e923814e978a (diff)
Merge pull request #975 from emilazy/drop-old-compat
Drop compatibility for unsupported Nixpkgs versions
Diffstat (limited to 'modules')
-rw-r--r--modules/documentation/default.nix43
-rw-r--r--modules/nix/nixpkgs.nix52
2 files changed, 10 insertions, 85 deletions
diff --git a/modules/documentation/default.nix b/modules/documentation/default.nix
index 10bcbd3..395e6e6 100644
--- a/modules/documentation/default.nix
+++ b/modules/documentation/default.nix
@@ -11,9 +11,9 @@ let
regularConfig = config;
argsModule = {
- config._module.args = regularConfig._module.args // {
+ config._module.args = lib.mkForce (regularConfig._module.args // {
modules = [ ];
- };
+ });
};
/* For the purpose of generating docs, evaluate options with each derivation
@@ -21,15 +21,16 @@ let
It isn't perfect, but it seems to cover a vast majority of use cases.
Caveat: even if the package is reached by a different means,
the path above will be shown and not e.g. `${config.services.foo.package}`. */
- realManual = import ../../doc/manual {
+ manual = import ../../doc/manual {
inherit pkgs config;
version = config.system.darwinVersion;
revision = config.system.darwinRevision;
inherit (config.system) nixpkgsRevision;
options =
let
- scrubbedEval = evalModules {
- modules = baseModules ++ [ argsModule ];
+ scrubbedEval = import ../../eval-config.nix {
+ inherit lib;
+ modules = [ argsModule ];
specialArgs = { pkgs = scrubDerivations "pkgs" pkgs; };
};
scrubDerivations = namePrefix: pkgSet: mapAttrs
@@ -44,38 +45,6 @@ let
in scrubbedEval.options;
};
- # TODO: Remove this when dropping 22.11 support.
- manual = realManual //
- lib.optionalAttrs (!pkgs.buildPackages ? nixos-render-docs) rec {
- optionsJSON = pkgs.writeTextFile {
- name = "options.json-stub";
- destination = "/share/doc/darwin/options.json";
- text = "{}";
- };
- manpages = pkgs.writeTextFile {
- name = "darwin-manpages-stub";
- destination = "/share/man/man5/configuration.nix.5";
- text = ''
- .TH "CONFIGURATION\&.NIX" "5" "01/01/1980" "Darwin" "Darwin Reference Pages"
- .SH "NAME"
- \fIconfiguration\&.nix\fP \- Darwin system configuration specification
- .SH "DESCRIPTION"
- .PP
- The nix\-darwin documentation now requires nixpkgs 23.05 to build.
- '';
- };
- manualHTML = pkgs.writeTextFile {
- name = "darwin-manual-html-stub";
- destination = "/share/doc/darwin/index.html";
- text = ''
- <!DOCTYPE html>
- <title>Darwin Configuration Options</title>
- The nix-darwin documentation now requires nixpkgs 23.05 to build.
- '';
- };
- manualHTMLIndex = "${manualHTML}/share/doc/darwin/index.html";
- };
-
helpScript = pkgs.writeScriptBin "darwin-help"
''
#! ${pkgs.stdenv.shell} -e
diff --git a/modules/nix/nixpkgs.nix b/modules/nix/nixpkgs.nix
index 8b3e428..ee99997 100644
--- a/modules/nix/nixpkgs.nix
+++ b/modules/nix/nixpkgs.nix
@@ -3,48 +3,6 @@
with lib;
let
-
- # Backport from Nixpkgs 23.05
- defaultOverridePriority =
- lib.modules.defaultOverridePriority or lib.modules.defaultPriority;
-
- # Backport from Nixpkgs 23.11
- mergeAttrDefinitionsWithPrio = lib.mergeAttrDefinitionsWithPrio or (opt:
- let
- # Inlined to avoid warning about using internal APIs 🥴
- pushDownProperties = cfg:
- if cfg._type or "" == "merge" then
- concatMap pushDownProperties cfg.contents
- else if cfg._type or "" == "if" then
- map (mapAttrs (n: v: mkIf cfg.condition v)) (pushDownProperties cfg.content)
- else if cfg._type or "" == "override" then
- map (mapAttrs (n: v: mkOverride cfg.priority v)) (pushDownProperties cfg.content)
- else # FIXME: handle mkOrder?
- [ cfg ];
-
- defsByAttr =
- lib.zipAttrs (
- lib.concatLists (
- lib.concatMap
- ({ value, ... }@def:
- map
- (lib.mapAttrsToList (k: value: { ${k} = def // { inherit value; }; }))
- (pushDownProperties value)
- )
- opt.definitionsWithLocations
- )
- );
- in
- assert opt.type.name == "attrsOf" || opt.type.name == "lazyAttrsOf";
- lib.mapAttrs
- (k: v:
- let merging = lib.mergeDefinitions (opt.loc ++ [k]) opt.type.nestedTypes.elemType v;
- in {
- value = merging.mergedValue;
- inherit (merging.defsFinal') highestPrio;
- })
- defsByAttr);
-
cfg = config.nixpkgs;
opt = options.nixpkgs;
@@ -91,9 +49,7 @@ let
merge = lib.mergeOneOption;
};
- # TODO: Remove backwards compatibility hack when dropping
- # 22.11 support.
- pkgsType = types.pkgs or (types.uniq types.attrs) // {
+ pkgsType = types.pkgs // {
# This type is only used by itself, so let's elaborate the description a bit
# for the purpose of documentation.
description = "An evaluation of Nixpkgs; the top level attribute set of packages";
@@ -310,15 +266,15 @@ in
# which is somewhat costly for Nixpkgs. With an explicit priority, we only
# evaluate the wrapper to find out that the priority is lower, and then we
# don't need to evaluate `finalPkgs`.
- lib.mkOverride defaultOverridePriority
+ lib.mkOverride lib.modules.defaultOverridePriority
finalPkgs.__splicedPackages;
};
nixpkgs.constructedByUs =
# We set it with default priority and it can not be merged, so if the
# pkgs module argument has that priority, it's from us.
- (mergeAttrDefinitionsWithPrio options._module.args).pkgs.highestPrio
- == defaultOverridePriority
+ (lib.modules.mergeAttrDefinitionsWithPrio options._module.args).pkgs.highestPrio
+ == lib.modules.defaultOverridePriority
# Although, if nixpkgs.pkgs is set, we did forward it, but we did not construct it.
&& !opt.pkgs.isDefined;