mirror of
https://github.com/nix-community/home-manager.git
synced 2026-06-05 21:02:51 +00:00
`literalExpression` is intended just to signify code that needs to stay a string that gets represented exactly as-is for docs. It has been misused heavily and people get confused repeatedly on when or not to use it because of the rampant misuse.
102 lines
2.5 KiB
Nix
102 lines
2.5 KiB
Nix
{
|
|
config,
|
|
lib,
|
|
pkgs,
|
|
...
|
|
}:
|
|
|
|
let
|
|
inherit (lib)
|
|
mkEnableOption
|
|
mkPackageOption
|
|
mkOption
|
|
mkIf
|
|
;
|
|
cfg = config.services.syshud;
|
|
|
|
iniFormat = pkgs.formats.ini { };
|
|
in
|
|
{
|
|
meta.maintainers = [ lib.maintainers.yarn ];
|
|
|
|
options.services.syshud = {
|
|
enable = mkEnableOption "syshud";
|
|
|
|
package = mkPackageOption pkgs "syshud" { };
|
|
|
|
settings = mkOption {
|
|
type = iniFormat.type.nestedTypes.elemType;
|
|
default = { };
|
|
example = {
|
|
position = "bottom";
|
|
orientation = "h";
|
|
width = 300;
|
|
height = 50;
|
|
icon-size = 26;
|
|
show-percentage = true;
|
|
margins = "0 0 0 0";
|
|
timeout = 3;
|
|
transition-time = 250;
|
|
listeners = "audio_in,audio_out,backlight";
|
|
backlight-path = "/sys/class/backlight/gmux_backlight";
|
|
keyboard-path = "/dev/input/eventXX";
|
|
};
|
|
description = ''
|
|
Configuration for syshud.
|
|
All available options can be found here:
|
|
<https://github.com/System64fumo/syshud?tab=readme-ov-file#configuration>
|
|
'';
|
|
};
|
|
|
|
style = mkOption {
|
|
type = lib.types.nullOr (lib.types.either lib.types.path lib.types.lines);
|
|
default = null;
|
|
description = ''
|
|
Custom CSS style for syshud.
|
|
If the value is set to a path literal, then the path will be used as the css file.
|
|
Default style is available here:
|
|
<https://github.com/System64fumo/syshud/blob/main/style.css>
|
|
'';
|
|
};
|
|
};
|
|
|
|
config = mkIf cfg.enable {
|
|
assertions = [
|
|
(lib.hm.assertions.assertPlatform "services.syshud" pkgs lib.platforms.linux)
|
|
];
|
|
|
|
home.packages = [ cfg.package ];
|
|
|
|
systemd.user.services.syshud = {
|
|
Install = {
|
|
WantedBy = [ config.wayland.systemd.target ];
|
|
};
|
|
|
|
Unit = {
|
|
ConditionEnvironment = "WAYLAND_DISPLAY";
|
|
Description = "syshud";
|
|
After = [ config.wayland.systemd.target ];
|
|
PartOf = [ config.wayland.systemd.target ];
|
|
};
|
|
|
|
Service = {
|
|
ExecStart = lib.getExe cfg.package;
|
|
Restart = "always";
|
|
RestartSec = 10;
|
|
};
|
|
};
|
|
|
|
xdg.configFile."sys64/hud/config.conf" = mkIf (cfg.settings != { }) {
|
|
source = iniFormat.generate "config.conf" { main = cfg.settings; };
|
|
};
|
|
|
|
xdg.configFile."sys64/hud/style.css" = mkIf (cfg.style != null) {
|
|
source =
|
|
if builtins.isPath cfg.style || lib.isStorePath cfg.style then
|
|
cfg.style
|
|
else
|
|
pkgs.writeText "sys64/hud/style.css" cfg.style;
|
|
};
|
|
};
|
|
}
|