From aff4e4599d2a8b6d807da4f4ff65fa6f5605cd28 Mon Sep 17 00:00:00 2001 From: Philipp Date: Mon, 12 May 2025 19:28:47 +0200 Subject: [PATCH] add codeberg-themes to forgejo --- flake.lock | 30 +++++++------- modules/nixos/services/forgejo/default.nix | 35 ++++++++++------ packages/codeberg-themes/default.nix | 40 ++++++++++++++++++ packages/codeberg-themes/logo.svg | 41 +++++++++++++++++++ systems/x86_64-linux/bodenheizung/default.nix | 1 + 5 files changed, 120 insertions(+), 27 deletions(-) create mode 100644 packages/codeberg-themes/default.nix create mode 100644 packages/codeberg-themes/logo.svg diff --git a/flake.lock b/flake.lock index d9a467a..9c5c45e 100644 --- a/flake.lock +++ b/flake.lock @@ -8,11 +8,11 @@ }, "locked": { "dir": "pkgs/firefox-addons", - "lastModified": 1746849806, - "narHash": "sha256-6vJX4DnhDlWNtOOh3v08YqPgjJblfgHnV9562nPHNEo=", + "lastModified": 1747022610, + "narHash": "sha256-d6SvA0gTHDrOqt4tZRVD0Gm5G4w6jAFJ6lis79PjSPw=", "owner": "rycee", "repo": "nur-expressions", - "rev": "e2408d3f94a6b658e12f135501aa7fd38efabc72", + "rev": "d4b3ffe3e719e42b175ccdef13598516f0a8025d", "type": "gitlab" }, "original": { @@ -118,11 +118,11 @@ ] }, "locked": { - "lastModified": 1746798521, - "narHash": "sha256-axfz/jBEH9XHpS7YSumstV7b2PrPf7L8bhWUtLBv3nA=", + "lastModified": 1747021744, + "narHash": "sha256-IDsM/9/tHQBlhG3tXI2fTM84AUN1uRa7JDPT1LMlGes=", "owner": "nix-community", "repo": "home-manager", - "rev": "e95a7c5b6fa93304cd2fd78cf676c4f6d23c422c", + "rev": "fb061f555f821fe4fb49f8f6f2a0cc3d5728bd52", "type": "github" }, "original": { @@ -189,11 +189,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1746663147, - "narHash": "sha256-Ua0drDHawlzNqJnclTJGf87dBmaO/tn7iZ+TCkTRpRc=", + "lastModified": 1746904237, + "narHash": "sha256-3e+AVBczosP5dCLQmMoMEogM57gmZ2qrVSrmq9aResQ=", "owner": "nixos", "repo": "nixpkgs", - "rev": "dda3dcd3fe03e991015e9a74b22d35950f264a54", + "rev": "d89fc19e405cb2d55ce7cc114356846a0ee5e956", "type": "github" }, "original": { @@ -260,11 +260,11 @@ "systems": "systems_2" }, "locked": { - "lastModified": 1746852864, - "narHash": "sha256-4pE761eSft4GUboGMdseBC7WvfY81CMHuCuxnVy9PwI=", + "lastModified": 1746940940, + "narHash": "sha256-ASB3QVEoFK5//280uedYdt8jyDLhFa9zgj8qfc0S7Sk=", "owner": "notashelf", "repo": "nvf", - "rev": "fee3bbe536b5bf484aedebafa5130b485068b64f", + "rev": "815ed49d3693346122ef61da6d7443cd3cc21752", "type": "github" }, "original": { @@ -373,11 +373,11 @@ }, "stable": { "locked": { - "lastModified": 1746557022, - "narHash": "sha256-QkNoyEf6TbaTW5UZYX0OkwIJ/ZMeKSSoOMnSDPQuol0=", + "lastModified": 1746810718, + "narHash": "sha256-VljtYzyttmvkWUKTVJVW93qAsJsrBbgAzy7DdnJaQfI=", "owner": "nixos", "repo": "nixpkgs", - "rev": "1d3aeb5a193b9ff13f63f4d9cc169fb88129f860", + "rev": "0c0bf9c057382d5f6f63d54fd61f1abd5e1c2f63", "type": "github" }, "original": { diff --git a/modules/nixos/services/forgejo/default.nix b/modules/nixos/services/forgejo/default.nix index 61cc28a..4d1a9d7 100644 --- a/modules/nixos/services/forgejo/default.nix +++ b/modules/nixos/services/forgejo/default.nix @@ -26,12 +26,6 @@ in default = 3001; }; - ssh_user = mkOption { - description = "The ssh user to use Forgejo as."; - type = types.nullOr types.str; - default = "forgejo"; - }; - domain = mkOption { description = "The domain to serve Forgejo on."; type = types.nullOr types.str; @@ -56,16 +50,33 @@ in cfg.port ]; + systemd.services.codeberg-themes = { + description = "Codeberg Themes Setup"; + wantedBy = [ "multi-user.target" ]; + + environment.PATH = lib.mkDefault "${pkgs.coreutils}/bin:${pkgs.bash}/bin"; + + serviceConfig.ExecStart = '' + ${pkgs.bash}/bin/bash -c "mkdir -p /var/lib/forgejo/custom/public/assets/css /var/lib/forgejo/custom/public/assets/img && \ + cp -r ${pkgs.awesome-flake.codeberg-themes}/var/lib/forgejo/custom/public/assets/css/* /var/lib/forgejo/custom/public/assets/css/ && \ + chown -R forgejo:forgejo /var/lib/forgejo/custom" + ''; + }; + services.forgejo = { enable = true; package = cfg.package; database.type = "postgres"; - settings.server = { - DOMAIN = cfg.domain; - HTTP_PORT = cfg.port; - ROOT_URL = "https://git.monapona.dev"; - SSH_DOMAIN = cfg.ssh_domain; - BUILTIN_SSH_SERVER_USER = cfg.ssh_user; + settings = { + server = { + DOMAIN = cfg.domain; + HTTP_PORT = cfg.port; + ROOT_URL = "https://git.monapona.dev"; + SSH_DOMAIN = cfg.ssh_domain; + }; + ui = { + THEMES = "gitea,dark-arc,codeberg-dark"; + }; }; }; }; diff --git a/packages/codeberg-themes/default.nix b/packages/codeberg-themes/default.nix new file mode 100644 index 0000000..b133509 --- /dev/null +++ b/packages/codeberg-themes/default.nix @@ -0,0 +1,40 @@ +{ + lib, + stdenv, + fetchFromGitea, +}: + +stdenv.mkDerivation rec { + pname = "codeberg-themes"; + version = "1.0"; + src = fetchFromGitea { + domain = "codeberg.org"; + owner = "Codeberg-Infrastructure"; + repo = "forgejo"; + rev = "codeberg-11"; + sha256 = "sha256-iPPj7Hz+Jp+lnAa0N5rjSIXWYiTvjPQ8pMQB3SetdYA="; + }; + + unpackPhase = '' + # We clone the repo and only extract the folder we need + mkdir -p $out + cp -r $src/web_src/css/themes $out/themes + ''; + + installPhase = '' + # Create the required directories for installation + mkdir -p $out/var/lib/forgejo/custom/public/assets/css + mkdir -p $out/var/lib/forgejo/custom/public/assets/img + + # Move theme files + cp -r $out/themes/* $out/var/lib/forgejo/custom/public/assets/css/ + + # Install logo + cp ${./logo.svg} $out/var/lib/forgejo/custom/public/assets/img/ + ''; + + meta = with lib; { + description = "Codeberg themes and logo for Forgejo"; + maintainers = with maintainers; [ spaenny ]; + }; +} diff --git a/packages/codeberg-themes/logo.svg b/packages/codeberg-themes/logo.svg new file mode 100644 index 0000000..bee6cd7 --- /dev/null +++ b/packages/codeberg-themes/logo.svg @@ -0,0 +1,41 @@ + +
+ + diff --git a/systems/x86_64-linux/bodenheizung/default.nix b/systems/x86_64-linux/bodenheizung/default.nix index 2bcf658..5957625 100644 --- a/systems/x86_64-linux/bodenheizung/default.nix +++ b/systems/x86_64-linux/bodenheizung/default.nix @@ -1,4 +1,5 @@ { + pkgs, lib, namespace, ...