tofi: add module

This commit is contained in:
Henri Sota 2024-04-16 22:44:55 +02:00 committed by Robert Helgesson
parent f3506ba86c
commit 8ff7bb3f4d
No known key found for this signature in database
GPG key ID: 96E745BD17AA17ED
8 changed files with 120 additions and 0 deletions

View file

@ -77,6 +77,12 @@
githubId = 32838899;
name = "Daniel Wagenknecht";
};
henrisota = {
email = "henrisota@users.noreply.github.com";
github = "henrisota";
githubId = "56848082";
name = "Henri Sota";
};
jack5079 = {
name = "Jack W.";
email = "nix@jack.cab";

View file

@ -1483,6 +1483,14 @@ in {
A new module is available: 'programs.fd'.
'';
}
{
time = "2024-04-19T09:23:52+00:00";
condition = hostPlatform.isLinux;
message = ''
A new module is available: 'programs.tofi'.
'';
}
];
};
}

View file

@ -228,6 +228,7 @@ let
./programs/tiny.nix
./programs/tmate.nix
./programs/tmux.nix
./programs/tofi.nix
./programs/topgrade.nix
./programs/translate-shell.nix
./programs/urxvt.nix

63
modules/programs/tofi.nix Normal file
View file

@ -0,0 +1,63 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.programs.tofi;
in {
meta.maintainers = [ hm.maintainers.henrisota ];
options.programs.tofi = {
enable = mkEnableOption "Tofi, a tiny dynamic menu for Wayland";
package = mkPackageOption pkgs "tofi" { };
settings = mkOption {
type = with types;
let primitive = either (either str int) bool;
in attrsOf primitive;
default = { };
example = literalExpression ''
{
background-color = "#000000";
border-width = 0;
font = "monospace";
height = "100%";
num-results = 5;
outline-width = 0;
padding-left = "35%";
padding-top = "35%";
result-spacing = 25;
width = "100%";
}
'';
description = ''
Settings to be written to the Tofi configuration file.
See <https://github.com/philj56/tofi/blob/master/doc/config>
for the full list of options.
'';
};
};
config = mkIf cfg.enable {
assertions =
[ (hm.assertions.assertPlatform "programs.tofi" pkgs platforms.linux) ];
home.packages = [ cfg.package ];
xdg.configFile."tofi/config" = mkIf (cfg.settings != { }) {
text = let
renderedSettings = generators.toINIWithGlobalSection { } {
globalSection = cfg.settings;
};
in removeSuffix "\n\n" ''
# Generated by Home Manager.
${renderedSettings}
'';
};
};
}

View file

@ -207,6 +207,7 @@ in import nmtSrc {
./modules/programs/swayr
./modules/programs/terminator
./modules/programs/thunderbird
./modules/programs/tofi
./modules/programs/waybar
./modules/programs/wlogout
./modules/programs/wofi

View file

@ -0,0 +1,12 @@
# Generated by Home Manager.
background-color=#000000
border-width=0
font=monospace
height=100%
num-results=5
outline-width=0
padding-left=35%
padding-top=35%
result-spacing=25
width=100%

View file

@ -0,0 +1,28 @@
{ config, pkgs, ... }: {
config = {
programs.tofi = {
enable = true;
package = pkgs.tofi;
settings = {
background-color = "#000000";
border-width = 0;
font = "monospace";
height = "100%";
num-results = 5;
outline-width = 0;
padding-left = "35%";
padding-top = "35%";
result-spacing = 25;
width = "100%";
};
};
test.stubs.tofi = { };
nmt.script = ''
assertFileExists home-files/.config/tofi/config
assertFileContent home-files/.config/tofi/config \
${./basic-configuration.conf}
'';
};
}

View file

@ -0,0 +1 @@
{ tofi-basic-configuration = ./basic-configuration.nix; }