feat(dms): dms

This commit is contained in:
2026-01-19 11:03:04 -07:00
parent d4b1621d04
commit 944175c655
8 changed files with 628 additions and 131 deletions

View File

@@ -21,9 +21,10 @@
stylix.enable = true;
qemu.enable = true;
flatpak.enable = true;
gdm.enable = true;
# gdm.enable = true;
openssh.enable = true;
sydpkgs.overlay.enable = true;
dank-material-shell.enable = true;
steam = {
enable = true;

View File

@@ -0,0 +1,25 @@
{ config, lib, pkgs, ... }:
let
cfg = config.sydnix.dank-material-shell;
json = pkgs.formats.json {};
in {
options.sydnix.dank-material-shell = {
enable = lib.mkEnableOption "DMS";
settings = lib.mkOption {
type = json.type;
default = { };
description = ''
DankMaterialShell configuration settings as an attribute set,
to be written to ~/.config/DankMaterialShell/settings.json.
'';
};
};
config = lib.mkIf cfg.enable {
xdg.configFile = {
"DankMaterialShell/settings.json".source =
json.generate "settings.json" cfg.settings;
};
};
}

View File

@@ -17,24 +17,32 @@ in {
xwayland-satellite.enable =
lib.mkEnableOption "xwayland-satellite starting with Niri"
// { default = true; };
polkit.enable =
lib.mkEnableOption "Niri/Gnome Polkit" // { default = true; };
swaylock.enable =
lib.mkEnableOption "Niri Swaylock" // { default = true; };
portal.enable =
lib.mkEnableOption "Niri Portal" // { default = true; };
gammastep.enable =
lib.mkEnableOption "Niri gammastep" // { default = true; };
swaync.enable =
lib.mkEnableOption "Niri Sway Notification Center" // { default = true; };
binds = lib.mkOption {
type = lib.types.anything;
default = {};
};
};
config = lib.mkIf cfg.enable {
stylix.targets.swaylock.enable = true;
services.polkit-gnome.enable = true;
# File-picker.
home.packages = [ pkgs.nautilus ];
# Enable the XDG portal, an interface for programs to request
# permissions/resources. This is necessary to screen-cast on
# Wayland/Pipewire.
#
# See https://github.com/YaLTeR/niri/wiki/Important-Software#portals.
# Niri's NixOS module automatically brings in xdg-desktop-portal-gnome and
# gnome-keyring.
xdg.portal = {
# See
# https://github.com/YaLTeR/niri/wiki/Important-Software#portals.
# Niri's NixOS module automatically brings in
# xdg-desktop-portal-gnome and gnome-keyring.
xdg.portal = lib.mkIf cfg.portal.enable {
enable = true;
xdgOpenUsePortal = true;
@@ -44,9 +52,10 @@ in {
];
# Use xdg-desktop-portal-gtk by default, but fallback to
# xdg-desktop-portal-gnome for screenshots and screen-casts, two important
# features unsupported by the GTK implementation. See implementations and
# their supported interfaces at
# xdg-desktop-portal-gnome for screenshots and screen-casts,
# two important features unsupported by the GTK
# implementation. See implementations and their supported
# interfaces at
# https://wiki.archlinux.org/title/XDG_Desktop_Portal.
config.niri = {
default = [ "gtk" ];
@@ -55,6 +64,13 @@ in {
};
};
stylix.targets.swaylock.enable = cfg.swaylock.enable;
services.polkit-gnome.enable = cfg.polkit.enable;
# File-picker.
home.packages = [ pkgs.nautilus ];
systemd.user.services.xwayland-satellite =
lib.mkIf cfg.xwayland-satellite.enable {
Service.ExecStart =
@@ -68,28 +84,38 @@ in {
settings = {
# Activates some Nixpkgs patches to help run Electron applications under
# Wayland.
environment."NIXOS_OZONE_WL" = "1";
environment."DISPLAY" = ":0";
environment = {
NIXOS_OZONE_WL = "1";
DISPLAY = ":0";
XDG_CURRENT_DESKTOP = "niri";
QT_QPA_PLATFORM = "wayland";
ELECTRON_OZONE_PLATFORM_HINT = "auto";
QT_QPA_PLATFORMTHEME = "gtk3";
QT_QPA_PLATFORMTHEME_QT6 = "gtk3";
};
spawn-at-startup =
lib.optional cfg.swaync.enable
{ command = [ "${pkgs.swaynotificationcenter}/bin/swaync" ]; }
++ lib.optional cfg.gammastep.enable
{ command = [ "${pkgs.gammastep}/bin/gammastep" "-o" "-O" "4000k"
"-b" "0.9:0.9" "-l" "0:0"]; }
++ lib.optional
(! builtins.isNull cfg.wallpaper)
{ command = [ "${pkgs.wbg}/bin/wbg" "${cfg.wallpaper}" ]; };
spawn-at-startup =
[{ command = [ "${pkgs.swaynotificationcenter}/bin/swaync" ]; }
{ command = [ "${pkgs.gammastep}/bin/gammastep" "-o" "-O" "4000k"
"-b" "0.9:0.9" "-l" "0:0"]; }]
++ lib.optional
(! builtins.isNull cfg.wallpaper)
{ command = [ "${pkgs.wbg}/bin/wbg" "${cfg.wallpaper}" ]; };
input = {
keyboard.xkb = {
layout = "us";
options = "ctrl:swapcaps,compose:menu,compose:ralt";
layout = "us";
options = "ctrl:swapcaps,compose:menu,compose:ralt";
};
mouse = {
accel-speed = -0.5;
accel-profile = "flat";
accel-speed = -0.5;
accel-profile = "flat";
};
touchpad = {
# Disable while typing.
dwt = true;
# Disable while typing.
dwt = true;
};
focus-follows-mouse.enable = true;
};
@@ -112,37 +138,37 @@ in {
gaps = 8;
center-focused-column = "never";
preset-column-widths = [
{ proportion = 1.0 / 3.0; }
{ proportion = 1.0 / 2.0; }
{ proportion = 2.0 / 3.0; }
{ proportion = 1.0 / 3.0; }
{ proportion = 1.0 / 2.0; }
{ proportion = 2.0 / 3.0; }
];
default-column-width.proportion = 0.5;
focus-ring = {
enable = false;
width = 2;
enable = false;
width = 2;
};
border = {
enable = true;
width = 2;
# Override Niri's Stylix integration. Default uses Crystal Blue
# (from the Kanagawa palette); we override it with Old White.
active.color = config.lib.stylix.colors.withHashtag.base06;
enable = true;
width = 2;
# Override Niri's Stylix integration. Default uses Crystal Blue
# (from the Kanagawa palette); we override it with Old White.
active.color = config.lib.stylix.colors.withHashtag.base06;
};
shadow = {
enable = true;
softness = 30;
spread = 5;
offset.x = 5;
offset.y = 5;
enable = true;
softness = 30;
spread = 5;
offset.x = 5;
offset.y = 5;
};
tab-indicator = {
place-within-column = true;
position = "top";
# active.color = config.lib.stylix.colors.withHashtag.blue;
inactive.color = config.lib.stylix.colors.withHashtag.base01;
width = 8;
corner-radius = 2.0;
gaps-between-tabs = 10;
place-within-column = true;
position = "top";
# active.color = config.lib.stylix.colors.withHashtag.blue;
inactive.color = config.lib.stylix.colors.withHashtag.base01;
width = 8;
corner-radius = 2.0;
gaps-between-tabs = 10;
};
};
prefer-no-csd = true;
@@ -153,89 +179,89 @@ in {
};
window-rules = [
{ # Set red borders to indicate that a window is being captured.
matches = [
{ is-window-cast-target = true; }
];
focus-ring = {
enable = true;
width = 2;
active.color = "#f38ba8";
inactive.color = "#7d0d2d";
};
border = {
width = 2;
inactive.color = "#7d0d2d";
active.color = "#7d0d2d";
};
shadow = {
color = "#7d0d2d70";
softness = 30;
spread = 10;
offset.x = 0;
offset.y = 0;
};
tab-indicator = {
active.color = "#f38ba8";
inactive.color = "#7d0d2d";
};
matches = [
{ is-window-cast-target = true; }
];
focus-ring = {
enable = true;
width = 2;
active.color = "#f38ba8";
inactive.color = "#7d0d2d";
};
border = {
width = 2;
inactive.color = "#7d0d2d";
active.color = "#7d0d2d";
};
shadow = {
color = "#7d0d2d70";
softness = 30;
spread = 10;
offset.x = 0;
offset.y = 0;
};
tab-indicator = {
active.color = "#f38ba8";
inactive.color = "#7d0d2d";
};
}
{ # Block private DMs from screencast...
matches = [
{ title = "Element.*\\|"; }
{ title = "Discord.*@"; }
];
excludes = [
# ... except when explicitly targeting the window.
{ is-window-cast-target = true; }
];
block-out-from = "screen-capture";
matches = [
{ title = "Element.*\\|"; }
{ title = "Discord.*@"; }
];
excludes = [
# ... except when explicitly targeting the window.
{ is-window-cast-target = true; }
];
block-out-from = "screen-capture";
}
{
# This regular expression is intentionally made as specific as
# possible, since this is the default config, and we want no false
# positives. You can get away with just app-id="wezterm" if you
# want.
matches = [
{ app-id = "^org\\.wezfurlong\\.wezterm$"; }
];
default-column-width = {};
# This regular expression is intentionally made as specific as
# possible, since this is the default config, and we want no false
# positives. You can get away with just app-id="wezterm" if you
# want.
matches = [
{ app-id = "^org\\.wezfurlong\\.wezterm$"; }
];
default-column-width = {};
}
{
# Floating windows.
matches = [
# Open the Firefox picture-in-picture player as floating by default.
{ app-id = "firefox$"; title = "^Picture-in-Picture$"; }
# Gimp pop-ups.
{
# Floating windows.
matches = [
# Open the Firefox picture-in-picture player as floating by default.
{ app-id = "firefox$"; title = "^Picture-in-Picture$"; }
# Gimp pop-ups.
{
app-id = "^Gimp$";
title = "^(New Layer|Change Foreground Color|Save Image)$";
}
];
open-floating = true;
}
];
open-floating = true;
}
{ # Start with low width.
matches = [
{ app-id = "com\\.mitchellh\\.ghostty"; }
];
default-column-width.proportion = 1.0 / 3.0;
matches = [
{ app-id = "com\\.mitchellh\\.ghostty"; }
];
default-column-width.proportion = 1.0 / 3.0;
}
{
matches = [
{ app-id = "^emacs$"; }
];
default-column-width.fixed = 640;
matches = [
{ app-id = "^emacs$"; }
];
default-column-width.fixed = 640;
}
{
# Enable rounded corners for all windows.
geometry-corner-radius =
let r = 8.0;
in {
# Enable rounded corners for all windows.
geometry-corner-radius =
let r = 8.0;
in {
bottom-left = r;
top-left = r;
bottom-right = r;
top-right = r;
};
clip-to-geometry = true;
};
clip-to-geometry = true;
}
];
binds = {
@@ -273,11 +299,9 @@ in {
"Print".action.screenshot-screen = [];
"Mod+Print".action.screenshot-window = [];
"Mod+X".action.spawn = [
"emacsclient-or-emacs"
"-ce"
"(eshell t)"
];
"Mod+X".action.spawn = ["ghostty"];
"Mod+E".action.spawn = ["emacsclient" "-c"];
"Mod+O".action.toggle-overview = [];
"Mod+Shift+F".action.toggle-window-floating = [];
"Mod+F".action.switch-focus-between-floating-and-tiling = [];
@@ -296,9 +320,9 @@ in {
"Mod+Shift+L".action.move-column-right = [];
"XF86MonBrightnessDown".action.spawn =
[(lib.getExe pkgs.brightnessctl) "s" "5%-"];
[(lib.getExe pkgs.brightnessctl) "s" "5%-"];
"XF86MonBrightnessUp".action.spawn =
[(lib.getExe pkgs.brightnessctl) "s" "+5%"];
[(lib.getExe pkgs.brightnessctl) "s" "+5%"];
"Mod+1".action.focus-workspace = [1];
"Mod+2".action.focus-workspace = [2];
@@ -323,16 +347,16 @@ in {
"Mod+Ctrl+R".action.reset-window-height = [];
"XF86AudioRaiseVolume".action.spawn =
["wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.05+"];
["wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.05+"];
"XF86AudioLowerVolume".action.spawn =
["wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.05-"];
};
["wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.05-"];
} // cfg.binds;
layer-rules = [
# Don't move wallpaper with workspace.
{
matches = [{ namespace = "^wallpaper$"; }];
place-within-backdrop = true;
matches = [{ namespace = "^wallpaper$"; }];
place-within-backdrop = true;
}
];

View File

@@ -0,0 +1,421 @@
{ config, lib, pkgs, ... }:
let cfg = config.sydnix.users.msyds.dank-material-shell;
in {
options.sydnix.users.msyds.dank-material-shell = {
enable = lib.mkEnableOption "Dank Material Shell";
};
config = lib.mkIf cfg.enable
(let
theme = {
dark = with config.lib.stylix.colors.withHashtag; {
name = "Stylix generatated dark theme";
primary = base0D;
primaryText = base00;
primaryContainer = base0C;
secondary = base0E;
surface = base01;
surfaceText = base05;
surfaceVariant = base02;
surfaceVariantText = base04;
surfaceTint = base0D;
background = base00;
backgroundText = base05;
outline = base03;
surfaceContainer = base01;
surfaceContainerHigh = base02;
surfaceContainerHighest = base03;
error = base08;
warning = base0A;
info = base0C;
} // {
primary = base06;
surfaceContainerHigh = "#2a2a37"; # Sunk Ink 2
surfaceContainerHighest = base05;
};
light = with config.lib.stylix.colors.withHashtag; {
name = "Stylix generatated light theme";
primary = base0D;
primaryText = base07;
primaryContainer = base0C;
secondary = base0E;
surface = base06;
surfaceText = base01;
surfaceVariant = base07;
surfaceVariantText = base02;
surfaceTint = base0D;
background = base07;
backgroundText = base00;
outline = base04;
surfaceContainer = base06;
surfaceContainerHigh = base05;
surfaceContainerHighest = base04;
error = base08;
warning = base0A;
info = base0C;
};
};
in {
programs.niri.settings = {
# Open DMS windows as floating by default
window-rules = [
{
matches = [{app-id = "#org.quickshell$";}];
open-floating = true;
}
];
# Blur wallpaper when overview is open.
layer-rules = [
{
matches = [{ namespace = "dms:blurwallpaper"; }];
place-within-backdrop = true;
}
];
spawn-at-startup = [
{
command = [
(lib.getExe' pkgs.wl-clipboard "wl-paste")
"--watch" "cliphist" "store"
];
}
];
};
sydnix.users.crumb.niri = {
polkit.enable = false;
swaylock.enable = false;
portal.enable = false;
swaync.enable = false;
gammastep.enable = false;
binds =
let dms-ipc = config.lib.niri.actions.spawn "dms" "ipc";
in {
"Mod+D" = {
action = dms-ipc "spotlight" "toggle";
hotkey-overlay.title = "Toggle Application Launcher";
};
"Mod+P" = {
action = dms-ipc "notepad" "toggle";
hotkey-overlay.title = "Toggle Notepad";
};
"Mod+Ctrl+L" = {
action = dms-ipc "lock" "lock";
hotkey-overlay.title = "Toggle Lock Screen";
};
"XF86AudioRaiseVolume" = {
allow-when-locked = true;
action = dms-ipc "audio" "increment" "3";
};
"XF86AudioLowerVolume" = {
allow-when-locked = true;
action = dms-ipc "audio" "decrement" "3";
};
"XF86AudioMute" = {
allow-when-locked = true;
action = dms-ipc "audio" "mute";
};
"XF86AudioMicMute" = {
allow-when-locked = true;
action = dms-ipc "audio" "micmute";
};
"XF86MonBrightnessUp" = {
allow-when-locked = true;
action = dms-ipc "brightness" "increment" "5" "";
};
"XF86MonBrightnessDown" = {
allow-when-locked = true;
action = dms-ipc "brightness" "decrement" "5" "";
};
};
};
sydnix.dank-material-shell = {
enable = true;
settings = {
theme = "dark";
currentThemeName = "custom";
customThemeFile =
pkgs.writeText
"dankMaterialShell-stylix-theme.json"
(builtins.toJSON theme);
popupTransparency = 1;
dockTransparency = 1;
use24HourClock = true;
showSeconds = false;
useFahrenheit = false;
nightModeEnabled = true;
animationSpeed = 1;
customAnimationDuration = 500;
wallpaperFillMode = "Fill";
blurredWallpaperLayer = false;
blurWallpaperOnOverview = true;
showLauncherButton = true;
showWorkspaceSwitcher = true;
showFocusedWindow = true;
showWeather = false;
showMusic = true;
showClipboard = true;
showCpuUsage = true;
showMemUsage = true;
showCpuTemp = true;
showGpuTemp = true;
selectedGpuIndex = 0;
enabledGpuPciIds = [];
showSystemTray = true;
showClock = true;
showNotificationButton = true;
showBattery = true;
showControlCenterButton = true;
showCapsLockIndicator = true;
controlCenterShowNetworkIcon = true;
controlCenterShowBluetoothIcon = true;
controlCenterShowAudioIcon = true;
controlCenterShowVpnIcon = true;
controlCenterShowBrightnessIcon = false;
controlCenterShowMicIcon = false;
controlCenterShowBatteryIcon = false;
controlCenterShowPrinterIcon = false;
showPrivacyButton = true;
privacyShowMicIcon = false;
privacyShowCameraIcon = false;
privacyShowScreenShareIcon = false;
controlCenterWidgets = [
{
id = "volumeSlider";
enabled = true;
width = 50;
}
{
id = "brightnessSlider";
enabled = true;
width = 50;
}
{
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 = "nightMode";
enabled = true;
width = 50;
}
{
id = "darkMode";
enabled = true;
width = 50;
}
];
showWorkspaceIndex = false;
showWorkspacePadding = false;
workspaceScrolling = false;
showWorkspaceApps = false;
maxWorkspaceIcons = 3;
workspacesPerMonitor = true;
showOccupiedWorkspacesOnly = false;
dwlShowAllTags = false;
workspaceNameIcons = {};
waveProgressEnabled = true;
scrollTitleEnabled = true;
clockCompactMode = false;
focusedWindowCompactMode = false;
runningAppsCompactMode = true;
keyboardLayoutNameCompactMode = false;
runningAppsCurrentWorkspace = false;
runningAppsGroupByApp = false;
centeringMode = "index";
clockDateFormat = "";
lockDateFormat = "";
mediaSize = 1;
appLauncherViewMode = "list";
spotlightModalViewMode = "list";
sortAppsAlphabetically = false;
appLauncherGridColumns = 4;
spotlightCloseNiriOverview = true;
niriOverviewOverlayEnabled = true;
weatherLocation = "Arvada, Colorado";
weatherCoordinates = "39.8005505,-105.0811573";
useAutoLocation = false;
weatherEnabled = true;
networkPreference = "auto";
vpnLastConnected = "";
iconTheme = "System Default";
launcherLogoMode = "apps";
launcherLogoCustomPath = "";
launcherLogoColorOverride = "";
launcherLogoColorInvertOnMode = false;
launcherLogoBrightness = 0.5;
launcherLogoContrast = 1;
launcherLogoSizeOffset = 0;
fontFamily = "Inter Variable";
monoFontFamily = "Fira Code";
fontWeight = 400;
fontScale = 1;
notepadUseMonospace = true;
notepadFontFamily = "";
notepadFontSize = 14;
notepadShowLineNumbers = false;
notepadTransparencyOverride = -1;
notepadLastCustomTransparency = 0.7;
soundsEnabled = true;
useSystemSoundTheme = false;
soundNewNotification = true;
soundVolumeChanged = true;
soundPluggedIn = true;
acMonitorTimeout = 0;
acLockTimeout = 0;
acSuspendTimeout = 0;
acSuspendBehavior = 0;
acProfileName = "";
batteryMonitorTimeout = 0;
batteryLockTimeout = 0;
batterySuspendTimeout = 0;
batterySuspendBehavior = 0;
batteryProfileName = "";
lockBeforeSuspend = false;
loginctlLockIntegration = true;
fadeToLockEnabled = false;
fadeToLockGracePeriod = 5;
launchPrefix = "";
brightnessDevicePins = {};
wifiNetworkPins = {};
bluetoothDevicePins = {};
audioInputDevicePins.preferredInput =
"alsa_input.usb-Generic_Blue_Microphones_2041BAB03EZ8-00.analog-stereo";
audioOutputDevicePins.preferredOutput =
"alsa_output.usb-Jieli_Technology_CA-2890_USB_Speaker_Bar_4250315A3537380E-00.analog-stereo";
gtkThemingEnabled = false;
qtThemingEnabled = false;
syncModeWithPortal = true;
terminalsAlwaysDark = false;
showDock = false;
dockAutoHide = false;
dockGroupByApp = false;
dockOpenOnOverview = false;
dockPosition = 1;
dockSpacing = 4;
dockBottomGap = 0;
dockMargin = 0;
dockIconSize = 40;
dockIndicatorStyle = "circle";
dockBorderEnabled = false;
dockBorderColor = "surfaceText";
dockBorderOpacity = 1;
dockBorderThickness = 1;
notificationOverlayEnabled = false;
modalDarkenBackground = true;
lockScreenShowPowerActions = true;
enableFprint = false;
maxFprintTries = 15;
lockScreenActiveMonitor = "all";
lockScreenInactiveColor = "#000000";
hideBrightnessSlider = false;
notificationTimeoutLow = 5000;
notificationTimeoutNormal = 5000;
notificationTimeoutCritical = 0;
notificationPopupPosition = 0;
osdAlwaysShowValue = false;
osdPosition = 5;
osdVolumeEnabled = true;
osdMediaVolumeEnabled = true;
osdBrightnessEnabled = true;
osdIdleInhibitorEnabled = true;
osdMicMuteEnabled = true;
osdCapsLockEnabled = true;
osdPowerProfileEnabled = false;
osdAudioOutputEnabled = true;
powerActionConfirm = true;
powerActionHoldDuration = 0.5;
powerMenuActions = [
"reboot"
"logout"
"poweroff"
"lock"
"suspend"
"restart"
];
powerMenuDefaultAction = "logout";
powerMenuGridLayout = false;
customPowerActionLock = "";
customPowerActionLogout = "";
customPowerActionSuspend = "";
customPowerActionHibernate = "";
customPowerActionReboot = "";
customPowerActionPowerOff = "";
updaterUseCustomCommand = false;
updaterCustomCommand = "";
updaterTerminalAdditionalParams = "";
displayNameMode = "system";
screenPreferences.wallpaper = [];
showOnLastDisplay = {};
barConfigs = [
{
id = "default";
name = "Main Bar";
enabled = true;
position = 2;
screenPreferences = [
"all"
];
showOnLastDisplay = true;
leftWidgets = [
"launcherButton"
"workspaceSwitcher"
"focusedWindow"
];
centerWidgets = [
"music"
"clock"
"weather"
];
rightWidgets = [
"systemTray"
"clipboard"
"cpuUsage"
"memUsage"
"notificationButton"
"battery"
"controlCenterButton"
];
spacing = 4;
innerPadding = 4;
bottomGap = 0;
transparency = 1;
widgetTransparency = 1;
squareCorners = false;
noBackground = false;
gothCornersEnabled = false;
gothCornerRadiusOverride = false;
gothCornerRadiusValue = 12;
borderEnabled = false;
borderColor = "surfaceText";
borderOpacity = 1;
borderThickness = 1;
fontScale = 1;
autoHide = false;
autoHideDelay = 250;
openOnOverview = false;
visible = true;
popupGapsAuto = true;
popupGapsManual = 4;
}
];
configVersion = 2;
};
};
});
}

View File

@@ -5,6 +5,7 @@
(require 'syd/use-package)
(require 'syd/dash)
(require 'syd/general)
(require 'syd/evil)
(eval-when-compile (require 'cl-lib))

View File

@@ -0,0 +1,21 @@
{ config, lib, pkgs, ... }:
let cfg = config.sydnix.dank-material-shell;
in {
options.sydnix.dank-material-shell = {
enable = lib.mkEnableOption "Dank Material Shell";
};
config = lib.mkIf cfg.enable {
programs.dms-shell = {
enable = true;
enableDynamicTheming = false;
};
services.displayManager.dms-greeter = {
enable = true;
compositor.name = assert config.sydnix.niri.enable; "niri";
configHome = "/home/msyds"; # Really stupid.
};
};
}

BIN
users/msyds/avatar.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 442 KiB

View File

@@ -3,7 +3,7 @@
isNormalUser = true;
# TODO: Don't hard-code `persist`. Use
# config.sydnix.impermanence.persistGroupName.
extraGroups = [ "wheel" "persist" "input" "dots" ];
extraGroups = [ "wheel" "persist" "input" "dots" "greeter" ];
initialHashedPassword =
"$y$j9T$4pyDiPlhnN4UarQoY7Sn70$URZQKPJ3yU4WoQFHRhzm4uF3bM4U7OVYem3oPioykMC";
@@ -16,6 +16,8 @@
config.lib.file.mkOutOfStoreSymlink
"/persist/private-keys/ssh/msyds@sydpc";
home.file.".face".source = ./avatar.jpg;
home.file.".ssh/id_ed25519.pub".source =
../../public-keys/ssh/${"msyds@sydpc.pub"};
@@ -27,6 +29,7 @@
slippi.enable = true;
desktop-environment.enable = true;
clojure.enable = true;
capitaine-cursors.enable = true;
sops = {
enable = true;
keyFile = "/persist/private-keys/age/crumb";
@@ -41,7 +44,7 @@
niri.enable = true;
firefox.enable = true;
ghostty.enable = true;
waybar.enable = true;
# waybar.enable = true;
tf2.enable = true;
fcitx5.enable = true;
anki.enable = true;
@@ -53,6 +56,7 @@
impermanence.enable = true;
syncthing.enable = true;
fonts.enable = true;
dank-material-shell.enable = true;
};
};