mirror of
				https://github.com/NotAShelf/nyxexprs.git
				synced 2025-10-31 11:02:37 +00:00 
			
		
		
		
	
		
			Some checks are pending
		
		
	
	Build / Find uncached packages (push) Waiting to run
				
			Build / build-uncached (push) Blocked by required conditions
				
			Run Checks / check (NIXPKGS_ALLOW_INSECURE=1 nix flake check --accept-flake-config --impure) (push) Waiting to run
				
			Run Checks / check (nix run .#alejandra-custom -- -c . -e ./npins) (push) Waiting to run
				
			Run Checks / build (push) Blocked by required conditions
				
			Nix / nix (push) Waiting to run
				
			Signed-off-by: NotAShelf <raf@notashelf.dev> Change-Id: I6a6a6964a40c9fbcbff6c0d28d1c708f2c2365ce
		
			
				
	
	
		
			215 lines
		
	
	
	
		
			5.5 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			215 lines
		
	
	
	
		
			5.5 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| {
 | |
|   # «https://github.com/notashelf/nyxexprs»
 | |
|   description = "Personal package overlay for commonly used derivations";
 | |
| 
 | |
|   # This is so that you don't have to compile Alejandra unless you already
 | |
|   # have it in the Nix store, which is unlikely.
 | |
|   nixConfig = {
 | |
|     extra-substituters = ["https://nyx.cachix.org"];
 | |
|     extra-trusted-public-keys = ["nyx.cachix.org-1:xH6G0MO9PrpeGe7mHBtj1WbNzmnXr7jId2mCiq6hipE"];
 | |
|   };
 | |
| 
 | |
|   outputs = {
 | |
|     self,
 | |
|     nixpkgs,
 | |
|     flake-parts,
 | |
|     ...
 | |
|   } @ inputs:
 | |
|     flake-parts.lib.mkFlake {inherit inputs self;} {
 | |
|       systems = import inputs.systems;
 | |
|       imports = [flake-parts.flakeModules.easyOverlay];
 | |
| 
 | |
|       perSystem = {
 | |
|         system,
 | |
|         inputs',
 | |
|         config,
 | |
|         pkgs,
 | |
|         lib,
 | |
|         ...
 | |
|       }: let
 | |
|         inherit (builtins) concatStringsSep match listToAttrs;
 | |
|         inherit (lib.attrsets) recursiveUpdate;
 | |
|         inherit (lib.filesystem) packagesFromDirectoryRecursive;
 | |
|         inherit (lib.customisation) callPackageWith;
 | |
| 
 | |
|         pins = import ./npins;
 | |
|         date = concatStringsSep "-" (match "(.{4})(.{2})(.{2}).*" self.lastModifiedDate);
 | |
|       in {
 | |
|         _module.args.pkgs = import nixpkgs {
 | |
|           inherit system;
 | |
|           config.allowUnfree = true;
 | |
|         };
 | |
| 
 | |
|         overlayAttrs = config.packages;
 | |
|         packages = let
 | |
|           base = packagesFromDirectoryRecursive {
 | |
|             callPackage = callPackageWith (recursiveUpdate pkgs {inherit pins date;});
 | |
|             directory = ./pkgs;
 | |
|           };
 | |
| 
 | |
|           # Borrowed diniamo/niqspkgs, with love <3
 | |
|           # (and without useless pipe operators)
 | |
|           fromInputs = [
 | |
|             # My packages
 | |
|             "watt"
 | |
|             "flint"
 | |
|             "inquisitor"
 | |
|             "ndg"
 | |
|             "licenseit"
 | |
|             "mrc"
 | |
|             "gcolor"
 | |
|             "tailray"
 | |
|             "nh"
 | |
|             "gh-notify"
 | |
|             "stash"
 | |
|             "slight"
 | |
| 
 | |
|             # 3rd party packages
 | |
|             "wiremix"
 | |
|             "nil"
 | |
|           ];
 | |
| 
 | |
|           mappedPkgs = listToAttrs (map (input: {
 | |
|               name = input;
 | |
|               value = inputs'.${input}.packages.default or (builtins.throw "Input ${input} does not provide a default package");
 | |
|             })
 | |
|             fromInputs);
 | |
|         in
 | |
|           base // mappedPkgs;
 | |
| 
 | |
|         # Formatter that traverses the entire tree and formats Nix files
 | |
|         formatter = pkgs.writeShellApplication {
 | |
|           name = "nix3-fmt-wrapper";
 | |
| 
 | |
|           runtimeInputs = [
 | |
|             config.packages.alejandra-custom
 | |
|             pkgs.fd
 | |
|           ];
 | |
| 
 | |
|           text = ''
 | |
|             fd "$@" -t f -e nix -x alejandra -q '{}'
 | |
|           '';
 | |
|         };
 | |
| 
 | |
|         devShells = {
 | |
|           default = pkgs.mkShellNoCC {
 | |
|             name = "nyxexprs";
 | |
|             packages = [pkgs.npins];
 | |
|           };
 | |
|         };
 | |
| 
 | |
|         apps = {
 | |
|           update-pkgs = {
 | |
|             type = "app";
 | |
|             program = lib.getExe (
 | |
|               pkgs.writeShellApplication {
 | |
|                 name = "update";
 | |
|                 text = ''
 | |
|                   nix-shell --show-trace "${nixpkgs.outPath}/maintainers/scripts/update.nix" \
 | |
|                     --argstr skip-prompt true \
 | |
|                     --arg predicate '(
 | |
|                       let prefix = builtins.toPath ./pkgs; prefixLen = builtins.stringLength prefix;
 | |
|                       in (_: p: p.meta ? position && (builtins.substring 0 prefixLen p.meta.position) == prefix)
 | |
|                     )'
 | |
|                 '';
 | |
|               }
 | |
|             );
 | |
|           };
 | |
|         };
 | |
|       };
 | |
| 
 | |
|       flake = {
 | |
|         # In case I ever decide to use Hydra.
 | |
|         hydraJobs = self.packages;
 | |
|       };
 | |
|     };
 | |
| 
 | |
|   inputs = {
 | |
|     nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
 | |
|     systems.url = "github:nix-systems/default-linux";
 | |
|     flake-parts = {
 | |
|       url = "github:hercules-ci/flake-parts";
 | |
|       inputs.nixpkgs-lib.follows = "nixpkgs";
 | |
|     };
 | |
| 
 | |
|     flake-compat = {
 | |
|       url = "github:edolstra/flake-compat";
 | |
|       flake = false;
 | |
|     };
 | |
| 
 | |
|     # Rest of my packages will be constructed from previous flakes
 | |
|     watt = {
 | |
|       url = "github:NotAShelf/watt";
 | |
|       inputs.nixpkgs.follows = "nixpkgs";
 | |
|     };
 | |
| 
 | |
|     flint = {
 | |
|       url = "github:NotAShelf/flint";
 | |
|       inputs.nixpkgs.follows = "nixpkgs";
 | |
|     };
 | |
| 
 | |
|     inquisitor = {
 | |
|       url = "github:NotAShelf/inquisitor";
 | |
|       inputs.nixpkgs.follows = "nixpkgs";
 | |
|     };
 | |
| 
 | |
|     ndg = {
 | |
|       url = "github:feel-co/ndg";
 | |
|       inputs.nixpkgs.follows = "nixpkgs";
 | |
|     };
 | |
| 
 | |
|     licenseit = {
 | |
|       url = "github:notashelf/licenseit";
 | |
|       inputs.nixpkgs.follows = "nixpkgs";
 | |
|     };
 | |
| 
 | |
|     mrc = {
 | |
|       url = "github:notashelf/mrc";
 | |
|       inputs.nixpkgs.follows = "nixpkgs";
 | |
|     };
 | |
| 
 | |
|     gcolor = {
 | |
|       url = "github:notashelf/gcolor";
 | |
|       inputs.nixpkgs.follows = "nixpkgs";
 | |
|     };
 | |
| 
 | |
|     tailray = {
 | |
|       url = "github:notashelf/tailray";
 | |
|       inputs.nixpkgs.follows = "nixpkgs";
 | |
|     };
 | |
| 
 | |
|     nh = {
 | |
|       url = "github:nix-community/nh";
 | |
|       inputs.nixpkgs.follows = "nixpkgs";
 | |
|     };
 | |
| 
 | |
|     gh-notify = {
 | |
|       url = "github:notashelf/gh-notify";
 | |
|       inputs.nixpkgs.follows = "nixpkgs";
 | |
|     };
 | |
| 
 | |
|     stash = {
 | |
|       url = "github:notashelf/stash";
 | |
|       inputs.nixpkgs.follows = "nixpkgs";
 | |
|     };
 | |
| 
 | |
|     slight = {
 | |
|       url = "github:notashelf/slight";
 | |
|       inputs.nixpkgs.follows = "nixpkgs";
 | |
|     };
 | |
| 
 | |
|     # 3rd party flakes that I want to extract packages from
 | |
|     wiremix = {
 | |
|       url = "github:tsowell/wiremix";
 | |
|       inputs = {
 | |
|         nixpkgs.follows = "nixpkgs";
 | |
|         systems.follows = "systems";
 | |
|       };
 | |
|     };
 | |
| 
 | |
|     nil = {
 | |
|       url = "github:oxalica/nil";
 | |
|       inputs.nixpkgs.follows = "nixpkgs";
 | |
|     };
 | |
|   };
 | |
| }
 |