mirror of
https://github.com/LnL7/nix-darwin.git
synced 2025-03-05 08:17:01 +00:00
Merge pull request #975 from emilazy/drop-old-compat
Drop compatibility for unsupported Nixpkgs versions
This commit is contained in:
commit
ff988d78f2
5 changed files with 18 additions and 91 deletions
|
@ -103,7 +103,7 @@ Add the following to `flake.nix` in the same folder as `configuration.nix`:
|
|||
description = "John's darwin system";
|
||||
|
||||
inputs = {
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-23.11-darwin";
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-24.05-darwin";
|
||||
nix-darwin.url = "github:LnL7/nix-darwin";
|
||||
nix-darwin.inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
|
|
@ -16,6 +16,7 @@ let
|
|||
};
|
||||
|
||||
eval = lib.evalModules (builtins.removeAttrs args [ "lib" ] // {
|
||||
class = "darwin";
|
||||
modules = modules ++ [ argsModule ] ++ baseModules;
|
||||
specialArgs = { modulesPath = builtins.toString ./modules; } // specialArgs;
|
||||
});
|
||||
|
|
11
flake.lock
generated
11
flake.lock
generated
|
@ -2,11 +2,12 @@
|
|||
"nodes": {
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1687274257,
|
||||
"narHash": "sha256-TutzPriQcZ8FghDhEolnHcYU2oHIG5XWF+/SUBNnAOE=",
|
||||
"path": "/nix/store/22qgs3skscd9bmrxv9xv4q5d4wwm5ppx-source",
|
||||
"rev": "2c9ecd1f0400076a4d6b2193ad468ff0a7e7fdc5",
|
||||
"type": "path"
|
||||
"lastModified": 1718149104,
|
||||
"narHash": "sha256-Ds1QpobBX2yoUDx9ZruqVGJ/uQPgcXoYuobBguyKEh8=",
|
||||
"owner": "NixOS",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "e913ae340076bbb73d9f4d3d065c2bca7caafb16",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"id": "nixpkgs",
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue