From c4a460a991d5aa53f1b7b842c3b109d42cd154a8 Mon Sep 17 00:00:00 2001 From: Mitchell Hashimoto Date: Mon, 22 Aug 2022 19:55:54 -0700 Subject: [PATCH] nix fmt and support aarch64-darwin --- default.nix | 72 ++++++++++++++++++++++++++++++++--------------------- flake.nix | 60 +++++++++++++++++++++++++------------------- 2 files changed, 77 insertions(+), 55 deletions(-) diff --git a/default.nix b/default.nix index 9553e45..9109c01 100644 --- a/default.nix +++ b/default.nix @@ -1,50 +1,64 @@ -{ pkgs ? import {}, - system ? builtins.currentSystem }: - -let +{ + pkgs ? import {}, + system ? builtins.currentSystem, +}: let inherit (pkgs) lib; sources = builtins.fromJSON (lib.strings.fileContents ./sources.json); # mkBinaryInstall makes a derivation that installs Zig from a binary. - mkBinaryInstall = { url, version, sha256 }: pkgs.stdenv.mkDerivation { - inherit version; + mkBinaryInstall = { + url, + version, + sha256, + }: + pkgs.stdenv.mkDerivation { + inherit version; - pname = "zig"; - src = pkgs.fetchurl { inherit url sha256; }; - dontConfigure = true; - dontBuild = true; - dontFixup = true; - installPhase = '' - mkdir -p $out/{doc,bin,lib} - [ -d docs ] && cp -r docs/* $out/doc - [ -d doc ] && cp -r doc/* $out/doc - cp -r lib/* $out/lib - cp zig $out/bin/zig - ''; - }; + pname = "zig"; + src = pkgs.fetchurl {inherit url sha256;}; + dontConfigure = true; + dontBuild = true; + dontFixup = true; + installPhase = '' + mkdir -p $out/{doc,bin,lib} + [ -d docs ] && cp -r docs/* $out/doc + [ -d doc ] && cp -r doc/* $out/doc + cp -r lib/* $out/lib + cp zig $out/bin/zig + ''; + }; # The packages that are tagged releases - taggedPackages = lib.attrsets.mapAttrs - (k: v: mkBinaryInstall { inherit (v.${system}) version url sha256; }) + taggedPackages = + lib.attrsets.mapAttrs + (k: v: mkBinaryInstall {inherit (v.${system}) version url sha256;}) (lib.attrsets.filterAttrs (k: v: (builtins.hasAttr system v) && (v.${system}.url != null)) (builtins.removeAttrs sources ["master"])); # The master packages - masterPackages = lib.attrsets.mapAttrs' - (k: v: lib.attrsets.nameValuePair - (if k == "latest" then "master" else ("master-" + k)) - (mkBinaryInstall { inherit (v.${system}) version url sha256; }) + masterPackages = + lib.attrsets.mapAttrs' ( + k: v: + lib.attrsets.nameValuePair + ( + if k == "latest" + then "master" + else ("master-" + k) + ) + (mkBinaryInstall {inherit (v.${system}) version url sha256;}) ) - sources.master; + (lib.attrsets.filterAttrs + (k: v: (builtins.hasAttr system v) && (v.${system}.url != null)) + sources.master); # This determines the latest /released/ version. latest = lib.lists.last ( builtins.sort - (x: y: (builtins.compareVersions x y) < 0) - (builtins.attrNames taggedPackages) + (x: y: (builtins.compareVersions x y) < 0) + (builtins.attrNames taggedPackages) ); in # We want the packages but also add a "default" that just points to the # latest released version. - taggedPackages // masterPackages // { "default" = taggedPackages.${latest}; } + taggedPackages // masterPackages // {"default" = taggedPackages.${latest};} diff --git a/flake.nix b/flake.nix index 9c7714d..eecee7e 100644 --- a/flake.nix +++ b/flake.nix @@ -6,32 +6,40 @@ flake-utils.url = "github:numtide/flake-utils"; }; - outputs = { self, nixpkgs, flake-utils, ... }: - # List of systems where binaries are provided. - let - systems = [ "x86_64-linux" "aarch64-linux" "x86_64-darwin" ]; - outputs = flake-utils.lib.eachSystem systems (system: - let pkgs = nixpkgs.legacyPackages.${system}; - in rec { - # The packages exported by the Flake: - # - default - latest /released/ version - # - - tagged version - # - master - latest nightly (updated daily) - # - master- - nightly by date - packages = import ./default.nix { inherit system pkgs; }; + outputs = { + self, + nixpkgs, + flake-utils, + ... + }: let + systems = ["x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin"]; + outputs = flake-utils.lib.eachSystem systems (system: let + pkgs = nixpkgs.legacyPackages.${system}; + in rec { + # The packages exported by the Flake: + # - default - latest /released/ version + # - - tagged version + # - master - latest nightly (updated daily) + # - master- - nightly by date + packages = import ./default.nix {inherit system pkgs;}; - # "Apps" so that `nix run` works. If you run `nix run .` then - # this will use the latest default. - apps = rec { - default = apps.zig; - zig = flake-utils.lib.mkApp { drv = packages.default; }; - }; - }); - in outputs // { - # Overlay that can be imported so you can access the packages - # using zigpkgs.master.latest or whatever you'd like. - overlays.default = final: prev: { - zigpkgs = outputs.packages.${prev.system}; - }; + # "Apps" so that `nix run` works. If you run `nix run .` then + # this will use the latest default. + apps = rec { + default = apps.zig; + zig = flake-utils.lib.mkApp {drv = packages.default;}; }; + + # nix fmt + formatter = pkgs.alejandra; + }); + in + outputs + // { + # Overlay that can be imported so you can access the packages + # using zigpkgs.master.latest or whatever you'd like. + overlays.default = final: prev: { + zigpkgs = outputs.packages.${prev.system}; + }; + }; }