mirror of
				https://github.com/NotAShelf/nvf.git
				synced 2025-10-31 02:52:37 +00:00 
			
		
		
		
	Merge branch 'main' into feature/language-fsharp
This commit is contained in:
		
				commit
				
					
						5fac618202
					
				
			
		
					 11 changed files with 382 additions and 180 deletions
				
			
		
							
								
								
									
										6
									
								
								.github/CODEOWNERS
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								.github/CODEOWNERS
									
										
									
									
										vendored
									
									
								
							|  | @ -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
									
									
								
							
							
						
						
									
										20
									
								
								.github/README.md
									
										
									
									
										vendored
									
									
								
							|  | @ -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 | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
							
								
								
									
										56
									
								
								.github/workflows/check-docs.yml
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										56
									
								
								.github/workflows/check-docs.yml
									
										
									
									
										vendored
									
									
								
							|  | @ -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 |  | ||||||
							
								
								
									
										127
									
								
								.github/workflows/check.yml
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										127
									
								
								.github/workflows/check.yml
									
										
									
									
										vendored
									
									
								
							|  | @ -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 | ||||||
|  |  | ||||||
							
								
								
									
										6
									
								
								.github/workflows/cleanup.yml
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								.github/workflows/cleanup.yml
									
										
									
									
										vendored
									
									
								
							|  | @ -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 | ||||||
|  |  | ||||||
							
								
								
									
										4
									
								
								.github/workflows/docs-preview.yml
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								.github/workflows/docs-preview.yml
									
										
									
									
										vendored
									
									
								
							|  | @ -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: | | ||||||
|  |  | ||||||
							
								
								
									
										46
									
								
								.github/workflows/editorconfig.yml
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										46
									
								
								.github/workflows/editorconfig.yml
									
										
									
									
										vendored
									
									
								
							|  | @ -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 |  | ||||||
							
								
								
									
										30
									
								
								.github/workflows/typos.yml
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										30
									
								
								.github/workflows/typos.yml
									
										
									
									
										vendored
									
									
								
							|  | @ -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 |  | ||||||
|  | @ -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
											
										
									
								
							|  | @ -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 | ||||||
| ) | ) | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Soliprem
				Soliprem