diff --git a/pkgs/data/themes/elegant-sddm/default.nix b/pkgs/data/themes/elegant-sddm/default.nix new file mode 100644 index 000000000000..eaf435089d71 --- /dev/null +++ b/pkgs/data/themes/elegant-sddm/default.nix @@ -0,0 +1,63 @@ +{ lib +, formats +, stdenvNoCC +, fetchFromGitHub +, qtgraphicaleffects + /* An example of how you can override the background with a NixOS wallpaper + * + * environment.systemPackages = [ + * (pkgs.elegant-sddm.override { + * themeConfig.General = { + background = "${pkgs.nixos-artwork.wallpapers.simple-dark-gray-bottom.gnomeFilePath}"; + * }; + * }) + * ]; + */ +, themeConfig ? null +}: + +let + user-cfg = (formats.ini { }).generate "theme.conf.user" themeConfig; +in + +stdenvNoCC.mkDerivation { + pname = "elegant-sddm"; + version = "unstable-2024-02-08"; + + src = fetchFromGitHub { + owner = "surajmandalcell"; + repo = "Elegant-sddm"; + rev = "3102e880f46a1b72c929d13cd0a3fb64f973952a"; + hash = "sha256-yn0fTYsdZZSOcaYlPCn8BUIWeFIKcTI1oioTWqjYunQ="; + }; + + propagatedBuildInputs = [ + qtgraphicaleffects + ]; + + dontWrapQtApps = true; + + installPhase = '' + runHook preInstall + + mkdir -p "$out/share/sddm/themes" + cp -r Elegant/ "$out/share/sddm/themes/Elegant" + '' + (lib.optionalString (lib.isAttrs themeConfig) '' + ln -sf ${user-cfg} $out/share/sddm/themes/Elegant/theme.conf.user + '') + '' + runHook postInstall + ''; + + postFixup = '' + mkdir -p $out/nix-support + + echo ${qtgraphicaleffects} >> $out/nix-support/propagated-user-env-packages + ''; + + meta = with lib; { + description = "Sleek and stylish SDDM theme crafted in QML"; + homepage = "https://github.com/surajmandalcell/Elegant-sddm"; + license = licenses.gpl3; + maintainers = with maintainers; [ GaetanLepage ]; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index caaeccf78133..90ddf843d811 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -27660,6 +27660,8 @@ with pkgs; ebtables = callPackage ../os-specific/linux/ebtables { }; + elegant-sddm = libsForQt5.callPackage ../data/themes/elegant-sddm { }; + error-inject = callPackages ../os-specific/linux/error-inject { }; extrace = callPackage ../os-specific/linux/extrace { };