mirror of
				https://github.com/hyprwm/Hyprland.git
				synced 2025-10-29 19:34:47 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			185 lines
		
	
	
		
			5.5 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			185 lines
		
	
	
		
			5.5 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| {
 | |
|   description = "Hyprland is a dynamic tiling Wayland compositor that doesn't sacrifice on its looks";
 | |
| 
 | |
|   inputs = {
 | |
|     nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
 | |
| 
 | |
|     # <https://github.com/nix-systems/nix-systems>
 | |
|     systems.url = "github:nix-systems/default-linux";
 | |
| 
 | |
|     aquamarine = {
 | |
|       url = "github:hyprwm/aquamarine";
 | |
|       inputs.nixpkgs.follows = "nixpkgs";
 | |
|       inputs.systems.follows = "systems";
 | |
|       inputs.hyprutils.follows = "hyprutils";
 | |
|       inputs.hyprwayland-scanner.follows = "hyprwayland-scanner";
 | |
|     };
 | |
| 
 | |
|     hyprcursor = {
 | |
|       url = "github:hyprwm/hyprcursor";
 | |
|       inputs.nixpkgs.follows = "nixpkgs";
 | |
|       inputs.systems.follows = "systems";
 | |
|       inputs.hyprlang.follows = "hyprlang";
 | |
|     };
 | |
| 
 | |
|     hyprgraphics = {
 | |
|       url = "github:hyprwm/hyprgraphics";
 | |
|       inputs.nixpkgs.follows = "nixpkgs";
 | |
|       inputs.systems.follows = "systems";
 | |
|       inputs.hyprutils.follows = "hyprutils";
 | |
|     };
 | |
| 
 | |
|     hyprland-protocols = {
 | |
|       url = "github:hyprwm/hyprland-protocols";
 | |
|       inputs.nixpkgs.follows = "nixpkgs";
 | |
|       inputs.systems.follows = "systems";
 | |
|     };
 | |
| 
 | |
|     hyprland-qtutils = {
 | |
|       url = "github:hyprwm/hyprland-qtutils";
 | |
|       inputs.nixpkgs.follows = "nixpkgs";
 | |
|       inputs.systems.follows = "systems";
 | |
|       inputs.hyprlang.follows = "hyprlang";
 | |
|     };
 | |
| 
 | |
|     hyprlang = {
 | |
|       url = "github:hyprwm/hyprlang";
 | |
|       inputs.nixpkgs.follows = "nixpkgs";
 | |
|       inputs.systems.follows = "systems";
 | |
|       inputs.hyprutils.follows = "hyprutils";
 | |
|     };
 | |
| 
 | |
|     hyprutils = {
 | |
|       url = "github:hyprwm/hyprutils";
 | |
|       inputs.nixpkgs.follows = "nixpkgs";
 | |
|       inputs.systems.follows = "systems";
 | |
|     };
 | |
| 
 | |
|     hyprwayland-scanner = {
 | |
|       url = "github:hyprwm/hyprwayland-scanner";
 | |
|       inputs.nixpkgs.follows = "nixpkgs";
 | |
|       inputs.systems.follows = "systems";
 | |
|     };
 | |
| 
 | |
|     xdph = {
 | |
|       url = "github:hyprwm/xdg-desktop-portal-hyprland";
 | |
|       inputs.nixpkgs.follows = "nixpkgs";
 | |
|       inputs.systems.follows = "systems";
 | |
|       inputs.hyprland-protocols.follows = "hyprland-protocols";
 | |
|       inputs.hyprlang.follows = "hyprlang";
 | |
|       inputs.hyprutils.follows = "hyprutils";
 | |
|       inputs.hyprwayland-scanner.follows = "hyprwayland-scanner";
 | |
|     };
 | |
| 
 | |
|     pre-commit-hooks = {
 | |
|       url = "github:cachix/git-hooks.nix";
 | |
|       inputs.nixpkgs.follows = "nixpkgs";
 | |
|     };
 | |
|   };
 | |
| 
 | |
|   outputs = inputs @ {
 | |
|     self,
 | |
|     nixpkgs,
 | |
|     systems,
 | |
|     ...
 | |
|   }: let
 | |
|     inherit (nixpkgs) lib;
 | |
|     eachSystem = lib.genAttrs (import systems);
 | |
|     pkgsFor = eachSystem (system:
 | |
|       import nixpkgs {
 | |
|         localSystem = system;
 | |
|         overlays = with self.overlays; [
 | |
|           hyprland-packages
 | |
|           hyprland-extras
 | |
|         ];
 | |
|       });
 | |
|     pkgsCrossFor = eachSystem (system: crossSystem:
 | |
|       import nixpkgs {
 | |
|         localSystem = system;
 | |
|         inherit crossSystem;
 | |
|         overlays = with self.overlays; [
 | |
|           hyprland-packages
 | |
|           hyprland-extras
 | |
|         ];
 | |
|       });
 | |
|     pkgsDebugFor = eachSystem (system:
 | |
|       import nixpkgs {
 | |
|         localSystem = system;
 | |
|         overlays = with self.overlays; [
 | |
|           hyprland-debug
 | |
|         ];
 | |
|       });
 | |
|     pkgsDebugCrossFor = eachSystem (system: crossSystem:
 | |
|       import nixpkgs {
 | |
|         localSystem = system;
 | |
|         inherit crossSystem;
 | |
|         overlays = with self.overlays; [
 | |
|           hyprland-debug
 | |
|         ];
 | |
|       });
 | |
|   in {
 | |
|     overlays = import ./nix/overlays.nix {inherit self lib inputs;};
 | |
| 
 | |
|     checks = eachSystem (system:
 | |
|       (lib.filterAttrs
 | |
|         (n: _: (lib.hasPrefix "hyprland" n) && !(lib.hasSuffix "debug" n))
 | |
|         self.packages.${system})
 | |
|       // {
 | |
|         inherit (self.packages.${system}) xdg-desktop-portal-hyprland;
 | |
|         pre-commit-check = inputs.pre-commit-hooks.lib.${system}.run {
 | |
|           src = ./.;
 | |
|           hooks = {
 | |
|             hyprland-treewide-formatter = {
 | |
|               enable = true;
 | |
|               entry = "${self.formatter.${system}}/bin/hyprland-treewide-formatter";
 | |
|               pass_filenames = false;
 | |
|               excludes = ["subprojects"];
 | |
|               always_run = true;
 | |
|             };
 | |
|           };
 | |
|         };
 | |
|       }
 | |
|       // (import ./nix/tests inputs pkgsFor.${system}));
 | |
| 
 | |
|     packages = eachSystem (system: {
 | |
|       default = self.packages.${system}.hyprland;
 | |
|       inherit
 | |
|         (pkgsFor.${system})
 | |
|         # hyprland-packages
 | |
|         hyprland
 | |
|         hyprland-unwrapped
 | |
|         hyprtester
 | |
|         # hyprland-extras
 | |
|         xdg-desktop-portal-hyprland
 | |
|         ;
 | |
|       inherit (pkgsDebugFor.${system}) hyprland-debug;
 | |
|       hyprland-cross = (pkgsCrossFor.${system} "aarch64-linux").hyprland;
 | |
|       hyprland-debug-cross = (pkgsDebugCrossFor.${system} "aarch64-linux").hyprland-debug;
 | |
|     });
 | |
| 
 | |
|     devShells = eachSystem (system: {
 | |
|       default =
 | |
|         pkgsFor.${system}.mkShell.override {
 | |
|           inherit (self.packages.${system}.default) stdenv;
 | |
|         } {
 | |
|           name = "hyprland-shell";
 | |
|           hardeningDisable = ["fortify"];
 | |
|           inputsFrom = [pkgsFor.${system}.hyprland];
 | |
|           packages = [pkgsFor.${system}.clang-tools];
 | |
|           inherit (self.checks.${system}.pre-commit-check) shellHook;
 | |
|         };
 | |
|     });
 | |
| 
 | |
|     formatter = eachSystem (system: pkgsFor.${system}.callPackage ./nix/formatter.nix {});
 | |
| 
 | |
|     nixosModules.default = import ./nix/module.nix inputs;
 | |
|     homeManagerModules.default = import ./nix/hm-module.nix self;
 | |
| 
 | |
|     # Hydra build jobs
 | |
|     # Recent versions of Hydra can aggregate jobsets from 'hydraJobs' instead of a release.nix
 | |
|     # or similar. Remember to filter large or incompatible attributes here. More eval jobs can
 | |
|     # be added by merging, e.g., self.packages // self.devShells.
 | |
|     hydraJobs = self.packages;
 | |
|   };
 | |
| }
 |