gytis-ivaskevicius / flake-utils-plus

Use Nix flakes without any fluff.
MIT License
482 stars 57 forks source link

channels.<nixpkgs>.overlaysBuilder doesn't work if supportedSystems contains more than one architecture #97

Closed willruggiano closed 2 years ago

willruggiano commented 2 years ago

Similar to #96, so feel free to close this if you feel it is a duplicate.

I have been trying to move my macOS system to nix-darwin, starting with home-manager for dotfiles and ran into a similar problem as the aforementioned issue when adding a package (which does not export an overlay);

channels.nixpkgs.overlaysBuilder = channels: [
  (final: prev: {
    emanote = inputs.emanote.defaultPackage.${prev.system};
  })
  ...
];

See here for full context.

This results in the same error as #96;

$ nix flake show     
...
error: a 'x86_64-darwin' with features {} is required to build '/nix/store/path/to/some.drv', but I am a 'x86_64-linux' with features {benchmark, big-parallel, kvm, nixos-test}

The error occurs regardless of the current platform, e.g. "x86_64-linux ... but I am a x86_64-darwin" if on macOS

willruggiano commented 2 years ago

I assume that I am just misusing overlaysBuilder and that there is a better way to accomplish what I am doing. I will add that I am fairly new to nix and very new to your library... so "user error" is highly likely :)

gytis-ivaskevicius commented 2 years ago

You seem to be using it as expected, BUT by the looks of things, the last nix update has caused similar issues. Have not looked into it yet

gytis-ivaskevicius commented 2 years ago

Oh right, for time being you can set supportedSystems to single architecture

willruggiano commented 2 years ago

Yeah, that is indeed what I have done to remediate the problem. Thanks for the quick reply!

gytis-ivaskevicius commented 2 years ago

Solution:

diff --git a/flake.lock b/flake.lock
index fb6dd9c..f273f6e 100644
--- a/flake.lock
+++ b/flake.lock
@@ -330,17 +330,17 @@
         "flake-utils": "flake-utils_3"
       },
       "locked": {
-        "lastModified": 1632420560,
-        "narHash": "sha256-8Tsa4Hp/CHCA6J8/E7EODhp75z5N1NBhFiOb3lBv/tI=",
+        "lastModified": 1636207264,
+        "narHash": "sha256-irsZoK5GERTMWgPzy3p1tAFc4JS+ktasvlWTK79Ixjc=",
         "owner": "gytis-ivaskevicius",
         "repo": "flake-utils-plus",
-        "rev": "4b1bcafcfcd78bd36ceabfe3872822ba5c7fcbe8",
+        "rev": "9651c19f895382702a6257c4da08d14a66488782",
         "type": "github"
       },
       "original": {
         "owner": "gytis-ivaskevicius",
-        "ref": "v1.3.0",
         "repo": "flake-utils-plus",
+        "rev": "9651c19f895382702a6257c4da08d14a66488782",
         "type": "github"
       }
     },
diff --git a/flake.nix b/flake.nix
index 5a960c6..6790046 100644
--- a/flake.nix
+++ b/flake.nix
@@ -3,7 +3,7 @@

   inputs = {
     nixpkgs.url = github:nixos/nixpkgs/nixpkgs-unstable;
-    utils.url = github:gytis-ivaskevicius/flake-utils-plus/v1.3.0;
+    utils.url = github:gytis-ivaskevicius/flake-utils-plus/9651c19f895382702a6257c4da08d14a66488782; # not yet merged version of fup

     nix.url = github:nixos/nix/master;
     nixos-hardware.url = github:nixos/nixos-hardware;
@@ -32,11 +32,13 @@
             inherit (lib') makeHome mapFilterAttrs mapModules reduceModules mapModulesRec reduceModulesRec;
           });

-        supportedSystems = [ "x86_64-linux" ];
+        supportedSystems = [ "x86_64-darwin" "x86_64-linux" ];
         channelsConfig.allowUnfree = true;

         channels.nixpkgs.overlaysBuilder = channels: [
-          (final: prev: {
+          #(final: prev: nixpkgs.lib.optionalAttrs (prev.system == "x86_64-darwin") {
+          # or
+          (final: prev: nixpkgs.lib.optionalAttrs (!prev.isFakePkgs or false) {
             emanote = inputs.emanote.defaultPackage.${prev.system};
           })
           self.overlay

Will close this issue since I don't think that anything else can be done here. Reopen in case you think I'm wrong