Initial commit
This commit is contained in:
		
							
								
								
									
										6
									
								
								.github/dependabot.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								.github/dependabot.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,6 @@ | ||||
| version: 2 | ||||
| updates: | ||||
|   - package-ecosystem: "github-actions" | ||||
|     directory: "/" | ||||
|     schedule: | ||||
|       interval: "weekly" | ||||
							
								
								
									
										56
									
								
								.github/workflows/build.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								.github/workflows/build.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,56 @@ | ||||
| name: "Build and populate cache" | ||||
| on: | ||||
|   pull_request: | ||||
|   push: | ||||
|   schedule: | ||||
|     # rebuild everyday at 2:51 | ||||
|     # TIP: Choose a random time here so not all repositories are build at once: | ||||
|     # https://www.random.org/clock-times/?num=1&earliest=01%3A00&latest=08%3A00&interval=5&format=html&rnd=new | ||||
|     - cron:  '51 2 * * *' | ||||
| jobs: | ||||
|   tests: | ||||
|     strategy: | ||||
|       matrix: | ||||
|         # Set this to notify the global nur package registry that changes are | ||||
|         # available. | ||||
|         # | ||||
|         # The repo name as used in | ||||
|         # https://github.com/nix-community/NUR/blob/master/repos.json | ||||
|         nurRepo: | ||||
|           - <YOUR_REPO_NAME> | ||||
|         # Set this to cache your build results in cachix for faster builds | ||||
|         # in CI and for everyone who uses your cache. | ||||
|         # | ||||
|         # Format: Your cachix cache host name without the ".cachix.org" suffix. | ||||
|         # Example: mycache (for mycache.cachix.org) | ||||
|         # | ||||
|         # For this to work, you also need to set the CACHIX_SIGNING_KEY secret | ||||
|         # in your repository settings in Github found at https://github.com/<your_githubname>/nur-packages/settings/secrets | ||||
|         cachixName: | ||||
|           - <YOUR_CACHIX_NAME> | ||||
|         nixPath: | ||||
|           - nixpkgs=channel:nixos-unstable | ||||
|           - nixpkgs=channel:nixpkgs-unstable | ||||
|           - nixpkgs=channel:nixos-20.03 | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|     - name: Checkout repository | ||||
|       uses: actions/checkout@v2.3.3 | ||||
|     - name: Install nix | ||||
|       uses: cachix/install-nix-action@v11 | ||||
|       with: | ||||
|         nix_path: "${{ matrix.nixPath }}" | ||||
|     - name: Show nixpkgs version | ||||
|       run: nix-instantiate --eval -E '(import <nixpkgs> {}).lib.version' | ||||
|     - name: Setup cachix | ||||
|       uses: cachix/cachix-action@v6 | ||||
|       if: ${{ matrix.cachixName != '<YOUR_CACHIX_NAME>' }} | ||||
|       with: | ||||
|         name: ${{ matrix.cachixName }} | ||||
|         signingKey: '${{ secrets.CACHIX_SIGNING_KEY }}' | ||||
|     - name: Build nix packages | ||||
|       # TODO switch to default nixpkgs channel once nix-build-uncached 1.0.0 is in stable | ||||
|       run: nix run -I 'nixpkgs=channel:nixos-unstable' nixpkgs.nix-build-uncached -c nix-build-uncached ci.nix -A cacheOutputs | ||||
|     - name: Trigger NUR update | ||||
|       if: ${{ matrix.nurRepo != '<YOUR_REPO_NAME>' }} | ||||
|       run: curl -XPOST "https://nur-update.herokuapp.com/update?repo=${{ matrix.nurRepo }}" | ||||
							
								
								
									
										3
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| result | ||||
| result-* | ||||
|  | ||||
							
								
								
									
										40
									
								
								.travis.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								.travis.yml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,40 @@ | ||||
| version: ~> 1.0 | ||||
| import: nix-community/nix-travis-ci:nix.yml@main | ||||
|  | ||||
| sudo: false | ||||
|  | ||||
| env: | ||||
|   global: | ||||
|     # Set this to cache your build results in cachix for faster builds | ||||
|     # in travis and for everyone who uses your cache. | ||||
|     # | ||||
|     # Format: Your cachix cache host name without the ".cachix.org" suffix. | ||||
|     # Example: mycache (for mycache.cachix.org) | ||||
|     # | ||||
|     # For this to work, you also need to set the  CACHIX_SIGNING_KEY | ||||
|     # in your repository settings in Travis. | ||||
|     # - CACHIX_CACHE= | ||||
|     # Set this to notify the global nur package registry that changes are | ||||
|     # available. | ||||
|     # | ||||
|     # The repo name as used in | ||||
|     # https://github.com/nix-community/NUR/blob/master/repos.json | ||||
|     - NUR_REPO="<YOUR_NUR_REPO_NAME_HERE>" | ||||
|  | ||||
| matrix: | ||||
|   include: | ||||
|     - env: NIX_PATH=nixpkgs=channel:nixpkgs-unstable | ||||
|     - env: NIX_PATH=nixpkgs=channel:nixos-unstable | ||||
|     - env: NIX_PATH=nixpkgs=channel:nixos-20.03 | ||||
|  | ||||
| script: | ||||
|  - nix-build ci.nix -A buildOutputs | ||||
|  - nix eval -f default.nix 'lib' | ||||
|  - nix eval -f default.nix 'modules' | ||||
|  - nix eval -f default.nix 'overlays' | ||||
|  | ||||
| after_success: | ||||
|   - if [ -n "${CACHIX_CACHE}" ]; then nix-build ci.nix -A cacheOutputs | cachix push "${CACHIX_CACHE}"; fi | ||||
|   - if [[ NUR_REPO != "<YOUR_NUR_REPO_NAME_HERE>" && "cron" != "${TRAVIS_EVENT_TYPE}" && "false" = "${TRAVIS_PULL_REQUEST}" && "master" = "${TRAVIS_BRANCH}" ]]; then | ||||
|       curl -XPOST "https://nur-update.herokuapp.com/update?repo=${NUR_REPO}"; fi | ||||
|  | ||||
							
								
								
									
										22
									
								
								LICENSE
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								LICENSE
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,22 @@ | ||||
| MIT License | ||||
|  | ||||
| Copyright (c) 2018 Francesco Gazzetta | ||||
|  | ||||
| Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| of this software and associated documentation files (the "Software"), to deal | ||||
| in the Software without restriction, including without limitation the rights | ||||
| to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||
| copies of the Software, and to permit persons to whom the Software is | ||||
| furnished to do so, subject to the following conditions: | ||||
|  | ||||
| The above copyright notice and this permission notice shall be included in all | ||||
| copies or substantial portions of the Software. | ||||
|  | ||||
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
| FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||||
| AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
| LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
| OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||||
| SOFTWARE. | ||||
|  | ||||
							
								
								
									
										37
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								README.md
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,37 @@ | ||||
| # nur-packages-template | ||||
|  | ||||
| **A template for [NUR](https://github.com/nix-community/NUR) repositories** | ||||
|  | ||||
| ## Setup | ||||
|  | ||||
| 1. Click on [Use this template](https://github.com/nix-community/nur-packages-template/generate) to start a repo based on this template. (Do _not_ fork it.) | ||||
| 2. Add your packages to the [pkgs](./pkgs) directory and to | ||||
|    [default.nix](./default.nix) | ||||
|    * Remember to mark the broken packages as `broken = true;` in the `meta` | ||||
|      attribute, or travis (and consequently caching) will fail! | ||||
|    * Library functions, modules and overlays go in the respective directories | ||||
| 3. Choose your CI: Depending on your preference you can use github actions (recommended) or [Travis ci](https://travis-ci.com). | ||||
|    - Github actions: Change your NUR repo name and optionally add a cachix name in [.github/workflows/build.yml](./.github/workflows/build.yml) and change the cron timer | ||||
|      to a random value as described in the file | ||||
|    - Travis ci: Change your NUR repo name and optionally your cachix repo name in  | ||||
|    [.travis.yml](./.travis.yml). Than enable travis in your repo. You can add a cron job in the repository settings on travis to keep your cachix cache fresh | ||||
| 5. Change your travis and cachix names on the README template section and delete | ||||
|    the rest | ||||
| 6. [Add yourself to NUR](https://github.com/nix-community/NUR#how-to-add-your-own-repository) | ||||
|  | ||||
| ## README template | ||||
|  | ||||
| # nur-packages | ||||
|  | ||||
| **My personal [NUR](https://github.com/nix-community/NUR) repository** | ||||
|  | ||||
| <!-- Remove this if you don't use github actions --> | ||||
|  | ||||
|  | ||||
| <!-- | ||||
| Uncomment this if you use travis: | ||||
|  | ||||
| [](https://travis-ci.com/<YOUR_TRAVIS_USERNAME>/nur-packages) | ||||
| --> | ||||
| [](https://<YOUR_CACHIX_CACHE_NAME>.cachix.org) | ||||
|  | ||||
							
								
								
									
										56
									
								
								ci.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								ci.nix
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,56 @@ | ||||
| # This file provides all the buildable and cacheable packages and | ||||
| # package outputs in you package set. These are what gets built by CI, | ||||
| # so if you correctly mark packages as | ||||
| # | ||||
| # - broken (using `meta.broken`), | ||||
| # - unfree (using `meta.license.free`), and | ||||
| # - locally built (using `preferLocalBuild`) | ||||
| # | ||||
| # then your CI will be able to build and cache only those packages for | ||||
| # which this is possible. | ||||
|  | ||||
| { pkgs ? import <nixpkgs> {} }: | ||||
|  | ||||
| with builtins; | ||||
|  | ||||
| let | ||||
|  | ||||
|   isReserved = n: n == "lib" || n == "overlays" || n == "modules"; | ||||
|   isDerivation = p: isAttrs p && p ? type && p.type == "derivation"; | ||||
|   isBuildable = p: !(p.meta.broken or false) && p.meta.license.free or true; | ||||
|   isCacheable = p: !(p.preferLocalBuild or false); | ||||
|   shouldRecurseForDerivations = p: isAttrs p && p.recurseForDerivations or false; | ||||
|  | ||||
|   nameValuePair = n: v: { name = n; value = v; }; | ||||
|  | ||||
|   concatMap = builtins.concatMap or (f: xs: concatLists (map f xs)); | ||||
|  | ||||
|   flattenPkgs = s: | ||||
|     let | ||||
|       f = p: | ||||
|         if shouldRecurseForDerivations p then flattenPkgs p | ||||
|         else if isDerivation p then [p] | ||||
|         else []; | ||||
|     in | ||||
|       concatMap f (attrValues s); | ||||
|  | ||||
|   outputsOf = p: map (o: p.${o}) p.outputs; | ||||
|  | ||||
|   nurAttrs = import ./default.nix { inherit pkgs; }; | ||||
|  | ||||
|   nurPkgs = | ||||
|     flattenPkgs | ||||
|     (listToAttrs | ||||
|     (map (n: nameValuePair n nurAttrs.${n}) | ||||
|     (filter (n: !isReserved n) | ||||
|     (attrNames nurAttrs)))); | ||||
|  | ||||
| in | ||||
|  | ||||
| rec { | ||||
|   buildPkgs = filter isBuildable nurPkgs; | ||||
|   cachePkgs = filter isCacheable buildPkgs; | ||||
|  | ||||
|   buildOutputs = concatMap outputsOf buildPkgs; | ||||
|   cacheOutputs = concatMap outputsOf cachePkgs; | ||||
| } | ||||
							
								
								
									
										21
									
								
								default.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								default.nix
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,21 @@ | ||||
| # This file describes your repository contents. | ||||
| # It should return a set of nix derivations | ||||
| # and optionally the special attributes `lib`, `modules` and `overlays`. | ||||
| # It should NOT import <nixpkgs>. Instead, you should take pkgs as an argument. | ||||
| # Having pkgs default to <nixpkgs> is fine though, and it lets you use short | ||||
| # commands such as: | ||||
| #     nix-build -A mypackage | ||||
|  | ||||
| { pkgs ? import <nixpkgs> {} }: | ||||
|  | ||||
| { | ||||
|   # The `lib`, `modules`, and `overlay` names are special | ||||
|   lib = import ./lib { inherit pkgs; }; # functions | ||||
|   modules = import ./modules; # NixOS modules | ||||
|   overlays = import ./overlays; # nixpkgs overlays | ||||
|  | ||||
|   example-package = pkgs.callPackage ./pkgs/example-package { }; | ||||
|   # some-qt5-package = pkgs.libsForQt5.callPackage ./pkgs/some-qt5-package { }; | ||||
|   # ... | ||||
| } | ||||
|  | ||||
							
								
								
									
										8
									
								
								lib/default.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								lib/default.nix
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,8 @@ | ||||
| { pkgs }: | ||||
|  | ||||
| with pkgs.lib; { | ||||
|   # Add your library functions here | ||||
|   # | ||||
|   # hexint = x: hexvals.${toLower x}; | ||||
| } | ||||
|  | ||||
							
								
								
									
										6
									
								
								modules/default.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								modules/default.nix
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,6 @@ | ||||
| { | ||||
|   # Add your NixOS modules here | ||||
|   # | ||||
|   # my-module = ./my-module; | ||||
| } | ||||
|  | ||||
							
								
								
									
										18
									
								
								overlay.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								overlay.nix
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,18 @@ | ||||
| # You can use this file as a nixpkgs overlay. This is useful in the | ||||
| # case where you don't want to add the whole NUR namespace to your | ||||
| # configuration. | ||||
|  | ||||
| self: super: | ||||
|  | ||||
| let | ||||
|  | ||||
|   isReserved = n: n == "lib" || n == "overlays" || n == "modules"; | ||||
|   nameValuePair = n: v: { name = n; value = v; }; | ||||
|   nurAttrs = import ./default.nix { pkgs = super; }; | ||||
|  | ||||
| in | ||||
|  | ||||
|   builtins.listToAttrs | ||||
|   (map (n: nameValuePair n nurAttrs.${n}) | ||||
|   (builtins.filter (n: !isReserved n) | ||||
|   (builtins.attrNames nurAttrs))) | ||||
							
								
								
									
										6
									
								
								overlays/default.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								overlays/default.nix
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,6 @@ | ||||
| { | ||||
|   # Add your overlays here | ||||
|   # | ||||
|   # my-overlay = import ./my-overlay; | ||||
| } | ||||
|  | ||||
							
								
								
									
										10
									
								
								pkgs/example-package/default.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								pkgs/example-package/default.nix
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,10 @@ | ||||
| { stdenv }: | ||||
|  | ||||
| stdenv.mkDerivation rec { | ||||
|   name = "example-package-${version}"; | ||||
|   version = "1.0"; | ||||
|   src = ./.; | ||||
|   buildPhase = "echo echo Hello World > example"; | ||||
|   installPhase = "install -Dm755 example $out"; | ||||
| } | ||||
|  | ||||
		Reference in New Issue
	
	Block a user