Android : Use Stylix.

This commit is contained in:
Dmitry Voronin 2024-06-29 19:01:12 +03:00
parent 676c5b821e
commit d564678824
Signed by: voronind
SSH key fingerprint: SHA256:3kBb4iV2ahufEBNq+vFbUe4QYfHt98DHQjN7QaptY9k
5 changed files with 165 additions and 24 deletions

89
android/Style.nix Normal file
View file

@ -0,0 +1,89 @@
{ lib, config, ... }: with lib; let
cfg = config.style;
mkTypeOption = default: type: mkOption { inherit default type; };
mkStrOption = default: mkTypeOption default types.str;
mkIntOption = default: mkTypeOption default types.int;
mkFloatOption = default: mkTypeOption default types.float;
in {
options.style = {
color = {
bg = {
dark = mkStrOption config.home-manager.config.lib.stylix.colors.base00;
light = mkStrOption config.home-manager.config.lib.stylix.colors.base07;
regular = mkStrOption config.home-manager.config.lib.stylix.colors.base01;
};
fg = {
dark = mkStrOption config.home-manager.config.lib.stylix.colors.base04;
light = mkStrOption config.home-manager.config.lib.stylix.colors.base06;
regular = mkStrOption config.home-manager.config.lib.stylix.colors.base05;
};
accent = mkStrOption config.home-manager.config.lib.stylix.colors.base0A;
heading = mkStrOption config.home-manager.config.lib.stylix.colors.base0D;
hl = mkStrOption config.home-manager.config.lib.stylix.colors.base03;
keyword = mkStrOption config.home-manager.config.lib.stylix.colors.base0E;
link = mkStrOption config.home-manager.config.lib.stylix.colors.base09;
misc = mkStrOption config.home-manager.config.lib.stylix.colors.base0F;
negative = mkStrOption config.home-manager.config.lib.stylix.colors.base08;
neutral = mkStrOption config.home-manager.config.lib.stylix.colors.base0C;
positive = mkStrOption config.home-manager.config.lib.stylix.colors.base0B;
selection = mkStrOption config.home-manager.config.lib.stylix.colors.base02;
transparent = mkStrOption "ffffff00";
accent-b = mkStrOption config.home-manager.config.lib.stylix.colors.base0A-rgb-b;
accent-g = mkStrOption config.home-manager.config.lib.stylix.colors.base0A-rgb-g;
accent-r = mkStrOption config.home-manager.config.lib.stylix.colors.base0A-rgb-r;
negative-b = mkStrOption config.home-manager.config.lib.stylix.colors.base08-rgb-b;
negative-g = mkStrOption config.home-manager.config.lib.stylix.colors.base08-rgb-g;
negative-r = mkStrOption config.home-manager.config.lib.stylix.colors.base08-rgb-r;
neutral-b = mkStrOption config.home-manager.config.lib.stylix.colors.base0C-rgb-b;
neutral-g = mkStrOption config.home-manager.config.lib.stylix.colors.base0C-rgb-g;
neutral-r = mkStrOption config.home-manager.config.lib.stylix.colors.base0C-rgb-r;
positive-b = mkStrOption config.home-manager.config.lib.stylix.colors.base0B-rgb-b;
positive-g = mkStrOption config.home-manager.config.lib.stylix.colors.base0B-rgb-g;
positive-r = mkStrOption config.home-manager.config.lib.stylix.colors.base0B-rgb-r;
bg-b = mkStrOption config.home-manager.config.lib.stylix.colors.base00-rgb-b;
bg-g = mkStrOption config.home-manager.config.lib.stylix.colors.base00-rgb-g;
bg-r = mkStrOption config.home-manager.config.lib.stylix.colors.base00-rgb-r;
fg-b = mkStrOption config.home-manager.config.lib.stylix.colors.base06-rgb-b;
fg-g = mkStrOption config.home-manager.config.lib.stylix.colors.base06-rgb-g;
fg-r = mkStrOption config.home-manager.config.lib.stylix.colors.base06-rgb-r;
border = mkStrOption config.home-manager.config.lib.stylix.colors.base01;
border-b = mkStrOption config.home-manager.config.lib.stylix.colors.base01-rgb-b;
border-g = mkStrOption config.home-manager.config.lib.stylix.colors.base01-rgb-g;
border-r = mkStrOption config.home-manager.config.lib.stylix.colors.base01-rgb-r;
};
font = {
emoji.name = mkStrOption config.home-manager.config.stylix.fonts.emoji.name;
monospace.name = mkStrOption config.home-manager.config.stylix.fonts.monospace.name;
sansSerif.name = mkStrOption config.home-manager.config.stylix.fonts.sansSerif.name;
serif.name = mkStrOption config.home-manager.config.stylix.fonts.serif.name;
size = {
terminal = mkIntOption config.home-manager.config.stylix.fonts.sizes.terminal;
popup = mkIntOption config.home-manager.config.stylix.fonts.sizes.popups;
application = mkIntOption config.home-manager.config.stylix.fonts.sizes.applications;
desktop = mkIntOption config.home-manager.config.stylix.fonts.sizes.desktop;
};
};
opacity = {
application = mkFloatOption config.home-manager.config.stylix.opacity.applications;
desktop = mkFloatOption config.home-manager.config.stylix.opacity.desktop;
popup = mkFloatOption config.home-manager.config.stylix.opacity.popups;
terminal = mkFloatOption config.home-manager.config.stylix.opacity.terminal;
hex = mkStrOption "D9";
};
window = {
gap = mkIntOption 8;
border = mkIntOption 4;
};
};
}

View file

@ -1,7 +1,9 @@
{ pkgs
, inputs
, const
, lib
, util
, config
, secret
, ... } @args: let
# Path where Termux stores user data.
@ -21,13 +23,66 @@
yazi = import ../user/common/yazi args;
in {
# Configure system.
time.timeZone = const.timeZone;
nix.extraOptions = "experimental-features = nix-command flakes";
time.timeZone = const.timeZone;
nix.extraOptions = "experimental-features = nix-command flakes";
# stylix.autoEnable = lib.mkForce false;
# Install packages.
environment.packages = package.list;
home-manager.config = {
imports = [
inputs.stylix.homeManagerModules.stylix
# ../module/common/Stylix.nix
# ../module/common/Wallpaper.nix
];
stylix = {
enable = true;
image = config.module.common.wallpaper.path;
autoEnable = false;
polarity = "dark";
opacity = {
applications = 0.85;
terminal = 0.85;
popups = 0.85;
desktop = 0.85;
};
cursor = {
name = "Adwaita";
package = pkgs.gnome3.adwaita-icon-theme;
size = 14;
};
fonts = let
serif = {
package = (pkgs.callPackage ../module/common/applefont {});
name = "SF Pro Display";
};
in {
inherit serif;
sizes = {
applications = 12;
terminal = 14;
popups = 12;
desktop = 14;
};
sansSerif = serif;
monospace = {
package = (pkgs.nerdfonts.override { fonts = [ "Terminus" ]; });
name = "Terminess Nerd Font Mono";
};
emoji = {
package = pkgs.noto-fonts-emoji;
name = "Noto Color Emoji";
};
};
override = if config.module.common.wallpaper.forceContrastText then {
base04 = "000000";
base05 = "ffffff";
base06 = "ffffff";
} else {};
};
home = {
# Release version.
stateVersion = const.droidStateVersion;
@ -50,6 +105,8 @@ in {
# Special app configuration.
programs = {
home-manager.enable = true;
bash = {
enable = true;
bashrcExtra = bash.config + termux.initScript;

View file

@ -249,18 +249,14 @@
nixOnDroidConfigurations.default = nix-on-droid.lib.nixOnDroidConfiguration {
modules = [
# Android release version.
{ system.stateVersion = inputs.self.const.droidStateVersion; }
{ system.stateVersion = self.const.droidStateVersion; }
# I put all my Android configuration there.
./android
./android/style/Gruvbox.nix
./android/Style.nix
# Some common modules.
./module/common/Setting.nix
# ./module/common/Style.nix
# Stylix.
# inputs.stylix.homeManagerModules.stylix
./module/common/Wallpaper.nix
];
# SpecialArgs allows you to pass objects down to other configuration.

View file

@ -1,11 +1,8 @@
{ pkgs, config, ... }: {
# Add a permanent link for the wallpaper to /etc/wallpaper.
environment.etc.wallpaper.source = config.module.common.wallpaper.path;
stylix = {
config.stylix = {
enable = true;
image = config.module.common.wallpaper.path;
autoEnable = true;
autoEnable = false;
polarity = "dark";
opacity = {
applications = 0.85;
@ -18,18 +15,20 @@
package = pkgs.gnome3.adwaita-icon-theme;
size = 14;
};
fonts = {
fonts = let
serif = {
package = (pkgs.callPackage ./applefont {});
name = "SF Pro Display";
};
in {
inherit serif;
sizes = {
applications = 12;
terminal = 14;
popups = 12;
desktop = 14;
};
serif = {
package = (pkgs.callPackage ./applefont {});
name = "SF Pro Display";
};
sansSerif = config.stylix.fonts.serif;
sansSerif = serif;
monospace = {
package = (pkgs.nerdfonts.override { fonts = [ "Terminus" ]; });
name = "Terminess Nerd Font Mono";

View file

@ -4,22 +4,22 @@
{ lib, stdenv, fetchurl, p7zip }: let
pro = fetchurl {
url = "https://devimages-cdn.apple.com/design/resources/download/SF-Pro.dmg";
sha256 = "sha256-Mu0pmx3OWiKBmMEYLNg+u2MxFERK07BQGe3WAhEec5Q=";
sha256 = "sha256-B8xljBAqOoRFXvSOkOKDDWeYUebtMmQLJ8lF05iFnXk=";
};
compact = fetchurl {
url = "https://devimages-cdn.apple.com/design/resources/download/SF-Compact.dmg";
sha256 = "sha256-Mkf+GK4iuUhZdUdzMW0VUOmXcXcISejhMeZVm0uaRwY=";
sha256 = "sha256-L4oLQ34Epw1/wLehU9sXQwUe/LaeKjHRxQAF6u2pfTo=";
};
mono = fetchurl {
url = "https://devimages-cdn.apple.com/design/resources/download/SF-Mono.dmg";
sha256 = "sha256-tZHV6g427zqYzrNf3wCwiCh5Vjo8PAai9uEvayYPsjM=";
sha256 = "sha256-Uarx1TKO7g5yVBXAx6Yki065rz/wRuYiHPzzi6cTTl8=";
};
ny = fetchurl {
url = "https://devimages-cdn.apple.com/design/resources/download/NY.dmg";
sha256 = "sha256-tn1QLCSjgo5q4PwE/we80pJavr3nHVgFWrZ8cp29qBk=";
sha256 = "sha256-yYyqkox2x9nQ842laXCqA3UwOpUGyIfUuprX975OsLA=";
};
in stdenv.mkDerivation {
name = "applefont";