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 =
len = builtins.stringLength s; s:
in let
(lib.toUpper (builtins.substring 0 1 s)) len = builtins.stringLength s;
+ (builtins.substring 1 (len - 1) s); in
(lib.toUpper (builtins.substring 0 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

@@ -11,11 +11,11 @@ rec {
textMuted = "#e2e2dc"; textMuted = "#e2e2dc";
primary = "#6272a4"; # dark blue primary = "#6272a4"; # dark blue
info = "#8be9fd"; # cyan info = "#8be9fd"; # cyan
accent = "#bd93f9"; # purple accent = "#bd93f9"; # purple
success = "#50fa7b"; # green success = "#50fa7b"; # green
warning = "#f1fa8c"; # yellow warning = "#f1fa8c"; # yellow
danger = "#ff5555"; # red danger = "#ff5555"; # red
}; };
# Shared styling tokens for CSS consumers # Shared styling tokens for CSS consumers

View File

@@ -11,11 +11,11 @@ rec {
textMuted = "#9da9a0"; textMuted = "#9da9a0";
primary = "#7fbbb3"; # blue/aqua primary = "#7fbbb3"; # blue/aqua
info = "#83c092"; # teal info = "#83c092"; # teal
accent = "#d699b6"; # magenta accent = "#d699b6"; # magenta
success = "#a7c080"; # green success = "#a7c080"; # green
warning = "#dbbc7f"; # yellow warning = "#dbbc7f"; # yellow
danger = "#e67e80"; # red danger = "#e67e80"; # red
}; };
# Shared styling tokens for CSS consumers # Shared styling tokens for CSS consumers

View File

@@ -11,11 +11,11 @@ rec {
textMuted = "#e5e9f0"; textMuted = "#e5e9f0";
primary = "#5e81ac"; # blue primary = "#5e81ac"; # blue
info = "#88c0d0"; # cyan/teal info = "#88c0d0"; # cyan/teal
accent = "#b48ead"; # purple accent = "#b48ead"; # purple
success = "#a3be8c"; # green success = "#a3be8c"; # green
warning = "#ebcb8b"; # yellow warning = "#ebcb8b"; # yellow
danger = "#bf616a"; # red danger = "#bf616a"; # red
}; };
# Shared styling tokens for CSS consumers # Shared styling tokens for CSS consumers

View File

@@ -374,10 +374,17 @@ 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
) cfg.monitorv2; ) cfg.monitorv2;
render = { render = {

View File

@@ -6,42 +6,47 @@ 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 =
padding-top: 0.2rem; palette.tokens.centerOptions or ''
padding-bottom: 0.2rem; padding-top: 0.2rem;
padding-left: 0.5rem; padding-bottom: 0.2rem;
padding-right: 0.5rem; padding-left: 0.5rem;
margin: 3px 0; padding-right: 0.5rem;
''; margin: 3px 0;
borderRight = palette.tokens.borderRight or '' '';
padding-top: 0.2rem; borderRight =
padding-bottom: 0.2rem; palette.tokens.borderRight or ''
padding-left: 0.5rem; padding-top: 0.2rem;
padding-right: 0.5rem; padding-bottom: 0.2rem;
margin: 3px 0; padding-left: 0.5rem;
border-radius: 0rem 1rem 1rem 0rem; padding-right: 0.5rem;
margin-right: 0.5rem; margin: 3px 0;
''; border-radius: 0rem 1rem 1rem 0rem;
borderLeft = palette.tokens.borderLeft or '' margin-right: 0.5rem;
padding-top: 0.2rem; '';
padding-bottom: 0.2rem; borderLeft =
padding-left: 0.5rem; palette.tokens.borderLeft or ''
padding-right: 0.5rem; padding-top: 0.2rem;
margin: 3px 0; padding-bottom: 0.2rem;
border-radius: 1rem 0rem 0rem 1rem; padding-left: 0.5rem;
margin-left: 0.5rem; padding-right: 0.5rem;
''; margin: 3px 0;
border-radius: 1rem 0rem 0rem 1rem;
margin-left: 0.5rem;
'';
baseStyle = baseStyle =
if cfg.style.file != null then if cfg.style.file != null then
@@ -312,289 +317,282 @@ in
enable = true; enable = true;
systemd.enable = true; systemd.enable = true;
settings = settings = ({
( mainBar = (
{ (mkMerge [
mainBar = {
( layer = cfg.layer;
(mkMerge [ position = "top";
{ mod = "dock";
layer = cfg.layer; exclusive = true;
position = "top"; passthrough = false;
mod = "dock"; gtk-layer-shell = true;
exclusive = true; height = 0;
passthrough = false;
gtk-layer-shell = true;
height = 0;
# Module Layout # Module Layout
modules-left = cfg.layout.left; modules-left = cfg.layout.left;
modules-center = cfg.layout.center; modules-center = cfg.layout.center;
modules-right = rightModules; modules-right = rightModules;
# Base module definitions always present unless individually gated # Base module definitions always present unless individually gated
"hyprland/workspaces" = { "hyprland/workspaces" = {
disable-scroll = true; disable-scroll = true;
all-outputs = true; all-outputs = true;
on-click = "activate"; on-click = "activate";
persistent_workspaces = { persistent_workspaces = {
"*" = 1; "*" = 1;
}; };
}; };
"hyprland/window" = { "hyprland/window" = {
separate-outputs = true; separate-outputs = true;
format = { }; format = { };
}; };
temperature = { temperature = {
hwmon-path = cfg.temperature.cpu.hwmonPath; hwmon-path = cfg.temperature.cpu.hwmonPath;
critical-threshold = 110; critical-threshold = 110;
format-critical = "{temperatureC}°C "; format-critical = "{temperatureC}°C ";
format = "{temperatureC}°C {icon}"; format = "{temperatureC}°C {icon}";
format-icons = [ format-icons = [
"" ""
"" ""
"" ""
"" ""
"" ""
]; ];
tooltip-format = "CPU: {temperatureC}°C"; tooltip-format = "CPU: {temperatureC}°C";
}; };
network = { network = {
interface = netIf; interface = netIf;
on-click = "nm-connection-editor"; on-click = "nm-connection-editor";
format = "{icon}"; format = "{icon}";
tooltip-format = "{ifname} via {gwaddr} 󰊗"; tooltip-format = "{ifname} via {gwaddr} 󰊗";
tooltip-format-wifi = '' tooltip-format-wifi = ''
{essid} ({signalStrength}%) {icon} {essid} ({signalStrength}%) {icon}
{bandwidthDownBits} {bandwidthUpBits} {bandwidthDownBits} {bandwidthUpBits}
''; '';
tooltip-format-ethernet = "{ifname} "; tooltip-format-ethernet = "{ifname} ";
tooltip-format-disconnected = "Disconnected"; tooltip-format-disconnected = "Disconnected";
max-length = 50; max-length = 50;
format-icons = { format-icons = {
wifi = [ wifi = [
"󰤯" "󰤯"
"󰤟" "󰤟"
"󰤢" "󰤢"
"󰤥" "󰤥"
"󰤨" "󰤨"
]; ];
ethernet = "󰈀"; ethernet = "󰈀";
linked = "󰤫"; linked = "󰤫";
disconnected = "󰤫"; disconnected = "󰤫";
}; };
}; };
"custom/left-end" = { "custom/left-end" = {
format = "&nbsp"; format = "&nbsp";
tooltip = false; tooltip = false;
}; };
"custom/right-end" = { "custom/right-end" = {
format = "&nbsp"; format = "&nbsp";
tooltip = false; tooltip = false;
}; };
} }
(mkIf cfg.features.tray.enable { (mkIf cfg.features.tray.enable {
tray = { tray = {
icon-size = 16; icon-size = 16;
spacing = 10; spacing = 10;
}; };
}) })
(mkIf cfg.features.keyboardIndicators.enable { (mkIf cfg.features.keyboardIndicators.enable {
"keyboard-state#capslock" = { "keyboard-state#capslock" = {
capslock = true; capslock = true;
format = "{icon}"; format = "{icon}";
tooltip-format = "Caps Lock {state}"; tooltip-format = "Caps Lock {state}";
format-icons = { format-icons = {
locked = "󰬶"; locked = "󰬶";
unlocked = "󰬵"; unlocked = "󰬵";
}; };
}; };
"keyboard-state#numlock" = { "keyboard-state#numlock" = {
numlock = true; numlock = true;
format = "{icon}"; format = "{icon}";
tooltip-format = "Num Lock {state}"; tooltip-format = "Num Lock {state}";
format-icons = { format-icons = {
locked = "󰎠"; locked = "󰎠";
unlocked = "󱧓"; unlocked = "󱧓";
}; };
}; };
}) })
(mkIf cfg.features.audio.sink.enable { (mkIf cfg.features.audio.sink.enable {
"wireplumber#sink" = { "wireplumber#sink" = {
format = "{icon} {volume}%"; format = "{icon} {volume}%";
tooltip = false; tooltip = false;
format-muted = "{icon} Muted"; format-muted = "{icon} Muted";
on-click = "wpctl set-mute @DEFAULT_SINK@ toggle"; on-click = "wpctl set-mute @DEFAULT_SINK@ toggle";
on-click-right = "pavucontrol -t 1"; on-click-right = "pavucontrol -t 1";
on-scroll-up = "wpctl set-volume @DEFAULT_SINK@ 5%+"; on-scroll-up = "wpctl set-volume @DEFAULT_SINK@ 5%+";
on-scroll-down = "wpctl set-volume @DEFAULT_SINK@ 5%-"; on-scroll-down = "wpctl set-volume @DEFAULT_SINK@ 5%-";
scroll-step = 5; scroll-step = 5;
format-icons = { format-icons = {
headphone = "󰋋"; headphone = "󰋋";
headphone-muted = "󰟎"; headphone-muted = "󰟎";
hands-free = "󰋋"; hands-free = "󰋋";
headset = "󰋋"; headset = "󰋋";
phone = ""; phone = "";
portable = "󰋋"; portable = "󰋋";
car = ""; car = "";
default = [ default = [
"" ""
"" ""
"" ""
"" ""
]; ];
}; };
}; };
}) })
(mkIf cfg.features.audio.source.enable { (mkIf cfg.features.audio.source.enable {
"wireplumber#source" = { "wireplumber#source" = {
node-type = "Audio/Source"; node-type = "Audio/Source";
format = ""; format = "";
format-muted = ""; format-muted = "";
tooltip = false; tooltip = false;
on-click = "wpctl set-mute @DEFAULT_SOURCE@ toggle"; on-click = "wpctl set-mute @DEFAULT_SOURCE@ toggle";
on-click-right = "pavucontrol -t 2"; on-click-right = "pavucontrol -t 2";
on-scroll-up = "wpctl set-volume @DEFAULT_SOURCE@ 5%+"; on-scroll-up = "wpctl set-volume @DEFAULT_SOURCE@ 5%+";
on-scroll-down = "wpctl set-volume @DEFAULT_SOURCE@ 5%-"; on-scroll-down = "wpctl set-volume @DEFAULT_SOURCE@ 5%-";
scroll-step = 5; scroll-step = 5;
}; };
}) })
(mkIf cfg.features.bluetooth.enable { (mkIf cfg.features.bluetooth.enable {
bluetooth = { bluetooth = {
on-click = "overskride"; on-click = "overskride";
tooltip = true; tooltip = true;
format = "{icon}"; format = "{icon}";
tooltip-format = "{status}"; tooltip-format = "{status}";
tooltip-format-disabled = "{status}"; tooltip-format-disabled = "{status}";
tooltip-format-off = "{status}"; tooltip-format-off = "{status}";
tooltip-format-on = "{status}"; tooltip-format-on = "{status}";
tooltip-format-connected = "{status}"; tooltip-format-connected = "{status}";
tooltip-format-enumerate-connected = { }; tooltip-format-enumerate-connected = { };
format-icons = { format-icons = {
disabled = "󰂲"; disabled = "󰂲";
off = "󰂲"; off = "󰂲";
on = "󰂯"; on = "󰂯";
connected = "󰂱"; connected = "󰂱";
}; };
}; };
}) })
(mkIf cfg.features.idleInhibitor.enable { (mkIf cfg.features.idleInhibitor.enable {
idle_inhibitor = { idle_inhibitor = {
format = "{icon}"; format = "{icon}";
format-icons = { format-icons = {
activated = "󰐂"; activated = "󰐂";
deactivated = "󱩜"; deactivated = "󱩜";
}; };
}; };
}) })
(mkIf cfg.features.clock.enable { (mkIf cfg.features.clock.enable {
clock = { clock = {
format = "{:%I:%M %p}"; format = "{:%I:%M %p}";
tooltip-format = "<tt><small>{calendar}</small></tt>"; tooltip-format = "<tt><small>{calendar}</small></tt>";
calendar = { calendar = {
mode = "month"; mode = "month";
format = { format = {
months = "<span color='${palette.colors.primary}'><b>{}</b></span>"; months = "<span color='${palette.colors.primary}'><b>{}</b></span>";
days = "<span color='${palette.colors.primary}'><b>{}</b></span>"; days = "<span color='${palette.colors.primary}'><b>{}</b></span>";
weekdays = "<span color='${palette.colors.info}'><b>{}</b></span>"; weekdays = "<span color='${palette.colors.info}'><b>{}</b></span>";
today = "<span color='${palette.colors.success}'><b><u>{}</u></b></span>"; today = "<span color='${palette.colors.success}'><b><u>{}</u></b></span>";
}; };
}; };
}; };
}) })
(mkIf cfg.features.battery.enable { (mkIf cfg.features.battery.enable {
battery = { battery = {
interval = 60; interval = 60;
states = { states = {
warning = 30; warning = 30;
critical = 15; critical = 15;
}; };
format = "{capacity}% {icon}"; format = "{capacity}% {icon}";
format-icons = { format-icons = {
default = [ default = [
"󰂃" "󰂃"
"󰁺" "󰁺"
"󰁻" "󰁻"
"󰁼" "󰁼"
"󰁽" "󰁽"
"󰁾" "󰁾"
"󰁿" "󰁿"
"󰂀" "󰂀"
"󰂁" "󰂁"
"󰂂" "󰂂"
"󰁹" "󰁹"
]; ];
charging = [ charging = [
"󰢟" "󰢟"
"󰢜" "󰢜"
"󰂆" "󰂆"
"󰂇" "󰂇"
"󰂈" "󰂈"
"󰢝" "󰢝"
"󰂉" "󰂉"
"󰢞" "󰢞"
"󰂊" "󰂊"
"󰂋" "󰂋"
"󰂅" "󰂅"
]; ];
}; };
max-length = 25; max-length = 25;
}; };
}) })
(mkIf cfg.temperature.gpu.enable { (mkIf cfg.temperature.gpu.enable {
"temperature#gpu" = { "temperature#gpu" = {
hwmon-path = cfg.temperature.gpu.hwmonPath; hwmon-path = cfg.temperature.gpu.hwmonPath;
critical-threshold = 110; critical-threshold = 110;
format-critical = "{temperatureC}°C "; format-critical = "{temperatureC}°C ";
format = "{temperatureC}°C {icon}"; format = "{temperatureC}°C {icon}";
format-icons = [ format-icons = [
"" ""
"" ""
"" ""
"" ""
"" ""
]; ];
on-click = "lact"; on-click = "lact";
tooltip-format = "GPU: {temperatureC}°C"; tooltip-format = "GPU: {temperatureC}°C";
}; };
}) })
(mkIf cfg.features.weather.enable { (mkIf cfg.features.weather.enable {
"custom/weather" = { "custom/weather" = {
tooltip = true; tooltip = true;
format = { }; format = { };
interval = 30; interval = 30;
exec = "waybar-weather"; exec = "waybar-weather";
return-type = "json"; return-type = "json";
markup = "pango"; markup = "pango";
}; };
}) })
]) ])
// 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 = {