1
0
Fork 0
mirror of https://github.com/LnL7/nix-darwin.git synced 2024-12-14 11:57:34 +00:00
Commit graph

15 commits

Author SHA1 Message Date
ppenguin
3d65d13974 expose _module attr in realised sysconfig
Co-authored-by: Michael Hoang <Enzime@users.noreply.github.com>
2023-10-03 19:56:33 +01:00
Emily
a5b09580e2
Revert "eval-config: set class" 2023-07-24 23:24:20 +01:00
Emily
724937461f eval-config: set class
See [the Nixpkgs manual]. This allows modules to declare themselves
as being only for NixOS or nix-darwin, reducing compatibility
risks. Unmarked modules will continue to behave as before. Technically
a breaking change, but any configuration importing a module explicitly
marked as NixOS-specific was probably broken already.

[the Nixpkgs manual]: https://nixos.org/manual/nixpkgs/unstable/#module-system-lib-evalModules-param-class
2023-07-21 09:22:21 +01:00
Emily
f9724c4543 eval-config: rationalize handling of Nixpkgs
This is a big change that disentangles a lot of mistaken assumptions
about mixing multiple versions of Nixpkgs, treating external flake
inputs as gospel for the source of Nixpkgs and nix-darwin, etc.;
the end result should be much simpler conceptually, but it will be a
breaking change for anyone using `eval-config.nix` directly. Hopefully
that shouldn't be a big issue, as it is more of an internal API and
it's quite likely that existing uses may have been broken in the same
way the internal ones were.

It was previously easy to get into a state where your `lib` comes
from nix-darwin's `nixpkgs` input or a global channel and your
`pkgs` comes from another major version of Nixpkgs. This is pretty
fundamentally broken due to the coupling of `pkgs` to its corresponding
`lib`, but the brokenness was hidden much of the time until something
surfaced it. Now there is exactly one mandatory `lib` input to system
evaluation, and the handling of various additional options like `pkgs`
and `system` can be done modularly; maintaining backwards compatibility
with the previous calling convention is punted to the `default.nix`
and `lib.darwinSystem` entry points. `inputs` is no longer read by
nix-darwin or special in any way, merely a convention for user code,
and the argument is retained in the entry points only for backwards
compatibility.

All correct invocations of the entry points should keep working
after this change, and some previously-broken ones should be fixed
too. The documentation and template have been adjusted to show the
newly-recommended modular way of specifying various things, but no
deprecation warnings have been introduced yet by this change.

There is one potential, mostly cosmetic regression:
`system.nixpkgsRevision` and related options are less likely to be
set than before, in cases where it is not possible to determine the
origin of the package set. Setting `nixpkgs.source` explicitly will
make this work again, and I hope to look into sending changes upstream
to Nixpkgs to make `lib.trivial.revisionWithDefault` behave properly
under flakes, which would fix this regression and potentially allow
reducing some of the complexity.

Fixes: #669
2023-07-09 11:21:40 +01:00
Emily
e25eeff158 nixpkgs: rebase module on latest NixOS
This is based on the current NixOS `nixpkgs` module, adjusted for the
nix-darwin context and without adding the options due for deprecation
in NixOS.

This gives us the ability to set the package set modularly through
`nixpkgs.pkgs` and builds up infrastructure for handling user-specified
Nixpkgs instantiations more robustly.

The cross-compilation options are currently not very useful due to
even Darwin->Darwin cross-compilation not being wholly functional
yet, but it looks feasible to build an `aarch64-darwin` system from
`x86_64-darwin` with some patching and it should be possible to make
cross-compilation more widely supported after the Darwin SDK situation
in Nixpkgs improves.

One casualty is the error for setting `nixpkgs.*` options when
overriding the package set. That could be ported over to this new
scheme, but it'd increase divergence with the NixOS module and reduce
cross-compatibility of configurations, so I lean towards adding it
upstream to NixOS if anything. (But if people want to keep it I can add
it back.)
2023-07-08 22:39:19 +01:00
Emily
9d6702cf2b eval-config: remove compatibility shims
20.03 and 22.03 are both deprecated.
2023-06-24 10:48:55 +01:00
Emily
b6893e7f6d eval-config: remove lib.mdDoc
The temporarily pinned nixpkgs version already has this version,
and where we're going, we don't need backports.

This reverts commit 737cfdec9c.
2023-06-24 06:33:18 +01:00
Emily
737cfdec9c eval-config.nix: readd lib.mdDoc temporarily
Fixes: #701
2023-06-21 22:55:32 +01:00
zimbatm
74a0e71ff2
eval-config: make lib overridable
This enables using flake lib.darwinSystem function with your custom
lib.
2022-09-19 13:45:59 +01:00
Michael Hoang
5528b36698 eval-config: Support passing in pkgs
This is useful for flake users as they will usually already have an
instantiated Nixpkgs e.g.

    let
      pkgs = import nixpkgs {
        config.allowUnfree = true;
        overlays = [ ... ];
      }
    in darwin.lib.darwinSystem {
      inherit pkgs;
    }

This change makes `nix-darwin` match the behaviour of NixOS and
`home-manager`.
2022-02-04 21:32:40 +11:00
John Soo
cb1b24cff1 eval-config: Add check parameter for compatibility with nixpkgs. 2022-01-04 16:39:46 -07:00
Robert Hensing
0937f9c060 eval-config.nix: Fix args warning 2022-01-02 12:45:39 +01:00
Daiderd Jordan
44da835ac4
add forward compatibility for literalExample deprecation
Fixes #367
2021-10-23 15:06:42 +02:00
Drew Hess
9f7e95887f
Pass system to darwinSystem rather than eval-config.
This allows us to specify what kind of darwinSystem we want to build,
rather than determining it at evaluation time.
2021-09-08 13:05:18 +01:00
Daiderd Jordan
c4bc63d2b9
add flake and split evalConfig 2020-10-21 18:30:56 +02:00