1
0
Fork 0
mirror of https://github.com/nix-community/home-manager.git synced 2025-03-06 16:57:03 +00:00

swayimg: add module (#6506)

This commit is contained in:
David Thievon 2025-02-21 19:15:02 +01:00 committed by GitHub
parent 1a78a4c7fe
commit bdf73272a8
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
8 changed files with 110 additions and 0 deletions

View file

@ -2062,6 +2062,18 @@ in {
See https://github.com/mateusauler/git-worktree-switcher for more.
'';
}
{
time = "2025-02-20T18:39:31+00:00";
condition = hostPlatform.isLinux;
message = ''
A new module is available: 'programs.swayimg'.
swayimg is a fully customizable and lightweight image viewer for
Wayland based display servers.
See https://github.com/artemsen/swayimg for more.
'';
}
];
};
}

View file

@ -237,6 +237,7 @@ let
./programs/sqls.nix
./programs/ssh.nix
./programs/starship.nix
./programs/swayimg.nix
./programs/swaylock.nix
./programs/swayr.nix
./programs/taskwarrior.nix

View file

@ -0,0 +1,53 @@
{ config, lib, pkgs, ... }:
let
cfg = config.programs.swayimg;
iniFormat = pkgs.formats.ini { };
in {
meta.maintainers = with lib.maintainers; [ dod-101 ];
options.programs.swayimg = {
enable = lib.mkEnableOption "swayimg";
package = lib.mkOption {
type = lib.types.package;
default = pkgs.swayimg;
defaultText = lib.literalExpression "pkgs.swayimg";
description = "The swayimg package to install";
};
settings = lib.mkOption {
type = iniFormat.type;
default = { };
description = ''
Configuration written to
{file}`$XDG_CONFIG_HOME/swayimg/config`. See <https://github.com/artemsen/swayimg/blob/master/extra/swayimgrc> for a list of available options.
'';
example = lib.literalExpression ''
{
viewer = {
window = "#10000010";
scale = "fill";
};
"info.viewer" = {
top_left = "+name,+format";
};
"keys.viewer" = {
"Shift+r" = "rand_file";
};
}
'';
};
};
config = lib.mkIf cfg.enable {
assertions = [
(lib.hm.assertions.assertPlatform "programs.swayimg" pkgs
lib.platforms.linux)
];
home.packages = [ cfg.package ];
xdg.configFile."swayimg/config" = lib.mkIf (cfg.settings != { }) {
source = iniFormat.generate "config" cfg.settings;
};
};
}

View file

@ -307,6 +307,7 @@ in import nmtSrc {
./modules/programs/rbw
./modules/programs/rofi
./modules/programs/rofi-pass
./modules/programs/swayimg
./modules/programs/swaylock
./modules/programs/swayr
./modules/programs/terminator

View file

@ -0,0 +1,4 @@
{
swayimg-empty-settings = ./empty-settings.nix;
swayimg-example-settings = ./example-settings.nix;
}

View file

@ -0,0 +1,7 @@
{
programs.swayimg.enable = true;
nmt.script = ''
assertPathNotExists home-files/.config/swayimg
'';
}

View file

@ -0,0 +1,9 @@
[info.viewer]
top_left=+name,+format
[keys.viewer]
Shift+r=rand_file
[viewer]
scale=fill
window=#10000010

View file

@ -0,0 +1,23 @@
{ config, ... }:
{
programs.swayimg = {
enable = true;
package = config.lib.test.mkStubPackage { };
settings = {
viewer = {
window = "#10000010";
scale = "fill";
};
"info.viewer" = { top_left = "+name,+format"; };
"keys.viewer" = { "Shift+r" = "rand_file"; };
};
};
nmt.script = ''
assertFileContent \
home-files/.config/swayimg/config \
${./example-settings-expected.ini}
'';
}