diff --git a/pkgs/mastodon-bird-ui/package.nix b/pkgs/mastodon-bird-ui/package.nix index d29fa11..0d42b67 100644 --- a/pkgs/mastodon-bird-ui/package.nix +++ b/pkgs/mastodon-bird-ui/package.nix @@ -1,64 +1,58 @@ { mastodon, - yq-go, - fetchurl, + applyPatches, + fetchFromGitHub, ... }: -mastodon.overrideAttrs (_: { - mastodonModules = mastodon.mastodonModules.overrideAttrs (oldAttrs: let - # https://github.com/ronilaukkarinen/mastodon-bird-ui - birdui-version = "1.8.5"; - - birdui-single-column = fetchurl { - url = "https://raw.githubusercontent.com/ronilaukkarinen/mastodon-bird-ui/${birdui-version}/layout-single-column.css"; - sha256 = "sha256-h3cb0ZiXIUEbx+8CDXPHqKe4u3ZquE90wUr/cmKkhK8="; +(mastodon.override { + patches = [ + # Redone based on: + # + ./patches/mastodon-bird-ui.patch + ]; +}).overrideAttrs (oldAttrs: let + src = applyPatches { + src = fetchFromGitHub { + owner = "ronilaukkarinen"; + repo = "mastodon-bird-ui"; + tag = "2.1.1"; + hash = "sha256-WEw9wE+iBCLDDTZjFoDJ3EwKTY92+LyJyDqCIoVXhzk="; }; - birdui-multi-column = fetchurl { - url = "https://raw.githubusercontent.com/ronilaukkarinen/mastodon-bird-ui/${birdui-version}/layout-multiple-columns.css"; - sha256 = "sha256-NMiBkJUR+HEf+ooJwoBIMiMOKna3odZYF6h4QLIdS84="; - }; - in { - pname = "${oldAttrs.pname}+themes"; - + # based on: + # https://github.com/ronilaukkarinen/mastodon-bird-ui#make-mastodon-bird-ui-as-optional-by-integrating-it-as-site-theme-in-settings-for-all-users postPatch = '' - # Import theme - local styleDir=$PWD/app/javascript/styles - local birduiDir=$styleDir/mastodon-bird-ui + substituteInPlace layout-single-column.css layout-multiple-columns.css \ + --replace-fail theme-contrast theme-mastodon-bird-ui-contrast \ + --replace-fail theme-mastodon-light theme-mastodon-bird-ui-light - mkdir -p $birduiDir - cat ${birdui-single-column} > $birduiDir/layout-single-column.scss - cat ${birdui-multi-column} > $birduiDir/layout-multiple-columns.scss + mkdir mastodon-bird-ui + mv layout-single-column.css mastodon-bird-ui/layout-single-column.scss + mv layout-multiple-columns.css mastodon-bird-ui/layout-multiple-columns.scss - sed -i 's/theme-contrast/theme-mastodon-bird-ui-contrast/g' $birduiDir/layout-single-column.scss - sed -i 's/theme-mastodon-light/theme-mastodon-bird-ui-light/g' $birduiDir/layout-single-column.scss - - sed -i 's/theme-contrast/theme-mastodon-bird-ui-contrast/g' $birduiDir/layout-multiple-columns.scss - sed -i 's/theme-mastodon-light/theme-mastodon-bird-ui-light/g' $birduiDir/layout-multiple-columns.scss - - echo -e "@import 'contrast/variables';\n@import 'application';\n@import 'contrast/diff';\n@import 'mastodon-bird-ui/layout-single-column.scss';\n@import 'mastodon-bird-ui/layout-multiple-columns.scss';" >$styleDir/mastodon-bird-ui-contrast.scss - - echo -e "@import 'mastodon-light/variables';\n@import 'application';\n@import 'mastodon-light/diff';\n@import 'mastodon-bird-ui/layout-single-column.scss';\n@import 'mastodon-bird-ui/layout-multiple-columns.scss';" >$styleDir/mastodon-bird-ui-light.scss - - echo -e "@import 'application';\n@import 'mastodon-bird-ui/layout-single-column.scss';\n@import 'mastodon-bird-ui/layout-multiple-columns.scss';" >$styleDir/mastodon-bird-ui-dark.scss - - # Build theme - echo "mastodon-bird-ui-dark: styles/mastodon-bird-ui-dark.scss" >> $PWD/config/themes.yml - echo "mastodon-bird-ui-light: styles/mastodon-bird-ui-light.scss" >> $PWD/config/themes.yml - echo "mastodon-bird-ui-contrast: styles/mastodon-bird-ui-contrast.scss" >> $PWD/config/themes.yml + echo -e "@import 'contrast/variables'; + @import 'application'; + @import 'contrast/diff'; + @import 'mastodon-bird-ui/layout-single-column.scss'; + @import 'mastodon-bird-ui/layout-multiple-columns.scss';" > mastodon-bird-ui-contrast.scss + echo -e "@import 'mastodon-light/variables'; + @import 'application'; + @import 'mastodon-light/diff'; + @import 'mastodon-bird-ui/layout-single-column.scss'; + @import 'mastodon-bird-ui/layout-multiple-columns.scss';" > mastodon-bird-ui-light.scss + echo -e "@import 'application'; + @import 'mastodon-bird-ui/layout-single-column.scss'; + @import 'mastodon-bird-ui/layout-multiple-columns.scss';" > mastodon-bird-ui-dark.scss ''; + }; +in { + mastodonModules = oldAttrs.mastodonModules.overrideAttrs (oldAttrs: { + pname = "mastodon-birdui-theme"; + + postPatch = + oldAttrs.postPatch or "" + + '' + cp -r ${src}/*.scss ${src}/mastodon-bird-ui/ app/javascript/styles/ + ''; }); - - nativeBuildInputs = [yq-go]; - - postBuild = '' - # Make theme available - echo "mastodon-bird-ui-dark: styles/mastodon-bird-ui-dark.scss" >> $PWD/config/themes.yml - echo "mastodon-bird-ui-light: styles/mastodon-bird-ui-light.scss" >> $PWD/config/themes.yml - echo "mastodon-bird-ui-contrast: styles/mastodon-bird-ui-contrast.scss" >> $PWD/config/themes.yml - - yq -i '.en.themes.mastodon-bird-ui-dark = "Mastodon Bird UI (Dark)"' $PWD/config/locales/en.yml - yq -i '.en.themes.mastodon-bird-ui-light = "Mastodon Bird UI (Light)"' $PWD/config/locales/en.yml - yq -i '.en.themes.mastodon-bird-ui-contrast = "Mastodon Bird UI (High contrast)"' $PWD/config/locales/en.yml - ''; }) diff --git a/pkgs/mastodon-bird-ui/patches/mastodon-bird-ui.patch b/pkgs/mastodon-bird-ui/patches/mastodon-bird-ui.patch new file mode 100644 index 0000000..f09e040 --- /dev/null +++ b/pkgs/mastodon-bird-ui/patches/mastodon-bird-ui.patch @@ -0,0 +1,34 @@ +--- a/config/locales/de.yml 1970-01-01 01:00:01.000000000 +0100 ++++ b/config/locales/de.yml 2025-03-04 23:10:30.555066004 +0100 +@@ -1804,6 +1804,9 @@ + themes: + contrast: Mastodon (Hoher Kontrast) + default: Mastodon (Dunkel) ++ mastodon-bird-ui-contrast: Mastodon Bird UI (Hoher Kontrast) ++ mastodon-bird-ui-dark: Mastodon Bird UI (Dunkel) ++ mastodon-bird-ui-light: Mastodon Bird UI (Hell) + mastodon-light: Mastodon (Hell) + system: Automatisch (mit System synchronisieren) + time: +--- a/config/locales/en.yml 1970-01-01 01:00:01.000000000 +0100 ++++ b/config/locales/en.yml 2025-03-04 23:11:25.390474198 +0100 +@@ -1805,6 +1805,9 @@ + themes: + contrast: Mastodon (High contrast) + default: Mastodon (Dark) ++ mastodon-bird-ui-contrast: Mastodon Bird UI (High contrast) ++ mastodon-bird-ui-dark: Mastodon Bird UI (Dark) ++ mastodon-bird-ui-light: Mastodon Bird UI (Light) + mastodon-light: Mastodon (Light) + system: Automatic (use system theme) + time: +--- a/config/themes.yml 1970-01-01 01:00:01.000000000 +0100 ++++ b/config/themes.yml 2025-03-04 23:12:24.998956621 +0100 +@@ -1,3 +1,6 @@ + default: styles/application.scss + contrast: styles/contrast.scss + mastodon-light: styles/mastodon-light.scss ++mastodon-bird-ui-dark: styles/mastodon-bird-ui-dark.scss ++mastodon-bird-ui-contrast: styles/mastodon-bird-ui-contrast.scss ++mastodon-bird-ui-light: styles/mastodon-bird-ui-light.scss +