diff --git a/modules/modules.nix b/modules/modules.nix index 156094c8..70a48b85 100644 --- a/modules/modules.nix +++ b/modules/modules.nix @@ -259,6 +259,7 @@ let ./programs/vifm.nix ./programs/vim-vint.nix ./programs/vim.nix + ./programs/vinegar.nix ./programs/vscode.nix ./programs/vscode/haskell.nix ./programs/pywal.nix diff --git a/modules/programs/vinegar.nix b/modules/programs/vinegar.nix new file mode 100644 index 00000000..5cbf672e --- /dev/null +++ b/modules/programs/vinegar.nix @@ -0,0 +1,50 @@ +{ config, lib, pkgs, ... }: +let toml = pkgs.formats.toml { }; +in { + meta.maintainers = with lib.maintainers; [ HeitorAugustoLN ]; + + options.programs.vinegar = { + enable = lib.mkEnableOption "Vinegar"; + + package = lib.mkPackageOption pkgs "vinegar" { }; + + settings = lib.mkOption { + type = lib.types.attrsOf toml.type; + default = { }; + example = { + env.WINEFSYNC = "1"; + + studio = { + dxvk = false; + renderer = "Vulkan"; + + fflags.DFIntTaskSchedulerTargetFps = 144; + + env = { + DXVK_HUD = "0"; + MANGOHUD = "1"; + }; + }; + }; + description = '' + Configuration written to {file}`$XDG_CONFIG_HOME/vinegar/config.toml`. + + See for more information. + ''; + }; + }; + + config = let cfg = config.programs.vinegar; + in lib.mkIf cfg.enable { + assertions = [ + (lib.hm.assertions.assertPlatform "programs.vinegar" pkgs + lib.platforms.linux) + ]; + + home.packages = [ cfg.package ]; + + xdg.configFile."vinegar/config.toml" = lib.mkIf (cfg.settings != { }) { + source = toml.generate "vinegar-config.toml" cfg.settings; + }; + }; +} diff --git a/tests/default.nix b/tests/default.nix index a3d5749d..5dad7cef 100644 --- a/tests/default.nix +++ b/tests/default.nix @@ -242,6 +242,7 @@ in import nmtSrc { ./modules/programs/translate-shell ./modules/programs/vifm ./modules/programs/vim-vint + ./modules/programs/vinegar ./modules/programs/vscode ./modules/programs/watson ./modules/programs/wezterm diff --git a/tests/modules/programs/vinegar/default.nix b/tests/modules/programs/vinegar/default.nix new file mode 100644 index 00000000..0916c04a --- /dev/null +++ b/tests/modules/programs/vinegar/default.nix @@ -0,0 +1,4 @@ +{ + vinegar-empty-settings = ./empty-settings.nix; + vinegar-example-settings = ./example-settings.nix; +} diff --git a/tests/modules/programs/vinegar/empty-settings.nix b/tests/modules/programs/vinegar/empty-settings.nix new file mode 100644 index 00000000..e7a48003 --- /dev/null +++ b/tests/modules/programs/vinegar/empty-settings.nix @@ -0,0 +1,7 @@ +{ + programs.vinegar.enable = true; + + nmt.script = '' + assertPathNotExists home-files/.config/vinegar/config.toml + ''; +} diff --git a/tests/modules/programs/vinegar/example-config-expected.toml b/tests/modules/programs/vinegar/example-config-expected.toml new file mode 100644 index 00000000..38878ce1 --- /dev/null +++ b/tests/modules/programs/vinegar/example-config-expected.toml @@ -0,0 +1,13 @@ +[env] +WINEFSYNC = "1" + +[studio] +dxvk = false +renderer = "Vulkan" + +[studio.env] +DXVK_HUD = "0" +MANGOHUD = "1" + +[studio.fflags] +DFIntTaskSchedulerTargetFps = 144 diff --git a/tests/modules/programs/vinegar/example-settings.nix b/tests/modules/programs/vinegar/example-settings.nix new file mode 100644 index 00000000..22ac75df --- /dev/null +++ b/tests/modules/programs/vinegar/example-settings.nix @@ -0,0 +1,28 @@ +{ config, ... }: { + programs.vinegar = { + enable = true; + package = config.lib.test.mkStubPackage { }; + + settings = { + env.WINEFSYNC = "1"; + + studio = { + dxvk = false; + renderer = "Vulkan"; + + fflags.DFIntTaskSchedulerTargetFps = 144; + + env = { + DXVK_HUD = "0"; + MANGOHUD = "1"; + }; + }; + }; + }; + + nmt.script = '' + assertFileContent \ + home-files/.config/vinegar/config.toml \ + ${./example-config-expected.toml} + ''; +}