558 lines
15 KiB
Nix
558 lines
15 KiB
Nix
{
|
|
config,
|
|
pkgs,
|
|
flakes,
|
|
lib,
|
|
...
|
|
}:
|
|
let
|
|
noctalia =
|
|
cmd:
|
|
[
|
|
"${pkgs.lib.getExe' flakes.noctalia.packages.${pkgs.system}.default "noctalia-shell"}"
|
|
"ipc"
|
|
"call"
|
|
]
|
|
++ (pkgs.lib.splitString " " cmd);
|
|
|
|
wallpaper = ("${pkgs.custom.raw-data}/pacific.png");
|
|
matugenSchemeType = "scheme-tonal-spot";
|
|
in
|
|
{
|
|
home.packages = with pkgs; [
|
|
matugen
|
|
glib
|
|
dconf
|
|
gsettings-desktop-schemas
|
|
xwayland-satellite
|
|
# gtk
|
|
nwg-look
|
|
# qt config tool
|
|
kdePackages.qt6ct
|
|
|
|
fira
|
|
jetbrains-mono
|
|
fira-mono
|
|
noto-fonts
|
|
];
|
|
|
|
home.sessionVariables = {
|
|
QT_QPA_PLATFORMTHEME = "qt6ct";
|
|
XCURSOR_THEME = "Adwaita";
|
|
XCURSOR_SIZE = "10";
|
|
};
|
|
|
|
programs.niri.settings = {
|
|
input = {
|
|
keyboard = {
|
|
xkb = {
|
|
layout = "us";
|
|
options = "grp:win_space_toggle,compose:ralt";
|
|
};
|
|
numlock = true;
|
|
};
|
|
|
|
mouse = {
|
|
accel-speed = 0.5;
|
|
};
|
|
|
|
touchpad = {
|
|
dwt = true;
|
|
tap = true;
|
|
tap-button-map = "left-right-middle";
|
|
click-method = "clickfinger";
|
|
natural-scroll = false;
|
|
};
|
|
};
|
|
|
|
debug = {
|
|
render-drm-device = "/dev/dri/renderD128";
|
|
};
|
|
|
|
cursor = {
|
|
theme = "Adwaita";
|
|
size = 10;
|
|
};
|
|
|
|
gestures.hot-corners.enable = false;
|
|
|
|
layout = {
|
|
gaps = 5;
|
|
center-focused-column = "never";
|
|
|
|
preset-column-widths = [
|
|
{ proportion = 0.33333; }
|
|
{ proportion = 0.5; }
|
|
{ proportion = 0.66667; }
|
|
{ proportion = 1.0; }
|
|
];
|
|
|
|
default-column-width = {
|
|
proportion = 0.5;
|
|
};
|
|
|
|
shadow = {
|
|
softness = 20;
|
|
spread = 5;
|
|
offset = {
|
|
x = 0;
|
|
y = 5;
|
|
};
|
|
};
|
|
|
|
focus-ring = {
|
|
width = 1;
|
|
active.color = "#${config.programs.matugen.theme.colors.primary.default}";
|
|
inactive.color = "#${config.programs.matugen.theme.colors.surface.default}";
|
|
urgent.color = "#${config.programs.matugen.theme.colors.error.default}";
|
|
};
|
|
|
|
border = {
|
|
active.color = "#${config.programs.matugen.theme.colors.primary.default}";
|
|
inactive.color = "#${config.programs.matugen.theme.colors.surface.default}";
|
|
urgent.color = "#${config.programs.matugen.theme.colors.error.default}";
|
|
};
|
|
|
|
shadow = {
|
|
color = "#${config.programs.matugen.theme.colors.shadow.default}70";
|
|
};
|
|
|
|
tab-indicator = {
|
|
active.color = "#${config.programs.matugen.theme.colors.primary.default}";
|
|
inactive.color = "#${config.programs.matugen.theme.colors.primary_container.default}";
|
|
urgent.color = "#${config.programs.matugen.theme.colors.error.default}";
|
|
};
|
|
|
|
insert-hint = {
|
|
display.color = "#${config.programs.matugen.theme.colors.primary.default}80";
|
|
};
|
|
};
|
|
|
|
hotkey-overlay.skip-at-startup = true;
|
|
|
|
screenshot-path = "~/Documents/personal/pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png";
|
|
|
|
workspaces."01-browser" = {
|
|
name = "browser";
|
|
};
|
|
workspaces."02-programming" = {
|
|
name = "programming";
|
|
};
|
|
workspaces."03-chat" = {
|
|
name = "chat";
|
|
};
|
|
|
|
window-rules = [
|
|
{
|
|
matches = [ { title = "Extension: (Bitwarden Password Manager).*"; } ];
|
|
open-floating = true;
|
|
open-focused = true;
|
|
block-out-from = "screen-capture";
|
|
}
|
|
|
|
{
|
|
matches = [ { app-id = "firefox"; } ];
|
|
open-on-workspace = "browser";
|
|
}
|
|
|
|
{
|
|
matches = [
|
|
{
|
|
app-id = "org.gnome.Nautilus";
|
|
title = "Open Files";
|
|
}
|
|
{
|
|
app-id = "steam";
|
|
title = "Steam Settings";
|
|
}
|
|
];
|
|
open-floating = true;
|
|
}
|
|
|
|
{
|
|
matches = [
|
|
{ app-id = "discord"; }
|
|
{ app-id = "org.element.desktop"; } # TODO
|
|
{ app-id = "signal"; } # TODO
|
|
];
|
|
open-on-workspace = "chat";
|
|
}
|
|
|
|
{
|
|
matches = [
|
|
{ app-id = "dev.zed.Zed"; }
|
|
];
|
|
open-on-workspace = "programming";
|
|
}
|
|
|
|
{
|
|
geometry-corner-radius = {
|
|
top-left = 8.0;
|
|
top-right = 8.0;
|
|
bottom-right = 8.0;
|
|
bottom-left = 8.0;
|
|
};
|
|
clip-to-geometry = true;
|
|
}
|
|
];
|
|
|
|
spawn-at-startup = [
|
|
{ argv = [ "firefox" ]; }
|
|
{ argv = [ "discord" ]; }
|
|
{ argv = [ "signal-desktop" ]; }
|
|
{ argv = [ "zeditor" ]; }
|
|
{
|
|
argv = [ "${pkgs.lib.getExe' flakes.noctalia.packages.${pkgs.system}.default "noctalia-shell"}" ];
|
|
}
|
|
];
|
|
|
|
animations = { };
|
|
|
|
binds = {
|
|
"Ctrl+Alt+Delete" = {
|
|
hotkey-overlay.title = "Power menu";
|
|
action.spawn = noctalia "sessionMenu toggle";
|
|
};
|
|
|
|
"Mod+O" = {
|
|
hotkey-overlay.title = "Run an Application";
|
|
action.spawn = noctalia "launcher toggle";
|
|
};
|
|
|
|
"Mod+L" = {
|
|
hotkey-overlay.title = "Lock the Screen";
|
|
action.spawn = noctalia "lockScreen lock";
|
|
};
|
|
|
|
"Mod+Shift+Slash".action.show-hotkey-overlay = { };
|
|
|
|
"Mod+Return" = {
|
|
hotkey-overlay.title = "Open a Terminal";
|
|
action.spawn = "kitty";
|
|
};
|
|
|
|
"XF86AudioRaiseVolume" = {
|
|
allow-when-locked = true;
|
|
action.spawn-sh = "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1+";
|
|
};
|
|
"XF86AudioLowerVolume" = {
|
|
allow-when-locked = true;
|
|
action.spawn-sh = "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1-";
|
|
};
|
|
"XF86AudioMute" = {
|
|
allow-when-locked = true;
|
|
action.spawn-sh = "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle";
|
|
};
|
|
"XF86AudioMicMute" = {
|
|
allow-when-locked = true;
|
|
action.spawn-sh = "wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle";
|
|
};
|
|
"XF86AudioPlay" = {
|
|
allow-when-locked = true;
|
|
action.spawn-sh = "playerctl play-pause";
|
|
};
|
|
"XF86AudioStop" = {
|
|
allow-when-locked = true;
|
|
action.spawn-sh = "playerctl stop";
|
|
};
|
|
"XF86AudioPrev" = {
|
|
allow-when-locked = true;
|
|
action.spawn-sh = "playerctl previous";
|
|
};
|
|
"XF86AudioNext" = {
|
|
allow-when-locked = true;
|
|
action.spawn-sh = "playerctl next";
|
|
};
|
|
"Mod+Period" = {
|
|
allow-when-locked = true;
|
|
action.spawn-sh = "playerctl previous";
|
|
};
|
|
"Mod+Comma" = {
|
|
allow-when-locked = true;
|
|
action.spawn-sh = "playerctl next";
|
|
};
|
|
"Mod+Slash" = {
|
|
allow-when-locked = true;
|
|
action.spawn-sh = "playerctl next";
|
|
};
|
|
|
|
# TODO
|
|
"XF86MonBrightnessUp" = {
|
|
allow-when-locked = true;
|
|
action.spawn = [
|
|
"brightnessctl"
|
|
"--device=amdgpu_bl1"
|
|
"--class=backlight"
|
|
"set"
|
|
"+10%"
|
|
];
|
|
};
|
|
"XF86MonBrightnessDown" = {
|
|
allow-when-locked = true;
|
|
action.spawn = [
|
|
"brightnessctl"
|
|
"--device=amdgpu_bl1"
|
|
"--class=backlight"
|
|
"set"
|
|
"10%-"
|
|
];
|
|
};
|
|
|
|
"Mod+Q" = {
|
|
repeat = false;
|
|
action.close-window = { };
|
|
};
|
|
|
|
"Mod+Left".action.focus-column-left = { };
|
|
"Mod+Down".action.focus-window-or-workspace-down = { };
|
|
"Mod+Up".action.focus-window-or-workspace-up = { };
|
|
"Mod+Right".action.focus-column-right = { };
|
|
|
|
"Mod+Shift+Left".action.move-column-left = { };
|
|
"Mod+Shift+Down".action.move-window-down-or-to-workspace-down = { };
|
|
"Mod+Shift+Up".action.move-window-up-or-to-workspace-up = { };
|
|
"Mod+Shift+Right".action.move-column-right = { };
|
|
|
|
"Mod+Home".action.focus-column-first = { };
|
|
"Mod+End".action.focus-column-last = { };
|
|
"Mod+Shift+Home".action.move-column-to-first = { };
|
|
"Mod+Shift+End".action.move-column-to-last = { };
|
|
|
|
"Mod+Ctrl+Left".action.focus-monitor-left = { };
|
|
"Mod+Ctrl+Down".action.focus-monitor-down = { };
|
|
"Mod+Ctrl+Up".action.focus-monitor-up = { };
|
|
"Mod+Ctrl+Right".action.focus-monitor-right = { };
|
|
|
|
"Mod+Shift+Ctrl+Left".action.move-column-to-monitor-left = { };
|
|
"Mod+Shift+Ctrl+Down".action.move-column-to-monitor-down = { };
|
|
"Mod+Shift+Ctrl+Up".action.move-column-to-monitor-up = { };
|
|
"Mod+Shift+Ctrl+Right".action.move-column-to-monitor-right = { };
|
|
|
|
"Mod+1".action.focus-workspace = 1;
|
|
"Mod+2".action.focus-workspace = 2;
|
|
"Mod+3".action.focus-workspace = 3;
|
|
"Mod+4".action.focus-workspace = 4;
|
|
"Mod+5".action.focus-workspace = 5;
|
|
"Mod+6".action.focus-workspace = 6;
|
|
"Mod+7".action.focus-workspace = 7;
|
|
"Mod+8".action.focus-workspace = 8;
|
|
"Mod+9".action.focus-workspace = 9;
|
|
"Mod+Shift+1".action.move-column-to-workspace = 1;
|
|
"Mod+Shift+2".action.move-column-to-workspace = 2;
|
|
"Mod+Shift+3".action.move-column-to-workspace = 3;
|
|
"Mod+Shift+4".action.move-column-to-workspace = 4;
|
|
"Mod+Shift+5".action.move-column-to-workspace = 5;
|
|
"Mod+Shift+6".action.move-column-to-workspace = 6;
|
|
"Mod+Shift+7".action.move-column-to-workspace = 7;
|
|
"Mod+Shift+8".action.move-column-to-workspace = 8;
|
|
"Mod+Shift+9".action.move-column-to-workspace = 9;
|
|
|
|
"Mod+WheelScrollDown" = {
|
|
cooldown-ms = 150;
|
|
action.focus-workspace-down = { };
|
|
};
|
|
"Mod+WheelScrollUp" = {
|
|
cooldown-ms = 150;
|
|
action.focus-workspace-up = { };
|
|
};
|
|
"Mod+Shift+WheelScrollDown" = {
|
|
cooldown-ms = 150;
|
|
action.move-column-to-workspace-down = { };
|
|
};
|
|
"Mod+Shift+WheelScrollUp" = {
|
|
cooldown-ms = 150;
|
|
action.move-column-to-workspace-up = { };
|
|
};
|
|
|
|
"Mod+WheelScrollRight".action.focus-column-right = { };
|
|
"Mod+WheelScrollLeft".action.focus-column-left = { };
|
|
"Mod+Shift+WheelScrollRight".action.move-column-right = { };
|
|
"Mod+Shift+WheelScrollLeft".action.move-column-left = { };
|
|
|
|
"Mod+BracketLeft".action.consume-or-expel-window-left = { };
|
|
"Mod+BracketRight".action.consume-or-expel-window-right = { };
|
|
|
|
"Mod+Shift+BracketLeft".action.consume-window-into-column = { };
|
|
"Mod+Shift+BracketRight".action.expel-window-from-column = { };
|
|
|
|
"Mod+R".action.switch-preset-column-width = { };
|
|
"Mod+Shift+R".action.switch-preset-window-height = { };
|
|
"Mod+Ctrl+R".action.reset-window-height = { };
|
|
|
|
"Mod+D".action.maximize-column = { };
|
|
"Mod+F".action.fullscreen-window = { };
|
|
"Mod+S".action.expand-column-to-available-width = { };
|
|
"Mod+C".action.center-column = { };
|
|
"Mod+Shift+C".action.center-visible-columns = { };
|
|
|
|
"Mod+Minus".action.set-column-width = "-10%";
|
|
"Mod+Equal".action.set-column-width = "+10%";
|
|
"Mod+Shift+Minus".action.set-window-height = "-10%";
|
|
"Mod+Shift+Equal".action.set-window-height = "+10%";
|
|
|
|
"Mod+E".action.toggle-window-floating = { };
|
|
"Mod+Shift+E".action.switch-focus-between-floating-and-tiling = { };
|
|
|
|
"Mod+W".action.toggle-column-tabbed-display = { };
|
|
|
|
"Mod+Shift+S".action.screenshot = { };
|
|
|
|
"Mod+Escape" = {
|
|
allow-inhibiting = false;
|
|
action.toggle-keyboard-shortcuts-inhibit = { };
|
|
};
|
|
|
|
"Mod+Shift+P".action.power-off-monitors = { };
|
|
};
|
|
};
|
|
|
|
programs.noctalia-shell = {
|
|
enable = true;
|
|
systemd.enable = false;
|
|
settings = {
|
|
general = {
|
|
# avatarImage = cfg.pfp;
|
|
};
|
|
colorSchemes = {
|
|
darkMode = true;
|
|
generateTemplatesForPredefined = true;
|
|
inherit matugenSchemeType;
|
|
predefinedScheme = "Noctalia (default)";
|
|
useWallpaperColors = true;
|
|
};
|
|
location = {
|
|
monthBeforeDay = false;
|
|
name = "Amsterdam";
|
|
};
|
|
wallpaper = {
|
|
enabled = true;
|
|
setWallpaperOnAllMonitors = true;
|
|
fillMode = "crop";
|
|
};
|
|
appLauncher = {
|
|
enableClipboardHistory = true;
|
|
terminalCommand = "kitty -e";
|
|
};
|
|
sessionMenu = {
|
|
enableCountdown = true;
|
|
countdownDuration = 5000;
|
|
};
|
|
controlCenter = {
|
|
position = "close_to_bar_button";
|
|
shortcuts = {
|
|
left = [
|
|
{
|
|
id = "WiFi";
|
|
}
|
|
{
|
|
id = "Bluetooth";
|
|
}
|
|
{
|
|
id = "PowerProfile";
|
|
}
|
|
{
|
|
id = "KeepAwake";
|
|
}
|
|
];
|
|
right = [ ];
|
|
};
|
|
};
|
|
bar = {
|
|
density = "compact";
|
|
position = "right";
|
|
backgroundOpacity = 0.5;
|
|
widgets = {
|
|
left = [
|
|
{
|
|
id = "ControlCenter";
|
|
useDistroLogo = true;
|
|
}
|
|
{
|
|
id = "NotificationHistory";
|
|
}
|
|
{
|
|
id = "plugin:catwalk";
|
|
}
|
|
];
|
|
center = [
|
|
{
|
|
hideUnoccupied = false;
|
|
id = "Workspace";
|
|
labelMode = "none";
|
|
}
|
|
];
|
|
right = [
|
|
{
|
|
id = "Tray";
|
|
drawerEnabled = false;
|
|
}
|
|
{
|
|
id = "WiFi";
|
|
}
|
|
{
|
|
id = "Bluetooth";
|
|
}
|
|
]
|
|
++ [ { id = "Battery"; } ]
|
|
++ [
|
|
{
|
|
id = "KeyboardLayout";
|
|
displayMode = "forceOpen";
|
|
}
|
|
{
|
|
formatHorizontal = "HH:mm";
|
|
formatVertical = "HH mm";
|
|
id = "Clock";
|
|
useMonospacedFont = true;
|
|
usePrimaryColor = true;
|
|
}
|
|
];
|
|
};
|
|
};
|
|
templates = {
|
|
gtk = true;
|
|
qt = true;
|
|
niri = true;
|
|
};
|
|
};
|
|
};
|
|
|
|
home.file.".cache/noctalia/wallpapers.json" = {
|
|
text = builtins.toJSON {
|
|
defaultWallpaper = wallpaper;
|
|
};
|
|
};
|
|
|
|
home.activation.themeFiles = lib.hm.dag.entryAfter [ "writeBoundary" ] ''
|
|
mkdir -p ${config.xdg.configHome}/gtk-4.0
|
|
mkdir -p ${config.xdg.configHome}/gtk-3.0
|
|
mkdir -p ${config.xdg.configHome}/qt5ct/colors
|
|
mkdir -p ${config.xdg.configHome}/qt6ct/colors
|
|
|
|
touch ${config.xdg.configHome}/gtk-4.0/gtk.css
|
|
touch ${config.xdg.configHome}/gtk-3.0/gtk.css
|
|
touch ${config.xdg.configHome}/qt5ct/colors/noctalia.conf
|
|
touch ${config.xdg.configHome}/qt6ct/colors/noctalia.conf
|
|
'';
|
|
|
|
programs.matugen = {
|
|
enable = true;
|
|
wallpaper = wallpaper;
|
|
type = matugenSchemeType;
|
|
};
|
|
|
|
gtk.cursorTheme = {
|
|
package = pkgs.adwaita-icon-theme;
|
|
name = "Adwaita";
|
|
size = 24;
|
|
};
|
|
|
|
dconf.settings = {
|
|
# appearance
|
|
"org/gnome/desktop/interface" = {
|
|
color-scheme = "prefer-dark";
|
|
enable-hot-corners = false;
|
|
gtk-enable-primary-paste = false;
|
|
};
|
|
};
|
|
}
|