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