Code Monkey home page Code Monkey logo

Comments (12)

zimbatm avatar zimbatm commented on June 4, 2024 1

#5

from flake-utils.

colemickens avatar colemickens commented on June 4, 2024 1

I can't anytime soon. But cleaning up my flake.nixs will eventually block me and I plan to clean them via this repo, so I'll get to it eventually if you don't. Thanks for confirming my understanding and starting up this repo.

from flake-utils.

colemickens avatar colemickens commented on June 4, 2024
{
      packages = let
        pkgs = sys: 
          let
            nixpkgs_ = (pkgsFor inputs.nixpkgs sys true);
            packagePlatforms = pkg: pkg.meta.hydraPlatforms or pkg.meta.platforms or [ "x86_64-linux" ];
            pred = n: v: builtins.elem sys (packagePlatforms v);
          in
            nixpkgs_.lib.filterAttrs pred nixpkgs_.waylandPkgs; 
      in {
          x86_64-linux = pkgs "x86_64-linux";
          aarch64-linux = pkgs "aarch64-linux";
        };
}

from flake-utils.

zimbatm avatar zimbatm commented on June 4, 2024

With today's flake-utils you would achieve something similar like this:

{
  description = "colemicken's wayland overlay";

  inputs.flake-utils.url = "github:numtide/flake-utils";

  outputs = { self, nixpkgs, flake-utils }:
    {
      overlay = import ./overlay.nix;
    }
    //
    (
      flake-utils.lib.eachSystem [ "aarch64-linux" "x86_64-linux" ] (system:
        let
          pkgs = import nixpkgs {
            inherit system;
            config = { };
            overlays = [ self.overlay ];
          };
        in
        {
          packages = pkgs.waylandPkgs;
        }
      )
    );
}

Assuming that the overlay puts all its packages under pkgs.waylandPkgs, and that pkgs.waylandPkgs only contains derivations (otherwise nix flake check complains).

The big chunk at the end could probably be simplified for the common case.

{
  description = "colemicken's wayland overlay";

  inputs.flake-utils.url = "github:numtide/flake-utils";

  outputs = { self, nixpkgs, flake-utils }:
    flake-utils.lib.simpleFlake {
      inherit self nixpkgs;
      overlay = import ./overlay.nix;
      overlayAttr = "waylandPkgs";
      systems = [ "aarch64-linux" "x86_64-linux" ];
    };
}

How does that look?

from flake-utils.

colemickens avatar colemickens commented on June 4, 2024

Cool, I need to try it and glance at eachSystem but it looks like what I want, yeah. And I like the looks of #5. I'm going to try to re-visit my various flake repos next weekend, maybe dogfood #5 and then comment again / close this out.

from flake-utils.

zimbatm avatar zimbatm commented on June 4, 2024

Looking forward to your feedback!

from flake-utils.

colemickens avatar colemickens commented on June 4, 2024

I'm skimming through the source and #5, I'm not seeing anything that does the filtering I'm looking for based on the meta.platforms unless I'm looking in the wrong place?

from flake-utils.

zimbatm avatar zimbatm commented on June 4, 2024

You're right. .flattenTree should be changed to take the system as an argument. Do you want to tackle this?

from flake-utils.

dhess avatar dhess commented on June 4, 2024

We're slowly converting our overlays to flakes, and something that filters the per-system package set based on meta.hydraPlatforms would be very helpful.

In our current overlays, we import nixpkgs + "/pkgs/top-level/release-lib.nix" and use its functionality to build Hydra jobsets. Nix's built-in flake support, combined with flake-utils, replaces most of that machinery, except for the bit that filters out packages that don't support a particular platform.

from flake-utils.

zimbatm avatar zimbatm commented on June 4, 2024

^ please try out this new implementation in PR 13

from flake-utils.

blaggacao avatar blaggacao commented on June 4, 2024

@nrdxp do stars align here? (through PR13). I think nrdxp/nixflk is a complement use case to look for. Its flake is already quite complex while trying to solve common use cases around nixos configurations.

My reasoning is: flake-utils is an even higher order abstraction than nixflk, so moving things up the ladder (where adequate) might perfectly serve the presumptive goal of both projects to set a standardization precedents early on.

from flake-utils.

nrdxp avatar nrdxp commented on June 4, 2024

My solution does check the buildInputs of each flake package for platform dependence, but not recursively.

from flake-utils.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.