diff --git a/hosts/sydpc/configuration.nix b/hosts/sydpc/configuration.nix index 621005b..44e1551 100755 --- a/hosts/sydpc/configuration.nix +++ b/hosts/sydpc/configuration.nix @@ -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; diff --git a/modules/home/dank-material-shell.nix b/modules/home/dank-material-shell.nix new file mode 100644 index 0000000..069ae56 --- /dev/null +++ b/modules/home/dank-material-shell.nix @@ -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; + }; + }; +} diff --git a/modules/home/users/crumb/niri.nix b/modules/home/users/crumb/niri.nix index ff28d8c..e86c7d7 100644 --- a/modules/home/users/crumb/niri.nix +++ b/modules/home/users/crumb/niri.nix @@ -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; } ]; diff --git a/modules/home/users/msyds/dank-material-shell.nix b/modules/home/users/msyds/dank-material-shell.nix new file mode 100644 index 0000000..5ecb7d6 --- /dev/null +++ b/modules/home/users/msyds/dank-material-shell.nix @@ -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; + }; + }; + }); +} diff --git a/modules/home/users/msyds/emacs/lisp/syd/handle.el b/modules/home/users/msyds/emacs/lisp/syd/handle.el index f1d013b..1286868 100755 --- a/modules/home/users/msyds/emacs/lisp/syd/handle.el +++ b/modules/home/users/msyds/emacs/lisp/syd/handle.el @@ -5,6 +5,7 @@ (require 'syd/use-package) (require 'syd/dash) (require 'syd/general) +(require 'syd/evil) (eval-when-compile (require 'cl-lib)) diff --git a/modules/nixos/dank-material-shell.nix b/modules/nixos/dank-material-shell.nix new file mode 100644 index 0000000..28a3102 --- /dev/null +++ b/modules/nixos/dank-material-shell.nix @@ -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. + }; + }; +} diff --git a/users/msyds/avatar.jpg b/users/msyds/avatar.jpg new file mode 100644 index 0000000..5f1dad0 Binary files /dev/null and b/users/msyds/avatar.jpg differ diff --git a/users/msyds/default.nix b/users/msyds/default.nix index 1f23caa..714e05b 100644 --- a/users/msyds/default.nix +++ b/users/msyds/default.nix @@ -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; }; };