diff --git a/flake.lock b/flake.lock index f15364a..4234c60 100644 Binary files a/flake.lock and b/flake.lock differ diff --git a/flake.nix b/flake.nix index c53d4f6..d16cf85 100644 --- a/flake.nix +++ b/flake.nix @@ -2,57 +2,11 @@ # «https://github.com/notashelf/nyxexprs» description = "Personal package overlay for commonly used derivations"; - inputs = { - nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; - systems.url = "github:nix-systems/default-linux"; - flake-parts = { - url = "github:hercules-ci/flake-parts"; - inputs.nixpkgs-lib.follows = "nixpkgs"; - }; - - flake-compat = { - url = "github:edolstra/flake-compat"; - flake = false; - }; - - # Rest of my packages will be constructed from previous flakes - watt = { - url = "github:NotAShelf/watt"; - inputs.nixpkgs.follows = "nixpkgs"; - }; - - flint = { - url = "github:NotAShelf/flint"; - inputs.nixpkgs.follows = "nixpkgs"; - }; - - inquisitor = { - url = "github:NotAShelf/inquisitor"; - inputs.nixpkgs.follows = "nixpkgs"; - }; - - ndg = { - url = "github:feel-co/ndg"; - inputs.nixpkgs.follows = "nixpkgs"; - }; - - licenseit = { - url = "github:notashelf/licenseit"; - inputs.nixpkgs.follows = "nixpkgs"; - }; - - mrc = { - url = "github:notashelf/mrc"; - inputs.nixpkgs.follows = "nixpkgs"; - }; - - wiremix = { - url = "github:tsowell/wiremix"; - inputs = { - nixpkgs.follows = "nixpkgs"; - systems.follows = "systems"; - }; - }; + # This is so that you don't have to compile Alejandra unless you already + # have it in the Nix store, which is unlikely. + nixConfig = { + extra-substituters = ["https://nyx.cachix.org"]; + extra-trusted-public-keys = ["nyx.cachix.org-1:xH6G0MO9PrpeGe7mHBtj1WbNzmnXr7jId2mCiq6hipE"]; }; outputs = { @@ -101,6 +55,10 @@ "flint" "inquisitor" "ndg" + "licenseit" + "mrc" + "gcolor" + "tailray" # 3rd party packages "wiremix" @@ -108,7 +66,7 @@ mappedPkgs = listToAttrs (map (input: { name = input; - value = inputs'.${input}.packages.default; + value = inputs'.${input}.packages.default or (builtins.throw "Input ${input} does not provide a default package"); }) fromInputs); in @@ -124,9 +82,67 @@ }; }; - # This is so that you don't have to compile Alejandra. - nixConfig = { - extra-substituters = ["https://nyx.cachix.org"]; - extra-trusted-public-keys = ["nyx.cachix.org-1:xH6G0MO9PrpeGe7mHBtj1WbNzmnXr7jId2mCiq6hipE"]; + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + systems.url = "github:nix-systems/default-linux"; + flake-parts = { + url = "github:hercules-ci/flake-parts"; + inputs.nixpkgs-lib.follows = "nixpkgs"; + }; + + flake-compat = { + url = "github:edolstra/flake-compat"; + flake = false; + }; + + # Rest of my packages will be constructed from previous flakes + watt = { + url = "github:NotAShelf/watt"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + flint = { + url = "github:NotAShelf/flint"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + inquisitor = { + url = "github:NotAShelf/inquisitor"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + ndg = { + url = "github:feel-co/ndg"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + licenseit = { + url = "github:notashelf/licenseit"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + mrc = { + url = "github:notashelf/mrc"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + gcolor = { + url = "github:notashelf/gcolor"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + tailray = { + url = "github:notashelf/tailray"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + # 3rd party flakes that I want to extract packages from + wiremix = { + url = "github:tsowell/wiremix"; + inputs = { + nixpkgs.follows = "nixpkgs"; + systems.follows = "systems"; + }; + }; }; } diff --git a/pkgs/fuzzel-git/package.nix b/pkgs/fuzzel-git/package.nix index 1d84108..c168701 100644 --- a/pkgs/fuzzel-git/package.nix +++ b/pkgs/fuzzel-git/package.nix @@ -1,27 +1,38 @@ { lib, - fetchFromGitea, - fuzzel, pins, date, + pixman, + fetchurl, + fetchFromGitea, + fuzzel, ... -}: -fuzzel.overrideAttrs (let +}: let + # Latest fuzzel release requires Pixman >=0.46.1, but Nixpkgs still ships 0.42 + pixman_46 = pixman.overrideAttrs { + pname = "pixman"; + version = "0.46.2"; + src = fetchurl { + url = "https://cairographics.org/releases/pixman-0.46.2.tar.gz"; + hash = "sha256-Pg3lum41aRaUaj2VgZLxVQXcq4UTR3G/6rTOTim71zM="; + }; + }; pin = pins.fuzzel; -in { - pname = "fuzzel-git"; - version = "0-unstable-${date}"; - src = fetchFromGitea { - domain = "codeberg.org"; - owner = "dnkl"; - repo = "fuzzel"; - rev = pin.revision; - sha256 = pin.hash; - }; +in + (fuzzel.override {pixman = pixman_46;}).overrideAttrs { + pname = "fuzzel-git"; + version = "0-unstable-${date}"; + src = fetchFromGitea { + domain = "codeberg.org"; + owner = "dnkl"; + repo = "fuzzel"; + rev = pin.revision; + sha256 = pin.hash; + }; - meta = { - description = "Fuzzel app launcher, tracks latest git revision"; - mainProgram = "fuzzel"; - maintainers = with lib.maintainers; [NotAShelf]; - }; -}) + meta = { + description = "Fuzzel app launcher, tracks latest git revision"; + mainProgram = "fuzzel"; + maintainers = with lib.maintainers; [NotAShelf]; + }; + } 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 +