This commit is contained in:
mjallen18
2025-10-24 09:59:44 -05:00
parent 9582ca5392
commit 2b5614a07b
12 changed files with 487 additions and 347 deletions

View File

@@ -1,7 +1,6 @@
{ {
lib, lib,
pkgs, pkgs,
home,
... ...
}: }:
let let

View File

@@ -1,6 +1,5 @@
{ {
pkgs, pkgs,
lib,
namespace, namespace,
config, config,
... ...

View File

@@ -3,19 +3,23 @@ with lib;
let let
cfg = config.mjallen.theme; cfg = config.mjallen.theme;
mkPalettePath = name: mkPalettePath = name: lib.snowfall.fs.get-file "modules/home/desktop/theme/palettes/${name}.nix";
lib.snowfall.fs.get-file "modules/home/desktop/theme/palettes/${name}.nix";
cap = s: let cap =
s:
let
len = builtins.stringLength s; len = builtins.stringLength s;
in in
(lib.toUpper (builtins.substring 0 1 s)) (lib.toUpper (builtins.substring 0 1 s)) + (builtins.substring 1 (len - 1) s);
+ (builtins.substring 1 (len - 1) s);
in in
{ {
options.mjallen.theme = { options.mjallen.theme = {
name = mkOption { name = mkOption {
type = types.enum [ "nord" "dracula" "everforest" ]; type = types.enum [
"nord"
"dracula"
"everforest"
];
default = "nord"; default = "nord";
description = "Global theme palette name."; description = "Global theme palette name.";
}; };
@@ -51,25 +55,47 @@ in
# e.g. Colloid-Dark-Compact-* # e.g. Colloid-Dark-Compact-*
color = mkOption { color = mkOption {
type = types.enum [ "dark" "light" ]; type = types.enum [
"dark"
"light"
];
default = "dark"; default = "dark";
description = "GTK color variant."; description = "GTK color variant.";
}; };
size = mkOption { size = mkOption {
type = types.enum [ "standard" "compact" ]; type = types.enum [
"standard"
"compact"
];
default = "compact"; default = "compact";
description = "GTK size variant."; description = "GTK size variant.";
}; };
accent = mkOption { accent = mkOption {
type = types.enum [ "default" "purple" "pink" "red" "orange" "yellow" "green" "teal" "grey" "all" ]; type = types.enum [
"default"
"purple"
"pink"
"red"
"orange"
"yellow"
"green"
"teal"
"grey"
"all"
];
default = "all"; default = "all";
description = "GTK accent (Colloid themeVariants)."; description = "GTK accent (Colloid themeVariants).";
}; };
tweak = mkOption { tweak = mkOption {
type = types.enum [ "normal" "rimless" "float" "black" ]; type = types.enum [
"normal"
"rimless"
"float"
"black"
];
default = "normal"; default = "normal";
description = "GTK tweak (Colloid tweaks)."; description = "GTK tweak (Colloid tweaks).";
}; };
@@ -84,13 +110,31 @@ in
icons = { icons = {
# Colloid icon scheme usually supports several named schemes. Default follows palette name. # Colloid icon scheme usually supports several named schemes. Default follows palette name.
scheme = mkOption { scheme = mkOption {
type = types.enum [ "default" "nord" "dracula" "gruvbox" "everforest" "catppuccin" ]; type = types.enum [
"default"
"nord"
"dracula"
"gruvbox"
"everforest"
"catppuccin"
];
default = cfg.name; default = cfg.name;
description = "Icon scheme to use (Colloid schemeVariants)."; description = "Icon scheme to use (Colloid schemeVariants).";
}; };
variant = mkOption { variant = mkOption {
type = types.enum [ "default" "purple" "pink" "red" "orange" "yellow" "green" "teal" "grey" "all" ]; type = types.enum [
"default"
"purple"
"pink"
"red"
"orange"
"yellow"
"green"
"teal"
"grey"
"all"
];
default = "all"; default = "all";
description = "Icon variant (Colloid colorVariants)."; description = "Icon variant (Colloid colorVariants).";
}; };
@@ -110,7 +154,10 @@ in
# Pull tokens directly from the palette file for convenience # Pull tokens directly from the palette file for convenience
mjallen.theme.tokens = mkDefault ( mjallen.theme.tokens = mkDefault (
let pal = import cfg.paletteFile; in pal.tokens or { } let
pal = import cfg.paletteFile;
in
pal.tokens or { }
); );
# Expose the imported palette for convenience # Expose the imported palette for convenience
@@ -129,12 +176,16 @@ in
# Computed GTK/Icon theme names if not overridden # Computed GTK/Icon theme names if not overridden
_module.args.mjallenThemeComputed = { _module.args.mjallenThemeComputed = {
gtkTheme = gtkTheme =
if cfg.gtk.themeName != null then cfg.gtk.themeName if cfg.gtk.themeName != null then
else "Colloid-${cap cfg.gtk.color}-${cap cfg.gtk.size}"; cfg.gtk.themeName
else
"Colloid-${cap cfg.gtk.color}-${cap cfg.gtk.size}";
iconTheme = iconTheme =
if cfg.icons.themeName != null then cfg.icons.themeName if cfg.icons.themeName != null then
else "Colloid-${cap cfg.icons.scheme}-${cap cfg.gtk.color}"; cfg.icons.themeName
else
"Colloid-${cap cfg.icons.scheme}-${cap cfg.gtk.color}";
}; };
}; };
} }

View File

@@ -374,7 +374,14 @@ in
scale scale
]; ];
# Append transform only when set, as "transform, <value>" # Append transform only when set, as "transform, <value>"
transformTokens = if m.transform == null then [ ] else [ "transform" m.transform ]; transformTokens =
if m.transform == null then
[ ]
else
[
"transform"
m.transform
];
tokens = parts ++ transformTokens ++ m.extra; tokens = parts ++ transformTokens ++ m.extra;
in in
builtins.concatStringsSep ", " tokens builtins.concatStringsSep ", " tokens

View File

@@ -6,25 +6,29 @@ let
# Back-compat shims for deprecated options # Back-compat shims for deprecated options
rightModules = rightModules =
if builtins.hasAttr "modules-right" cfg && (cfg."modules-right" != [ ]) if builtins.hasAttr "modules-right" cfg && (cfg."modules-right" != [ ]) then
then cfg."modules-right" cfg."modules-right"
else cfg.layout.right; else
cfg.layout.right;
netIf = netIf =
if (cfg ? networkInterface) && (cfg.networkInterface != "wlan0") if (cfg ? networkInterface) && (cfg.networkInterface != "wlan0") then
then cfg.networkInterface cfg.networkInterface
else cfg.network.interface; else
cfg.network.interface;
defaultOpacity = palette.tokens.opacity or "opacity: 0.85;"; defaultOpacity = palette.tokens.opacity or "opacity: 0.85;";
defaultBorderRadius = palette.tokens.borderRadius or "border-radius: 1rem;"; defaultBorderRadius = palette.tokens.borderRadius or "border-radius: 1rem;";
defaultCenterOptions = palette.tokens.centerOptions or '' defaultCenterOptions =
palette.tokens.centerOptions or ''
padding-top: 0.2rem; padding-top: 0.2rem;
padding-bottom: 0.2rem; padding-bottom: 0.2rem;
padding-left: 0.5rem; padding-left: 0.5rem;
padding-right: 0.5rem; padding-right: 0.5rem;
margin: 3px 0; margin: 3px 0;
''; '';
borderRight = palette.tokens.borderRight or '' borderRight =
palette.tokens.borderRight or ''
padding-top: 0.2rem; padding-top: 0.2rem;
padding-bottom: 0.2rem; padding-bottom: 0.2rem;
padding-left: 0.5rem; padding-left: 0.5rem;
@@ -33,7 +37,8 @@ let
border-radius: 0rem 1rem 1rem 0rem; border-radius: 0rem 1rem 1rem 0rem;
margin-right: 0.5rem; margin-right: 0.5rem;
''; '';
borderLeft = palette.tokens.borderLeft or '' borderLeft =
palette.tokens.borderLeft or ''
padding-top: 0.2rem; padding-top: 0.2rem;
padding-bottom: 0.2rem; padding-bottom: 0.2rem;
padding-left: 0.5rem; padding-left: 0.5rem;
@@ -312,11 +317,8 @@ in
enable = true; enable = true;
systemd.enable = true; systemd.enable = true;
settings = settings = ({
( mainBar = (
{
mainBar =
(
(mkMerge [ (mkMerge [
{ {
layer = cfg.layer; layer = cfg.layer;
@@ -587,14 +589,10 @@ in
]) ])
// cfg.extra.settings // cfg.extra.settings
); );
} })
)
// cfg.extraModules; # keep legacy top-level extra modules for compatibility // cfg.extraModules; # keep legacy top-level extra modules for compatibility
style = style = baseStyle + (cfg.extra.style or "") + (cfg.extraModulesStyle or "");
baseStyle
+ (cfg.extra.style or "")
+ (cfg.extraModulesStyle or "");
}; };
}; };
} }

View File

@@ -1,7 +1,16 @@
{ lib, ... }: { lib, ... }:
with lib; with lib;
let let
inherit (types) str int bool listOf attrs path nullOr submodule; inherit (types)
str
int
bool
listOf
attrs
path
nullOr
submodule
;
in in
{ {
options.mjallen.programs.waybar = { options.mjallen.programs.waybar = {
@@ -161,22 +170,50 @@ in
type = submodule { type = submodule {
options = { options = {
tray = mkOption { tray = mkOption {
type = submodule { options = { enable = mkOption { type = bool; default = true; }; }; }; type = submodule {
options = {
enable = mkOption {
type = bool;
default = true;
};
};
};
default = { }; default = { };
}; };
bluetooth = mkOption { bluetooth = mkOption {
type = submodule { options = { enable = mkOption { type = bool; default = true; }; }; }; type = submodule {
options = {
enable = mkOption {
type = bool;
default = true;
};
};
};
default = { }; default = { };
}; };
idleInhibitor = mkOption { idleInhibitor = mkOption {
type = submodule { options = { enable = mkOption { type = bool; default = true; }; }; }; type = submodule {
options = {
enable = mkOption {
type = bool;
default = true;
};
};
};
default = { }; default = { };
}; };
keyboardIndicators = mkOption { keyboardIndicators = mkOption {
type = submodule { options = { enable = mkOption { type = bool; default = true; }; }; }; type = submodule {
options = {
enable = mkOption {
type = bool;
default = true;
};
};
};
default = { }; default = { };
}; };
@@ -184,11 +221,25 @@ in
type = submodule { type = submodule {
options = { options = {
sink = mkOption { sink = mkOption {
type = submodule { options = { enable = mkOption { type = bool; default = true; }; }; }; type = submodule {
options = {
enable = mkOption {
type = bool;
default = true;
};
};
};
default = { }; default = { };
}; };
source = mkOption { source = mkOption {
type = submodule { options = { enable = mkOption { type = bool; default = false; }; }; }; type = submodule {
options = {
enable = mkOption {
type = bool;
default = false;
};
};
};
default = { }; default = { };
}; };
}; };
@@ -197,22 +248,50 @@ in
}; };
weather = mkOption { weather = mkOption {
type = submodule { options = { enable = mkOption { type = bool; default = true; }; }; }; type = submodule {
options = {
enable = mkOption {
type = bool;
default = true;
};
};
};
default = { }; default = { };
}; };
hass = mkOption { hass = mkOption {
type = submodule { options = { enable = mkOption { type = bool; default = false; }; }; }; type = submodule {
options = {
enable = mkOption {
type = bool;
default = false;
};
};
};
default = { }; default = { };
}; };
clock = mkOption { clock = mkOption {
type = submodule { options = { enable = mkOption { type = bool; default = true; }; }; }; type = submodule {
options = {
enable = mkOption {
type = bool;
default = true;
};
};
};
default = { }; default = { };
}; };
battery = mkOption { battery = mkOption {
type = submodule { options = { enable = mkOption { type = bool; default = true; }; }; }; type = submodule {
options = {
enable = mkOption {
type = bool;
default = true;
};
};
};
default = { }; default = { };
}; };
}; };

View File

@@ -1,8 +1,9 @@
{ lib {
, stdenv lib,
, fetchFromGitHub stdenv,
, pciutils fetchFromGitHub,
, bash pciutils,
bash,
}: }:
stdenv.mkDerivation { stdenv.mkDerivation {
@@ -36,7 +37,7 @@ stdenv.mkDerivation {
homepage = "https://github.com/ryanrudolfoba/SteamDeck-BIOS-Manager"; homepage = "https://github.com/ryanrudolfoba/SteamDeck-BIOS-Manager";
license = licenses.agpl3Only; license = licenses.agpl3Only;
platforms = platforms.linux; platforms = platforms.linux;
maintainers = []; maintainers = [ ];
sourceProvenance = with sourceTypes; [ ]; sourceProvenance = with sourceTypes; [ ];
}; };
} }

View File

@@ -1,4 +1,4 @@
{ lib, pkgs, ... }: { pkgs, ... }:
let let
kernel = pkgs.linuxPackages_cachyos; kernel = pkgs.linuxPackages_cachyos;
in in

View File

@@ -1,6 +1,12 @@
{ config, lib, pkgs, ... }:
{ {
services.greetd.settings.default_session.command = lib.mkForce ''${lib.getExe' pkgs.coreutils "env"} XCURSOR_THEME="''${XCURSOR_THEME:-Pop}" ${lib.getExe' config.services.displayManager.cosmic-greeter.package "cosmic-greeter-start"}''; config,
lib,
pkgs,
...
}:
{
services.greetd.settings.default_session.command =
lib.mkForce ''${lib.getExe' pkgs.coreutils "env"} XCURSOR_THEME="''${XCURSOR_THEME:-Pop}" ${lib.getExe' config.services.displayManager.cosmic-greeter.package "cosmic-greeter-start"}'';
services.greetd.settings.default_session.user = lib.mkForce "cosmic-greeter"; services.greetd.settings.default_session.user = lib.mkForce "cosmic-greeter";
jovian = { jovian = {
steam = { steam = {