diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 50302c443..939896661 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -29,6 +29,11 @@ jobs: git config user.name github-actions git config user.email github-actions@github.com + - name: Update flake inputs + run: | + nix flake update + git commit -m "Updated flake inputs" flake.lock || true + - name: Update inputs run: | ./update diff --git a/flake.lock b/flake.lock index a349cb8f7..f383933b6 100644 --- a/flake.lock +++ b/flake.lock @@ -34,10 +34,27 @@ "type": "github" } }, + "nixpkgs-stable": { + "locked": { + "lastModified": 1685468986, + "narHash": "sha256-YSj3K71KjRZgeL0hS3sYLYHI0g8aIVIf9lcsRMCIW2A=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "9af373a61647257d16ae6062cddaa9094d24920c", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-22.11", + "repo": "nixpkgs", + "type": "github" + } + }, "root": { "inputs": { "flake-utils": "flake-utils", - "nixpkgs": "nixpkgs" + "nixpkgs": "nixpkgs", + "nixpkgs-stable": "nixpkgs-stable" } }, "systems": { diff --git a/flake.nix b/flake.nix index c4975e2f1..c8708c09f 100644 --- a/flake.nix +++ b/flake.nix @@ -9,11 +9,13 @@ inputs = { flake-utils.url = "github:numtide/flake-utils"; nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + nixpkgs-stable.url = "github:NixOS/nixpkgs/nixos-22.11"; }; outputs = { self , nixpkgs + , nixpkgs-stable , flake-utils }: { # self: super: must be named final: prev: for `nix flake check` to be happy @@ -26,11 +28,14 @@ overlay = self.overlays.default; } // flake-utils.lib.eachDefaultSystem (system: ( let - pkgs = import nixpkgs { + + importPkgs = path: import path { inherit system; config.allowAliases = false; overlays = [ self.overlays.default ]; }; + pkgs = importPkgs nixpkgs; + inherit (pkgs) lib; overlayAttributes = lib.pipe (import ./. pkgs pkgs) [ builtins.attrNames @@ -45,6 +50,52 @@ { lib = attributesToAttrset overlayAttributes.wrong; packages = attributesToAttrset overlayAttributes.right; + + hydraJobs = + let + mkHydraJobs = pkgs: let + mkEmacsSet = emacs: pkgs.recurseIntoAttrs ( + lib.filterAttrs + (n: v: builtins.typeOf v == "set" && ! lib.isDerivation v) + (pkgs.emacsPackagesFor emacs) + ); + + in { + emacsen = { + inherit (pkgs) emacsUnstable emacsUnstable-nox; + inherit (pkgs) emacsGit emacsGit-nox; + inherit (pkgs) emacsPgtk; + }; + + emacsen-cross = + let + crossTargets = [ "aarch64-multiplatform" ]; + in + lib.fold lib.recursiveUpdate { } + (builtins.map + (target: + let + targetPkgs = pkgs.pkgsCross.${target}; + in + lib.mapAttrs' (name: job: lib.nameValuePair "${name}-${target}" job) + ({ + inherit (targetPkgs) emacsUnstable emacsUnstable-nox; + inherit (targetPkgs) emacsGit emacsGit-nox; + inherit (targetPkgs) emacsPgtk; + })) + crossTargets); + + + packages = mkEmacsSet pkgs.emacs; + packages-unstable = mkEmacsSet pkgs.emacsUnstable; + }; + + in + { + "22.11" = mkHydraJobs (importPkgs nixpkgs-stable); + "unstable" = mkHydraJobs pkgs; + }; + } ));