Make module more general

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

View File

@ -1,22 +1,27 @@
{ config, pkgs, lib, ... }: { config, pkgs, lib, ... }:
let let
cfg = config.services.gitea-themes.monokai; cfg = config.services.gitea-themes;
giteaCfg = config.services.gitea; giteaCfg = config.services.gitea;
in in
{ {
options.services.gitea-themes.monokai = { options.services.gitea-themes = lib.mkOption {
enable = lib.mkEnableOption "monokai theme for gitea"; description = ''
package = lib.mkPackageOption pkgs "gitea-theme-monokai" { }; 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) { config = lib.mkIf (cfg != { }) {
services.gitea.settings.ui.THEMES = lib.strings.concatStringsSep "," [ services.gitea.settings.ui.THEMES = lib.strings.concatStringsSep "," ([
"gitea" "gitea"
"arc-green" "arc-green"
"monokai" ] ++ lib.attrNames cfg);
];
systemd.services.install-gitea-theme-monokai = { systemd.services.install-gitea-theme-monokai = {
description = "Install gitea themes in gitea's CUSTOM_DIR";
wantedBy = [ "gitea.service" ]; wantedBy = [ "gitea.service" ];
requiredBy = [ "gitea.service" ]; requiredBy = [ "gitea.service" ];
@ -25,13 +30,13 @@ in
User = giteaCfg.user; User = giteaCfg.user;
Group = giteaCfg.group; Group = giteaCfg.group;
}; };
script = '' script = lib.concatMapStringsSep "\n" (theme-package: ''
mkdir -p "${giteaCfg.customDir}/public/assets/css" mkdir -p "${giteaCfg.customDir}/public/assets/css"
if ! [ -f "${giteaCfg.customDir}/public/assets/css/theme-monokai.css" ]; then 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 "${theme-package}/share/gitea/public/assets/css/*.css" "${giteaCfg.customDir}/public/assets/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/css/*.css" "${giteaCfg.customDir}/public/css/"
fi fi
''; '') (lib.attrValues cfg);
}; };
}; };
} }