summary refs log tree commit diff
path: root/nixos/modules/services/x11/desktop-managers/maxx.nix
blob: bceb23c276e3e99199b71794977fba667b96c092 (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
{ config, lib, pkgs, ... }:

with lib;

let
  xcfg = config.services.xserver;
  cfg = xcfg.desktopManager.maxx;
  deps = [ pkgs.gcc ] ++ cfg.extraPackages;
in {
  options.services.xserver.desktopManager.maxx = {
    enable = mkEnableOption "MaXX desktop environment";

    extraPackages = mkOption {
      type = with types; listOf package;
      default = with pkgs; [
        xorg.xclock xsettingsd
      ];
      description = ''
        Extra packages visible to session.
      '';
    };
  };

  config = mkIf (xcfg.enable && cfg.enable) {
    environment.systemPackages = [ pkgs.maxx ];

    # there is hardcoded path in binaries
    system.activationScripts.setup-maxx = ''
      mkdir -p /opt
      ln -sfn ${pkgs.maxx}/opt/MaXX /opt
    '';

    services.xserver.desktopManager.session = [
    { name = "MaXX";
      start = ''
        export PATH="${makeBinPath deps}:$PATH"
        export GTK_PATH="${pkgs.gtk-engine-murrine}/lib/gtk-2.0:${pkgs.gtk_engines}/lib/gtk-2.0:$GTK_PATH"
        export GDK_PIXBUF_MODULE_FILE=$(echo ${pkgs.librsvg.out}/lib/gdk-pixbuf-2.0/*/loaders.cache)

        exec ${pkgs.maxx}/opt/MaXX/etc/skel/Xsession.dt
      '';
    }];
  };

  meta.maintainers = [ maintainers.gnidorah ];
}