mirror of
https://github.com/NotAShelf/nyxexprs.git
synced 2024-11-22 13:20:44 +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…
Reference in a new issue