Merge branch 'main' into refactor-ci

This commit is contained in:
raf 2025-03-25 10:25:02 +00:00 committed by GitHub
commit 6095ccfff8
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 254 additions and 39 deletions

6
.github/CODEOWNERS vendored
View file

@ -1 +1,5 @@
* @NotAShelf # Codeowners should be used to distinguish the maintainers of the project
# and not contributors of specific modules to nvf. While adding a new module
# please consider adding yourself to 'meta.maintainers' in the module instead
# of CODEOWNERS here.
* @NotAShelf @horriblename @Soliprem

20
.github/README.md vendored
View file

@ -246,14 +246,15 @@ Neovim's behaviour with Nix.
### Co-Maintainers ### Co-Maintainers
Alongside myself, nvf is developed by those talented folk: Alongside [myself](https://github.com/notashelf), nvf is developed by those
talented folk. nvf would not be what it is today without their invaluable
contributions.
- [**@horriblename**](https://github.com/horriblename) - [**@horriblename**](https://github.com/horriblename)
([Liberapay](https://liberapay.com/horriblename/))- For actively implementing ([Liberapay](https://liberapay.com/horriblename/))- For actively implementing
planned features and quality of life updates. planned features and quality of life updates.
- [**@Diniamo**](https://github.com/Diniamo) - [**@Soliprem**](https://github.com/soliprem) - For rigorously implementing
([Liberapay](https://en.liberapay.com/diniamo/)) - For actively submitting missing features and excellent work on new language modules.
pull requests, issues and assistance with maintenance of nvf.
Please do remember to extend your thanks (financially or otherwise) if this Please do remember to extend your thanks (financially or otherwise) if this
project has been helpful to you. project has been helpful to you.
@ -270,14 +271,14 @@ heart-felt thanks to
- [**@FlafyDev**](https://github.com/FlafyDev) - For getting Home-Manager module - [**@FlafyDev**](https://github.com/FlafyDev) - For getting Home-Manager module
to work and Nix assistance. to work and Nix assistance.
- [**@n3oney**](https://github.com/n3oney) - For making custom keybinds finally - [**@n3oney**](https://github.com/n3oney) - For making custom keybinds finally
possible, and other module additions. possible, great ideas and module additions.
- [**@Yavko**](https://github.com/Yavko) - For the amazing **nvf** logo - [**@Yavko**](https://github.com/Yavko) - For the amazing **nvf** logo
- [**@FrothyMarrow**](https://github.com/FrothyMarrow) - For seeing mistakes - [**@FrothyMarrow**](https://github.com/FrothyMarrow) - For seeing mistakes
that I could not. that I could not and contributing good ideas & code.
- [**@Gerg-l**](https://github.com/gerg-l) 🐸 - For the modern Neovim wrapper, - [**@Gerg-l**](https://github.com/gerg-l) 🐸 - For the modern Neovim wrapper,
[mnw], and occasional code improvements. [mnw], and occasional improvements to the codebase.
- [**@Soliprem**](https://github.com/soliprem) - Rigorously implementing missing - [**@Diniamo**](https://github.com/Diniamo) - For actively submitting pull
features and excellent work on new language modules. requests, issues and assistance with co-maintenance of nvf.
and everyone who has submitted issues or pull requests! and everyone who has submitted issues or pull requests!
@ -301,7 +302,6 @@ including:
I am grateful for their previous work and inspiration, and I wholeheartedly I am grateful for their previous work and inspiration, and I wholeheartedly
recommend checking their work out. recommend checking their work out.
<br/>
## License ## License

View file

@ -5,8 +5,8 @@ options will include useful comments, warnings or setup tips on how a module
option is meant to be used as well as examples in complex cases. option is meant to be used as well as examples in complex cases.
An offline version of this page is bundled with nvf as a part of the manpages An offline version of this page is bundled with nvf as a part of the manpages
which you can access with `man 5 nvf`. Please us know if you believe any of the which you can access with `man 5 nvf`. Please let us know if you believe any of
options below are missing useful examples. the options below are missing useful examples.
<!-- <!--
In the manual, individual options may be referenced in Hyperlinks as follows: In the manual, individual options may be referenced in Hyperlinks as follows:

File diff suppressed because it is too large Load diff

View file

@ -1,5 +1,3 @@
# Based off of:
# https://github.com/NixOS/nixpkgs/blob/776c3bee4769c616479393aeefceefeda16b6fcb/pkgs/tools/nix/npins/source.nix
{ {
lib, lib,
fetchurl, fetchurl,
@ -8,7 +6,16 @@
}: }:
builtins.mapAttrs builtins.mapAttrs
( (
_: let name: let
getUrl = {
url,
hash,
...
}:
fetchurl {
inherit url;
sha256 = hash;
};
getZip = { getZip = {
url, url,
hash, hash,
@ -23,19 +30,29 @@ builtins.mapAttrs
repository, repository,
revision, revision,
url ? null, url ? null,
submodules,
hash, hash,
... ...
} @ attrs: } @ attrs:
assert repository ? type; assert repository ? type;
if url != null if url != null && !submodules
then getZip attrs then getZip attrs
else else
assert repository.type == "Git"; let assert repository.type == "Git"; let
urlToName = url: rev: let url' =
matched = builtins.match "^.*/([^/]*)(\\.git)?$" repository.url; if repository.type == "Git"
short = builtins.substring 0 7 rev; then repository.url
else if repository.type == "GitHub"
then "https://github.com/${repository.owner}/${repository.repo}.git"
else if repository.type == "GitLab"
then "${repository.server}/${repository.repo_path}.git"
else throw "Unrecognized repository type ${repository.type}";
name = let
matched = builtins.match "^.*/([^/]*)(\\.git)?$" url';
short = builtins.substring 0 7 revision;
appendShort = appendShort =
if (builtins.match "[a-f0-9]*" rev) != null if (builtins.match "[a-f0-9]*" revision) != null
then "-${short}" then "-${short}"
else ""; else "";
in "${ in "${
@ -43,43 +60,53 @@ builtins.mapAttrs
then "source" then "source"
else builtins.head matched else builtins.head matched
}${appendShort}"; }${appendShort}";
name = urlToName repository.url revision;
in in
fetchgit { fetchgit {
inherit name; inherit name;
inherit (repository) url; url = url';
rev = revision; rev = revision;
sha256 = hash; sha256 = hash;
fetchSubmodules = submodules;
}; };
mkPyPiSource = {
url,
hash,
...
}:
fetchurl {
inherit url;
sha256 = hash;
};
in in
spec: spec:
assert spec ? type; let assert spec ? type; let
mayOverride = path: let
envVarName = "NPINS_OVERRIDE_${saneName}";
saneName = lib.stringAsChars (c:
if (builtins.match "[a-zA-Z0-9]" c) == null
then "_"
else c)
name;
ersatz = builtins.getEnv envVarName;
in
if ersatz == ""
then path
else
# this turns the string into an actual Nix path (for both absolute and
# relative paths)
builtins.trace "Overriding path of \"${name}\" with \"${ersatz}\" due to set \"${envVarName}\"" (
if builtins.substring 0 1 ersatz == "/"
then /. + ersatz
else /. + builtins.getEnv "PWD" + "/${ersatz}"
);
func = func =
{ {
Git = mkGitSource; Git = mkGitSource;
GitRelease = mkGitSource; GitRelease = mkGitSource;
PyPi = mkPyPiSource; PyPi = getUrl;
Channel = getZip; Channel = getZip;
Tarball = getUrl;
} }
.${spec.type} .${spec.type}
or (builtins.throw "Unknown source type ${spec.type}"); or (builtins.throw "Unknown source type ${spec.type}");
in in
spec // {outPath = func spec;} spec // {outPath = mayOverride (func spec);}
) )
( (
let let
json = lib.importJSON ./sources.json; json = lib.importJSON ./sources.json;
in in
assert lib.assertMsg (json.version == 3) "Npins version mismatch!"; assert lib.assertMsg (json.version == 5) "Npins version mismatch!";
json.pins json.pins
) )