Major refactor to flake, abstract non-trivial packages into their own
files (such as firefox/spotify-qt+librespot), create utils for reusable function library
This commit is contained in:
parent
d5735692d2
commit
c4d7f5d082
11 changed files with 379 additions and 331 deletions
119
nix/home/common/theming.nix
Normal file
119
nix/home/common/theming.nix
Normal file
|
|
@ -0,0 +1,119 @@
|
|||
{
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
cursor_name = "Banana-Blue";
|
||||
cursor_base_size = 32;
|
||||
|
||||
bananaCursorBlueTarball = pkgs.fetchurl {
|
||||
url = "https://github.com/ful1e5/banana-cursor/releases/download/v2.0.0/Banana-Blue.tar.xz";
|
||||
sha256 = "sha256-mpTrvgYiMfamMebtytY0bLouSbaP3qEqP8pgCFl+xPQ=";
|
||||
};
|
||||
|
||||
banana_cursor_blue = pkgs.stdenv.mkDerivation {
|
||||
pname = "banana-cursor-blue";
|
||||
version = "2.0.0";
|
||||
src = bananaCursorBlueTarball;
|
||||
nativeBuildInputs = [ pkgs.xz ];
|
||||
|
||||
dontBuild = true;
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
# Define shell variable using Nix interpolation for $out and the outer Nix var cursorName
|
||||
local themeInstallDir="$out/share/icons/${cursor_name}"
|
||||
mkdir -p "$themeInstallDir"
|
||||
# Use the outer Nix var cursorName and the builder's $version shell variable
|
||||
echo "Unpacking and installing pre-built theme ${cursor_name} (v$version) to $themeInstallDir"
|
||||
|
||||
if tar -xJf $src --strip-components=1 -C "$themeInstallDir"; then
|
||||
echo "Unpacked successfully with --strip-components=1."
|
||||
else
|
||||
echo "-----------------------------------------------------"
|
||||
echo "WARNING: Unpacking with --strip-components=1 failed (archive might not have a single top-level dir)."
|
||||
echo "Listing archive contents:"
|
||||
tar -tf $src || echo "Failed to list archive contents."
|
||||
echo "Attempting unpack without --strip-components=1..."
|
||||
rm -rf "$themeInstallDir"; mkdir -p "$themeInstallDir" # Clean and recreate before retry
|
||||
if tar -xJf $src -C "$themeInstallDir"; then
|
||||
echo "Unpacked successfully without --strip-components=1."
|
||||
else
|
||||
echo "ERROR: Failed to unpack archive even without --strip-components=1."
|
||||
exit 1
|
||||
fi
|
||||
echo "-----------------------------------------------------"
|
||||
fi
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
meta = with pkgs.lib; {
|
||||
description = "Banana Cursor Theme (Pre-built Blue variant v2.0.0)";
|
||||
homepage = "https://github.com/ful1e5/banana-cursor";
|
||||
license = licenses.gpl3Only;
|
||||
maintainers = with maintainers; [ eelco ];
|
||||
platforms = platforms.linux;
|
||||
};
|
||||
};
|
||||
|
||||
cursor_package = banana_cursor_blue;
|
||||
|
||||
effective_cursor_size_str = toString cursor_base_size;
|
||||
in
|
||||
{
|
||||
wayland.windowManager.sway = {
|
||||
config = {
|
||||
seat = {
|
||||
"*" = {
|
||||
# Sway uses this for its own cursor and for XWayland applications.
|
||||
# It takes the theme name and base size. Sway should scale this based on output settings.
|
||||
xcursor_theme = "${cursor_name} ${effective_cursor_size_str}";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
# Home Manager Pointer Configuration
|
||||
# This makes the theme available and sets X11/GTK defaults via Home Manager mechanisms.
|
||||
home = {
|
||||
pointerCursor = {
|
||||
name = cursor_name;
|
||||
size = cursor_base_size;
|
||||
package = cursor_package;
|
||||
x11.enable = true;
|
||||
gtk.enable = true;
|
||||
x11.defaultCursor = "left_ptr";
|
||||
};
|
||||
packages = with pkgs; [
|
||||
(cursor_package)
|
||||
];
|
||||
};
|
||||
|
||||
qt = {
|
||||
enable = true;
|
||||
platformTheme.name = "gtk";
|
||||
style.name = "Nordic";
|
||||
};
|
||||
|
||||
gtk = {
|
||||
enable = true;
|
||||
cursorTheme = {
|
||||
name = cursor_name;
|
||||
size = cursor_base_size; # GTK applications will use this base size.
|
||||
package = cursor_package;
|
||||
};
|
||||
theme = {
|
||||
package = pkgs.nordic;
|
||||
name = "Nordic";
|
||||
};
|
||||
};
|
||||
|
||||
xresources.properties = {
|
||||
"Xcursor.theme" = cursor_name;
|
||||
};
|
||||
|
||||
home.sessionVariables = {
|
||||
XCURSOR_THEME = cursor_name;
|
||||
};
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue