summary refs log blame commit diff
path: root/nixos/modules/services/x11/display-managers/lightdm-greeters/enso-os.nix
blob: 412bcc4091b3fb1c00997f092308e4ecf65353ac (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12











                                                 















                                                                    
                                  






                                                                  
                                                  
                                                                          
                                    






                                                                              
                                    








                                                                    
                                                                    
                                    






                                                                                   
                                    








                                                                         
                                                                   
                                    






                                                                                     
                                    







                                                                           
                                  






                                       
                                  






                              
                                  









                                                                    





                                  

                                               

                                                         









                                   
{ config, lib, pkgs, ... }:

with lib;
let
  dmcfg = config.services.xserver.displayManager;
  ldmcfg = dmcfg.lightdm;
  cfg = ldmcfg.greeters.enso;

  theme = cfg.theme.package;
  icons = cfg.iconTheme.package;
  cursors = cfg.cursorTheme.package;

  ensoGreeterConf = pkgs.writeText "lightdm-enso-os-greeter.conf" ''
    [greeter]
    default-wallpaper=${ldmcfg.background}
    gtk-theme=${cfg.theme.name}
    icon-theme=${cfg.iconTheme.name}
    cursor-theme=${cfg.cursorTheme.name}
    blur=${toString cfg.blur}
    brightness=${toString cfg.brightness}
    ${cfg.extraConfig}
  '';
in {
  options = {
    services.xserver.displayManager.lightdm.greeters.enso = {
      enable = mkOption {
        type = types.bool;
        default = false;
        description = lib.mdDoc ''
          Whether to enable enso-os-greeter as the lightdm greeter
        '';
      };

      theme = {
        package = mkOption {
          type = types.package;
          default = pkgs.gnome.gnome-themes-extra;
          defaultText = literalExpression "pkgs.gnome.gnome-themes-extra";
          description = lib.mdDoc ''
            The package path that contains the theme given in the name option.
          '';
        };

        name = mkOption {
          type = types.str;
          default = "Adwaita";
          description = lib.mdDoc ''
            Name of the theme to use for the lightdm-enso-os-greeter
          '';
        };
      };

      iconTheme = {
        package = mkOption {
          type = types.package;
          default = pkgs.papirus-icon-theme;
          defaultText = literalExpression "pkgs.papirus-icon-theme";
          description = lib.mdDoc ''
            The package path that contains the icon theme given in the name option.
          '';
        };

        name = mkOption {
          type = types.str;
          default = "ePapirus";
          description = lib.mdDoc ''
            Name of the icon theme to use for the lightdm-enso-os-greeter
          '';
        };
      };

      cursorTheme = {
        package = mkOption {
          type = types.package;
          default = pkgs.capitaine-cursors;
          defaultText = literalExpression "pkgs.capitaine-cursors";
          description = lib.mdDoc ''
            The package path that contains the cursor theme given in the name option.
          '';
        };

        name = mkOption {
          type = types.str;
          default = "capitane-cursors";
          description = lib.mdDoc ''
            Name of the cursor theme to use for the lightdm-enso-os-greeter
          '';
        };
      };

      blur = mkOption {
        type = types.bool;
        default = false;
        description = lib.mdDoc ''
          Whether or not to enable blur
        '';
      };

      brightness = mkOption {
        type = types.int;
        default = 7;
        description = lib.mdDoc ''
          Brightness
        '';
      };

      extraConfig = mkOption {
        type = types.lines;
        default = "";
        description = lib.mdDoc ''
          Extra configuration that should be put in the greeter.conf
          configuration file
        '';
      };
    };
  };

  config = mkIf (ldmcfg.enable && cfg.enable) {
    environment.etc."lightdm/greeter.conf".source = ensoGreeterConf;

    environment.systemPackages = [
      cursors
      icons
      theme
    ];

    services.xserver.displayManager.lightdm = {
      greeter = mkDefault {
        package = pkgs.lightdm-enso-os-greeter.xgreeters;
        name = "pantheon-greeter";
      };

      greeters = {
        gtk = {
          enable = mkDefault false;
        };
      };
    };
  };
}