mirror of
				https://github.com/NotAShelf/nyxexprs.git
				synced 2025-10-31 02:52:38 +00:00 
			
		
		
		
	treewide: start transitioning to nixpkgs package structure
This commit is contained in:
		
					parent
					
						
							
								5244163a47
							
						
					
				
			
			
				commit
				
					
						d52fa53348
					
				
			
		
					 16 changed files with 190 additions and 63 deletions
				
			
		|  | @ -0,0 +1,111 @@ | |||
| diff --git a/CHANGELOG.md b/CHANGELOG.md
 | ||||
| index 9ceab4d5..146e7992 100644
 | ||||
| --- a/CHANGELOG.md
 | ||||
| +++ b/CHANGELOG.md
 | ||||
| @@ -334,7 +334,8 @@
 | ||||
|    instead of the one least recently. | ||||
|  * Starlight theme (the default theme) updated to [V4][starlight-v4] | ||||
|  * Background transparency (alpha) is now disabled in fullscreened | ||||
| -  windows ([#1416][1416]).
 | ||||
| +  windows ([#1416][1416]) by default but can be enabled with
 | ||||
| +  `fullscreen_alpha`.
 | ||||
|  * Foot server systemd units now use the standard | ||||
|    graphical-session.target ([#1281][1281]). | ||||
|  * If `$XDG_RUNTIME_DIR/foot-$WAYLAND_DISPLAY.sock` does not exist, | ||||
| diff --git a/meson.build b/meson.build
 | ||||
| index 719352bc..eb38c0f8 100644
 | ||||
| --- a/meson.build
 | ||||
| +++ b/meson.build
 | ||||
| @@ -73,6 +73,9 @@ add_project_arguments(
 | ||||
|    (get_option('b_pgo') == 'use' | ||||
|      ? ['-DFOOT_PGO_ENABLED=1'] | ||||
|      : []) + | ||||
| +  (get_option('fullscreen_alpha')
 | ||||
| +    ? ['-DFOOT_FULLSCREEN_ALPHA_ENABLED=1']
 | ||||
| +    : []) +
 | ||||
|    cc.get_supported_arguments( | ||||
|      ['-pedantic', | ||||
|       '-fstrict-aliasing', | ||||
| @@ -374,6 +377,7 @@ summary(
 | ||||
|      'Documentation': scdoc.found(), | ||||
|      'Themes': get_option('themes'), | ||||
|      'IME': get_option('ime'), | ||||
| +    'Fullscreen alpha': get_option('fullscreen_alpha'),
 | ||||
|      'Grapheme clustering': utf8proc.found(), | ||||
|      'utmp backend': utmp_backend, | ||||
|      'utmp helper default path': utmp_default_helper_path, | ||||
| diff --git a/meson_options.txt b/meson_options.txt
 | ||||
| index ab7a07be..7919431e 100644
 | ||||
| --- a/meson_options.txt
 | ||||
| +++ b/meson_options.txt
 | ||||
| @@ -7,6 +7,9 @@ option('themes', type: 'boolean', value: true,
 | ||||
|  option('ime', type: 'boolean', value: true, | ||||
|         description: 'IME (Input Method Editor) support') | ||||
| 
 | ||||
| +option('fullscreen_alpha', type: 'boolean', value: false,
 | ||||
| +    description: 'Enables transparency on fullscreen windows')
 | ||||
| +
 | ||||
|  option('grapheme-clustering', type: 'feature', | ||||
|         description: 'Enables grapheme clustering using libutf8proc. Requires fcft with harfbuzz support to be useful.') | ||||
| 
 | ||||
| diff --git a/render.c b/render.c
 | ||||
| index 91472027..847984a9 100644
 | ||||
| --- a/render.c
 | ||||
| +++ b/render.c
 | ||||
| @@ -525,6 +525,13 @@ render_cell(struct terminal *term, pixman_image_t *pix, pixman_region32_t *damag
 | ||||
|          } | ||||
| 
 | ||||
|          else if (cell->attrs.bg_src == COLOR_DEFAULT) { | ||||
| +#if defined(FOOT_FULLSCREEN_ALPHA_ENABLED) && FOOT_FULLSCREEN_ALPHA_ENABLED
 | ||||
| +            /*
 | ||||
| +             * Note: I don't care about the stupid ass Wayland
 | ||||
| +             * protocol I want transparent fullscreen windows.
 | ||||
| +             */
 | ||||
| +            alpha = term->colors.alpha;
 | ||||
| +#else
 | ||||
|              if (term->window->is_fullscreen) { | ||||
|                  /* | ||||
|                   * Note: disable transparency when fullscreened. | ||||
| @@ -562,6 +569,7 @@ render_cell(struct terminal *term, pixman_image_t *pix, pixman_region32_t *damag
 | ||||
|              } else { | ||||
|                  alpha = term->colors.alpha; | ||||
|              } | ||||
| +#endif
 | ||||
|          } | ||||
|      } | ||||
| 
 | ||||
| @@ -900,6 +908,10 @@ render_margin(struct terminal *term, struct buffer *buf,
 | ||||
|      const int bmargin = term->height - term->margins.bottom; | ||||
|      const int line_count = end_line - start_line; | ||||
| 
 | ||||
| +#if defined(FOOT_FULLSCREEN_ALPHA_ENABLED) && FOOT_FULLSCREEN_ALPHA_ENABLED
 | ||||
| +    uint32_t _bg = !term->reverse ? term->colors.bg : term->colors.fg;
 | ||||
| +    pixman_color_t bg = color_hex_to_pixman_with_alpha(_bg, term->colors.alpha);
 | ||||
| +#else
 | ||||
|      const uint32_t _bg = !term->reverse ? term->colors.bg : term->colors.fg; | ||||
|      uint16_t alpha = term->colors.alpha; | ||||
| 
 | ||||
| @@ -909,6 +921,7 @@ render_margin(struct terminal *term, struct buffer *buf,
 | ||||
|      } | ||||
| 
 | ||||
|      pixman_color_t bg = color_hex_to_pixman_with_alpha(_bg, alpha); | ||||
| +#endif
 | ||||
| 
 | ||||
|      pixman_image_fill_rectangles( | ||||
|          PIXMAN_OP_SRC, buf->pix[0], &bg, 4, | ||||
| @@ -2817,8 +2830,14 @@ grid_render(struct terminal *term)
 | ||||
|      xassert(term->height > 0); | ||||
| 
 | ||||
|      struct buffer_chain *chain = term->render.chains.grid; | ||||
| +
 | ||||
| +#if defined(FOOT_FULLSCREEN_ALPHA_ENABLED) && FOOT_FULLSCREEN_ALPHA_ENABLED
 | ||||
| +    bool use_alpha = term->colors.alpha != 0xffff;
 | ||||
| +#else
 | ||||
|      bool use_alpha = !term->window->is_fullscreen && | ||||
|                       term->colors.alpha != 0xffff; | ||||
| +#endif
 | ||||
| +
 | ||||
|      struct buffer *buf = shm_get_buffer( | ||||
|          chain, term->width, term->height, use_alpha); | ||||
| 
 | ||||
| 
 | ||||
|  | @ -0,0 +1,26 @@ | |||
| { | ||||
|   lib, | ||||
|   fetchFromGitea, | ||||
|   foot, | ||||
|   ... | ||||
| }: | ||||
| foot.overrideAttrs (prev: let | ||||
|   version = "2024-03-14-unstable"; | ||||
| in { | ||||
|   inherit version; | ||||
|   src = fetchFromGitea { | ||||
|     domain = "codeberg.org"; | ||||
|     owner = "dnkl"; | ||||
|     repo = "foot"; | ||||
|     rev = "dd3bb13d97b405495465357f7b7b17c9f2bba3c2"; | ||||
|     hash = "sha256-Pp3/cNELRYmTOQrJgHX6c+t0QkxEjoly0TLMKVj3H0E="; | ||||
|   }; | ||||
| 
 | ||||
|   patches = (prev.patches or []) ++ [./0001-fullscreen-transparency.patch]; | ||||
|   mesonFlags = (prev.mesonFlags or []) ++ ["-Dfullscreen_alpha=true"]; | ||||
| 
 | ||||
|   meta = { | ||||
|     mainProgram = "foot"; | ||||
|     maintainers = with lib.maintainers; [NotAShelf]; | ||||
|   }; | ||||
| }) | ||||
|  | @ -15,71 +15,11 @@ | |||
|     }; | ||||
| 
 | ||||
|     packages = let | ||||
|       inherit (pkgs) callPackage fetchFromGitea foot alejandra; | ||||
|       pins = import ../npins; | ||||
| 
 | ||||
|       inherit (pkgs) callPackage; | ||||
|       mkPackage = path: {__functor = self: self.override;} // (callPackage path {inherit pins;}); | ||||
|     in { | ||||
|       /* | ||||
|       packages that follow npins entries | ||||
|       they can be updated via npins | ||||
|       */ | ||||
|       ani-cli = mkPackage ./ani-cli; | ||||
|       rat = mkPackage ./rat; | ||||
|       rofi-calc-wayland = mkPackage ./rofi-calc-wayland; | ||||
|       rofi-emoji-wayland = mkPackage ./rofi-emoji-wayland; | ||||
| 
 | ||||
|       /* | ||||
|       static packages | ||||
|       need manual intervention with each update | ||||
|       */ | ||||
|       mov-cli = callPackage ./mov-cli {}; | ||||
|       cloneit = callPackage ./cloneit {}; | ||||
|       headscale-ui = callPackage ./headscale-ui {}; | ||||
|       mastodon-bird-ui = callPackage ./mastodon-bird-ui {}; | ||||
|       reposilite-bin = callPackage ./reposilite-bin { | ||||
|         javaJdk = pkgs.openjdk_headless; | ||||
|       }; | ||||
| 
 | ||||
|       /* | ||||
|       patched packages | ||||
|       patches packages take a package from nixpkgs and patch it to suit my own needs | ||||
|       */ | ||||
|       foot-transparent = foot.overrideAttrs (prev: let | ||||
|         version = "2024-03-14-unstable"; | ||||
|       in { | ||||
|         inherit version; | ||||
|         src = fetchFromGitea { | ||||
|           domain = "codeberg.org"; | ||||
|           owner = "dnkl"; | ||||
|           repo = "foot"; | ||||
|           rev = "dd3bb13d97b405495465357f7b7b17c9f2bba3c2"; | ||||
|           hash = "sha256-Pp3/cNELRYmTOQrJgHX6c+t0QkxEjoly0TLMKVj3H0E="; | ||||
|         }; | ||||
| 
 | ||||
|         patches = (prev.patches or []) ++ [../patches/0001-foot-transparent.patch]; | ||||
|         mesonFlags = (prev.mesonFlags or []) ++ ["-Dfullscreen_alpha=true"]; | ||||
| 
 | ||||
|         meta.mainProgram = "foot"; | ||||
|       }); | ||||
| 
 | ||||
|       alejandra-no-ads = alejandra.overrideAttrs (prev: { | ||||
|         patches = (prev.patches or []) ++ [../patches/0003-alejandra-remove-ads.patch]; | ||||
|       }); | ||||
| 
 | ||||
|       # override gnome-control-center to trick it into thinking we're running gnome | ||||
|       #  <https://github.com/NixOS/nixpkgs/issues/230493> | ||||
|       #  <https://gitlab.gnome.org/GNOME/gnome-control-center/-/merge_requests/736> | ||||
|       gccn-wrapped = pkgs.gnome.gnome-control-center.overrideAttrs (prev: { | ||||
|         # gnome-control-center does not start without XDG_CURRENT_DESKTOP=gnome | ||||
|         preFixup = | ||||
|           '' | ||||
|             gappsWrapperArgs+=( | ||||
|               --set XDG_CURRENT_DESKTOP "gnome" | ||||
|             ); | ||||
|           '' | ||||
|           + prev.preFixup; | ||||
|       }); | ||||
|     }; | ||||
|     in | ||||
|       import ./top-level.nix {inherit pkgs callPackage mkPackage;}; | ||||
|   }; | ||||
| } | ||||
|  |  | |||
							
								
								
									
										13
									
								
								pkgs/desktops/gnome/gnome-control-center/default.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								pkgs/desktops/gnome/gnome-control-center/default.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,13 @@ | |||
| {gnome-control-center, ...}: | ||||
| gnome-control-center.overrideAttrs (prev: let | ||||
|   gwrapperArgs = '' | ||||
|     # gnome-control-center does not start without XDG_CURRENT_DESKTOP=gnome | ||||
|     gappsWrapperArgs+=( | ||||
|       --set XDG_CURRENT_DESKTOP "gnome" | ||||
|     ); | ||||
|   ''; | ||||
| in { | ||||
|   pname = "gnome-control-center-wrapped"; | ||||
|   preFixup = | ||||
|     (prev.preFixup or "") + gwrapperArgs; | ||||
| }) | ||||
							
								
								
									
										4
									
								
								pkgs/tools/nix/alejandra-no-ads/default.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								pkgs/tools/nix/alejandra-no-ads/default.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,4 @@ | |||
| {alejandra, ...}: | ||||
| alejandra.overrideAttrs (prev: { | ||||
|   patches = (prev.patches or []) ++ [../patches/0003-alejandra-remove-ads.patch]; | ||||
| }) | ||||
							
								
								
									
										33
									
								
								pkgs/top-level.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										33
									
								
								pkgs/top-level.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,33 @@ | |||
| { | ||||
|   pkgs, | ||||
|   mkPackage, | ||||
|   callPackage, | ||||
|   ... | ||||
| }: { | ||||
|   /* | ||||
|   packages that follow npins entries | ||||
|   they can be updated via npins | ||||
|   */ | ||||
|   ani-cli = mkPackage ./applications/misc/ani-cli; | ||||
|   rat = mkPackage ./applications/misc/rat; | ||||
|   rofi-calc-wayland = mkPackage ./applications/misc/rofi-calc-wayland; | ||||
|   rofi-emoji-wayland = mkPackage ./applications/misc/rofi-emoji-wayland; | ||||
| 
 | ||||
|   /* | ||||
|   static packages | ||||
|   need manual intervention with each update | ||||
|   */ | ||||
|   mov-cli = callPackage ./applications/misc/mov-cli {}; | ||||
|   cloneit = callPackage ./applications/misc/cloneit {}; | ||||
|   mastodon-bird-ui = callPackage ./applications/social/mastodon-bird-ui {}; | ||||
|   headscale-ui = callPackage ./applications/networking/headscale-ui {}; | ||||
|   reposilite-bin = callPackage ./applications/networking/reposilite-bin { | ||||
|     javaJdk = pkgs.openjdk_headless; | ||||
|   }; | ||||
| 
 | ||||
|   # patched packages | ||||
|   # those packages usually follow nixpkgs, so they need neither pinning | ||||
|   # nor manual intervention | ||||
|   foot-transparent = callPackage ./applications/terminal-emulators/foot-transparent {}; | ||||
|   alejandra-no-ads = callPackage ./tools/nix/alejandra-no-ads {}; | ||||
| } | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue