flake: add host outputs for nixpkgs-staging and nixpkgs-staging-next
This commit is contained in:
parent
e7edb4739f
commit
e7826e0648
34
flake.lock
34
flake.lock
|
@ -51,6 +51,38 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"nixpkgs-staging-next-unpatched": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1702317658,
|
||||||
|
"narHash": "sha256-jYzBIMW18oQG+uQ9TVZwiYFHVafYIqllW+zFLROtwcE=",
|
||||||
|
"owner": "nixos",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "f81605387c494a302c16901ac6459e877c45f913",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nixos",
|
||||||
|
"ref": "staging-next",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs-staging-unpatched": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1702311933,
|
||||||
|
"narHash": "sha256-bARcUNREf0wVSYzWhcK+mKCUgzeHbiKKDbpHBH92Mdk=",
|
||||||
|
"owner": "nixos",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "14b1b887952e70c12c6b8fc4ee9c1e22ec32faa6",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nixos",
|
||||||
|
"ref": "staging",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"nixpkgs-unpatched": {
|
"nixpkgs-unpatched": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1702272962,
|
"lastModified": 1702272962,
|
||||||
|
@ -70,6 +102,8 @@
|
||||||
"root": {
|
"root": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"mobile-nixos": "mobile-nixos",
|
"mobile-nixos": "mobile-nixos",
|
||||||
|
"nixpkgs-staging-next-unpatched": "nixpkgs-staging-next-unpatched",
|
||||||
|
"nixpkgs-staging-unpatched": "nixpkgs-staging-unpatched",
|
||||||
"nixpkgs-unpatched": "nixpkgs-unpatched",
|
"nixpkgs-unpatched": "nixpkgs-unpatched",
|
||||||
"sops-nix": "sops-nix",
|
"sops-nix": "sops-nix",
|
||||||
"uninsane-dot-org": "uninsane-dot-org"
|
"uninsane-dot-org": "uninsane-dot-org"
|
||||||
|
|
31
flake.nix
31
flake.nix
|
@ -44,8 +44,8 @@
|
||||||
# <https://github.com/nixos/nixpkgs/tree/nixos-unstable>
|
# <https://github.com/nixos/nixpkgs/tree/nixos-unstable>
|
||||||
# nixpkgs-unpatched.url = "github:nixos/nixpkgs?ref=nixos-unstable";
|
# nixpkgs-unpatched.url = "github:nixos/nixpkgs?ref=nixos-unstable";
|
||||||
nixpkgs-unpatched.url = "github:nixos/nixpkgs?ref=master";
|
nixpkgs-unpatched.url = "github:nixos/nixpkgs?ref=master";
|
||||||
# nixpkgs-unpatched.url = "github:nixos/nixpkgs?ref=staging-next";
|
nixpkgs-staging-next-unpatched.url = "github:nixos/nixpkgs?ref=staging-next";
|
||||||
# nixpkgs-unpatched.url = "github:nixos/nixpkgs?ref=staging";
|
nixpkgs-staging-unpatched.url = "github:nixos/nixpkgs?ref=staging";
|
||||||
|
|
||||||
mobile-nixos = {
|
mobile-nixos = {
|
||||||
# <https://github.com/nixos/mobile-nixos>
|
# <https://github.com/nixos/mobile-nixos>
|
||||||
|
@ -74,6 +74,8 @@
|
||||||
outputs = {
|
outputs = {
|
||||||
self,
|
self,
|
||||||
nixpkgs-unpatched,
|
nixpkgs-unpatched,
|
||||||
|
nixpkgs-staging-unpatched ? null,
|
||||||
|
nixpkgs-staging-next-unpatched ? null,
|
||||||
mobile-nixos,
|
mobile-nixos,
|
||||||
sops-nix,
|
sops-nix,
|
||||||
uninsane-dot-org,
|
uninsane-dot-org,
|
||||||
|
@ -83,6 +85,8 @@
|
||||||
inherit (builtins) attrNames elem listToAttrs map mapAttrs;
|
inherit (builtins) attrNames elem listToAttrs map mapAttrs;
|
||||||
# redefine some nixpkgs `lib` functions to avoid the infinite recursion
|
# redefine some nixpkgs `lib` functions to avoid the infinite recursion
|
||||||
# of if we tried to use patched `nixpkgs.lib` as part of the patching process.
|
# of if we tried to use patched `nixpkgs.lib` as part of the patching process.
|
||||||
|
mapAttrs' = f: set:
|
||||||
|
listToAttrs (map (attr: f attr set.${attr}) (attrNames set));
|
||||||
optionalAttrs = cond: attrs: if cond then attrs else {};
|
optionalAttrs = cond: attrs: if cond then attrs else {};
|
||||||
# mapAttrs but without the `name` argument
|
# mapAttrs but without the `name` argument
|
||||||
mapAttrValues = f: mapAttrs (_: f);
|
mapAttrValues = f: mapAttrs (_: f);
|
||||||
|
@ -90,9 +94,9 @@
|
||||||
# rather than apply our nixpkgs patches as a flake input, do that here instead.
|
# rather than apply our nixpkgs patches as a flake input, do that here instead.
|
||||||
# this (temporarily?) resolves the bad UX wherein a subflake residing in the same git
|
# this (temporarily?) resolves the bad UX wherein a subflake residing in the same git
|
||||||
# repo as the main flake causes the main flake to have an unstable hash.
|
# repo as the main flake causes the main flake to have an unstable hash.
|
||||||
nixpkgs = (import ./nixpatches/flake.nix).outputs {
|
patchNixpkgs = variant: nixpkgs: (import ./nixpatches/flake.nix).outputs {
|
||||||
self = nixpkgs;
|
inherit variant nixpkgs;
|
||||||
nixpkgs = nixpkgs-unpatched;
|
self = patchNixpkgs variant nixpkgs;
|
||||||
} // {
|
} // {
|
||||||
# provide values that nixpkgs ordinarily sources from the flake.lock file,
|
# provide values that nixpkgs ordinarily sources from the flake.lock file,
|
||||||
# inaccessible to it here because of the import-from-derivation.
|
# inaccessible to it here because of the import-from-derivation.
|
||||||
|
@ -108,9 +112,10 @@
|
||||||
inherit (self) shortRev;
|
inherit (self) shortRev;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
nixpkgs = patchNixpkgs "master" nixpkgs-unpatched;
|
||||||
nixpkgsCompiledBy = system: nixpkgs.legacyPackages."${system}";
|
nixpkgsCompiledBy = system: nixpkgs.legacyPackages."${system}";
|
||||||
|
|
||||||
evalHost = { name, local, target, light ? false }: nixpkgs.lib.nixosSystem {
|
evalHost = { name, local, target, light ? false, nixpkgs ? nixpkgs }: nixpkgs.lib.nixosSystem {
|
||||||
system = target;
|
system = target;
|
||||||
modules = [
|
modules = [
|
||||||
{
|
{
|
||||||
|
@ -148,7 +153,19 @@
|
||||||
moby-light = { name = "moby"; local = "x86_64-linux"; target = "aarch64-linux"; light = true; };
|
moby-light = { name = "moby"; local = "x86_64-linux"; target = "aarch64-linux"; light = true; };
|
||||||
rescue = { name = "rescue"; local = "x86_64-linux"; target = "x86_64-linux"; };
|
rescue = { name = "rescue"; local = "x86_64-linux"; target = "x86_64-linux"; };
|
||||||
};
|
};
|
||||||
in mapAttrValues evalHost hosts;
|
stagingHosts = mapAttrs' (h: v: {
|
||||||
|
name = "${h}-staging";
|
||||||
|
value = v // { nixpkgs = patchNixpkgs "staging" nixpkgs-staging-unpatched; };
|
||||||
|
}) hosts;
|
||||||
|
stagingNextHosts = mapAttrs' (h: v: {
|
||||||
|
name = "${h}-staging-next";
|
||||||
|
value = v // { nixpkgs = patchNixpkgs "staging-next" nixpkgs-staging-next-unpatched; };
|
||||||
|
}) hosts;
|
||||||
|
in mapAttrValues evalHost (
|
||||||
|
hosts //
|
||||||
|
(optionalAttrs (nixpkgs-staging-unpatched != null) stagingHosts) //
|
||||||
|
(optionalAttrs (nixpkgs-staging-next-unpatched != null) stagingNextHosts)
|
||||||
|
);
|
||||||
|
|
||||||
# unofficial output
|
# unofficial output
|
||||||
# this produces a EFI-bootable .img file (GPT with a /boot partition and a system (/ or /nix) partition).
|
# this produces a EFI-bootable .img file (GPT with a /boot partition and a system (/ or /nix) partition).
|
||||||
|
|
|
@ -3,15 +3,16 @@
|
||||||
# user is expected to define this from their flake via `inputs.nixpkgs.follows = ...`
|
# user is expected to define this from their flake via `inputs.nixpkgs.follows = ...`
|
||||||
nixpkgs = {};
|
nixpkgs = {};
|
||||||
};
|
};
|
||||||
outputs = { self, nixpkgs }@inputs:
|
outputs = { self, nixpkgs, variant ? "master" }@inputs:
|
||||||
let
|
let
|
||||||
patchedPkgsFor = system: nixpkgs.legacyPackages.${system}.applyPatches {
|
patchedPkgsFor = system: nixpkgs.legacyPackages.${system}.applyPatches {
|
||||||
name = "nixpkgs-patched-uninsane";
|
name = "nixpkgs-patched-uninsane";
|
||||||
version = self.lastModifiedDate;
|
version = self.lastModifiedDate;
|
||||||
src = nixpkgs;
|
src = nixpkgs;
|
||||||
patches = import ./list.nix {
|
patches = builtins.filter (p: p != null) (import ./list.nix {
|
||||||
inherit (nixpkgs.legacyPackages.${system}) fetchpatch2 fetchurl;
|
inherit (nixpkgs.legacyPackages.${system}) fetchpatch2 fetchurl;
|
||||||
};
|
inherit variant;
|
||||||
|
});
|
||||||
};
|
};
|
||||||
patchedFlakeFor = system: import "${patchedPkgsFor system}/flake.nix";
|
patchedFlakeFor = system: import "${patchedPkgsFor system}/flake.nix";
|
||||||
patchedFlakeOutputsFor = system:
|
patchedFlakeOutputsFor = system:
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
{ fetchpatch2, fetchurl }:
|
{ fetchpatch2, fetchurl, variant }:
|
||||||
let
|
let
|
||||||
fetchpatch' = {
|
fetchpatch' = {
|
||||||
saneCommit ? null,
|
saneCommit ? null,
|
||||||
|
@ -7,6 +7,7 @@ let
|
||||||
hash ? null,
|
hash ? null,
|
||||||
title ? null,
|
title ? null,
|
||||||
revert ? false,
|
revert ? false,
|
||||||
|
applies ? [ "unstable" "master" "staging" "staging-next" ],
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
url = if prUrl != null then
|
url = if prUrl != null then
|
||||||
|
@ -17,11 +18,11 @@ let
|
||||||
else
|
else
|
||||||
"https://github.com/NixOS/nixpkgs/commit/${nixpkgsCommit}.patch"
|
"https://github.com/NixOS/nixpkgs/commit/${nixpkgsCommit}.patch"
|
||||||
;
|
;
|
||||||
in fetchpatch2 (
|
in if (builtins.elem variant applies) then fetchpatch2 (
|
||||||
{ inherit revert url; }
|
{ inherit revert url; }
|
||||||
// (if hash != null then { inherit hash; } else {})
|
// (if hash != null then { inherit hash; } else {})
|
||||||
// (if title != null then { name = title; } else {})
|
// (if title != null then { name = title; } else {})
|
||||||
);
|
) else null;
|
||||||
in [
|
in [
|
||||||
(fetchpatch' {
|
(fetchpatch' {
|
||||||
title = "ripgrep: fix shell completions when cross compiling";
|
title = "ripgrep: fix shell completions when cross compiling";
|
||||||
|
@ -32,6 +33,7 @@ in [
|
||||||
title = "python3Packages.numpy: fix cross compilation";
|
title = "python3Packages.numpy: fix cross compilation";
|
||||||
prUrl = "https://github.com/NixOS/nixpkgs/pull/268587";
|
prUrl = "https://github.com/NixOS/nixpkgs/pull/268587";
|
||||||
hash = "sha256-GRRLXwUw2JXEV6Ov0QiVTFwoi/ACManG2Qk7D3fzS8E=";
|
hash = "sha256-GRRLXwUw2JXEV6Ov0QiVTFwoi/ACManG2Qk7D3fzS8E=";
|
||||||
|
applies = [ "unstable" "master" ];
|
||||||
})
|
})
|
||||||
# (fetchpatch' {
|
# (fetchpatch' {
|
||||||
# title = "nixos/slskd: allow omitting username from yaml config";
|
# title = "nixos/slskd: allow omitting username from yaml config";
|
||||||
|
|
Loading…
Reference in New Issue
Block a user