Compare commits

...

16 commits

Author SHA1 Message Date
jade c374ebf554 update n-e-j 2024-12-06 13:56:53 -08:00
jade 15b999f9c9 Merge commit '60edaab' into HEAD
Closes: lix-project/nixos-module#46
2024-11-25 22:48:18 -08:00
jade 60edaab1ce add nixd and nixt to flake checks 2024-11-25 22:47:55 -08:00
leo60228 c3f53365ce
upd8 nix-eval-jobs 2024-11-25 16:35:44 -05:00
Gutyina Gergő d36f053070
fix: add nixd and its dependency to overridelist 2024-11-20 12:51:02 +01:00
jade aa2846680f Update n-e-j 2024-11-18 14:01:14 -08:00
jade 6391b9f659 nix-doc hacks: remove
Not required anymore :3
2024-11-18 13:05:18 -08:00
jade 691193879d update nix-eval-jobs to fix its build
Also updates the validation versions of nixpkgs and lix.
2024-11-09 12:55:31 -08:00
jade fd186f535a Merge pull request 'overlay: fix bug where prev should have been final' (#38) from fabianhjr/nixos-module:fix-bug-between-prev-final into main
Reviewed-on: lix-project/nixos-module#38
2024-10-01 03:21:01 +00:00
Fabián Heredia Montiel 81d9ff97c9 overlay: fix bug where prev should have been final 2024-09-30 18:51:33 -06:00
jade 7dd3d652a3 Fix up the flake checks 2024-09-30 13:49:18 -07:00
jade ca0cc16273 Merge pull request #37 into main
Closes lix-project/nixos-module#37
2024-09-30 13:35:21 -07:00
jade bb51b2d161 jade revision pass 2024-09-30 13:34:26 -07:00
Fabián Heredia Montiel b3457b78ac overlay: make finalNix depend on the nix version being used by a package
This should address both of the following (were 35 is more general and
36 a specific case)

- lix-project/nixos-module#35
- lix-project/nixos-module#36
2024-09-26 17:54:28 -06:00
jade b0e6f35950 overlay: clean up 2.18 stuff
Since Nix 2.24 is now the default in nixpkgs, we should remove the stuff
that assumes it's 2.18. Nothing breaks with this change, unless someone
is specifically depending on nixVersions.nix_2_18 being Lix.
2024-09-17 20:47:29 -07:00
jade daeb420858 Merge pull request 'fix: check package arguments before applying Nix 2.18 override' (#34) from devusb/nixos-module:remove-devenv-overlay into main
Reviewed-on: lix-project/nixos-module#34
2024-09-18 03:39:56 +00:00
5 changed files with 54 additions and 94 deletions

View file

@ -5,11 +5,11 @@
"systems": "systems" "systems": "systems"
}, },
"locked": { "locked": {
"lastModified": 1710146030, "lastModified": 1731533236,
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide", "owner": "numtide",
"repo": "flake-utils", "repo": "flake-utils",
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -36,11 +36,11 @@
"lix": { "lix": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1723511168, "lastModified": 1733448312,
"narHash": "sha256-XDcqLVPcsMhORerIPuQ1XNALtDvG6QRA2dKyNrccXyg=", "narHash": "sha256-id5U81bzXk/Lg900nGLM4CQb0wmTdzIvQz7CZk2OcTM=",
"rev": "f9a3bf6ccccf8ac6b1604c1a2980e3a565ae4f44", "rev": "2a9e560570982a91937d199af3e7b7a8f3cbe14b",
"type": "tarball", "type": "tarball",
"url": "https://git.lix.systems/api/v1/repos/lix-project/lix/archive/f9a3bf6ccccf8ac6b1604c1a2980e3a565ae4f44.tar.gz?rev=f9a3bf6ccccf8ac6b1604c1a2980e3a565ae4f44" "url": "https://git.lix.systems/api/v1/repos/lix-project/lix/archive/2a9e560570982a91937d199af3e7b7a8f3cbe14b.tar.gz?rev=2a9e560570982a91937d199af3e7b7a8f3cbe14b"
}, },
"original": { "original": {
"type": "tarball", "type": "tarball",
@ -49,11 +49,11 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1723175592, "lastModified": 1733392399,
"narHash": "sha256-M0xJ3FbDUc4fRZ84dPGx5VvgFsOzds77KiBMW/mMTnI=", "narHash": "sha256-kEsTJTUQfQFIJOcLYFt/RvNxIK653ZkTBIs4DG+cBns=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "5e0ca22929f3342b19569b21b2f3462f053e497b", "rev": "d0797a04b81caeae77bcff10a9dde78bc17f5661",
"type": "github" "type": "github"
}, },
"original": { "original": {

View file

@ -47,7 +47,7 @@
{ {
inherit pkgs; inherit pkgs;
packages = { packages = {
default = pkgs.nixVersions.nix_2_18; default = pkgs.nix;
inherit (pkgs) nix-doc nix-eval-jobs; inherit (pkgs) nix-doc nix-eval-jobs;
}; };
@ -57,6 +57,7 @@
checks = { checks = {
inherit (self.packages.${system}) default nix-eval-jobs; inherit (self.packages.${system}) default nix-eval-jobs;
inherit (pkgs) nixos-option nix-doc nixd nixt;
} // lib.optionalAttrs (lib.elem system linux64BitSystems) { } // lib.optionalAttrs (lib.elem system linux64BitSystems) {
# wrongMajor intentionally not included here since it is expected to fail # wrongMajor intentionally not included here since it is expected to fail
inherit (self.nixosTests.${system}) it-builds; inherit (self.nixosTests.${system}) it-builds;

View file

@ -1,64 +0,0 @@
# Temporary replacement of the nix-doc package with
# https://github.com/NixOS/nixpkgs/pull/296523 so that we can have working Lix
# with nix-doc on 23.11 and 24.05-pre
#
# Can be removed when that commit is in 23.11 and 24.05-pre, or 24.05 is
# released with the commit.
{ lib
, stdenv
, rustPlatform
, fetchFromGitHub
, boost
, nix
, pkg-config
# Whether to build the nix-doc plugin for Nix
, withPlugin ? true
}:
let
packageFlags = [ "-p" "nix-doc" ] ++ lib.optionals withPlugin [ "-p" "nix-doc-plugin" ];
in
rustPlatform.buildRustPackage rec {
pname = "nix-doc";
version = "0.6.5";
src = fetchFromGitHub {
rev = "v${version}";
owner = "lf-";
repo = "nix-doc";
sha256 = "sha256-9cuNzq+CBA2jz0LkZb7lh/WISIlKklfovGBAbSo1Mgk=";
};
doCheck = true;
buildInputs = lib.optionals withPlugin [ boost nix ];
nativeBuildInputs = lib.optionals withPlugin [ pkg-config nix ];
cargoBuildFlags = packageFlags;
cargoTestFlags = packageFlags;
# Packaging support for making the nix-doc plugin load cleanly as a no-op on
# the wrong Nix version (disabling bindnow permits loading libraries
# requiring unavailable symbols if they are unreached)
hardeningDisable = lib.optionals withPlugin [ "bindnow" ];
# Due to a Rust bug, setting -Z relro-level to anything including "off" on
# macOS will cause link errors
env = lib.optionalAttrs (withPlugin && stdenv.isLinux) {
# nix-doc does not use nightly features, however, there is no other way to
# set relro-level
RUSTC_BOOTSTRAP = 1;
RUSTFLAGS = "-Z relro-level=partial";
};
cargoSha256 = "sha256-CHagzXTG9AfrFd3WmHanQ+YddMgmVxSuB8vK98A1Mlw=";
meta = with lib; {
description = "An interactive Nix documentation tool";
longDescription = "An interactive Nix documentation tool providing a CLI for function search, a Nix plugin for docs in the REPL, and a ctags implementation for Nix script";
homepage = "https://github.com/lf-/nix-doc";
license = licenses.lgpl3Plus;
maintainers = [ maintainers.lf- ];
platforms = platforms.unix;
mainProgram = "nix-doc";
};
}

View file

@ -1,23 +1,22 @@
{ lix, versionSuffix ? "" }: { lix, versionSuffix ? "" }:
final: prev: final: prev:
let let
# This is kind of scary to not override the nix version to pretend to be
# 2.18 since nixpkgs can introduce new breakage in its Nix unstable CLI
# usage.
# https://github.com/nixos/nixpkgs/blob/6afb255d976f85f3359e4929abd6f5149c323a02/nixos/modules/config/nix.nix#L121
lixPackageFromSource = final.callPackage (lix + "/package.nix") ({ lixPackageFromSource = final.callPackage (lix + "/package.nix") ({
inherit versionSuffix; inherit versionSuffix;
stdenv = final.clangStdenv; stdenv = final.clangStdenv;
}); });
# These packages depend on Nix features that Lix does not support # These packages should receive CppNix since they may link to it or otherwise
overridelist_2_18 = [ # cause problems (or even just silly mass-rebuilds) if we give them Lix
overridelist_upstream = [
"attic-client" "attic-client"
"devenv" "devenv"
"nix-du" "nix-du"
"nix-init" "nix-init"
"nix-prefetch-git" "nix-prefetch-git"
"nixd"
"nixos-option" "nixos-option"
"nixt"
"nurl" "nurl"
"prefetch-yarn-deps" # force these onto upstream so we are not regularly rebuilding electron "prefetch-yarn-deps" # force these onto upstream so we are not regularly rebuilding electron
]; ];
@ -60,12 +59,37 @@ let
# errors. This is a simple safeguard to put in at least something that might be seen. # errors. This is a simple safeguard to put in at least something that might be seen.
maybeWarnWrongMajor = x: if !(lib.hasPrefix supportedLixMajor lixPackageToUse.version) then builtins.trace wrongMajorWarning x else x; maybeWarnWrongMajor = x: if !(lib.hasPrefix supportedLixMajor lixPackageToUse.version) then builtins.trace wrongMajorWarning x else x;
overlay = # It is not enough to *just* throw whatever the default nix version is at
lib.genAttrs overridelist_2_18 ( # anything in the "don't give lix" list, we have to *also* ensure that we
name: if (lib.functionArgs prev.${name}.override ? "nix") then prev.${name}.override { # give whatever upstream version as specified in the callPackage invocation.
nix = final.nixVersions.nix_2_18_upstream; #
} else prev.${name} # Unfortunately I don't think there is any actual way to directly query that,
) // { # so we instead do something extremely evil and guess which version it
# probably was. This code is not generalizable to arbitrary derivations, so
# it will hopefully not make us cry, at least.
useCppNixOverlay =
lib.genAttrs overridelist_upstream (
name:
if (lib.functionArgs prev.${name}.override ? "nix") then
let
# Get the two common inputs of a derivation/package.
inputs = prev.${name}.buildInputs ++ prev.${name}.nativeBuildInputs;
nixDependency = lib.findFirst
(drv: (drv.pname or "") == "nix")
final.nixVersions.stable_upstream # default to stable nix if nix is not an input
inputs;
nixMajor = lib.versions.major (nixDependency.version or "");
nixMinor = lib.versions.minor (nixDependency.version or "");
nixAttr = "nix_${nixMajor}_${nixMinor}";
finalNix = final.nixVersions.${nixAttr};
in
prev.${name}.override {
nix = finalNix;
}
else prev.${name}
);
overlay = useCppNixOverlay // {
lix-overlay-present = 1; lix-overlay-present = 1;
# used for things that one wouldn't necessarily want to update, but we # used for things that one wouldn't necessarily want to update, but we
# nevertheless shove it in the overlay and fixed-point it in case one *does* # nevertheless shove it in the overlay and fixed-point it in case one *does*
@ -74,15 +98,14 @@ let
lix = maybeWarnWrongMajor (maybeWarnDuplicate lixPackageToUse); lix = maybeWarnWrongMajor (maybeWarnDuplicate lixPackageToUse);
nixVersions = prev.nixVersions // rec { nixVersions = prev.nixVersions // {
nix_2_18 = final.lix; stable = final.lix;
stable = nix_2_18; stable_upstream = prev.nixVersions.stable;
nix_2_18_upstream = prev.nixVersions.nix_2_18;
}; };
nix-eval-jobs = (prev.nix-eval-jobs.override { nix-eval-jobs = (prev.nix-eval-jobs.override {
# lix # lix
nix = final.nixVersions.nix_2_18; nix = final.lix;
}).overrideAttrs (old: }).overrideAttrs (old:
let src = final.lix-sources.nix-eval-jobs; let src = final.lix-sources.nix-eval-jobs;
in { in {
@ -97,7 +120,7 @@ let
} }
); );
nix-doc = prev.callPackage ./nix-doc/package.nix { withPlugin = false; }; nix-doc = prev.nix-doc.override { withPlugin = false; };
}; };
in in
# Make the overlay idempotent, since flakes passing nixos modules around by # Make the overlay idempotent, since flakes passing nixos modules around by

View file

@ -1 +1 @@
{"nix-eval-jobs": {"kind": "tarball", "rev": "f8869bdcca7c1d5aaf37de3da3a4176811279a57", "nar_hash": "sha256-F/RvI9chHywnckEqHO1ggjzCayknhDnnl2kNnnVXpWg=", "locked_url": "https://git.lix.systems/api/v1/repos/lix-project/nix-eval-jobs/archive/f8869bdcca7c1d5aaf37de3da3a4176811279a57.tar.gz?rev=f8869bdcca7c1d5aaf37de3da3a4176811279a57", "url": "https://git.lix.systems/lix-project/nix-eval-jobs/archive/main.tar.gz"}} {"nix-eval-jobs": {"kind": "tarball", "rev": "df3edf37301cdc77ca5bd5f3f6fcccd6d0befee5", "nar_hash": "sha256-KpKmFgcUGQlAWhLUHyBn3AnTJLp7Kt82q2Cxfp3Yf44=", "locked_url": "https://git.lix.systems/api/v1/repos/lix-project/nix-eval-jobs/archive/df3edf37301cdc77ca5bd5f3f6fcccd6d0befee5.tar.gz?rev=df3edf37301cdc77ca5bd5f3f6fcccd6d0befee5", "url": "https://git.lix.systems/lix-project/nix-eval-jobs/archive/main.tar.gz"}}