about summary refs log tree commit diff
path: root/pkgs/data/themes/chili-sddm/default.nix
blob: ccbbbfba5bf513d5212aa9cbc1ac910c30fa053a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
{ lib
, stdenv
, fetchFromGitHub
, qtgraphicaleffects
, themeConfig ? { }
}:
let
  customToString = x: if builtins.isBool x then lib.boolToString x else toString x;
  configLines = lib.mapAttrsToList (name: value: lib.nameValuePair name value) themeConfig;
  configureTheme = "cp theme.conf theme.conf.orig \n" +
    (lib.concatMapStringsSep "\n"
      (configLine:
        "grep -q '^${configLine.name}=' theme.conf || echo '${configLine.name}=' >> \"$1\"\n" +
          "sed -i -e 's/^${configLine.name}=.*$/${configLine.name}=${
        lib.escape [ "/" "&" "\\"] (customToString configLine.value)
      }/' theme.conf"
      )
      configLines);
in
stdenv.mkDerivation {
  pname = "sddm-chili-theme";
  version = "0.1.5";

  src = fetchFromGitHub {
    owner = "MarianArlt";
    repo = "sddm-chili";
    rev = "6516d50176c3b34df29003726ef9708813d06271";
    sha256 = "036fxsa7m8ymmp3p40z671z163y6fcsa9a641lrxdrw225ssq5f3";
  };

  propagatedBuildInputs = [
    qtgraphicaleffects
  ];

  dontWrapQtApps = true;

  preInstall = configureTheme;

  postInstall = ''
    mkdir -p $out/share/sddm/themes/chili

    mv * $out/share/sddm/themes/chili/
  '';

  postFixup = ''
    mkdir -p $out/nix-support

    echo ${qtgraphicaleffects} >> $out/nix-support/propagated-user-env-packages
  '';
  meta = with lib; {
    license = licenses.gpl3;
    maintainers = with lib.maintainers; [ sents ];
    homepage = "https://github.com/MarianArlt/sddm-chili";
    description = "Chili login theme for SDDM";
    longDescription = ''
      Chili is hot, just like a real chili!
      Spice up the login experience for your users, your family and yourself.
      Chili reduces all the clutter and leaves you with a clean, easy to use, login interface with a modern yet classy touch.
    '';
  };
}