feat: add xontribs, hyprspace, and gcc15-fixes overlay
ci/woodpecker/push/woodpecker Pipeline failed
ci/woodpecker/push/woodpecker Pipeline failed
- packages/xontribs.nix: xontrib-prompt-starship, -broot, -term-integrations wheels for use with `programs.xonsh.extraPackages` (or xonsh.override) - packages/hyprspace.nix + hyprspace flake input (flake=false): rebuild plugin against the consumer's hyprland; exposed via overlays.hyprspace - overlays/gcc15-fixes.nix: hotdoc/kitty/libsecret/xdg-desktop-portal/afdko workarounds so fleet nodes on the same pin can opt in with one line - flake.nix: lift overlays out of eachSystem to the root (overlays.default was previously nested per-system, which doesn't match flake schema)
This commit is contained in:
Generated
+18
@@ -69,6 +69,23 @@
|
|||||||
"url": "https://git.oleks.space/oleks/fleet-pins"
|
"url": "https://git.oleks.space/oleks/fleet-pins"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"hyprspace": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1764820995,
|
||||||
|
"narHash": "sha256-IMa4mvkF0w7OAy+yEzPFYs2an332K30lf5qfUOAS9Cw=",
|
||||||
|
"owner": "KZDKM",
|
||||||
|
"repo": "Hyprspace",
|
||||||
|
"rev": "0467be86b18cfc324fab04afbd40fe9ef80f7fa9",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "KZDKM",
|
||||||
|
"repo": "Hyprspace",
|
||||||
|
"rev": "0467be86b18cfc324fab04afbd40fe9ef80f7fa9",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"nixpkgs": {
|
"nixpkgs": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1771848320,
|
"lastModified": 1771848320,
|
||||||
@@ -89,6 +106,7 @@
|
|||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-utils": "flake-utils",
|
"flake-utils": "flake-utils",
|
||||||
"fleet-pins": "fleet-pins",
|
"fleet-pins": "fleet-pins",
|
||||||
|
"hyprspace": "hyprspace",
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"fleet-pins",
|
"fleet-pins",
|
||||||
"nixpkgs-projects"
|
"nixpkgs-projects"
|
||||||
|
|||||||
@@ -5,6 +5,13 @@
|
|||||||
fleet-pins.url = "git+https://git.oleks.space/oleks/fleet-pins?ref=main";
|
fleet-pins.url = "git+https://git.oleks.space/oleks/fleet-pins?ref=main";
|
||||||
nixpkgs.follows = "fleet-pins/nixpkgs-projects";
|
nixpkgs.follows = "fleet-pins/nixpkgs-projects";
|
||||||
flake-utils.url = "github:numtide/flake-utils";
|
flake-utils.url = "github:numtide/flake-utils";
|
||||||
|
|
||||||
|
# Hyprspace source; no flake.nix in the repo so we consume it as raw src.
|
||||||
|
# Pin tracks the last v0.52-compatible commit of Hyprspace.
|
||||||
|
hyprspace = {
|
||||||
|
url = "github:KZDKM/Hyprspace/0467be86b18cfc324fab04afbd40fe9ef80f7fa9";
|
||||||
|
flake = false;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs =
|
outputs =
|
||||||
@@ -13,6 +20,7 @@
|
|||||||
nixpkgs,
|
nixpkgs,
|
||||||
fleet-pins,
|
fleet-pins,
|
||||||
flake-utils,
|
flake-utils,
|
||||||
|
hyprspace,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
@@ -27,13 +35,33 @@
|
|||||||
"s390x-linux" = "s390x-linux";
|
"s390x-linux" = "s390x-linux";
|
||||||
};
|
};
|
||||||
|
|
||||||
mkPackages = pkgs: {
|
mkPackages =
|
||||||
hello-world = pkgs.callPackage ./packages/hello-world.nix { };
|
pkgs:
|
||||||
geesefs = pkgs.callPackage ./packages/geesefs.nix { };
|
let
|
||||||
xonsh = pkgs.callPackage ./packages/xonsh.nix {
|
xontribs = import ./packages/xontribs.nix {
|
||||||
xonsh-unwrapped = import ./packages/xonsh-unwrapped.nix {
|
inherit (pkgs) python3Packages fetchurl;
|
||||||
inherit (pkgs) lib python3Packages fetchFromGitHub;
|
|
||||||
};
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
hello-world = pkgs.callPackage ./packages/hello-world.nix { };
|
||||||
|
geesefs = pkgs.callPackage ./packages/geesefs.nix { };
|
||||||
|
xonsh = pkgs.callPackage ./packages/xonsh.nix {
|
||||||
|
xonsh-unwrapped = import ./packages/xonsh-unwrapped.nix {
|
||||||
|
inherit (pkgs) lib python3Packages fetchFromGitHub;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
# Xontribs: pass into `programs.xonsh.extraPackages` or
|
||||||
|
# `pkgs.xonsh.override { extraPackages = ps: [...]; }`.
|
||||||
|
// xontribs;
|
||||||
|
|
||||||
|
# Overlay providing Hyprspace. Requires `pkgs.hyprland` to be present
|
||||||
|
# (consumer applies the Hyprland flake's overlay first). Kept out of
|
||||||
|
# `mkPackages` because standalone `nix build .#hyprspace` has no
|
||||||
|
# Hyprland in scope.
|
||||||
|
hyprspaceOverlay = final: _prev: {
|
||||||
|
hyprspace = final.callPackage ./packages/hyprspace.nix {
|
||||||
|
src = hyprspace;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -127,8 +155,6 @@
|
|||||||
default = packages.hello-world;
|
default = packages.hello-world;
|
||||||
};
|
};
|
||||||
|
|
||||||
overlays.default = final: prev: mkPackages final;
|
|
||||||
|
|
||||||
devShells.default = pkgs.mkShell {
|
devShells.default = pkgs.mkShell {
|
||||||
name = "oleks-hub-shell";
|
name = "oleks-hub-shell";
|
||||||
buildInputs = [ self.packages.${system}.default ];
|
buildInputs = [ self.packages.${system}.default ];
|
||||||
@@ -196,5 +222,10 @@
|
|||||||
native
|
native
|
||||||
// {
|
// {
|
||||||
packages = (native.packages or { }) // cross;
|
packages = (native.packages or { }) // cross;
|
||||||
|
overlays = {
|
||||||
|
default = final: _prev: mkPackages final;
|
||||||
|
gcc15-fixes = import ./overlays/gcc15-fixes.nix;
|
||||||
|
hyprspace = hyprspaceOverlay;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,43 @@
|
|||||||
|
# Narrow fixes for packages that fail under the fleet's pinned nixpkgs
|
||||||
|
# with GCC 15 / current upstream breakage. Remove entries as upstream fixes
|
||||||
|
# land so consumers can drop them on the next pin bump.
|
||||||
|
final: prev: {
|
||||||
|
# hotdoc's bundled cmark declares `project(cmark VERSION 0.28.3)` without
|
||||||
|
# LANGUAGES, which makes CMake probe CXX; GCC 15 fails the probe. Adding
|
||||||
|
# LANGUAGES C skips the CXX check.
|
||||||
|
hotdoc = prev.hotdoc.overrideAttrs (old: {
|
||||||
|
postPatch = (old.postPatch or "") + ''
|
||||||
|
substituteInPlace cmark/CMakeLists.txt \
|
||||||
|
--replace-fail "project(cmark VERSION 0.28.3)" "project(cmark VERSION 0.28.3 LANGUAGES C)"
|
||||||
|
'';
|
||||||
|
});
|
||||||
|
|
||||||
|
# kitty's bundled base64 lib has incompatible pointer types that GCC 15
|
||||||
|
# promotes from warning to error.
|
||||||
|
kitty = prev.kitty.overrideAttrs (old: {
|
||||||
|
env = (old.env or { }) // {
|
||||||
|
NIX_CFLAGS_COMPILE = (old.env.NIX_CFLAGS_COMPILE or "") + " -Wno-error=incompatible-pointer-types";
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
# Skip D-Bus-dependent checks that fail under remote-builder sandboxes.
|
||||||
|
libsecret = prev.libsecret.overrideAttrs (_: {
|
||||||
|
doCheck = false;
|
||||||
|
});
|
||||||
|
xdg-desktop-portal = prev.xdg-desktop-portal.overrideAttrs (_: {
|
||||||
|
doCheck = false;
|
||||||
|
});
|
||||||
|
|
||||||
|
# afdko has two pre-existing test failures that block
|
||||||
|
# nototools → noto-fonts-color-emoji.
|
||||||
|
pythonPackagesExtensions = (prev.pythonPackagesExtensions or [ ]) ++ [
|
||||||
|
(pyFinal: pyPrev: {
|
||||||
|
afdko = pyPrev.afdko.overrideAttrs (old: {
|
||||||
|
disabledTests = (old.disabledTests or [ ]) ++ [
|
||||||
|
"test_non_varying_glyphs_bug356"
|
||||||
|
"test_ufo_contentsplist_parsing"
|
||||||
|
];
|
||||||
|
});
|
||||||
|
})
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
# Rebuilds the Hyprspace plugin against the consumer's Hyprland. Requires
|
||||||
|
# `pkgs.hyprland` to already be in scope (consumers apply the upstream
|
||||||
|
# Hyprland flake overlay first). `src` comes from the hyprspace flake
|
||||||
|
# input pinned in ../flake.nix.
|
||||||
|
{
|
||||||
|
gcc14Stdenv,
|
||||||
|
hyprland,
|
||||||
|
src,
|
||||||
|
}:
|
||||||
|
|
||||||
|
gcc14Stdenv.mkDerivation {
|
||||||
|
pname = "Hyprspace";
|
||||||
|
version = "unstable-${src.shortRev or "dirty"}";
|
||||||
|
inherit src;
|
||||||
|
inherit (hyprland) nativeBuildInputs;
|
||||||
|
buildInputs = [ hyprland ] ++ hyprland.buildInputs;
|
||||||
|
dontUseCmakeConfigure = true;
|
||||||
|
installFlags = [ "PREFIX=$(out)" ];
|
||||||
|
postInstall = ''
|
||||||
|
mv $out/lib/Hyprspace.so $out/lib/libHyprspace.so
|
||||||
|
'';
|
||||||
|
}
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
{
|
||||||
|
python3Packages,
|
||||||
|
fetchurl,
|
||||||
|
}:
|
||||||
|
|
||||||
|
let
|
||||||
|
mkWheel =
|
||||||
|
{
|
||||||
|
pname,
|
||||||
|
version,
|
||||||
|
url,
|
||||||
|
sha256,
|
||||||
|
}:
|
||||||
|
python3Packages.buildPythonPackage {
|
||||||
|
inherit pname version;
|
||||||
|
src = fetchurl { inherit url sha256; };
|
||||||
|
format = "wheel";
|
||||||
|
doCheck = false;
|
||||||
|
dontCheckRuntimeDeps = true;
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
xontrib-prompt-starship = mkWheel {
|
||||||
|
pname = "xontrib-prompt-starship";
|
||||||
|
version = "0.3.7";
|
||||||
|
url = "https://files.pythonhosted.org/packages/94/71/968450a151d003bb80ed6fbfb190f22cfac076cbd4442dc58b48c5545644/xontrib_prompt_starship-0.3.7-py3-none-any.whl";
|
||||||
|
sha256 = "12a213fc454c9547c6426d19c4a43982be48500019378267bdab465d0749dccd";
|
||||||
|
};
|
||||||
|
|
||||||
|
xontrib-broot = mkWheel {
|
||||||
|
pname = "xontrib-broot";
|
||||||
|
version = "0.2.1";
|
||||||
|
url = "https://files.pythonhosted.org/packages/a8/97/a595ef322a40bcfaf885af8538d48cd0c506b8e06e3834458909c6b9bf90/xontrib_broot-0.2.1-py3-none-any.whl";
|
||||||
|
sha256 = "5eee2af0740fcc0355937b1365a15bcfebbe7c045215f0a597a519ce05cca96f";
|
||||||
|
};
|
||||||
|
|
||||||
|
xontrib-term-integrations = mkWheel {
|
||||||
|
pname = "xontrib-term-integrations";
|
||||||
|
version = "0.2.0";
|
||||||
|
url = "https://files.pythonhosted.org/packages/0e/df/76f0d98fb67267124f498b0da6b598939e85d5ef9aad49c3476929395ea0/xontrib_term_integrations-0.2.0-py3-none-any.whl";
|
||||||
|
sha256 = "cc55f4a1885361349d1a5a39aa6f44abc080e318355335bc14e7ea28c5b30776";
|
||||||
|
};
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user