DankMaterialShell1 adds app launcher, lock screen, bar and so on in one consistent package.

dankMaterialShell = {
  url = "github:AvengeMedia/DankMaterialShell";
  inputs.nixpkgs.follows = "nixpkgs";
};
dmsPlugins = {
  url = "github:AvengeMedia/dms-plugins";
  flake = false;
};
dankCalculator = {
  url = "github:rochacbruno/DankCalculator";
  flake = false;
};
niriWindows = {
  url = "github:rochacbruno/DankNiriWindows";
  flake = false;
};
dms-emoji-launcher = {
  url = "github:devnullvoid/dms-emoji-launcher";
  flake = false;
};
flake.nix:inputs

Greeter

{ pkgs, config, ... }:
 
{
  imports = [ inputs.dankMaterialShell.nixosModules.greeter ];
  programs.dankMaterialShell.greeter = {
    enable = true;
    compositor.name = "niri";
  };
}
nixos

Configuration

inputs.dankMaterialShell.homeModules.dankMaterialShell.default
inputs.dankMaterialShell.homeModules.dankMaterialShell.niri
home-manager
{
  lib,
  pkgs,
  config,
  nixosConfig,
  ...
}:
 
{
  programs.dankMaterialShell = {
    enable = true;
    niri = {
      enableKeybinds = true;
      enableSpawn = true;
    };
    default = {
      settings = {
        acMonitorTimeout = 300;
        acLockTimeout = 305;
        lockBeforeSuspend = true;
        useAutoLocation = true;
        showWorkspaceApps = true;
        fontFamily = config.stylix.fonts.sansSerif.name;
        monoFontFamily = config.stylix.fonts.monospace.name;
        controlCenterWidgets = [
          {
            id = "nightMode";
            enabled = true;
            width = 25;
          }
          {
            id = "darkMode";
            enabled = true;
            width = 25;
          }
          {
            id = "idleInhibitor";
            enabled = true;
            width = 25;
          }
          {
            id = "doNotDisturb";
            enabled = true;
            width = 25;
          }
          {
            id = "wifi";
            enabled = true;
            width = 50;
          }
          {
            id = "bluetooth";
            enabled = true;
            width = 50;
          }
          {
            id = "audioOutput";
            enabled = true;
            width = 50;
          }
          {
            id = "audioInput";
            enabled = true;
            width = 50;
          }
          {
            id = "volumeSlider";
            enabled = true;
            width = 50;
          }
          {
            id = "brightnessSlider";
            enabled = true;
            width = 50;
          }
        ];
      };
      session = {
        wallpaperPath = config.stylix.image;
      };
    };
    plugins = {
      calculator.src = inputs.dankCalculator;
      dankBatteryAlerts.src = "${inputs.dmsPlugins}/DankBatteryAlerts";
      dankPomodoroTimer.src = "${inputs.dmsPlugins}/DankPomodoroTimer";
      emojiLauncher.src = inputs.dms-emoji-launcher;
      niriWindows.src = inputs.niriWindows;
    };
  };
  xdg.configFile."DankMaterialShell/plugin_settings.json".source =
    (pkgs.formats.json { }).generate "plugin_settings.json"
      {
        calculator.enabled = true;
        dankBatteryAlerts.enabled = true;
        dankPomodoroTimer.enabled = true;
        emojiLauncher.enabled = true;
        niriWindows.enabled = true;
      };
}
home-manager

Footnotes

  1. https://github.com/AvengeMedia/DankMaterialShell