mirror of
https://github.com/nix-community/home-manager
synced 2024-11-23 05:03:09 +00:00
mangohud: add module
This commit is contained in:
parent
666eee4f72
commit
fb50102daf
9 changed files with 174 additions and 1 deletions
5
.github/CODEOWNERS
vendored
5
.github/CODEOWNERS
vendored
|
@ -104,6 +104,9 @@
|
||||||
|
|
||||||
/modules/programs/matplotlib.nix @rprospero
|
/modules/programs/matplotlib.nix @rprospero
|
||||||
|
|
||||||
|
/modules/programs/mangohud.nix @ZerataX
|
||||||
|
/tests/modules/programs/mangohud @ZerataX
|
||||||
|
|
||||||
/modules/programs/mbsync.nix @KarlJoad
|
/modules/programs/mbsync.nix @KarlJoad
|
||||||
/tests/modules/programs/mbsync @KarlJoad
|
/tests/modules/programs/mbsync @KarlJoad
|
||||||
|
|
||||||
|
@ -315,4 +318,4 @@
|
||||||
|
|
||||||
/modules/xresources.nix @rycee
|
/modules/xresources.nix @rycee
|
||||||
|
|
||||||
/modules/xsession.nix @rycee
|
/modules/xsession.nix @rycee
|
||||||
|
|
|
@ -2077,6 +2077,13 @@ in
|
||||||
A new module is available: 'services.pantalaimon'.
|
A new module is available: 'services.pantalaimon'.
|
||||||
'';
|
'';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
time = "2021-06-12T05:00:22+00:00";
|
||||||
|
message = ''
|
||||||
|
A new module is available: 'programs.mangohud'.
|
||||||
|
'';
|
||||||
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -93,6 +93,7 @@ let
|
||||||
(loadModule ./programs/lf.nix { })
|
(loadModule ./programs/lf.nix { })
|
||||||
(loadModule ./programs/lsd.nix { })
|
(loadModule ./programs/lsd.nix { })
|
||||||
(loadModule ./programs/man.nix { })
|
(loadModule ./programs/man.nix { })
|
||||||
|
(loadModule ./programs/mangohud.nix { condition = hostPlatform.isLinux; })
|
||||||
(loadModule ./programs/matplotlib.nix { })
|
(loadModule ./programs/matplotlib.nix { })
|
||||||
(loadModule ./programs/mbsync.nix { })
|
(loadModule ./programs/mbsync.nix { })
|
||||||
(loadModule ./programs/mcfly.nix { })
|
(loadModule ./programs/mcfly.nix { })
|
||||||
|
|
105
modules/programs/mangohud.nix
Normal file
105
modules/programs/mangohud.nix
Normal file
|
@ -0,0 +1,105 @@
|
||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
with lib;
|
||||||
|
|
||||||
|
let
|
||||||
|
cfg = config.programs.mangohud;
|
||||||
|
|
||||||
|
settingsType = with types;
|
||||||
|
(oneOf [ bool int float str path (listOf (oneOf [ int str ])) ]);
|
||||||
|
|
||||||
|
renderOption = option:
|
||||||
|
rec {
|
||||||
|
int = toString option;
|
||||||
|
float = int;
|
||||||
|
path = int;
|
||||||
|
bool = "false";
|
||||||
|
string = option;
|
||||||
|
list = concatStringsSep "," (lists.forEach option (x: toString x));
|
||||||
|
}.${builtins.typeOf option};
|
||||||
|
|
||||||
|
renderLine = k: v: (if isBool v && v then k else "${k}=${renderOption v}");
|
||||||
|
renderSettings = attrs:
|
||||||
|
strings.concatStringsSep "\n" (attrsets.mapAttrsToList renderLine attrs)
|
||||||
|
+ "\n";
|
||||||
|
|
||||||
|
in {
|
||||||
|
options = {
|
||||||
|
programs.mangohud = {
|
||||||
|
enable = mkEnableOption "Mangohud";
|
||||||
|
|
||||||
|
package = mkOption {
|
||||||
|
type = types.package;
|
||||||
|
default = pkgs.mangohud;
|
||||||
|
defaultText = literalExample "pkgs.mangohud";
|
||||||
|
description = "The Mangohud package to install.";
|
||||||
|
};
|
||||||
|
|
||||||
|
enableSessionWide = mkOption {
|
||||||
|
type = types.bool;
|
||||||
|
default = false;
|
||||||
|
description = ''
|
||||||
|
Sets environment variables so that
|
||||||
|
MangoHud is started on any application that supports it.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
settings = mkOption {
|
||||||
|
type = with types; attrsOf settingsType;
|
||||||
|
default = { };
|
||||||
|
example = literalExample ''
|
||||||
|
{
|
||||||
|
output_folder = ~/Documents/mangohud/;
|
||||||
|
full = true;
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
description = ''
|
||||||
|
Configuration written to
|
||||||
|
<filename>~/.config/MangoHud/MangoHud.conf</filename>. See
|
||||||
|
<link xlink:href="https://github.com/flightlessmango/MangoHud/blob/master/bin/MangoHud.conf"/>
|
||||||
|
for the default configuration.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
settingsPerApplication = mkOption {
|
||||||
|
type = with types; attrsOf (attrsOf settingsType);
|
||||||
|
default = { };
|
||||||
|
example = literalExample ''
|
||||||
|
{
|
||||||
|
mpv = {
|
||||||
|
no_display = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
description = ''
|
||||||
|
Sets MangoHud settings per application.
|
||||||
|
Configuration written to
|
||||||
|
<filename>~/.config/MangoHud/{application_name}.conf</filename>. See
|
||||||
|
<link xlink:href="https://github.com/flightlessmango/MangoHud/blob/master/bin/MangoHud.conf"/>
|
||||||
|
for the default configuration.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable (mkMerge [
|
||||||
|
{
|
||||||
|
home.packages = [ cfg.package ];
|
||||||
|
|
||||||
|
home.sessionVariables = mkIf cfg.enableSessionWide {
|
||||||
|
MANGOHUD = 1;
|
||||||
|
MANGOHUD_DLSYM = 1;
|
||||||
|
};
|
||||||
|
|
||||||
|
xdg.configFile."MangoHud/MangoHud.conf" =
|
||||||
|
mkIf (cfg.settings != { }) { text = renderSettings cfg.settings; };
|
||||||
|
}
|
||||||
|
{
|
||||||
|
xdg.configFile = mapAttrs'
|
||||||
|
(n: v: nameValuePair "MangoHud/${n}.conf" { text = renderSettings v; })
|
||||||
|
cfg.settingsPerApplication;
|
||||||
|
}
|
||||||
|
]);
|
||||||
|
|
||||||
|
meta.maintainers = with maintainers; [ zeratax ];
|
||||||
|
}
|
|
@ -101,6 +101,7 @@ import nmt {
|
||||||
./modules/programs/foot
|
./modules/programs/foot
|
||||||
./modules/programs/getmail
|
./modules/programs/getmail
|
||||||
./modules/programs/i3status-rust
|
./modules/programs/i3status-rust
|
||||||
|
./modules/programs/mangohud
|
||||||
./modules/programs/ncmpcpp-linux
|
./modules/programs/ncmpcpp-linux
|
||||||
./modules/programs/neovim # Broken package dependency on Darwin.
|
./modules/programs/neovim # Broken package dependency on Darwin.
|
||||||
./modules/programs/rbw
|
./modules/programs/rbw
|
||||||
|
|
|
@ -0,0 +1,2 @@
|
||||||
|
no_display
|
||||||
|
output_folder=/home/user/Documents/mpv-mangohud
|
13
tests/modules/programs/mangohud/basic-configuration.conf
Normal file
13
tests/modules/programs/mangohud/basic-configuration.conf
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
cpu_load_change
|
||||||
|
cpu_load_value
|
||||||
|
cpu_mhz
|
||||||
|
cpu_power
|
||||||
|
cpu_stats
|
||||||
|
cpu_temp
|
||||||
|
cpu_text=CPU
|
||||||
|
fps_limit=30,60
|
||||||
|
legacy_layout=false
|
||||||
|
media_player_name=spotify
|
||||||
|
media_player_order=title,artist,album
|
||||||
|
output_folder=/home/user/Documents/mangohud
|
||||||
|
vsync=0
|
40
tests/modules/programs/mangohud/basic-configuration.nix
Normal file
40
tests/modules/programs/mangohud/basic-configuration.nix
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
{ config, pkgs, ... }:
|
||||||
|
|
||||||
|
{
|
||||||
|
config = {
|
||||||
|
programs.mangohud = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.writeScriptBin "dummy-mangohud" "";
|
||||||
|
settings = {
|
||||||
|
output_folder = /home/user/Documents/mangohud;
|
||||||
|
fps_limit = [ 30 60 ];
|
||||||
|
vsync = 0;
|
||||||
|
legacy_layout = false;
|
||||||
|
cpu_stats = true;
|
||||||
|
cpu_temp = true;
|
||||||
|
cpu_power = true;
|
||||||
|
cpu_text = "CPU";
|
||||||
|
cpu_mhz = true;
|
||||||
|
cpu_load_change = true;
|
||||||
|
cpu_load_value = true;
|
||||||
|
media_player_name = "spotify";
|
||||||
|
media_player_order = [ "title" "artist" "album" ];
|
||||||
|
};
|
||||||
|
settingsPerApplication = {
|
||||||
|
mpv = {
|
||||||
|
output_folder = /home/user/Documents/mpv-mangohud;
|
||||||
|
no_display = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
nmt.script = ''
|
||||||
|
assertFileExists home-files/.config/MangoHud/MangoHud.conf
|
||||||
|
assertFileContent home-files/.config/MangoHud/MangoHud.conf \
|
||||||
|
${./basic-configuration.conf}
|
||||||
|
assertFileExists home-files/.config/MangoHud/mpv.conf
|
||||||
|
assertFileContent home-files/.config/MangoHud/mpv.conf \
|
||||||
|
${./basic-configuration-mpv.conf}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
1
tests/modules/programs/mangohud/default.nix
Normal file
1
tests/modules/programs/mangohud/default.nix
Normal file
|
@ -0,0 +1 @@
|
||||||
|
{ mangohud-basic-configuration = ./basic-configuration.nix; }
|
Loading…
Reference in a new issue