199 lines
4.9 KiB
Nix
199 lines
4.9 KiB
Nix
{
|
|
config,
|
|
inputs,
|
|
lib,
|
|
pkgs,
|
|
...
|
|
}: let
|
|
inherit (lib) mkEnableOption mkOption mkIf;
|
|
inherit (lib) optionalAttrs;
|
|
inherit (lib.types) bool str;
|
|
inherit (config.system) stateVersion;
|
|
|
|
cfg = config.module.stylix;
|
|
|
|
iosevkaPackage =
|
|
if stateVersion == "24.11"
|
|
then pkgs.nerdfonts.override {fonts = ["Iosevka"];}
|
|
else pkgs.nerd-fonts.iosevka;
|
|
iosevkaTermPackage =
|
|
if stateVersion == "24.11"
|
|
then pkgs.nerdfonts.override {fonts = ["Iosevka Term"];}
|
|
else pkgs.nerd-fonts.iosevka-term;
|
|
mesloLgPackage =
|
|
if stateVersion == "24.11"
|
|
then pkgs.nerdfonts.override {fonts = ["MesloLG"];}
|
|
else pkgs.nerd-fonts.meslo-lg;
|
|
jetBrainsMonoPackage =
|
|
if stateVersion == "24.11"
|
|
then pkgs.nerdfonts.override {fonts = ["JetBrainsMono"];}
|
|
else pkgs.nerd-fonts.jetbrains-mono;
|
|
|
|
themes = {
|
|
nord = {
|
|
polarity = "dark";
|
|
scheme = "${pkgs.base16-schemes}/share/themes/nord.yaml";
|
|
wallpaper = builtins.fetchurl {
|
|
url = "https://w.wallhaven.cc/full/l8/wallhaven-l8l9gq.png";
|
|
name = "wallhaven-l8l9gq.png";
|
|
sha256 = "0ypr44sg0fn55m1b52dgr1nnscpi2p6rfkjsm7vvrdqw7bafbx2z";
|
|
};
|
|
|
|
serif = {
|
|
package = iosevkaPackage;
|
|
name = "Iosevka Nerd Font Propo";
|
|
};
|
|
|
|
monospace = {
|
|
package = iosevkaTermPackage;
|
|
name = "IosevkaTerm Nerd Font Mono";
|
|
};
|
|
|
|
cursor = {
|
|
package = pkgs.nordzy-cursor-theme;
|
|
name = "Nordzy-cursors";
|
|
size = 32;
|
|
};
|
|
};
|
|
|
|
nord-light = {
|
|
polarity = "light";
|
|
scheme = "${pkgs.base16-schemes}/share/themes/nord-light.yaml";
|
|
wallpaper = builtins.fetchurl {
|
|
url = "https://w.wallhaven.cc/full/l8/wallhaven-l8l9gq.png";
|
|
name = "wallhaven-l8l9gq.png";
|
|
sha256 = "0ypr44sg0fn55m1b52dgr1nnscpi2p6rfkjsm7vvrdqw7bafbx2z";
|
|
};
|
|
|
|
serif = {
|
|
package = iosevkaPackage;
|
|
name = "Iosevka Nerd Font Propo";
|
|
};
|
|
|
|
monospace = {
|
|
package = iosevkaTermPackage;
|
|
name = "IosevkaTerm Nerd Font Mono";
|
|
};
|
|
|
|
cursor = {
|
|
package = pkgs.nordzy-cursor-theme;
|
|
name = "Nordzy-cursors-white";
|
|
size = 32;
|
|
};
|
|
};
|
|
|
|
helios = {
|
|
polarity = "dark";
|
|
scheme = "${pkgs.base16-schemes}/share/themes/helios.yaml";
|
|
wallpaper = builtins.fetchurl {
|
|
url = "https://w.wallhaven.cc/full/we/wallhaven-wejkzx.jpg";
|
|
name = "wallhaven-wejkzx.jpg";
|
|
sha256 = "sha256:145q483q1yvs4pndh2r57gfvbd9jc15sry9qz31avqxyrn8ama52";
|
|
};
|
|
|
|
serif = {
|
|
package = iosevkaPackage;
|
|
name = "Iosevka Nerd Font Propo";
|
|
};
|
|
|
|
monospace = {
|
|
package = iosevkaTermPackage;
|
|
name = "IosevkaTerm Nerd Font Mono";
|
|
};
|
|
|
|
cursor = {
|
|
package = pkgs.bibata-cursors;
|
|
name = "Bibata-Modern-Classic";
|
|
size = 24;
|
|
};
|
|
};
|
|
|
|
sulphurpool = {
|
|
polarity = "dark";
|
|
scheme = "${pkgs.base16-schemes}/share/themes/atelier-sulphurpool.yaml";
|
|
wallpaper = builtins.fetchurl {
|
|
url = "https://w.wallhaven.cc/full/rd/wallhaven-rd5q3m.jpg";
|
|
name = "wallhaven-rd5q3m.jpg";
|
|
sha256 = "sha256:1sa2739vwwv1xafzjvxlg3kvq26xmcxg6hrwq29q40j617r63sy6";
|
|
};
|
|
|
|
serif = {
|
|
package = iosevkaPackage;
|
|
name = "Iosevka Nerd Font Propo";
|
|
};
|
|
|
|
monospace = {
|
|
package = iosevkaTermPackage;
|
|
name = "IosevkaTerm Nerd Font Mono";
|
|
};
|
|
|
|
cursor = {
|
|
package = pkgs.bibata-cursors;
|
|
name = "Bibata-Modern-Classic";
|
|
size = 24;
|
|
};
|
|
};
|
|
};
|
|
in {
|
|
imports = with inputs; [
|
|
stylix.nixosModules.stylix
|
|
];
|
|
|
|
options = {
|
|
module.stylix = {
|
|
enable = mkEnableOption "enable stylix";
|
|
|
|
useCursor = mkOption {
|
|
type = bool;
|
|
default = true;
|
|
description = "enable cursor settings";
|
|
};
|
|
theme = mkOption {
|
|
type = str;
|
|
default = "nord";
|
|
};
|
|
};
|
|
};
|
|
|
|
config = mkIf cfg.enable {
|
|
stylix =
|
|
{
|
|
enable = true;
|
|
image = themes.${cfg.theme}.wallpaper;
|
|
autoEnable = true;
|
|
polarity = themes.${cfg.theme}.polarity;
|
|
base16Scheme = themes.${cfg.theme}.scheme;
|
|
|
|
opacity = {
|
|
applications = 1.0;
|
|
terminal = 1.0;
|
|
popups = 1.0;
|
|
desktop = 1.0;
|
|
};
|
|
|
|
fonts = {
|
|
sizes = {
|
|
applications = 13;
|
|
terminal = 13;
|
|
popups = 14;
|
|
desktop = 13;
|
|
};
|
|
|
|
serif = {
|
|
inherit (themes.${cfg.theme}.serif) package name;
|
|
};
|
|
sansSerif = config.stylix.fonts.serif;
|
|
monospace = {
|
|
inherit (themes.${cfg.theme}.monospace) package name;
|
|
};
|
|
emoji = config.stylix.fonts.serif;
|
|
};
|
|
}
|
|
// optionalAttrs cfg.useCursor {
|
|
cursor = {
|
|
inherit (themes.${cfg.theme}.cursor) package name size;
|
|
};
|
|
};
|
|
};
|
|
}
|