Make module more general

This commit is contained in:
Oystein Kristoffer Tveit 2024-04-09 01:19:01 +02:00
parent 97a064b5fc
commit 7940d84729
Signed by: oysteikt
GPG Key ID: 9F2F7D8250F35146
4 changed files with 21 additions and 16 deletions

View File

@ -17,7 +17,7 @@
in {
packages = forAllSystems (system: pkgs: {
default = self.packages.${system}.gitea-theme-monokai;
gitea-theme-monokai = pkgs.callPackage ./default.nix { };
gitea-theme-monokai = pkgs.callPackage ./themes/monokai { };
test-machine = let
system = "x86_64-linux";
@ -35,10 +35,10 @@
system.stateVersion = "23.11";
boot.isContainer = true;
}
{
({pkgs, ... }: {
services.gitea.enable = true;
services.gitea-themes.monokai.enable = true;
}
services.gitea-themes."monokai" = pkgs.gitea-theme-monokai;
})
];
}).config.system.build.toplevel;
});

View File

@ -1,22 +1,27 @@
{ config, pkgs, lib, ... }:
let
cfg = config.services.gitea-themes.monokai;
cfg = config.services.gitea-themes;
giteaCfg = config.services.gitea;
in
{
options.services.gitea-themes.monokai = {
enable = lib.mkEnableOption "monokai theme for gitea";
package = lib.mkPackageOption pkgs "gitea-theme-monokai" { };
options.services.gitea-themes = lib.mkOption {
description = ''
Derivations containing gitea themes to install.
The theme should be named `theme-<name>.css`, and reside in `$out/share/gitea/public/assets/css/`.
'';
default = { };
type = with lib.types; attrsOf path;
};
config = lib.mkIf (cfg.enable && giteaCfg.enable) {
services.gitea.settings.ui.THEMES = lib.strings.concatStringsSep "," [
config = lib.mkIf (cfg != { }) {
services.gitea.settings.ui.THEMES = lib.strings.concatStringsSep "," ([
"gitea"
"arc-green"
"monokai"
];
] ++ lib.attrNames cfg);
systemd.services.install-gitea-theme-monokai = {
description = "Install gitea themes in gitea's CUSTOM_DIR";
wantedBy = [ "gitea.service" ];
requiredBy = [ "gitea.service" ];
@ -25,13 +30,13 @@ in
User = giteaCfg.user;
Group = giteaCfg.group;
};
script = ''
script = lib.concatMapStringsSep "\n" (theme-package: ''
mkdir -p "${giteaCfg.customDir}/public/assets/css"
if ! [ -f "${giteaCfg.customDir}/public/assets/css/theme-monokai.css" ]; then
ln -s "${cfg.package}/share/gitea/public/assets/css/theme-monokai.css" "${giteaCfg.customDir}/public/assets/css/theme-monokai.css"
ln -s "${cfg.package}/share/gitea/public/css/theme-monokai.css" "${giteaCfg.customDir}/public/css/theme-monokai.css"
ln -s "${theme-package}/share/gitea/public/assets/css/*.css" "${giteaCfg.customDir}/public/assets/css/"
ln -s "${theme-package}/share/gitea/public/css/*.css" "${giteaCfg.customDir}/public/css/"
fi
'';
'') (lib.attrValues cfg);
};
};
}