Compare commits

..

13 commits

Author SHA1 Message Date
Soliprem
5fac618202
Merge branch 'main' into feature/language-fsharp 2025-03-26 12:56:04 +01:00
raf
013fcf3648
Merge pull request #745 from NotAShelf/refactor-ci
Some checks failed
Treewide Checks / Validate flake (push) Has been cancelled
Treewide Checks / Check formatting (push) Has been cancelled
Treewide Checks / Check source tree for typos (push) Has been cancelled
Treewide Checks / Validate documentation builds (push) Has been cancelled
Treewide Checks / Validate hyperlinks in documentation sources (push) Has been cancelled
Treewide Checks / Validate Editorconfig conformance (push) Has been cancelled
ci: consolidate 'check' type workflows into one
2025-03-25 20:37:37 +00:00
raf
6095ccfff8
Merge branch 'main' into refactor-ci 2025-03-25 10:25:02 +00:00
7a78edac81
ci: consolidate 'check' type workflows into one 2025-03-25 12:49:55 +03:00
raf
4f92525672
Merge pull request #743 from Gerg-L/main
Some checks failed
Validate flake & check formatting / Validate Flake (push) Waiting to run
Validate flake & check formatting / Formatting via Alejandra (push) Waiting to run
Set up binary cache / cachix (default) (push) Has been cancelled
Set up binary cache / cachix (maximal) (push) Has been cancelled
Set up binary cache / cachix (nix) (push) Has been cancelled
Check for typos in the source tree / check-typos (push) Has been cancelled
fix: Update npins version
2025-03-25 09:34:24 +00:00
Gerg-L
f82ea9650b fix: Update npins version 2025-03-25 09:31:07 +00:00
Soliprem
a40c3ff4a2
Merge pull request #741 from NotAShelf/update-maintainer
Some checks failed
Set up binary cache / cachix (default) (push) Waiting to run
Set up binary cache / cachix (maximal) (push) Waiting to run
Set up binary cache / cachix (nix) (push) Waiting to run
Validate flake & check formatting / Validate Flake (push) Waiting to run
Validate flake & check formatting / Formatting via Alejandra (push) Waiting to run
Check for typos in the source tree / check-typos (push) Waiting to run
Validate flake & check documentation / Validate Flake Documentation (push) Has been cancelled
Validate flake & check documentation / Validate hyperlinks in documentation sources (push) Has been cancelled
Build and deploy documentation / Check latest commit (push) Has been cancelled
Build and deploy documentation / publish (push) Has been cancelled
meta: add co-maintainers to CODEOWNERS
2025-03-25 06:54:33 +01:00
Soliprem
0342e54d04
Merge branch 'main' into update-maintainer
Some checks failed
Check for typos in the source tree / check-typos (push) Has been cancelled
2025-03-25 06:50:39 +01:00
raf
caf23d3190
Merge pull request #744 from alDuncanson/main
docs: fix typo
2025-03-25 04:12:38 +00:00
Al Duncanson
7835cbdc1d docs: fix typo
Add missing word in sentence: `let`.
2025-03-24 19:04:23 -04:00
Soliprem
b07d01c65f
Merge branch 'main' into update-maintainer 2025-03-24 19:14:41 +01:00
9074c734b7
docs: update co-maintainers section 2025-03-24 21:09:47 +03:00
d8a56fc5f5
meta: update CODEOWNERS with new maintainers 2025-03-20 14:39:53 +03:00
11 changed files with 382 additions and 180 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

@ -1,56 +0,0 @@
name: "Validate flake & check documentation"
on:
pull_request:
workflow_dispatch:
push:
branches:
- main
paths:
- docs/**
jobs:
flake-docs-check:
name: Validate Flake Documentation
runs-on: ubuntu-latest
strategy:
matrix:
package:
- docs
- docs-html
- docs-manpages
- docs-json
steps:
- name: Install Nix
uses: DeterminateSystems/nix-installer-action@main
- name: Checkout
uses: actions/checkout@v4
- name: Set default git branch (to reduce log spam)
run: git config --global init.defaultBranch main
- name: Build documentation packages
run: nix build .#${{ matrix.package }} --print-build-logs
- name: Get current date
id: get-date
# output format: 2023-12-22-120000
run: echo "date=$(date +'%Y-%m-%d-%H%M%S')" >> ${GITHUB_OUTPUT}
- name: Upload doc artifacts
uses: actions/upload-artifact@v4
with:
name: "${{ matrix.package }}"
path: result/share/doc/nvf
flake-docs-linkcheck:
name: Validate hyperlinks in documentation sources
runs-on: ubuntu-latest
steps:
- name: Install Nix
uses: DeterminateSystems/nix-installer-action@main
- name: Checkout
uses: actions/checkout@v4
- name: Build documentation packages
run: nix build .#docs-linkcheck -Lv

View file

@ -1,4 +1,6 @@
name: "Validate flake & check formatting" name: "Treewide Checks"
permissions: read-all
on: on:
pull_request: pull_request:
workflow_dispatch: workflow_dispatch:
@ -6,13 +8,13 @@ on:
branches: branches:
- main - main
paths-ignore: paths-ignore:
- .github/**
- assets/** - assets/**
- .gitignore
jobs: jobs:
nix-flake-check: nix-flake-check:
name: Validate Flake name: "Validate flake"
runs-on: ubuntu-latest runs-on: ubuntu-latest
if: "!contains(github.event.pull_request.title, '[skip ci]')"
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v4
@ -24,8 +26,9 @@ jobs:
run: nix flake check run: nix flake check
format-with-alejandra: format-with-alejandra:
name: Formatting via Alejandra name: "Check formatting"
runs-on: ubuntu-latest runs-on: ubuntu-latest
if: "!contains(github.event.pull_request.title, '[skip ci]')"
steps: steps:
- name: Checkout - name: Checkout
uses: actions/checkout@v4 uses: actions/checkout@v4
@ -33,4 +36,116 @@ jobs:
- name: Install Nix - name: Install Nix
uses: DeterminateSystems/nix-installer-action@main uses: DeterminateSystems/nix-installer-action@main
- run: nix run nixpkgs#alejandra -- -c . - name: Check formatting via Alejandra
run: nix run nixpkgs#alejandra -- -c .
check-typos:
name: "Check source tree for typos"
runs-on: ubuntu-latest
if: "!contains(github.event.pull_request.title, '[skip ci]')"
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Check for typos
uses: crate-ci/typos@master
with:
config: .github/typos.toml
- if: ${{ failure() }}
shell: bash
run: |
echo "::error:: Current codebase contains typos that were caught by the CI!"
echo "If those typos were intentional, please add them to the ignored regexes in .github/typos.toml"
echo "[skip ci] label may be added to the PR title if this is a one-time issue and is safe to ignore"
exit 1
flake-docs-check:
name: "Validate documentation builds"
runs-on: ubuntu-latest
if: "!contains(github.event.pull_request.title, '[skip ci]')"
strategy:
matrix:
package:
- docs
- docs-html
- docs-manpages
- docs-json
steps:
- name: Install Nix
uses: DeterminateSystems/nix-installer-action@main
- name: Checkout
uses: actions/checkout@v4
- name: Set default git branch (to reduce log spam)
run: git config --global init.defaultBranch main
- name: Build documentation packages
run: nix build .#${{ matrix.package }} --print-build-logs
- name: Get current date
id: get-date
# output format: 2023-12-22-120000
run: echo "date=$(date +'%Y-%m-%d-%H%M%S')" >> ${GITHUB_OUTPUT}
- name: Upload doc artifacts
uses: actions/upload-artifact@v4
with:
name: "${{ matrix.package }}"
path: result/share/doc/nvf
flake-docs-linkcheck:
name: "Validate hyperlinks in documentation sources"
runs-on: ubuntu-latest
if: "!contains(github.event.pull_request.title, '[skip ci]')"
steps:
- name: Install Nix
uses: DeterminateSystems/nix-installer-action@main
- name: Checkout
uses: actions/checkout@v4
- name: Build linkcheck package
run: nix build .#docs-linkcheck -Lv
check-editorconfig:
name: "Validate Editorconfig conformance"
runs-on: ubuntu-latest
if: "!contains(github.event.pull_request.title, '[skip ci]')"
steps:
- name: Get list of changed files from PR
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh api \
repos/${{ github.repository }}/pulls/${{github.event.number}}/files --paginate \
| jq '.[] | select(.status != "removed") | .filename' \
> "$HOME/changed_files"
- name: Print list of changed files
run: |
cat "$HOME/changed_files"
- name: Checkout
uses: actions/checkout@v4
with:
ref: refs/pull/${{ github.event.pull_request.number }}/merge
- name: Install Nix
uses: DeterminateSystems/nix-installer-action@main
- name: Checking EditorConfig
shell: bash
run: |
cat "$HOME/changed_files" | nix-shell -p editorconfig-checker.out \
--run 'xargs -r editorconfig-checker -disable-indentation -exclude flake.lock --verbose'
echo -n "Check status: $?"
- if: ${{ failure() }}
shell: bash
run: |
echo "::error:: Current formatting does not fit convention provided by .editorconfig located in the project root."
echo "Please make sure your editor properly integrates editorconfig, Neovim does so by default."
echo "See https://editorconfig.org/#download on how to integrate Editorconfig to your editor."
exit 1

View file

@ -1,9 +1,13 @@
name: Cleanup name: Delete Stale Branches
permissions:
contents: write
on: on:
workflow_dispatch: workflow_dispatch:
schedule: schedule:
- cron: "0 4 1 * *" # 4AM on 1st of every month - cron: "0 4 1 * *" # 4AM on 1st of every month
- cron: "0 4 15 * *" # 4AM on the 15th of every month - cron: "0 4 15 * *" # 4AM on the 15th of every month
jobs: jobs:
branches: branches:
name: Cleanup old branches name: Cleanup old branches

View file

@ -9,7 +9,7 @@ on:
- "modules/**" - "modules/**"
- "docs/**" - "docs/**"
# Defining permissions here passes it to all workflows. # Defining permissions here passes it to all jobs.
# https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/controlling-permissions-for-github_token # https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/controlling-permissions-for-github_token
permissions: permissions:
contents: write contents: write
@ -34,7 +34,7 @@ jobs:
run: git config --global init.defaultBranch main run: git config --global init.defaultBranch main
- name: Build documentation packages - name: Build documentation packages
run: nix build .#docs-html --print-build-logs run: nix build .#docs-html --print-build-logs || exit 1
- name: Deploy to GitHub Pages preview - name: Deploy to GitHub Pages preview
run: | run: |

View file

@ -1,46 +0,0 @@
name: "Check validity of .editorconfig"
permissions: read-all
on:
pull_request:
jobs:
check-editorconfig:
runs-on: ubuntu-latest
if: "!contains(github.event.pull_request.title, '[skip ci]')"
steps:
- name: Get list of changed files from PR
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh api \
repos/notashelf/nvf/pulls/${{github.event.number}}/files --paginate \
| jq '.[] | select(.status != "removed") | .filename' \
> "$HOME/changed_files"
- name: Print list of changed files
run: |
cat "$HOME/changed_files"
- name: Checkout
uses: actions/checkout@v4
with:
ref: refs/pull/${{ github.event.pull_request.number }}/merge
- name: Install Nix
uses: DeterminateSystems/nix-installer-action@main
- name: Checking EditorConfig
shell: bash
run: |
cat "$HOME/changed_files" | nix-shell -p editorconfig-checker.out --run 'xargs -r editorconfig-checker -disable-indentation -exclude flake.lock --verbose'
echo -n "Check status: $?"
- name: Fail Gracefully
if: ${{ failure() }}
shell: bash
run: |
echo "::error:: Current formatting does not fit convention provided by .editorconfig located in the project root."
echo "Please make sure your editor properly integrates editorconfig. See https://editorconfig.org/#download for more."
exit 1

View file

@ -1,30 +0,0 @@
name: "Check for typos in the source tree"
permissions: read-all
on:
pull_request:
workflow_dispatch:
push:
jobs:
check-typos:
runs-on: ubuntu-latest
if: "!contains(github.event.pull_request.title, '[skip ci]')"
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Check for typos
uses: crate-ci/typos@master
with:
config: .github/typos.toml
- name: Fail Gracefully
if: ${{ failure() }}
shell: bash
run: |
echo "::error:: Current codebase contains typos that were caught by the CI!"
echo "If those typos were intentional, please add them to the ignored regexes in .github/typos.toml"
echo "[skip ci] label may be used if this is a one-time issue"
exit 1

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
) )