swayimg: support new lua config

Closes: #9479
This commit is contained in:
David Thievon
2026-07-11 21:30:09 -05:00
committed by Austin Horstman
parent ae6f976083
commit 7566825d46
10 changed files with 103 additions and 65 deletions
@@ -0,0 +1,9 @@
{ config, ... }:
{
time = "2026-06-13T11:54:31+00:00";
condition = config.programs.swayimg.enable;
message = ''
`programs.swayimg.settings` has been replaced with
`programs.swayimg.initLua` because upstream moved to a lua config.
'';
}
+26 -20
View File
@@ -4,39 +4,45 @@
pkgs,
...
}:
let
cfg = config.programs.swayimg;
iniFormat = pkgs.formats.ini { };
in
{
meta.maintainers = with lib.maintainers; [ dod-101 ];
imports = [
(lib.mkRemovedOptionModule [
"programs"
"swayimg"
"settings"
] "Upstream moved to a lua config. This option has been replaced by programs.swayimg.initLua.")
];
options.programs.swayimg = {
enable = lib.mkEnableOption "swayimg";
package = lib.mkPackageOption pkgs "swayimg" { };
settings = lib.mkOption {
inherit (iniFormat) type;
default = { };
initLua = lib.mkOption {
type = with lib.types; nullOr (either path lines);
default = null;
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.
{file}`$XDG_CONFIG_HOME/swayimg/init.lua`.
See <https://github.com/artemsen/swayimg/blob/master/CONFIG.md>
for documentation.
'';
example = lib.literalExpression ''
{
viewer = {
window = "#10000010";
scale = "fill";
};
"info.viewer" = {
top_left = "+name,+format";
};
"keys.viewer" = {
"Shift+r" = "rand_file";
};
}
swayimg.text.set_size(32)
swayimg.text.set_foreground(0xffff0000)
swayimg.viewer.set_default_scale("fill")
swayimg.gallery.on_key("Delete", function()
local image = swayimg.gallery.get_image()
os.remove(image.path)
end)
'';
};
};
@@ -48,8 +54,8 @@ in
home.packages = [ cfg.package ];
xdg.configFile."swayimg/config" = lib.mkIf (cfg.settings != { }) {
source = iniFormat.generate "config" cfg.settings;
xdg.configFile."swayimg/init.lua" = lib.mkIf (cfg.initLua != null) {
text = if builtins.isPath cfg.initLua then builtins.readFile cfg.initLua else cfg.initLua;
};
};
}
+3 -2
View File
@@ -1,5 +1,6 @@
{ lib, pkgs, ... }:
lib.optionalAttrs pkgs.stdenv.hostPlatform.isLinux {
swayimg-empty-settings = ./empty-settings.nix;
swayimg-example-settings = ./example-settings.nix;
swayimg-empty-initLua = ./empty-initLua.nix;
swayimg-example-initLua = ./example-initLua.nix;
swayimg-path-initLua = ./path-initLua.nix;
}
@@ -0,0 +1,13 @@
{ config, ... }:
{
programs.swayimg = {
enable = true;
package = config.lib.test.mkStubPackage { };
};
nmt.script = ''
assertPathNotExists home-files/.config/swayimg
'';
}
@@ -1,7 +0,0 @@
{
programs.swayimg.enable = true;
nmt.script = ''
assertPathNotExists home-files/.config/swayimg
'';
}
@@ -0,0 +1,9 @@
swayimg.text.set_size(32)
swayimg.text.set_foreground(0xffff0000)
swayimg.viewer.set_default_scale("fill")
swayimg.gallery.on_key("Delete", function()
local image = swayimg.gallery.get_image()
os.remove(image.path)
end)
@@ -0,0 +1,26 @@
{ config, ... }:
{
programs.swayimg = {
enable = true;
package = config.lib.test.mkStubPackage { };
initLua = ''
swayimg.text.set_size(32)
swayimg.text.set_foreground(0xffff0000)
swayimg.viewer.set_default_scale("fill")
swayimg.gallery.on_key("Delete", function()
local image = swayimg.gallery.get_image()
os.remove(image.path)
end)
'';
};
nmt.script = ''
assertFileContent \
home-files/.config/swayimg/init.lua \
${./example-initLua-expected.lua}
'';
}
@@ -1,9 +0,0 @@
[info.viewer]
top_left=+name,+format
[keys.viewer]
Shift+r=rand_file
[viewer]
scale=fill
window=#10000010
@@ -1,27 +0,0 @@
{ 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}
'';
}
@@ -0,0 +1,17 @@
{ config, ... }:
{
programs.swayimg = {
enable = true;
package = config.lib.test.mkStubPackage { };
initLua = ./example-initLua-expected.lua;
};
nmt.script = ''
assertFileContent \
home-files/.config/swayimg/init.lua \
${./example-initLua-expected.lua}
'';
}