diff --git a/modules/misc/news/2026/06/2026-06-13_13-54-31.nix b/modules/misc/news/2026/06/2026-06-13_13-54-31.nix new file mode 100644 index 000000000..7d17ff573 --- /dev/null +++ b/modules/misc/news/2026/06/2026-06-13_13-54-31.nix @@ -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. + ''; +} diff --git a/modules/programs/swayimg.nix b/modules/programs/swayimg.nix index a5ccd8733..69a3a1da0 100644 --- a/modules/programs/swayimg.nix +++ b/modules/programs/swayimg.nix @@ -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 for a list of available options. + {file}`$XDG_CONFIG_HOME/swayimg/init.lua`. + + See + 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; }; }; } diff --git a/tests/modules/programs/swayimg/default.nix b/tests/modules/programs/swayimg/default.nix index a90fbffa4..90c9653dc 100644 --- a/tests/modules/programs/swayimg/default.nix +++ b/tests/modules/programs/swayimg/default.nix @@ -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; } diff --git a/tests/modules/programs/swayimg/empty-initLua.nix b/tests/modules/programs/swayimg/empty-initLua.nix new file mode 100644 index 000000000..2dbba2126 --- /dev/null +++ b/tests/modules/programs/swayimg/empty-initLua.nix @@ -0,0 +1,13 @@ +{ config, ... }: + +{ + + programs.swayimg = { + enable = true; + package = config.lib.test.mkStubPackage { }; + }; + + nmt.script = '' + assertPathNotExists home-files/.config/swayimg + ''; +} diff --git a/tests/modules/programs/swayimg/empty-settings.nix b/tests/modules/programs/swayimg/empty-settings.nix deleted file mode 100644 index 3ea1c2347..000000000 --- a/tests/modules/programs/swayimg/empty-settings.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ - programs.swayimg.enable = true; - - nmt.script = '' - assertPathNotExists home-files/.config/swayimg - ''; -} diff --git a/tests/modules/programs/swayimg/example-initLua-expected.lua b/tests/modules/programs/swayimg/example-initLua-expected.lua new file mode 100644 index 000000000..36e216995 --- /dev/null +++ b/tests/modules/programs/swayimg/example-initLua-expected.lua @@ -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) diff --git a/tests/modules/programs/swayimg/example-initLua.nix b/tests/modules/programs/swayimg/example-initLua.nix new file mode 100644 index 000000000..48107e57a --- /dev/null +++ b/tests/modules/programs/swayimg/example-initLua.nix @@ -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} + ''; +} diff --git a/tests/modules/programs/swayimg/example-settings-expected.ini b/tests/modules/programs/swayimg/example-settings-expected.ini deleted file mode 100644 index f844feb6c..000000000 --- a/tests/modules/programs/swayimg/example-settings-expected.ini +++ /dev/null @@ -1,9 +0,0 @@ -[info.viewer] -top_left=+name,+format - -[keys.viewer] -Shift+r=rand_file - -[viewer] -scale=fill -window=#10000010 diff --git a/tests/modules/programs/swayimg/example-settings.nix b/tests/modules/programs/swayimg/example-settings.nix deleted file mode 100644 index 1530a8f3a..000000000 --- a/tests/modules/programs/swayimg/example-settings.nix +++ /dev/null @@ -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} - ''; -} diff --git a/tests/modules/programs/swayimg/path-initLua.nix b/tests/modules/programs/swayimg/path-initLua.nix new file mode 100644 index 000000000..4c5489db1 --- /dev/null +++ b/tests/modules/programs/swayimg/path-initLua.nix @@ -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} + ''; +}