mirror of
https://github.com/niri-wm/niri.git
synced 2026-06-24 02:01:18 +07:00
flake: use nightly rust-analyzer and add rust-src component (#735)
this also improves the application of overlays to be more uniform; what was previously done was just Wrong
This commit is contained in:
@@ -22,93 +22,9 @@
|
|||||||
rust-overlay,
|
rust-overlay,
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
inherit (nixpkgs) lib;
|
niri-package =
|
||||||
# Support all Linux systems that the nixpkgs flake exposes
|
|
||||||
systems = lib.intersectLists lib.systems.flakeExposed lib.platforms.linux;
|
|
||||||
|
|
||||||
forAllSystems = lib.genAttrs systems;
|
|
||||||
nixpkgsFor = forAllSystems (system: nixpkgs.legacyPackages.${system});
|
|
||||||
in
|
|
||||||
{
|
|
||||||
checks = forAllSystems (system: {
|
|
||||||
# We use the debug build here to save a bit of time
|
|
||||||
inherit (self.packages.${system}) niri-debug;
|
|
||||||
});
|
|
||||||
|
|
||||||
devShells = forAllSystems (
|
|
||||||
system:
|
|
||||||
let
|
|
||||||
pkgs = nixpkgsFor.${system};
|
|
||||||
inherit (self.packages.${system}) niri;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
default = pkgs.mkShell {
|
|
||||||
packages = [
|
|
||||||
# NOTE: Nixpkgs' Rust toolchain isn't used here as we prefer
|
|
||||||
# a nightly toolchain for development, and *require* a nightly
|
|
||||||
# `rustfmt`
|
|
||||||
rust-overlay.packages.${system}.rust-nightly
|
|
||||||
|
|
||||||
pkgs.rust-analyzer
|
|
||||||
];
|
|
||||||
|
|
||||||
nativeBuildInputs = [
|
|
||||||
pkgs.clang
|
|
||||||
pkgs.pkg-config
|
|
||||||
pkgs.wrapGAppsHook4 # For `niri-visual-tests`
|
|
||||||
];
|
|
||||||
|
|
||||||
buildInputs = niri.buildInputs ++ [
|
|
||||||
pkgs.libadwaita # For `niri-visual-tests`
|
|
||||||
];
|
|
||||||
|
|
||||||
env = {
|
|
||||||
inherit (niri) LIBCLANG_PATH;
|
|
||||||
|
|
||||||
# WARN: Do not overwrite this variable in your shell!
|
|
||||||
# It is required for `dlopen()` to work on some libraries; see the comment
|
|
||||||
# in the package expression
|
|
||||||
#
|
|
||||||
# This should only be set with `CARGO_BUILD_RUSTFLAGS="$CARGO_BUILD_RUSTFLAGS -C your-flags"`
|
|
||||||
inherit (niri) CARGO_BUILD_RUSTFLAGS;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
formatter = forAllSystems (system: nixpkgsFor.${system}.nixfmt-rfc-style);
|
|
||||||
|
|
||||||
packages = forAllSystems (
|
|
||||||
system:
|
|
||||||
let
|
|
||||||
inherit (self.overlays.default nixpkgsFor.${system} null) niri;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
inherit niri;
|
|
||||||
|
|
||||||
# NOTE: This is for development purposes only
|
|
||||||
#
|
|
||||||
# It is primarily to help with quickly iterating on
|
|
||||||
# changes made to the above expression - though it is
|
|
||||||
# also not stripped in order to better debug niri itself
|
|
||||||
niri-debug = niri.overrideAttrs (
|
|
||||||
newAttrs: oldAttrs: {
|
|
||||||
pname = oldAttrs.pname + "-debug";
|
|
||||||
|
|
||||||
cargoBuildType = "debug";
|
|
||||||
cargoCheckType = newAttrs.cargoBuildType;
|
|
||||||
|
|
||||||
dontStrip = true;
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
default = niri;
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
overlays.default = final: _: {
|
|
||||||
niri = final.callPackage (
|
|
||||||
{
|
{
|
||||||
|
lib,
|
||||||
cairo,
|
cairo,
|
||||||
clang,
|
clang,
|
||||||
dbus,
|
dbus,
|
||||||
@@ -228,8 +144,108 @@
|
|||||||
mainProgram = "niri";
|
mainProgram = "niri";
|
||||||
platforms = lib.platforms.linux;
|
platforms = lib.platforms.linux;
|
||||||
};
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
inherit (nixpkgs) lib;
|
||||||
|
# Support all Linux systems that the nixpkgs flake exposes
|
||||||
|
systems = lib.intersectLists lib.systems.flakeExposed lib.platforms.linux;
|
||||||
|
|
||||||
|
forAllSystems = lib.genAttrs systems;
|
||||||
|
nixpkgsFor = forAllSystems (system: nixpkgs.legacyPackages.${system});
|
||||||
|
in
|
||||||
|
{
|
||||||
|
checks = forAllSystems (system: {
|
||||||
|
# We use the debug build here to save a bit of time
|
||||||
|
inherit (self.packages.${system}) niri-debug;
|
||||||
|
});
|
||||||
|
|
||||||
|
devShells = forAllSystems (
|
||||||
|
system:
|
||||||
|
let
|
||||||
|
pkgs = nixpkgsFor.${system};
|
||||||
|
rust-bin = rust-overlay.lib.mkRustBin { } pkgs;
|
||||||
|
inherit (self.packages.${system}) niri;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
default = pkgs.mkShell {
|
||||||
|
packages = [
|
||||||
|
# We don't use the toolchain from nixpkgs
|
||||||
|
# because we prefer a nightly toolchain
|
||||||
|
# and we *require* a nightly rustfmt
|
||||||
|
(rust-bin.selectLatestNightlyWith (
|
||||||
|
toolchain:
|
||||||
|
toolchain.default.override {
|
||||||
|
extensions = [
|
||||||
|
# includes already:
|
||||||
|
# rustc
|
||||||
|
# cargo
|
||||||
|
# rust-std
|
||||||
|
# rust-docs
|
||||||
|
# rustfmt-preview
|
||||||
|
# clippy-preview
|
||||||
|
"rust-analyzer"
|
||||||
|
"rust-src"
|
||||||
|
];
|
||||||
}
|
}
|
||||||
) { };
|
))
|
||||||
|
];
|
||||||
|
|
||||||
|
nativeBuildInputs = [
|
||||||
|
pkgs.clang
|
||||||
|
pkgs.pkg-config
|
||||||
|
pkgs.wrapGAppsHook4 # For `niri-visual-tests`
|
||||||
|
];
|
||||||
|
|
||||||
|
buildInputs = niri.buildInputs ++ [
|
||||||
|
pkgs.libadwaita # For `niri-visual-tests`
|
||||||
|
];
|
||||||
|
|
||||||
|
env = {
|
||||||
|
inherit (niri) LIBCLANG_PATH;
|
||||||
|
|
||||||
|
# WARN: Do not overwrite this variable in your shell!
|
||||||
|
# It is required for `dlopen()` to work on some libraries; see the comment
|
||||||
|
# in the package expression
|
||||||
|
#
|
||||||
|
# This should only be set with `CARGO_BUILD_RUSTFLAGS="$CARGO_BUILD_RUSTFLAGS -C your-flags"`
|
||||||
|
inherit (niri) CARGO_BUILD_RUSTFLAGS;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
formatter = forAllSystems (system: nixpkgsFor.${system}.nixfmt-rfc-style);
|
||||||
|
|
||||||
|
packages = forAllSystems (
|
||||||
|
system:
|
||||||
|
let
|
||||||
|
niri = nixpkgsFor.${system}.callPackage niri-package { };
|
||||||
|
in
|
||||||
|
{
|
||||||
|
inherit niri;
|
||||||
|
|
||||||
|
# NOTE: This is for development purposes only
|
||||||
|
#
|
||||||
|
# It is primarily to help with quickly iterating on
|
||||||
|
# changes made to the above expression - though it is
|
||||||
|
# also not stripped in order to better debug niri itself
|
||||||
|
niri-debug = niri.overrideAttrs (
|
||||||
|
newAttrs: oldAttrs: {
|
||||||
|
pname = oldAttrs.pname + "-debug";
|
||||||
|
|
||||||
|
cargoBuildType = "debug";
|
||||||
|
cargoCheckType = newAttrs.cargoBuildType;
|
||||||
|
|
||||||
|
dontStrip = true;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
default = niri;
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
overlays.default = final: _: {
|
||||||
|
niri = final.callPackage niri-package { };
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user