Compare commits
16 Commits
bb65103e0d
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 7f7bddd9f5 | |||
| 53f8094128 | |||
| a5645f90be | |||
| aa55aed260 | |||
| d5da5cae11 | |||
| cd70fbd954 | |||
| c9fac8f849 | |||
| 7a1b8ad404 | |||
| c4f7d5234d | |||
| 32ed42b86d | |||
| 14b4bdb585 | |||
| e873ad80e0 | |||
| 5d28cef971 | |||
| c536d1e0f0 | |||
| ab109ccd7f | |||
| 9788dfa926 |
@@ -16,7 +16,7 @@
|
|||||||
self.nixosModules.shared
|
self.nixosModules.shared
|
||||||
./disk.nix
|
./disk.nix
|
||||||
./misc
|
./misc
|
||||||
./steam.nix
|
# ./steam.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
# overlays = [
|
# overlays = [
|
||||||
@@ -35,6 +35,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
networking.firewall = rec {
|
networking.firewall = rec {
|
||||||
|
allowedTCPPorts = [8080];
|
||||||
allowedTCPPortRanges = [
|
allowedTCPPortRanges = [
|
||||||
{
|
{
|
||||||
from = 1714;
|
from = 1714;
|
||||||
@@ -75,7 +76,7 @@
|
|||||||
"k" = homeRowMod middle "k";
|
"k" = homeRowMod middle "k";
|
||||||
"l" = homeRowMod ring "l";
|
"l" = homeRowMod ring "l";
|
||||||
";" = homeRowMod pinky ";";
|
";" = homeRowMod pinky ";";
|
||||||
"capslock" = "overload(layer1, esc)";
|
"capslock" = "layer(layer1)";
|
||||||
"compose" = "capslock"; # menu key
|
"compose" = "capslock"; # menu key
|
||||||
};
|
};
|
||||||
settings.layer1 = {
|
settings.layer1 = {
|
||||||
|
|||||||
@@ -4,9 +4,12 @@ id = "c7f6c4a1"
|
|||||||
type = "workstation"
|
type = "workstation"
|
||||||
stateVersion = "24.11"
|
stateVersion = "24.11"
|
||||||
|
|
||||||
|
[boot.secureBoot]
|
||||||
|
enable = true
|
||||||
|
|
||||||
|
[boot.tpmDiskUnlock]
|
||||||
|
enable = true
|
||||||
|
|
||||||
[config]
|
[config]
|
||||||
locale = "uk_UA.UTF-8"
|
locale = "uk_UA.UTF-8"
|
||||||
timeZone = "Europe/Kyiv"
|
timeZone = "Europe/Kyiv"
|
||||||
secureBoot = true
|
|
||||||
tpmDiskUnlock = true
|
|
||||||
|
|
||||||
|
|||||||
@@ -42,12 +42,15 @@
|
|||||||
stateVersion = "25.11";
|
stateVersion = "25.11";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
boot.secureBoot.enable = true;
|
||||||
|
hardware = {
|
||||||
|
graphics.vaapi = "intel-media-driver";
|
||||||
|
powerSave.enable = true;
|
||||||
|
};
|
||||||
|
input.homeRowMods.enable = true;
|
||||||
|
networking.iwd.enable = true;
|
||||||
|
|
||||||
config = {
|
config = {
|
||||||
laptop.homeRowMods = true;
|
|
||||||
powerSave = true;
|
|
||||||
secureBoot = true;
|
|
||||||
useIwd = true;
|
|
||||||
vaapi = "intel-media-driver";
|
|
||||||
locale = "uk_UA.UTF-8";
|
locale = "uk_UA.UTF-8";
|
||||||
timeZone = "Europe/Kyiv";
|
timeZone = "Europe/Kyiv";
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -14,9 +14,10 @@ in {
|
|||||||
systemd.services.ectool-thermalset = {
|
systemd.services.ectool-thermalset = {
|
||||||
enable = true;
|
enable = true;
|
||||||
serviceConfig.Type = "oneshot";
|
serviceConfig.Type = "oneshot";
|
||||||
|
wantedBy = ["basic.target"];
|
||||||
script = ''
|
script = ''
|
||||||
${ectool} thermalset 0 0 356 366 328 348
|
${ectool} thermalset 0 0 346 356 323 338
|
||||||
${ectool} thermalset 1 0 356 366 328 348
|
${ectool} thermalset 1 0 346 356 323 338
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ in {
|
|||||||
distributedBuilds = true;
|
distributedBuilds = true;
|
||||||
buildMachines = [
|
buildMachines = [
|
||||||
{
|
{
|
||||||
hostName = "dunamis";
|
hostName = "dunamis.lan";
|
||||||
maxJobs = 3;
|
maxJobs = 3;
|
||||||
protocol = "ssh-ng";
|
protocol = "ssh-ng";
|
||||||
publicHostKey = pubHost;
|
publicHostKey = pubHost;
|
||||||
|
|||||||
+15
-5
@@ -4,11 +4,21 @@ id = "45b00123"
|
|||||||
type = "laptop"
|
type = "laptop"
|
||||||
stateVersion = "25.11"
|
stateVersion = "25.11"
|
||||||
|
|
||||||
|
[boot.secureBoot]
|
||||||
|
enable = true
|
||||||
|
|
||||||
|
[boot.tpmDiskUnlock]
|
||||||
|
enable = true
|
||||||
|
|
||||||
|
[hardware.graphics]
|
||||||
|
vaapi = "nvidia"
|
||||||
|
|
||||||
|
[hardware.powerSave]
|
||||||
|
enable = true
|
||||||
|
|
||||||
|
#[input.homeRowMods]
|
||||||
|
#enable = true
|
||||||
|
|
||||||
[config]
|
[config]
|
||||||
locale = "uk_UA.UTF-8"
|
locale = "uk_UA.UTF-8"
|
||||||
timeZone = "Europe/Kyiv"
|
timeZone = "Europe/Kyiv"
|
||||||
secureBoot = true
|
|
||||||
tpmDiskUnlock = true
|
|
||||||
vaapi = "nvidia"
|
|
||||||
# laptop.homeRowMods = true
|
|
||||||
powerSave = true
|
|
||||||
|
|||||||
+20
@@ -6,6 +6,7 @@
|
|||||||
builtin = {
|
builtin = {
|
||||||
eldrid = "Chimei Innolux Corporation 0x1406 Unknown";
|
eldrid = "Chimei Innolux Corporation 0x1406 Unknown";
|
||||||
sarien = "LG Display 0x068B Unknown";
|
sarien = "LG Display 0x068B Unknown";
|
||||||
|
kled = "BOE 0x095F Unknown";
|
||||||
# morphius =;
|
# morphius =;
|
||||||
};
|
};
|
||||||
in [
|
in [
|
||||||
@@ -40,6 +41,14 @@
|
|||||||
# adaptiveSync = true;
|
# adaptiveSync = true;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
output = {
|
||||||
|
criteria = builtin.kled;
|
||||||
|
position = "0,0";
|
||||||
|
scale = 4.0 / 3.0;
|
||||||
|
# adaptiveSync = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
{
|
{
|
||||||
profile = {
|
profile = {
|
||||||
name = "dunamis";
|
name = "dunamis";
|
||||||
@@ -104,6 +113,17 @@
|
|||||||
];
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
profile = {
|
||||||
|
name = "kled";
|
||||||
|
outputs = [
|
||||||
|
{
|
||||||
|
criteria = builtin.kled;
|
||||||
|
position = "0,0";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
{
|
{
|
||||||
profile = {
|
profile = {
|
||||||
name = "sarien-undocked";
|
name = "sarien-undocked";
|
||||||
@@ -16,12 +16,12 @@ in {
|
|||||||
./cosmic
|
./cosmic
|
||||||
# ./dms
|
# ./dms
|
||||||
# ./gnome
|
# ./gnome
|
||||||
./niri
|
# ./niri
|
||||||
./plasma
|
# ./plasma
|
||||||
]
|
]
|
||||||
++ (with inputs; [
|
++ (with inputs; [
|
||||||
dms.homeModules.dankMaterialShell.default
|
dms.homeModules.dank-material-shell
|
||||||
dms.homeModules.dankMaterialShell.niri
|
dms.homeModules.niri
|
||||||
]);
|
]);
|
||||||
options = {
|
options = {
|
||||||
desktop.dms.enable = mkEnableOption "enable DankMaterialShell";
|
desktop.dms.enable = mkEnableOption "enable DankMaterialShell";
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
programs.dankMaterialShell = {
|
programs.dank-material-shell = {
|
||||||
enable = true;
|
enable = true;
|
||||||
systemd.enable = true;
|
systemd.enable = true;
|
||||||
niri.enableKeybinds = false; # Automatic keybinding configuration
|
niri.enableKeybinds = false; # Automatic keybinding configuration
|
||||||
|
|||||||
@@ -56,11 +56,11 @@ in {
|
|||||||
layout = "us,ua";
|
layout = "us,ua";
|
||||||
variant =
|
variant =
|
||||||
"colemak_dh"
|
"colemak_dh"
|
||||||
+ (
|
# + (
|
||||||
if osConfig.unexplrd.host.name == "dunamis"
|
# if osConfig.unexplrd.host.name == "dunamis"
|
||||||
then "_ortho"
|
# then "_ortho"
|
||||||
else ""
|
# else ""
|
||||||
)
|
# )
|
||||||
+ ",";
|
+ ",";
|
||||||
};
|
};
|
||||||
repeat-delay = 200;
|
repeat-delay = 200;
|
||||||
@@ -203,6 +203,9 @@ in {
|
|||||||
action = toggle-overview;
|
action = toggle-overview;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
"Mod+Ctrl+W".action = set-dynamic-cast-window;
|
||||||
|
"Mod+Ctrl+Shift+W".action = set-dynamic-cast-monitor;
|
||||||
|
|
||||||
"Mod+Return" = {action = sh "$TERMINAL";};
|
"Mod+Return" = {action = sh "$TERMINAL";};
|
||||||
|
|
||||||
"Mod+R".action = sh "wl-kbptr -o modes=floating,click";
|
"Mod+R".action = sh "wl-kbptr -o modes=floating,click";
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
enable = true;
|
enable = true;
|
||||||
components = ["secrets"];
|
components = ["secrets"];
|
||||||
};
|
};
|
||||||
kanshi = import ../niri/services/kanshi;
|
kanshi = import ../common/services/kanshi.nix;
|
||||||
udiskie = {
|
udiskie = {
|
||||||
enable = true;
|
enable = true;
|
||||||
automount = false;
|
automount = false;
|
||||||
|
|||||||
@@ -1,203 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
inputs,
|
|
||||||
lib,
|
|
||||||
osConfig,
|
|
||||||
perSystem,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (lib) mkIf mkEnableOption mkForce getExe;
|
|
||||||
inherit (osConfig.networking) hostName;
|
|
||||||
|
|
||||||
cfg = config.desktop.niri;
|
|
||||||
|
|
||||||
ifLaptop = mkIf (hostName != "dunamis");
|
|
||||||
|
|
||||||
commonArgs = rec {
|
|
||||||
inherit config inputs lib osConfig perSystem pkgs;
|
|
||||||
baseMenu = getExe perSystem.vicinae.default;
|
|
||||||
clipboard = baseMenu + " vicinae://extensions/vicinae/clipboard/history";
|
|
||||||
launcher = baseMenu + " toggle";
|
|
||||||
lockscreen = getExe pkgs.gtklock;
|
|
||||||
};
|
|
||||||
in {
|
|
||||||
imports = with inputs; [
|
|
||||||
# vicinae.homeManagerModules.default
|
|
||||||
# walker.homeManagerModules.default
|
|
||||||
];
|
|
||||||
options = {
|
|
||||||
desktop.niri.enable =
|
|
||||||
mkEnableOption "enable niri desktop";
|
|
||||||
};
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
stylix.targets = {
|
|
||||||
waybar.enable = false;
|
|
||||||
wpaperd.enable = true;
|
|
||||||
qt.enable = false;
|
|
||||||
};
|
|
||||||
stylix.iconTheme = {
|
|
||||||
enable = true;
|
|
||||||
light = "Papirus-Light";
|
|
||||||
dark = "Papirus-Dark";
|
|
||||||
package = let
|
|
||||||
inherit (lib.strings) hasPrefix;
|
|
||||||
inherit (osConfig.module.stylix) theme;
|
|
||||||
color =
|
|
||||||
if (hasPrefix "rose-pine" theme)
|
|
||||||
then "indigo"
|
|
||||||
else if (hasPrefix "nord" theme)
|
|
||||||
then "nordic"
|
|
||||||
else if (hasPrefix "oxocarbon" theme)
|
|
||||||
then "green"
|
|
||||||
else if (hasPrefix "s" theme)
|
|
||||||
then "teal"
|
|
||||||
else null;
|
|
||||||
in
|
|
||||||
pkgs.papirus-icon-theme.override {inherit color;};
|
|
||||||
};
|
|
||||||
dconf.settings = {
|
|
||||||
"org/gnome/desktop/wm/preferences" = {
|
|
||||||
button-layout = "icon:close";
|
|
||||||
};
|
|
||||||
"org/gnome/desktop/interface" = {
|
|
||||||
icon-theme = config.gtk.iconTheme.name;
|
|
||||||
color-scheme =
|
|
||||||
if config.stylix.polarity == "dark"
|
|
||||||
then lib.mkDefault "prefer-dark"
|
|
||||||
else lib.mkDefault "prefer-light";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
qt = {
|
|
||||||
enable = true;
|
|
||||||
platformTheme.name = "gtk3";
|
|
||||||
};
|
|
||||||
|
|
||||||
# programs.walker = import ./programs/walker commonArgs;
|
|
||||||
programs.waybar = import ./programs/waybar commonArgs;
|
|
||||||
services = import ./services commonArgs;
|
|
||||||
|
|
||||||
home.packages = with pkgs;
|
|
||||||
[
|
|
||||||
# gui libadwaita apps
|
|
||||||
celluloid # mpv gui in libadwaita
|
|
||||||
gnome-text-editor
|
|
||||||
helvum # pipewire patchbay in rust
|
|
||||||
junction # app chooser
|
|
||||||
loupe # image viewer and editor in rust
|
|
||||||
nautilus # file manager
|
|
||||||
papers # pdf reader in rust
|
|
||||||
pwvucontrol # pipewire gui in rust
|
|
||||||
wdisplays # wlroots display configurator
|
|
||||||
]
|
|
||||||
++ [
|
|
||||||
# misc utils
|
|
||||||
(ifLaptop brightnessctl)
|
|
||||||
dconf
|
|
||||||
libnotify
|
|
||||||
playerctl
|
|
||||||
wl-clipboard-rs # wl-clipboard in rust
|
|
||||||
xfce.xfconf
|
|
||||||
];
|
|
||||||
|
|
||||||
xdg = {
|
|
||||||
configFile = {
|
|
||||||
# niri = import ./niri.nix commonArgs;
|
|
||||||
"mimeapps.list".force = true;
|
|
||||||
};
|
|
||||||
mime.enable = true;
|
|
||||||
mimeApps = {
|
|
||||||
enable = true;
|
|
||||||
defaultApplications = let
|
|
||||||
file_manager = ["org.gnome.Nautilus.desktop"];
|
|
||||||
image_viewer = ["org.gnome.Loupe.desktop"];
|
|
||||||
pdf_reader = ["org.gnome.Papers.desktop"];
|
|
||||||
video_player = ["io.github.celluloid_player.Celluloid.desktop"];
|
|
||||||
web_browser = ["re.sonny.Junction.desktop"];
|
|
||||||
in {
|
|
||||||
"application/pdf" = pdf_reader;
|
|
||||||
"image/jpeg" = image_viewer;
|
|
||||||
"image/png" = image_viewer;
|
|
||||||
"inode/directory" = file_manager;
|
|
||||||
"text/html" = web_browser;
|
|
||||||
"video/mp4" = video_player;
|
|
||||||
"video/mpeg" = video_player;
|
|
||||||
"video/x-matroska" = video_player;
|
|
||||||
"video/x-mpeg" = video_player;
|
|
||||||
"x-scheme-handler/about" = web_browser;
|
|
||||||
"x-scheme-handler/http" = web_browser;
|
|
||||||
"x-scheme-handler/https" = web_browser;
|
|
||||||
"x-scheme-handler/unknown" = web_browser;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
systemd.user = {
|
|
||||||
# settings.Manager.DefaultEnvironment = {
|
|
||||||
# DISPLAY = ":123";
|
|
||||||
# };
|
|
||||||
targets.tray.Unit.Description = "Home Manager System Tray"; # workaround for udiskie
|
|
||||||
services = let
|
|
||||||
mkGraphicalService = config: lib.attrsets.recursiveUpdate graphicalService config;
|
|
||||||
graphicalService = {
|
|
||||||
Install.WantedBy = ["niri.service"];
|
|
||||||
Unit = {
|
|
||||||
Requisite = ["graphical-session.target"];
|
|
||||||
PartOf = ["graphical-session.target"];
|
|
||||||
After = ["graphical-session.target"];
|
|
||||||
};
|
|
||||||
Service = {
|
|
||||||
Restart = "on-failure";
|
|
||||||
TimeoutStopSec = 10;
|
|
||||||
RestartSec = 1;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
in
|
|
||||||
lib.mkMerge [
|
|
||||||
{
|
|
||||||
copyq = mkGraphicalService {Service.Environment = mkForce "QT_QPA_PLATFORM=wayland";};
|
|
||||||
network-manager-applet = mkGraphicalService {};
|
|
||||||
udiskie = mkGraphicalService {};
|
|
||||||
# walker = mkGraphicalService {};
|
|
||||||
waybar = mkGraphicalService {};
|
|
||||||
wpaperd =
|
|
||||||
mkGraphicalService {}
|
|
||||||
// {
|
|
||||||
Service.TimeoutStopSec = mkForce "1";
|
|
||||||
Service.Restart = mkForce "always";
|
|
||||||
};
|
|
||||||
xfce4-notifyd = mkGraphicalService {
|
|
||||||
Service.ExecStart = pkgs.xfce.xfce4-notifyd + "/lib/xfce4/notifyd/xfce4-notifyd";
|
|
||||||
};
|
|
||||||
# xwayland-satellite = mkGraphicalService {
|
|
||||||
# Service = {
|
|
||||||
# Type = "simple";
|
|
||||||
# ExecStart = getExe pkgs.xwayland-satellite + " :123";
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
# gnome-polkit-agent = mkGraphicalService {
|
|
||||||
# Service = {
|
|
||||||
# Type = "simple";
|
|
||||||
# ExecStart = pkgs.polkit_gnome + "/libexec/polkit-gnome-authentication-agent-1";
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
}
|
|
||||||
(lib.mkIf (hostName == "morphius") {
|
|
||||||
lisgd = mkGraphicalService {
|
|
||||||
Service = {
|
|
||||||
# Group = "input";
|
|
||||||
Type = "simple";
|
|
||||||
ExecStart =
|
|
||||||
"${pkgs.lisgd}/bin/lisgd"
|
|
||||||
+ " -d /dev/input/by-path/pci-0000:00:15.1-platform-i2c_designware.1-event"
|
|
||||||
+ ''-g "1,DU,TL,*,P,niri msg action toggle-overview"''
|
|
||||||
+ " -g \"3,UD,T,*,P,niri msg action focus-workspace-up\""
|
|
||||||
+ " -g \"3,DU,B,*,P,niri msg action focus-workspace-down\""
|
|
||||||
+ " -g \"3,LR,L,*,P,niri msg action focus-column-left\""
|
|
||||||
+ " -g \"3,RL,R,*,P,niri msg action focus-column-right\"";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
})
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,386 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
osConfig,
|
|
||||||
perSystem,
|
|
||||||
# pkgs,
|
|
||||||
clipboard,
|
|
||||||
launcher,
|
|
||||||
lockscreen,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (config.lib.stylix) colors;
|
|
||||||
inherit (config.stylix) cursor;
|
|
||||||
inherit (osConfig.networking) hostName;
|
|
||||||
|
|
||||||
keyboard =
|
|
||||||
if hostName == "eldrid"
|
|
||||||
then "chromeos"
|
|
||||||
else "platform";
|
|
||||||
xdgPics =
|
|
||||||
config.xdg.userDirs.pictures;
|
|
||||||
in {
|
|
||||||
target = "niri/config.kdl";
|
|
||||||
text = let
|
|
||||||
arrows = {
|
|
||||||
left = "Left";
|
|
||||||
down = "Down";
|
|
||||||
up = "Up";
|
|
||||||
right = "Right";
|
|
||||||
};
|
|
||||||
homerow-arrows = {
|
|
||||||
left = "n";
|
|
||||||
down = "e";
|
|
||||||
up = "i";
|
|
||||||
right = "o";
|
|
||||||
};
|
|
||||||
letters = {
|
|
||||||
first = "Q";
|
|
||||||
second = "W";
|
|
||||||
third = "F";
|
|
||||||
fourth = "P";
|
|
||||||
fifth = "B";
|
|
||||||
sixth = "J";
|
|
||||||
seventh = "L";
|
|
||||||
eighth = "U";
|
|
||||||
ninth = "Y";
|
|
||||||
};
|
|
||||||
numbers = {
|
|
||||||
first = "1";
|
|
||||||
second = "2";
|
|
||||||
third = "3";
|
|
||||||
fourth = "4";
|
|
||||||
fifth = "5";
|
|
||||||
sixth = "6";
|
|
||||||
seventh = "7";
|
|
||||||
eighth = "8";
|
|
||||||
ninth = "9";
|
|
||||||
};
|
|
||||||
genArrowNavigation = keys: ''
|
|
||||||
Mod+${keys.left} { focus-column-left; }
|
|
||||||
Mod+${keys.down} { focus-window-or-workspace-down; }
|
|
||||||
Mod+${keys.up} { focus-window-or-workspace-up; }
|
|
||||||
Mod+${keys.right} { focus-column-right; }
|
|
||||||
Mod+Ctrl+${keys.left} { move-column-left; }
|
|
||||||
Mod+Ctrl+${keys.down} { move-window-down-or-to-workspace-down; }
|
|
||||||
Mod+Ctrl+${keys.up} { move-window-up-or-to-workspace-up; }
|
|
||||||
Mod+Ctrl+${keys.right} { move-column-right; }
|
|
||||||
Mod+Shift+${keys.left} { focus-monitor-left; }
|
|
||||||
Mod+Shift+${keys.down} { focus-monitor-down; }
|
|
||||||
Mod+Shift+${keys.up} { focus-monitor-up; }
|
|
||||||
Mod+Shift+${keys.right} { focus-monitor-right; }
|
|
||||||
Mod+Shift+Ctrl+${keys.left} { move-column-to-monitor-left; }
|
|
||||||
Mod+Shift+Ctrl+${keys.down} { move-column-to-monitor-down; }
|
|
||||||
Mod+Shift+Ctrl+${keys.up} { move-column-to-monitor-up; }
|
|
||||||
Mod+Shift+Ctrl+${keys.right} { move-column-to-monitor-right; }
|
|
||||||
'';
|
|
||||||
genWorkspacesNavigation = keys: ''
|
|
||||||
Mod+${keys.first} { focus-workspace 1; }
|
|
||||||
Mod+${keys.second} { focus-workspace 2; }
|
|
||||||
Mod+${keys.third} { focus-workspace 3; }
|
|
||||||
Mod+${keys.fourth} { focus-workspace 4; }
|
|
||||||
Mod+${keys.fifth} { focus-workspace 5; }
|
|
||||||
Mod+${keys.sixth} { focus-workspace 6; }
|
|
||||||
Mod+${keys.seventh} { focus-workspace 7; }
|
|
||||||
Mod+${keys.eighth} { focus-workspace 8; }
|
|
||||||
Mod+${keys.ninth} { focus-workspace 9; }
|
|
||||||
Mod+Ctrl+Shift+${keys.first} { move-column-to-workspace 1; }
|
|
||||||
Mod+Ctrl+Shift+${keys.second} { move-column-to-workspace 2; }
|
|
||||||
Mod+Ctrl+Shift+${keys.third} { move-column-to-workspace 3; }
|
|
||||||
Mod+Ctrl+Shift+${keys.fourth} { move-column-to-workspace 4; }
|
|
||||||
Mod+Ctrl+Shift+${keys.fifth} { move-column-to-workspace 5; }
|
|
||||||
Mod+Ctrl+Shift+${keys.sixth} { move-column-to-workspace 6; }
|
|
||||||
Mod+Ctrl+Shift+${keys.seventh} { move-column-to-workspace 7; }
|
|
||||||
Mod+Ctrl+Shift+${keys.eighth} { move-column-to-workspace 8; }
|
|
||||||
Mod+Ctrl+Shift+${keys.ninth} { move-column-to-workspace 9; }
|
|
||||||
'';
|
|
||||||
in ''
|
|
||||||
environment {
|
|
||||||
CLUTTER_BACKEND "wayland"
|
|
||||||
GDK_BACKEND "wayland"
|
|
||||||
MOZ_ENABLE_WAYLAND "1"
|
|
||||||
MOZ_WEBRENDER "1"
|
|
||||||
QT_QPA_PLATFORM "wayland"
|
|
||||||
SDL_VIDEODRIVER "wayland"
|
|
||||||
XDG_SESSION_TYPE "wayland"
|
|
||||||
}
|
|
||||||
|
|
||||||
input {
|
|
||||||
keyboard {
|
|
||||||
xkb {
|
|
||||||
layout "us,ua"
|
|
||||||
variant "colemak_dh_ortho,"
|
|
||||||
}
|
|
||||||
repeat-delay 200
|
|
||||||
repeat-rate 50
|
|
||||||
track-layout "window"
|
|
||||||
}
|
|
||||||
touchpad {
|
|
||||||
tap
|
|
||||||
natural-scroll
|
|
||||||
accel-speed 0.2
|
|
||||||
accel-profile "flat"
|
|
||||||
}
|
|
||||||
mouse {
|
|
||||||
accel-speed 0.0
|
|
||||||
accel-profile "flat"
|
|
||||||
}
|
|
||||||
touch {
|
|
||||||
map-to-output "eDP-1"
|
|
||||||
}
|
|
||||||
warp-mouse-to-focus
|
|
||||||
workspace-auto-back-and-forth
|
|
||||||
}
|
|
||||||
|
|
||||||
cursor {
|
|
||||||
xcursor-theme "${cursor.name}"
|
|
||||||
xcursor-size ${toString cursor.size}
|
|
||||||
}
|
|
||||||
|
|
||||||
hotkey-overlay {
|
|
||||||
skip-at-startup
|
|
||||||
}
|
|
||||||
|
|
||||||
xwayland-satellite {
|
|
||||||
path "${lib.getExe perSystem.xwst.xwayland-satellite}"
|
|
||||||
}
|
|
||||||
|
|
||||||
clipboard {
|
|
||||||
disable-primary
|
|
||||||
}
|
|
||||||
|
|
||||||
prefer-no-csd
|
|
||||||
|
|
||||||
screenshot-path "${xdgPics}/screenshots/screenshot-%Y-%m-%d-%H-%M-%S.png"
|
|
||||||
|
|
||||||
animations {
|
|
||||||
off
|
|
||||||
slowdown 0.5
|
|
||||||
}
|
|
||||||
|
|
||||||
layout {
|
|
||||||
gaps 3
|
|
||||||
|
|
||||||
// background-color "#${colors.base02}"
|
|
||||||
background-color "transparent"
|
|
||||||
center-focused-column "never" // "on-overflow"
|
|
||||||
default-column-width { proportion 1.0; }
|
|
||||||
|
|
||||||
preset-column-widths {
|
|
||||||
proportion 0.33333
|
|
||||||
proportion 0.66667
|
|
||||||
}
|
|
||||||
|
|
||||||
struts {
|
|
||||||
left 36
|
|
||||||
right 36
|
|
||||||
}
|
|
||||||
|
|
||||||
tab-indicator {
|
|
||||||
active-color "#${colors.base04}"
|
|
||||||
inactive-color "#${colors.base03}"
|
|
||||||
corner-radius 6
|
|
||||||
gap 3
|
|
||||||
gaps-between-tabs 3
|
|
||||||
// length total-proportion=0.3
|
|
||||||
place-within-column
|
|
||||||
position "left"
|
|
||||||
width 6
|
|
||||||
}
|
|
||||||
focus-ring {
|
|
||||||
off
|
|
||||||
width 1
|
|
||||||
active-color "#${colors.base03}"
|
|
||||||
inactive-color "#${colors.base02}"
|
|
||||||
urgent-color "#${colors.base08}"
|
|
||||||
}
|
|
||||||
border {
|
|
||||||
// off
|
|
||||||
width 1
|
|
||||||
active-color "#${colors.base03}"
|
|
||||||
inactive-color "#${colors.base02}"
|
|
||||||
urgent-color "#${colors.base08}"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
window-rule {
|
|
||||||
geometry-corner-radius 12
|
|
||||||
clip-to-geometry true
|
|
||||||
}
|
|
||||||
window-rule {
|
|
||||||
match is-window-cast-target=true
|
|
||||||
focus-ring {
|
|
||||||
width 3
|
|
||||||
active-color "#${colors.base0F}"
|
|
||||||
inactive-color "#${colors.base03}"
|
|
||||||
}
|
|
||||||
border {
|
|
||||||
width 3
|
|
||||||
active-color "#${colors.base0F}"
|
|
||||||
inactive-color "#${colors.base03}"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
layer-rule {
|
|
||||||
match namespace="^wpaperd.*$"
|
|
||||||
place-within-backdrop true
|
|
||||||
}
|
|
||||||
overview {
|
|
||||||
workspace-shadow {
|
|
||||||
off
|
|
||||||
}
|
|
||||||
}
|
|
||||||
layer-rule {
|
|
||||||
match namespace="waybar"
|
|
||||||
match at-startup=true
|
|
||||||
|
|
||||||
opacity 0.99 // fixes the black fill
|
|
||||||
}
|
|
||||||
|
|
||||||
window-rule {
|
|
||||||
match title="Картинка в картинці"
|
|
||||||
match title="Picture-in-Picture"
|
|
||||||
open-floating true
|
|
||||||
}
|
|
||||||
window-rule {
|
|
||||||
match app-id="org.wezfurlong.wezterm"
|
|
||||||
match app-id="com.mitchellh.ghostty"
|
|
||||||
default-column-width { proportion 1.0; }
|
|
||||||
draw-border-with-background false
|
|
||||||
}
|
|
||||||
window-rule {
|
|
||||||
match app-id="re.sonny.Junction"
|
|
||||||
match app-id="com.github.hluk.copyq"
|
|
||||||
match title=r"^.* - Choose User Profile$"
|
|
||||||
open-floating true
|
|
||||||
open-focused true
|
|
||||||
}
|
|
||||||
|
|
||||||
window-rule {
|
|
||||||
match app-id="com.mitchellh.ghostty"
|
|
||||||
draw-border-with-background false
|
|
||||||
}
|
|
||||||
|
|
||||||
window-rule {
|
|
||||||
match app-id=r#"^org\.keepassxc\.KeePassXC$"#
|
|
||||||
match app-id=r#"^org\.gnome\.World\.Secrets$"#
|
|
||||||
match app-id=r#"^Bitwarden$"#
|
|
||||||
match app-id="io.github.kukuruzka165.materialgram"
|
|
||||||
match app-id="org.telegram.desktop"
|
|
||||||
match app-id="org.signal.Signal"
|
|
||||||
match app-id="WebCord"
|
|
||||||
// block-out-from "screen-capture"
|
|
||||||
block-out-from "screencast"
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
binds {
|
|
||||||
Mod+Shift+Slash { show-hotkey-overlay; }
|
|
||||||
|
|
||||||
Mod+Tab { focus-workspace-previous; }
|
|
||||||
Mod+C { center-column; }
|
|
||||||
Mod+M { maximize-column; }
|
|
||||||
Mod+H { set-column-width "50%"; }
|
|
||||||
Mod+T { set-column-width "33%"; }
|
|
||||||
Mod+Shift+T { set-column-width "67%"; }
|
|
||||||
Mod+V { toggle-column-tabbed-display; }
|
|
||||||
Mod+G { switch-focus-between-floating-and-tiling; }
|
|
||||||
Mod+X { spawn "pkill" "-SIGUSR1" "waybar"; } // hide/show waybar
|
|
||||||
|
|
||||||
Mod+Ctrl+Comma { consume-or-expel-window-left; }
|
|
||||||
Mod+Ctrl+Period { consume-or-expel-window-right; }
|
|
||||||
|
|
||||||
Mod+Ctrl+Q { close-window; }
|
|
||||||
Mod+Ctrl+M { fullscreen-window; }
|
|
||||||
Mod+Ctrl+G { toggle-window-floating; }
|
|
||||||
|
|
||||||
Mod+Shift+M { maximize-window-to-edges; }
|
|
||||||
|
|
||||||
Mod+Ctrl+Shift+M { toggle-windowed-fullscreen; }
|
|
||||||
|
|
||||||
Mod+Minus { set-column-width "-10%"; }
|
|
||||||
Mod+Equal { set-column-width "+10%"; }
|
|
||||||
Mod+Comma { set-column-width "-10%"; }
|
|
||||||
Mod+Period { set-column-width "+10%"; }
|
|
||||||
Mod+Shift+Comma { set-window-height "-10%"; }
|
|
||||||
Mod+Shift+Period { set-window-height "+10%"; }
|
|
||||||
|
|
||||||
Mod+Space { switch-layout "next"; }
|
|
||||||
|
|
||||||
Mod+Ctrl+Space repeat=false { toggle-overview; }
|
|
||||||
|
|
||||||
Mod+Return repeat=false { spawn "sh" "-c" "$TERMINAL"; }
|
|
||||||
Mod+BackSpace repeat=false { spawn "sh" "-c" "${launcher}"; }
|
|
||||||
Mod+D repeat=false { spawn "sh" "-c" "${launcher}"; }
|
|
||||||
Mod+Ctrl+L repeat=false { spawn "${lockscreen}"; }
|
|
||||||
Mod+Ctrl+V repeat=false { spawn "sh" "-c" "${clipboard}"; }
|
|
||||||
|
|
||||||
// Mod+Shift+W repeat=false { spawn "walker" "-m" "windows"; }
|
|
||||||
|
|
||||||
Mod+Ctrl+Shift+BracketLeft { quit; }
|
|
||||||
Mod+Ctrl+Shift+BracketRight { power-off-monitors; }
|
|
||||||
|
|
||||||
Print { screenshot; }
|
|
||||||
Ctrl+Print { screenshot-screen; }
|
|
||||||
Shift+Print { screenshot-window; }
|
|
||||||
|
|
||||||
// Caps_Lock { spawn "swayosd-client" "--caps-lock"; }
|
|
||||||
// XF86AudioRaiseVolume allow-when-locked=true { spawn "wpctl" "set-volume" "-l" "1.0" "@DEFAULT_AUDIO_SINK@" "5%+"; }
|
|
||||||
// XF86AudioLowerVolume allow-when-locked=true { spawn "wpctl" "set-volume" "-l" "1.0" "@DEFAULT_AUDIO_SINK@" "5%-"; }
|
|
||||||
// XF86AudioMute allow-when-locked=true { spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SINK@" "toggle"; }
|
|
||||||
// XF86AudioMicMute allow-when-locked=true { spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SOURCE@" "toggle"; }
|
|
||||||
XF86AudioRaiseVolume allow-when-locked=true { spawn "swayosd-client" "--output-volume" "raise"; }
|
|
||||||
XF86AudioLowerVolume allow-when-locked=true { spawn "swayosd-client" "--output-volume" "lower"; }
|
|
||||||
XF86AudioMute allow-when-locked=true { spawn "swayosd-client" "--output-volume" "mute-toggle"; }
|
|
||||||
Shift+XF86AudioMute allow-when-locked=true { spawn "swayosd-client" "--input-volume" "mute-toggle"; }
|
|
||||||
XF86AudioMicMute allow-when-locked=true { spawn "swayosd-client" "--input-volume" "mute-toggle"; }
|
|
||||||
XF86AudioPlay allow-when-locked=true { spawn "playerctl" "play-pause"; }
|
|
||||||
XF86AudioPause allow-when-locked=true { spawn "playerctl" "pause"; }
|
|
||||||
XF86AudioPrev allow-when-locked=true { spawn "playerctl" "previous"; }
|
|
||||||
XF86AudioNext allow-when-locked=true { spawn "playerctl" "next"; }
|
|
||||||
|
|
||||||
XF86ScreenSaver allow-when-locked=true { spawn "${lockscreen}"; }
|
|
||||||
XF86MonBrightnessUp allow-when-locked=true { spawn "brightnessctl" "s" "5%+"; }
|
|
||||||
XF86MonBrightnessDown allow-when-locked=true { spawn "brightnessctl" "s" "5%-"; }
|
|
||||||
Alt+XF86MonBrightnessUp allow-when-locked=true { spawn "brightnessctl" "s" "5%+" "-d" "${keyboard}::kbd_backlight"; }
|
|
||||||
Alt+XF86MonBrightnessDown allow-when-locked=true { spawn "brightnessctl" "s" "5%-" "-d" "${keyboard}::kbd_backlight"; }
|
|
||||||
XF86KbdBrightnessUp allow-when-locked=true { spawn "brightnessctl" "s" "5%+" "-d" "${keyboard}::kbd_backlight"; }
|
|
||||||
XF86KbdBrightnessDown allow-when-locked=true { spawn "brightnessctl" "s" "5%-" "-d" "${keyboard}::kbd_backlight"; }
|
|
||||||
|
|
||||||
|
|
||||||
Mod+Home { focus-column-first; }
|
|
||||||
Mod+End { focus-column-last; }
|
|
||||||
Mod+Ctrl+Home { move-column-to-first; }
|
|
||||||
Mod+Ctrl+End { move-column-to-last; }
|
|
||||||
|
|
||||||
Mod+Next { focus-workspace-down; }
|
|
||||||
Mod+Prior { focus-workspace-up; }
|
|
||||||
Mod+Ctrl+Next { move-column-to-workspace-down; }
|
|
||||||
Mod+Ctrl+Prior { move-column-to-workspace-up; }
|
|
||||||
Mod+Shift+Next { move-workspace-down; }
|
|
||||||
Mod+Shift+Prior { move-workspace-up; }
|
|
||||||
|
|
||||||
Mod+WheelScrollDown cooldown-ms=150 { focus-workspace-down; }
|
|
||||||
Mod+WheelScrollUp cooldown-ms=150 { focus-workspace-up; }
|
|
||||||
Mod+Ctrl+WheelScrollDown cooldown-ms=150 { move-column-to-workspace-down; }
|
|
||||||
Mod+Ctrl+WheelScrollUp cooldown-ms=150 { move-column-to-workspace-up; }
|
|
||||||
|
|
||||||
Mod+WheelScrollRight { focus-column-right; }
|
|
||||||
Mod+WheelScrollLeft { focus-column-left; }
|
|
||||||
Mod+Ctrl+WheelScrollRight { move-column-right; }
|
|
||||||
Mod+Ctrl+WheelScrollLeft { move-column-left; }
|
|
||||||
Mod+Shift+WheelScrollDown { focus-column-right; }
|
|
||||||
Mod+Shift+WheelScrollUp { focus-column-left; }
|
|
||||||
Mod+Ctrl+Shift+WheelScrollDown { move-column-right; }
|
|
||||||
Mod+Ctrl+Shift+WheelScrollUp { move-column-left; }
|
|
||||||
|
|
||||||
Mod+TouchpadScrollDown { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.02+"; }
|
|
||||||
Mod+TouchpadScrollUp { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.02-"; }
|
|
||||||
|
|
||||||
${genArrowNavigation arrows}
|
|
||||||
${genArrowNavigation homerow-arrows}
|
|
||||||
${genWorkspacesNavigation letters}
|
|
||||||
${genWorkspacesNavigation numbers}
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
}: {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
main = {
|
|
||||||
terminal = "$TERMINAL -e";
|
|
||||||
fields = "filename,name,generic,keywords,categories,exec";
|
|
||||||
dpi-aware = false;
|
|
||||||
width = 20;
|
|
||||||
horizontal-pad = 12;
|
|
||||||
vertical-pad = 12;
|
|
||||||
show-actions = true;
|
|
||||||
match-mode = "fuzzy";
|
|
||||||
icon-theme = config.dconf.settings."org/gnome/desktop/interface".icon-theme;
|
|
||||||
};
|
|
||||||
border = lib.mkDefault {
|
|
||||||
width = 3;
|
|
||||||
radius = 12;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,305 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
enable = true;
|
|
||||||
package = pkgs.walker;
|
|
||||||
runAsService = true;
|
|
||||||
config = {
|
|
||||||
activation_mode.labels = "neiotsra";
|
|
||||||
as_window = false;
|
|
||||||
disabled = [
|
|
||||||
"bookmarks"
|
|
||||||
"clipboard"
|
|
||||||
"custom_commands"
|
|
||||||
"translation"
|
|
||||||
"websearch"
|
|
||||||
];
|
|
||||||
builtins = {
|
|
||||||
applications = {
|
|
||||||
actions.enabled = true;
|
|
||||||
context_aware = true;
|
|
||||||
name = "applications";
|
|
||||||
placeholder = "Applications";
|
|
||||||
prioritize_new = true;
|
|
||||||
refresh = true;
|
|
||||||
show_generic = true;
|
|
||||||
show_icon_when_single = true;
|
|
||||||
show_sub_when_single = true;
|
|
||||||
weight = 10;
|
|
||||||
};
|
|
||||||
calc = {
|
|
||||||
icon = "accessories-calculator";
|
|
||||||
min_chars = 4;
|
|
||||||
name = "calc";
|
|
||||||
placeholder = "Calculator";
|
|
||||||
weight = 5;
|
|
||||||
};
|
|
||||||
clipboard = {
|
|
||||||
image_height = 300;
|
|
||||||
max_entries = 10;
|
|
||||||
name = "clipboard";
|
|
||||||
placeholder = "Clipboard";
|
|
||||||
switcher_only = true;
|
|
||||||
weight = 5;
|
|
||||||
};
|
|
||||||
commands = {
|
|
||||||
icon = "utilities-terminal";
|
|
||||||
name = "commands";
|
|
||||||
placeholder = "Commands";
|
|
||||||
switcher_only = true;
|
|
||||||
weight = 8;
|
|
||||||
};
|
|
||||||
custom_commands = {
|
|
||||||
icon = "utilities-terminal";
|
|
||||||
name = "custom_commands";
|
|
||||||
placeholder = "Custom Commands";
|
|
||||||
weight = 5;
|
|
||||||
};
|
|
||||||
dmenu = {
|
|
||||||
name = "dmenu";
|
|
||||||
placeholder = "Dmenu";
|
|
||||||
switcher_only = true;
|
|
||||||
weight = 5;
|
|
||||||
};
|
|
||||||
emojis = {
|
|
||||||
history = true;
|
|
||||||
name = "emojis";
|
|
||||||
placeholder = "Emojis";
|
|
||||||
switcher_only = true;
|
|
||||||
typeahead = true;
|
|
||||||
weight = 5;
|
|
||||||
};
|
|
||||||
finder = {
|
|
||||||
concurrency = 8;
|
|
||||||
icon = "folder";
|
|
||||||
ignore_gitignore = true;
|
|
||||||
name = "finder";
|
|
||||||
placeholder = "Finder";
|
|
||||||
refresh = true;
|
|
||||||
switcher_only = true;
|
|
||||||
weight = 5;
|
|
||||||
};
|
|
||||||
runner = {
|
|
||||||
generic_entry = false;
|
|
||||||
history = true;
|
|
||||||
icon = "utilities-terminal";
|
|
||||||
name = "runner";
|
|
||||||
placeholder = "Runner";
|
|
||||||
refresh = true;
|
|
||||||
typeahead = true;
|
|
||||||
weight = 5;
|
|
||||||
};
|
|
||||||
ssh = {
|
|
||||||
history = true;
|
|
||||||
icon = "preferences-system-network";
|
|
||||||
name = "ssh";
|
|
||||||
placeholder = "SSH";
|
|
||||||
refresh = true;
|
|
||||||
switcher_only = true;
|
|
||||||
weight = 5;
|
|
||||||
};
|
|
||||||
switcher = {
|
|
||||||
name = "switcher";
|
|
||||||
placeholder = "Switcher";
|
|
||||||
prefix = "/";
|
|
||||||
weight = 5;
|
|
||||||
};
|
|
||||||
websearch = {
|
|
||||||
icon = "applications-internet";
|
|
||||||
name = "websearch";
|
|
||||||
placeholder = "Websearch";
|
|
||||||
weight = 5;
|
|
||||||
};
|
|
||||||
windows = {
|
|
||||||
icon = "view-restore";
|
|
||||||
name = "windows";
|
|
||||||
placeholder = "Windows";
|
|
||||||
weight = 10;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
disable_click_to_close = false;
|
|
||||||
force_keyboard_focus = true;
|
|
||||||
list = {
|
|
||||||
max_entries = 50;
|
|
||||||
show_initial_entries = true;
|
|
||||||
single_click = true;
|
|
||||||
};
|
|
||||||
search = {
|
|
||||||
delay = 0;
|
|
||||||
force_keyboard_focus = true;
|
|
||||||
history = true;
|
|
||||||
placeholder = "Search...";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
theme = {
|
|
||||||
layout = {
|
|
||||||
ui = {
|
|
||||||
anchors = {
|
|
||||||
bottom = false;
|
|
||||||
left = false;
|
|
||||||
right = false;
|
|
||||||
top = false;
|
|
||||||
};
|
|
||||||
window = {
|
|
||||||
h_align = "center";
|
|
||||||
v_align = "center";
|
|
||||||
box = {
|
|
||||||
h_align = "center";
|
|
||||||
v_align = "center";
|
|
||||||
orientation = "vertical";
|
|
||||||
search = {
|
|
||||||
h_align = "top";
|
|
||||||
margins = {
|
|
||||||
start = 3;
|
|
||||||
top = 3;
|
|
||||||
end = 3;
|
|
||||||
bottom = 3;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
scroll = {
|
|
||||||
overlay_scrolling = true;
|
|
||||||
list = {
|
|
||||||
margins = {
|
|
||||||
bottom = 3;
|
|
||||||
top = 0;
|
|
||||||
start = 3;
|
|
||||||
end = 3;
|
|
||||||
};
|
|
||||||
item = {
|
|
||||||
icon.theme = "${config.gtk.iconTheme.name}";
|
|
||||||
spacing = 3;
|
|
||||||
activation_label = {
|
|
||||||
x_align = 0.5;
|
|
||||||
y_align = 0.5;
|
|
||||||
width = 32;
|
|
||||||
};
|
|
||||||
text = {
|
|
||||||
h_align = "start";
|
|
||||||
h_expand = true;
|
|
||||||
revert = true;
|
|
||||||
wrap = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
style = let
|
|
||||||
inherit (config.lib.stylix) colors;
|
|
||||||
in ''
|
|
||||||
@define-color base00 #${colors.base00};
|
|
||||||
@define-color base01 #${colors.base01};
|
|
||||||
@define-color base02 #${colors.base02};
|
|
||||||
@define-color base03 #${colors.base03};
|
|
||||||
@define-color base04 #${colors.base04};
|
|
||||||
@define-color base05 #${colors.base05};
|
|
||||||
@define-color base06 #${colors.base06};
|
|
||||||
@define-color base07 #${colors.base07};
|
|
||||||
@define-color base08 #${colors.base08};
|
|
||||||
@define-color base09 #${colors.base09};
|
|
||||||
@define-color base0A #${colors.base0A};
|
|
||||||
@define-color base0B #${colors.base0B};
|
|
||||||
@define-color base0C #${colors.base0C};
|
|
||||||
@define-color base0D #${colors.base0D};
|
|
||||||
@define-color base0E #${colors.base0E};
|
|
||||||
@define-color base0F #${colors.base0F};
|
|
||||||
|
|
||||||
#window,
|
|
||||||
#box,
|
|
||||||
#search,
|
|
||||||
#password,
|
|
||||||
#input,
|
|
||||||
#typeahead,
|
|
||||||
#spinner,
|
|
||||||
#list,
|
|
||||||
child,
|
|
||||||
scrollbar,
|
|
||||||
slider,
|
|
||||||
#item,
|
|
||||||
#text,
|
|
||||||
#label,
|
|
||||||
#sub,
|
|
||||||
#activationlabel {
|
|
||||||
all: unset;
|
|
||||||
}
|
|
||||||
|
|
||||||
#window {
|
|
||||||
background: @base00;
|
|
||||||
color: @base05;
|
|
||||||
border-radius: 12px;
|
|
||||||
border: 1px solid @base0D;
|
|
||||||
}
|
|
||||||
|
|
||||||
#box {
|
|
||||||
background: @base00;
|
|
||||||
}
|
|
||||||
|
|
||||||
#search {
|
|
||||||
background: @base01;
|
|
||||||
border-radius: 9px;
|
|
||||||
padding: 8px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#password,
|
|
||||||
#input,
|
|
||||||
#typeahead {
|
|
||||||
background: none;
|
|
||||||
box-shadow: none;
|
|
||||||
border-radius: 6px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#input > *:first-child,
|
|
||||||
#typeahead > *:first-child {
|
|
||||||
margin-right: 3px;
|
|
||||||
border-radius: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#typeahead {
|
|
||||||
color: @base05;
|
|
||||||
}
|
|
||||||
|
|
||||||
#input placeholder {
|
|
||||||
opacity: 0.5;
|
|
||||||
}
|
|
||||||
|
|
||||||
#list {
|
|
||||||
padding: 3px;
|
|
||||||
border-radius: 9px;
|
|
||||||
background: @base01;
|
|
||||||
}
|
|
||||||
|
|
||||||
child {
|
|
||||||
box-shadow: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
child:selected,
|
|
||||||
child:hover {
|
|
||||||
box-shadow: none;
|
|
||||||
border-radius: 6px;
|
|
||||||
background: @base02;
|
|
||||||
}
|
|
||||||
|
|
||||||
#item {
|
|
||||||
padding: 4px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#sub {
|
|
||||||
font-size: smaller;
|
|
||||||
opacity: 0.5;
|
|
||||||
}
|
|
||||||
|
|
||||||
#activationlabel {
|
|
||||||
opacity: 0.5;
|
|
||||||
}
|
|
||||||
|
|
||||||
.activation #activationlabel {
|
|
||||||
opacity: 1;
|
|
||||||
color: @base05;
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,406 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
osConfig,
|
|
||||||
pkgs,
|
|
||||||
launcher,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
ifLaptop = lib.mkIf (osConfig.networking.hostName != "dunamis");
|
|
||||||
in {
|
|
||||||
enable = true;
|
|
||||||
systemd = {
|
|
||||||
enable = true;
|
|
||||||
target = "graphical-session.target";
|
|
||||||
};
|
|
||||||
settings.bottom = {
|
|
||||||
position = "bottom";
|
|
||||||
height = 34;
|
|
||||||
spacing = 0;
|
|
||||||
margin-left = 36 + 3;
|
|
||||||
margin-right = 36 + 3;
|
|
||||||
margin-bottom = 3;
|
|
||||||
modules-left = [
|
|
||||||
# "custom/launcher"
|
|
||||||
"niri/language"
|
|
||||||
"niri/workspaces"
|
|
||||||
# "wlr/taskbar"
|
|
||||||
];
|
|
||||||
modules-center = [
|
|
||||||
"clock"
|
|
||||||
];
|
|
||||||
modules-right = [
|
|
||||||
"privacy"
|
|
||||||
"network"
|
|
||||||
"cpu"
|
|
||||||
"memory"
|
|
||||||
"wireplumber"
|
|
||||||
"wireplumber#source"
|
|
||||||
(ifLaptop "group/laptop")
|
|
||||||
"tray"
|
|
||||||
"idle_inhibitor"
|
|
||||||
"custom/notification"
|
|
||||||
];
|
|
||||||
"niri/workspaces" = {
|
|
||||||
format = "{index}";
|
|
||||||
};
|
|
||||||
"niri/language" = {
|
|
||||||
format = "{short}";
|
|
||||||
# format-en = "🇺🇸";
|
|
||||||
# format-uk = "🇺🇦";
|
|
||||||
};
|
|
||||||
clock = {
|
|
||||||
format = "{:%R}";
|
|
||||||
interval = 1;
|
|
||||||
tooltip = true;
|
|
||||||
tooltip-format = "{:%B %d, %A}";
|
|
||||||
};
|
|
||||||
"custom/launcher" = {
|
|
||||||
format = "";
|
|
||||||
on-click = launcher;
|
|
||||||
tooltip = false;
|
|
||||||
};
|
|
||||||
"wlr/taskbar" = {
|
|
||||||
format = "{icon}";
|
|
||||||
icon-size = 16;
|
|
||||||
icon-theme = "${config.dconf.settings."org/gnome/desktop/interface".icon-theme}";
|
|
||||||
tooltip-format = "{title}";
|
|
||||||
on-click = "activate";
|
|
||||||
};
|
|
||||||
"group/laptop" = {
|
|
||||||
orientation = "inherit";
|
|
||||||
modules = [
|
|
||||||
"backlight"
|
|
||||||
"battery"
|
|
||||||
"power-profiles-daemon"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
backlight = {
|
|
||||||
format = "{percent}% {icon}";
|
|
||||||
format-icons = [
|
|
||||||
""
|
|
||||||
""
|
|
||||||
""
|
|
||||||
""
|
|
||||||
""
|
|
||||||
""
|
|
||||||
""
|
|
||||||
];
|
|
||||||
};
|
|
||||||
idle_inhibitor = {
|
|
||||||
tooltip = false;
|
|
||||||
format = "{icon}";
|
|
||||||
format-icons = {
|
|
||||||
activated = "";
|
|
||||||
deactivated = "";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
tray = {
|
|
||||||
icon-size = 16;
|
|
||||||
spacing = 6;
|
|
||||||
};
|
|
||||||
battery = {
|
|
||||||
states = {
|
|
||||||
good = 95;
|
|
||||||
warning = 30;
|
|
||||||
critical = 15;
|
|
||||||
};
|
|
||||||
format = "{capacity}% {icon}";
|
|
||||||
format-full = "{capacity}% ";
|
|
||||||
format-charging = "{capacity}% ";
|
|
||||||
format-plugged = "{capacity}% ";
|
|
||||||
format-alt = "{icon} {time}";
|
|
||||||
format-icons = ["" "" "" "" "" "" "" "" "" ""];
|
|
||||||
};
|
|
||||||
memory = {
|
|
||||||
format = "{used:0.1f}G ";
|
|
||||||
tooltip-format = ''
|
|
||||||
RAM: {used:0.1f}G/{total:0.1f}G ({percentage}%)
|
|
||||||
Swap: {swapUsed:0.1f}G/{swapTotal:0.1f}G ({swapPercentage}%)'';
|
|
||||||
};
|
|
||||||
network = {
|
|
||||||
format = "{bandwidthDownBits} | {bandwidthUpBits} ";
|
|
||||||
interval = 3;
|
|
||||||
tooltip = false;
|
|
||||||
};
|
|
||||||
cpu = {
|
|
||||||
format = "{usage}% ";
|
|
||||||
interval = 3;
|
|
||||||
};
|
|
||||||
power-profiles-daemon = {
|
|
||||||
format = "{icon}";
|
|
||||||
tooltip = true;
|
|
||||||
tooltip-format = "Power profile: {profile}\nDriver: {driver}";
|
|
||||||
format-icons = {
|
|
||||||
default = "";
|
|
||||||
performance = "";
|
|
||||||
balanced = "";
|
|
||||||
power-saver = "";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
wireplumber = {
|
|
||||||
format = "{volume}% {icon}";
|
|
||||||
format-muted = "";
|
|
||||||
format-icons = ["" "" ""];
|
|
||||||
on-click = lib.getExe pkgs.pwvucontrol;
|
|
||||||
on-click-right = "wpctl set-mute @DEFAULT_SINK@ toggle";
|
|
||||||
scroll-step = 3;
|
|
||||||
};
|
|
||||||
"wireplumber#source" = {
|
|
||||||
node-type = "Audio/Source";
|
|
||||||
format = "{volume}% ";
|
|
||||||
format-muted = "";
|
|
||||||
on-click-right = "wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle";
|
|
||||||
scroll-step = 3;
|
|
||||||
};
|
|
||||||
"custom/notification" = {
|
|
||||||
tooltip = false;
|
|
||||||
format = "{icon}";
|
|
||||||
format-icons = {
|
|
||||||
notification = "";
|
|
||||||
none = "";
|
|
||||||
dnd-notification = "";
|
|
||||||
dnd-none = "";
|
|
||||||
};
|
|
||||||
return-type = "json";
|
|
||||||
exec =
|
|
||||||
pkgs.writeShellApplication {
|
|
||||||
name = "xfce-notifyd-waybar";
|
|
||||||
runtimeInputs = with pkgs; [sqlite xfce.xfconf coreutils];
|
|
||||||
text =
|
|
||||||
# bash
|
|
||||||
''
|
|
||||||
is_dnd=$(xfconf-query -c xfce4-notifyd -p /do-not-disturb)
|
|
||||||
notifications_count=$(sqlite3 ~/.cache/xfce4/notifyd/log.sqlite "SELECT count(*) FROM notifications WHERE NOT is_read")
|
|
||||||
|
|
||||||
if [[ "$notifications_count" -ne 0 ]]; then
|
|
||||||
icon="notification"
|
|
||||||
else
|
|
||||||
icon="none"
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ "$is_dnd" == "true" ]]; then
|
|
||||||
icon="dnd-$icon"
|
|
||||||
fi
|
|
||||||
|
|
||||||
printf '{"text": "%s", "alt": "%s"}' "$notifications_count" "$icon"
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
+ "/bin/xfce-notifyd-waybar";
|
|
||||||
on-click = "xfconf-query -c xfce4-notifyd -p /do-not-disturb -T";
|
|
||||||
on-click-right = lib.getExe pkgs.xfce.xfce4-notifyd;
|
|
||||||
escape = true;
|
|
||||||
signal = 1;
|
|
||||||
};
|
|
||||||
"privacy" = {
|
|
||||||
icon-spacing = 0;
|
|
||||||
icon-size = 16;
|
|
||||||
transition-duration = 250;
|
|
||||||
screenshare = {
|
|
||||||
type = "screenshare";
|
|
||||||
tooltip = true;
|
|
||||||
tooltip-icon-size = 24;
|
|
||||||
};
|
|
||||||
audio-in = {
|
|
||||||
type = "audio-in";
|
|
||||||
tooltip = true;
|
|
||||||
tooltip-icon-size = 24;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# TODO: figure out magic waybar css styling (does it pick up `~/.config/gtk-3.0/gtk.css` ?)
|
|
||||||
style = let
|
|
||||||
colors = config.lib.stylix.colors.withHashtag;
|
|
||||||
in
|
|
||||||
# css
|
|
||||||
''
|
|
||||||
@define-color base00 ${colors.base00}; @define-color base08 ${colors.base08};
|
|
||||||
@define-color base01 ${colors.base01}; @define-color base09 ${colors.base09};
|
|
||||||
@define-color base02 ${colors.base02}; @define-color base0A ${colors.base0A};
|
|
||||||
@define-color base03 ${colors.base03}; @define-color base0B ${colors.base0B};
|
|
||||||
@define-color base04 ${colors.base04}; @define-color base0C ${colors.base0C};
|
|
||||||
@define-color base05 ${colors.base05}; @define-color base0D ${colors.base0D};
|
|
||||||
@define-color base06 ${colors.base06}; @define-color base0E ${colors.base0E};
|
|
||||||
@define-color base07 ${colors.base07}; @define-color base0F ${colors.base0F};
|
|
||||||
|
|
||||||
* {
|
|
||||||
font-family: Symbols Nerd Font, FontAwesome, ${config.stylix.fonts.sansSerif.name};
|
|
||||||
font-size: 16px;
|
|
||||||
font-weight: 500;
|
|
||||||
}
|
|
||||||
|
|
||||||
.modules-left,
|
|
||||||
.modules-center,
|
|
||||||
.modules-right,
|
|
||||||
window#waybar {
|
|
||||||
background-color: @base00;
|
|
||||||
color: @base05;
|
|
||||||
border-radius: 12px;
|
|
||||||
}
|
|
||||||
window#waybar {
|
|
||||||
border: 1px solid @base01;
|
|
||||||
}
|
|
||||||
|
|
||||||
.modules-left,
|
|
||||||
.modules-center,
|
|
||||||
.modules-right {
|
|
||||||
margin: 1px;
|
|
||||||
padding-left: 3px;
|
|
||||||
} /* for leftmost modules */
|
|
||||||
|
|
||||||
button {
|
|
||||||
border-radius: 6px;
|
|
||||||
box-shadow: inset 0 -3px transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
button:hover {
|
|
||||||
background: inherit;
|
|
||||||
box-shadow: inset 0 -3px transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
label:focus {
|
|
||||||
background-color: #000000;
|
|
||||||
}
|
|
||||||
|
|
||||||
tooltip label {
|
|
||||||
color: @base05;
|
|
||||||
}
|
|
||||||
|
|
||||||
tooltip {
|
|
||||||
background: @base01;
|
|
||||||
border: 1px solid @base0D;
|
|
||||||
border-radius: 16px;
|
|
||||||
padding: 2em;
|
|
||||||
}
|
|
||||||
|
|
||||||
window#bottom.modules-center {
|
|
||||||
background-color: transparent
|
|
||||||
}
|
|
||||||
|
|
||||||
#backlight,
|
|
||||||
#battery,
|
|
||||||
#clock,
|
|
||||||
#cpu,
|
|
||||||
#custom-launcher,
|
|
||||||
#custom-notification,
|
|
||||||
#idle_inhibitor,
|
|
||||||
#language,
|
|
||||||
#memory,
|
|
||||||
#network,
|
|
||||||
#power-profiles-daemon,
|
|
||||||
#privacy,
|
|
||||||
#privacy-item,
|
|
||||||
#taskbar button,
|
|
||||||
#taskbar,
|
|
||||||
#tray,
|
|
||||||
#wireplumber,
|
|
||||||
#workspaces button,
|
|
||||||
#workspaces {
|
|
||||||
all: unset;
|
|
||||||
border-radius: 9px;
|
|
||||||
background-color: @base01;
|
|
||||||
margin: 3px 3px 3px 0;
|
|
||||||
padding: 0 0.42em;
|
|
||||||
}
|
|
||||||
#clock {
|
|
||||||
background-color: @base00;
|
|
||||||
}
|
|
||||||
|
|
||||||
#backlight,
|
|
||||||
#battery,
|
|
||||||
#custom-launcher,
|
|
||||||
#custom-notification,
|
|
||||||
#idle_inhibitor,
|
|
||||||
#power-profiles-daemon,
|
|
||||||
#wireplumber {
|
|
||||||
padding: 0 0.5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
#battery.critical:not(.charging) {
|
|
||||||
background-color: @base09;
|
|
||||||
color: @base00;
|
|
||||||
}
|
|
||||||
|
|
||||||
#custom-launcher,
|
|
||||||
#custom-notification,
|
|
||||||
#idle_inhibitor,
|
|
||||||
#language,
|
|
||||||
#power-profiles-daemon {
|
|
||||||
padding: 0;
|
|
||||||
min-width: 1.7em;
|
|
||||||
}
|
|
||||||
|
|
||||||
#power-profiles-daemon.performance {
|
|
||||||
background-color: @base0D;
|
|
||||||
color: @base00;
|
|
||||||
}
|
|
||||||
|
|
||||||
#power-profiles-daemon.power-saver {
|
|
||||||
background-color: @base0A;
|
|
||||||
color: @base00;
|
|
||||||
}
|
|
||||||
|
|
||||||
#privacy,
|
|
||||||
#taskbar,
|
|
||||||
#workspaces {
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#privacy-item,
|
|
||||||
#taskbar button,
|
|
||||||
#workspaces button {
|
|
||||||
border-radius: 6px;
|
|
||||||
min-width: 1.35em;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#privacy-item.audio-in {
|
|
||||||
background-color: @base0E;
|
|
||||||
color: @base00;
|
|
||||||
margin: 3px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#privacy-item.screenshare {
|
|
||||||
background-color: @base0C;
|
|
||||||
color: @base00;
|
|
||||||
margin-right: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#taskbar button {
|
|
||||||
padding: 0 0.4em;
|
|
||||||
margin: 3px 3px 3px 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#taskbar button.active,
|
|
||||||
#workspaces button.active {
|
|
||||||
background-color: @base02;
|
|
||||||
}
|
|
||||||
|
|
||||||
#taskbar button.active:hover,
|
|
||||||
#taskbar button:hover,
|
|
||||||
#workspaces button:hover,
|
|
||||||
#workspaces button.active:hover {
|
|
||||||
background-color: @base0D;
|
|
||||||
color: @base00;
|
|
||||||
}
|
|
||||||
|
|
||||||
#taskbar.empty {
|
|
||||||
background-color: transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
#tray>.needs-attention {
|
|
||||||
-gtk-icon-effect: highlight;
|
|
||||||
background-color: @base08;
|
|
||||||
}
|
|
||||||
|
|
||||||
#tray>.passive {
|
|
||||||
-gtk-icon-effect: dim;
|
|
||||||
}
|
|
||||||
|
|
||||||
#taskbar,
|
|
||||||
#workspaces {
|
|
||||||
padding-left: 3px;
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
@@ -1,59 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
lockscreen,
|
|
||||||
osConfig,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
lib.attrsets.recursiveUpdate {
|
|
||||||
blueman-applet.enable = osConfig.services.blueman.enable;
|
|
||||||
copyq.enable = true;
|
|
||||||
gammastep.enable = true;
|
|
||||||
gnome-keyring.enable = true;
|
|
||||||
hypridle.enable = true;
|
|
||||||
kanshi = import ./kanshi;
|
|
||||||
network-manager-applet.enable = true;
|
|
||||||
playerctld.enable = true;
|
|
||||||
# swaync = import ./swaync;
|
|
||||||
swayosd.enable = true;
|
|
||||||
udiskie.enable = true;
|
|
||||||
# vicinae = import ./vicinae;
|
|
||||||
wpaperd.enable = true;
|
|
||||||
}
|
|
||||||
{
|
|
||||||
gammastep = {
|
|
||||||
provider = "manual";
|
|
||||||
latitude = 49.6;
|
|
||||||
longitude = 36.1;
|
|
||||||
tray = true;
|
|
||||||
temperature = {
|
|
||||||
day = 6500;
|
|
||||||
night = 3000;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
gnome-keyring.components = ["secrets"];
|
|
||||||
hypridle.settings = {
|
|
||||||
general = {
|
|
||||||
before_sleep_cmd = "loginctl lock-session";
|
|
||||||
lock_cmd = "pidof ${lockscreen} || ${lockscreen}";
|
|
||||||
# unlock_cmd = "loginctl unlock-session";
|
|
||||||
};
|
|
||||||
listener = [
|
|
||||||
{
|
|
||||||
timeout = 600;
|
|
||||||
on-timeout = "pidof ${lockscreen} || ${lockscreen}";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
timeout = 601;
|
|
||||||
on-timeout = lib.getExe pkgs.niri + " msg action power-off-monitors";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
swayosd.topMargin = 0.8;
|
|
||||||
udiskie = {
|
|
||||||
automount = false;
|
|
||||||
notify = true;
|
|
||||||
tray = "auto";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,178 +0,0 @@
|
|||||||
{
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
cssPriority = "user";
|
|
||||||
image-visibility = "when-available";
|
|
||||||
keyboard-shortcut = true;
|
|
||||||
relative-timestamps = true;
|
|
||||||
timeout = 5;
|
|
||||||
timeout-low = 5;
|
|
||||||
timeout-critical = 0;
|
|
||||||
script-fail-notify = true;
|
|
||||||
transition-time = 200;
|
|
||||||
|
|
||||||
# Layer settings
|
|
||||||
layer-shell = true;
|
|
||||||
layer = "overlay";
|
|
||||||
control-center-layer = "overlay";
|
|
||||||
|
|
||||||
# Notification settings
|
|
||||||
positionX = "left";
|
|
||||||
positionY = "top";
|
|
||||||
notification-2fa-action = true;
|
|
||||||
notification-inline-replies = false;
|
|
||||||
notification-icon-size = 48;
|
|
||||||
notification-body-image-height = 100;
|
|
||||||
notification-body-image-width = 200;
|
|
||||||
notification-window-width = 400;
|
|
||||||
|
|
||||||
# Control center settings
|
|
||||||
control-center-positionX = "left";
|
|
||||||
control-center-positionY = "top";
|
|
||||||
control-center-width = 500;
|
|
||||||
control-center-exclusive-zone = true;
|
|
||||||
fit-to-screen = true;
|
|
||||||
hide-on-action = true;
|
|
||||||
hide-on-clear = false;
|
|
||||||
|
|
||||||
# Widget settings
|
|
||||||
widgets = [
|
|
||||||
"title"
|
|
||||||
"dnd"
|
|
||||||
"notifications"
|
|
||||||
"mpris"
|
|
||||||
];
|
|
||||||
|
|
||||||
widget-config = {
|
|
||||||
title = {
|
|
||||||
text = "Notifications";
|
|
||||||
clear-all-button = true;
|
|
||||||
button-text = "Clear All";
|
|
||||||
};
|
|
||||||
dnd = {
|
|
||||||
text = "Do Not Disturb";
|
|
||||||
};
|
|
||||||
mpris = {
|
|
||||||
image-size = 96;
|
|
||||||
image-radius = 12;
|
|
||||||
blur = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
# TODO: disable stylix, redo everything
|
|
||||||
style = ''
|
|
||||||
* {
|
|
||||||
all: unset;
|
|
||||||
}
|
|
||||||
|
|
||||||
progress,
|
|
||||||
progressbar,
|
|
||||||
trough {
|
|
||||||
border-radius: 16px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.app-icon,
|
|
||||||
.image {
|
|
||||||
-gtk-icon-effect: none;
|
|
||||||
padding-right: 0.5rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.notification-action {
|
|
||||||
border-radius: 9px;
|
|
||||||
margin: 3px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.close-button {
|
|
||||||
margin: 12px;
|
|
||||||
border-radius: 6px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.notification-group.collapsed
|
|
||||||
.notification-row:not(:last-child)
|
|
||||||
.notification-action,
|
|
||||||
.notification-group.collapsed
|
|
||||||
.notification-row:not(:last-child)
|
|
||||||
.notification-default-action {
|
|
||||||
opacity: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.trough {
|
|
||||||
margin: 4px;
|
|
||||||
border-radius: 7px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.notification,
|
|
||||||
.notification.low,
|
|
||||||
.notification.normal,
|
|
||||||
.notification.critical,
|
|
||||||
.control-center {
|
|
||||||
border-radius: 12px;
|
|
||||||
margin: 6px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.floating-notifications,
|
|
||||||
.notification-content {
|
|
||||||
padding: 0.5rem;
|
|
||||||
margin: 3px;
|
|
||||||
border-radius: 9px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.control-center-list {
|
|
||||||
background: transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
.widget-title {
|
|
||||||
margin: 0.5rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.widget-title > label {
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
.widget-title > button {
|
|
||||||
border-radius: 9px;
|
|
||||||
padding: 0.5rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.widget-dnd {
|
|
||||||
margin: 0.5rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.widget-dnd > label {
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
.widget-dnd > switch {
|
|
||||||
border-radius: 9px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.widget-dnd > switch slider {
|
|
||||||
margin: 3px;
|
|
||||||
border-radius: 6px;
|
|
||||||
padding: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.widget-mpris .widget-mpris-player {
|
|
||||||
border-radius: 12px;
|
|
||||||
margin: 0.5rem;
|
|
||||||
padding: 0.5rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.widget-mpris .widget-mpris-player .widget-mpris-album-art {
|
|
||||||
border-radius: 9px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.widget-mpris .widget-mpris-player .widget-mpris-title {
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
|
|
||||||
.widget-mpris .widget-mpris-player .widget-mpris-subtitle {
|
|
||||||
font-weight: normal;
|
|
||||||
}
|
|
||||||
|
|
||||||
.widget-mpris .widget-mpris-player > box > button {
|
|
||||||
border-radius: 6px;
|
|
||||||
padding: 3px;
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
@@ -1,4 +0,0 @@
|
|||||||
{
|
|
||||||
enable = true;
|
|
||||||
autoStart = true;
|
|
||||||
}
|
|
||||||
@@ -1,888 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
# pkgs-51b85c,
|
|
||||||
lib,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
# imports = [./walker.nix];
|
|
||||||
stylix.targets.sway.enable = true;
|
|
||||||
wayland.windowManager.sway = {
|
|
||||||
enable = true;
|
|
||||||
systemd.enable = true;
|
|
||||||
# xwayland.enable = false;
|
|
||||||
wrapperFeatures.gtk = true;
|
|
||||||
config = let
|
|
||||||
modifier = "Mod4";
|
|
||||||
terminal = "ghostty";
|
|
||||||
launcher = "walker";
|
|
||||||
clipboard = "copyq toggle";
|
|
||||||
left = "n";
|
|
||||||
down = "e";
|
|
||||||
up = "i";
|
|
||||||
right = "o";
|
|
||||||
in {
|
|
||||||
bars = [
|
|
||||||
{
|
|
||||||
command = "${lib.getExe pkgs.waybar}";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
modifier = "${modifier}";
|
|
||||||
terminal = "${terminal}";
|
|
||||||
menu = "${launcher}";
|
|
||||||
|
|
||||||
left = "${left}";
|
|
||||||
down = "${down}";
|
|
||||||
up = "${up}";
|
|
||||||
right = "${right}";
|
|
||||||
|
|
||||||
workspaceLayout = "tabbed";
|
|
||||||
|
|
||||||
input = {
|
|
||||||
"*" = {
|
|
||||||
xkb_layout = "us,ua";
|
|
||||||
repeat_delay = "200";
|
|
||||||
repeat_rate = "50";
|
|
||||||
accel_profile = "flat";
|
|
||||||
};
|
|
||||||
"type:touchpad" = {
|
|
||||||
tap = "enabled";
|
|
||||||
scroll_method = "two_finger";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
output = {
|
|
||||||
"Samsung Electric Company S24R65x H4TMA03291" = {
|
|
||||||
mode = "1920x1080@74.973Hz";
|
|
||||||
pos = "0 0";
|
|
||||||
adaptive_sync = "on";
|
|
||||||
allow_tearing = "yes";
|
|
||||||
max_render_time = "off";
|
|
||||||
};
|
|
||||||
"AOC 27V2G5 0x0000026C" = {
|
|
||||||
pos = "1920 0";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
keybindings = lib.mkForce {
|
|
||||||
"${modifier}+Ctrl+q" = "kill";
|
|
||||||
"${modifier}+Ctrl+Escape" = "exit";
|
|
||||||
"${modifier}+Ctrl+r" = "reload";
|
|
||||||
|
|
||||||
"${modifier}+Ctrl+${left}" = "move left";
|
|
||||||
"${modifier}+Ctrl+${down}" = "move down";
|
|
||||||
"${modifier}+Ctrl+${up}" = "move up";
|
|
||||||
"${modifier}+Ctrl+${right}" = "move right";
|
|
||||||
"${modifier}+Ctrl+left" = "move left";
|
|
||||||
"${modifier}+Ctrl+down" = "move down";
|
|
||||||
"${modifier}+Ctrl+up" = "move up";
|
|
||||||
"${modifier}+Ctrl+right" = "move right";
|
|
||||||
"${modifier}+Ctrl+1" = "move window workspace 1";
|
|
||||||
"${modifier}+Ctrl+2" = "move window workspace 2";
|
|
||||||
"${modifier}+Ctrl+3" = "move window workspace 3";
|
|
||||||
"${modifier}+Ctrl+4" = "move window workspace 4";
|
|
||||||
"${modifier}+Ctrl+5" = "move window workspace 5";
|
|
||||||
"${modifier}+Ctrl+6" = "move window workspace 6";
|
|
||||||
"${modifier}+Ctrl+7" = "move window workspace 7";
|
|
||||||
"${modifier}+Ctrl+8" = "move window workspace 8";
|
|
||||||
"${modifier}+Ctrl+9" = "move window workspace 9";
|
|
||||||
"${modifier}+Ctrl+0" = "move window workspace 10";
|
|
||||||
"${modifier}+Ctrl+l" = "move window workspace prev";
|
|
||||||
"${modifier}+Ctrl+y" = "move window workspace next";
|
|
||||||
|
|
||||||
"${modifier}+Shift+${left}" = "focus output left";
|
|
||||||
"${modifier}+Shift+${down}" = "focus output down";
|
|
||||||
"${modifier}+Shift+${up}" = "focus output up";
|
|
||||||
"${modifier}+Shift+${right}" = "focus output right";
|
|
||||||
"${modifier}+Shift+left" = "focus output left";
|
|
||||||
"${modifier}+Shift+down" = "focus output down";
|
|
||||||
"${modifier}+Shift+up" = "focus output up";
|
|
||||||
"${modifier}+Shift+right" = "focus output right";
|
|
||||||
|
|
||||||
"${modifier}+Return" = "exec ${terminal}";
|
|
||||||
"${modifier}+Shift+v" = "exec ${clipboard}";
|
|
||||||
"${modifier}+Space" = "exec ${launcher}";
|
|
||||||
|
|
||||||
"${modifier}+c" = "splith";
|
|
||||||
"${modifier}+d" = "splitv";
|
|
||||||
"${modifier}+s" = "layout toggle split";
|
|
||||||
"${modifier}+t" = "layout tabbed";
|
|
||||||
"${modifier}+h" = "focus mode_toggle";
|
|
||||||
"${modifier}+f" = "floating toggle";
|
|
||||||
"${modifier}+m" = "fullscreen toggle";
|
|
||||||
"${modifier}+g" = "sticky toggle";
|
|
||||||
"${modifier}+b" = "bar mode toggle";
|
|
||||||
|
|
||||||
"--locked ${modifier}+Escape" = "exec swaymsg input \"*\" xkb_switch_layout next";
|
|
||||||
"Print" = ''exec ${pkgs.grim}/bin/grim -g "$(${pkgs.slurp}/bin/slurp -o -r -c '#ff0000ff')" -t ppm - | ${pkgs.satty}/bin/satty --filename - --fullscreen --output-filename ~/pics/screenshots/satty-$(date '+%Y%m%d-%H:%M:%S').png'';
|
|
||||||
|
|
||||||
"${modifier}+1" = "workspace 1";
|
|
||||||
"${modifier}+2" = "workspace 2";
|
|
||||||
"${modifier}+3" = "workspace 3";
|
|
||||||
"${modifier}+4" = "workspace 4";
|
|
||||||
"${modifier}+5" = "workspace 5";
|
|
||||||
"${modifier}+6" = "workspace 6";
|
|
||||||
"${modifier}+7" = "workspace 7";
|
|
||||||
"${modifier}+8" = "workspace 8";
|
|
||||||
"${modifier}+9" = "workspace 9";
|
|
||||||
"${modifier}+0" = "workspace 10";
|
|
||||||
"${modifier}+l" = "workspace prev";
|
|
||||||
"${modifier}+y" = "workspace next";
|
|
||||||
|
|
||||||
"${modifier}+${left}" = "focus left";
|
|
||||||
"${modifier}+${down}" = "focus down";
|
|
||||||
"${modifier}+${up}" = "focus up";
|
|
||||||
"${modifier}+${right}" = "focus right";
|
|
||||||
"${modifier}+left" = "focus left";
|
|
||||||
"${modifier}+down" = "focus down";
|
|
||||||
"${modifier}+up" = "focus up";
|
|
||||||
"${modifier}+right" = "focus right";
|
|
||||||
};
|
|
||||||
window = {
|
|
||||||
border = 1;
|
|
||||||
# hideEdgeBorders = "smart";
|
|
||||||
};
|
|
||||||
gaps = {
|
|
||||||
# top = 6;
|
|
||||||
# bottom = 6;
|
|
||||||
# left = 6;
|
|
||||||
# right = 6;
|
|
||||||
outer = 6;
|
|
||||||
inner = 3;
|
|
||||||
};
|
|
||||||
floating.criteria = [
|
|
||||||
{
|
|
||||||
app_id = "com.github.hluk.copyq";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
app_id = "com.saivert.pwvucontrol";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
programs.swaylock.enable = true;
|
|
||||||
services.swayidle = {
|
|
||||||
enable = true;
|
|
||||||
systemdTarget = "sway-session.target";
|
|
||||||
timeouts = [
|
|
||||||
{
|
|
||||||
timeout = 300;
|
|
||||||
command = "${pkgs.swaylock}/bin/swaylock -fF";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
timeout = 301;
|
|
||||||
command = "${pkgs.sway}/bin/swaymsg \"output * dpms off\"";
|
|
||||||
resumeCommand = "${pkgs.sway}/bin/swaymsg \"output * dpms on\"";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
events = [
|
|
||||||
{
|
|
||||||
event = "lock";
|
|
||||||
command = "${pkgs.swaylock}/bin/swaylock -fF &&";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
event = "unlock";
|
|
||||||
command = "${pkgs.procps}/bin/pkill -SIGUSR1 swaylock";
|
|
||||||
}
|
|
||||||
{
|
|
||||||
event = "lock";
|
|
||||||
command = "${pkgs.swaylock}/bin/swaylock -fF & ${pkgs.playerctl}/bin/playerctl pause";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
services.playerctld.enable = true;
|
|
||||||
services.gnome-keyring = {
|
|
||||||
enable = true;
|
|
||||||
components = ["secrets" "ssh"];
|
|
||||||
};
|
|
||||||
services.ssh-agent.enable = true;
|
|
||||||
programs.keychain = {
|
|
||||||
enable = true;
|
|
||||||
keys = ["id_ed25519"];
|
|
||||||
enableNushellIntegration = true;
|
|
||||||
extraFlags = [
|
|
||||||
"--quiet"
|
|
||||||
"--noask"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
services = {
|
|
||||||
network-manager-applet.enable = true;
|
|
||||||
blueman-applet.enable = true;
|
|
||||||
copyq.enable = true;
|
|
||||||
};
|
|
||||||
qt = {
|
|
||||||
enable = true;
|
|
||||||
platformTheme.name = "gtk3";
|
|
||||||
#style.name = "gtk2";
|
|
||||||
};
|
|
||||||
stylix.targets.waybar.enable = false;
|
|
||||||
programs.waybar = {
|
|
||||||
enable = true;
|
|
||||||
#package = pkgs.waybar-0.11.0";
|
|
||||||
# systemd = {
|
|
||||||
# enable = true;
|
|
||||||
# target = "graphical-session.target";
|
|
||||||
# };
|
|
||||||
settings = {
|
|
||||||
bar-0 = {
|
|
||||||
ipc = true;
|
|
||||||
id = "bar-0";
|
|
||||||
layer = "top";
|
|
||||||
position = "bottom";
|
|
||||||
height = 32;
|
|
||||||
spacing = 6;
|
|
||||||
# margin-top = 8;
|
|
||||||
margin-left = 8;
|
|
||||||
margin-right = 8;
|
|
||||||
margin-bottom = 8;
|
|
||||||
reload_style_on_change = true;
|
|
||||||
modules-left = [
|
|
||||||
#"custom/notification"
|
|
||||||
"group/sway"
|
|
||||||
"wlr/taskbar"
|
|
||||||
];
|
|
||||||
modules-center = ["clock"];
|
|
||||||
modules-right = [
|
|
||||||
"privacy"
|
|
||||||
"tray"
|
|
||||||
"wireplumber"
|
|
||||||
# "group/laptop"
|
|
||||||
"idle_inhibitor"
|
|
||||||
];
|
|
||||||
"sway/workspaces" = {
|
|
||||||
format = "{icon}";
|
|
||||||
format-icons = {
|
|
||||||
"1" = "I";
|
|
||||||
"2" = "II";
|
|
||||||
"3" = "III";
|
|
||||||
"4" = "IV";
|
|
||||||
"5" = "V";
|
|
||||||
"6" = "VI";
|
|
||||||
"7" = "VII";
|
|
||||||
"8" = "IIX";
|
|
||||||
"9" = "IX";
|
|
||||||
"10" = "X";
|
|
||||||
#focused = "";
|
|
||||||
#active = "";
|
|
||||||
#default = "";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
"sway/language" = {
|
|
||||||
format = "{flag}";
|
|
||||||
tooltip-format = "{long}";
|
|
||||||
on-click = "swaymsg input type:keyboard xkb_switch_layout next";
|
|
||||||
};
|
|
||||||
"group/sway" = {
|
|
||||||
orientation = "inherit";
|
|
||||||
modules = [
|
|
||||||
"sway/language"
|
|
||||||
"sway/workspaces"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
"group/laptop" = {
|
|
||||||
orientation = "inherit";
|
|
||||||
drawer = {
|
|
||||||
transition-duration = 500;
|
|
||||||
children-class = "laptop";
|
|
||||||
transition-left-to-right = false;
|
|
||||||
};
|
|
||||||
modules = [
|
|
||||||
"battery"
|
|
||||||
"power-profiles-daemon"
|
|
||||||
"custom/separator"
|
|
||||||
"custom/kbd-backlight"
|
|
||||||
"custom/separator"
|
|
||||||
"custom/backlight"
|
|
||||||
"custom/separator"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
"idle_inhibitor" = {
|
|
||||||
format = "{icon}";
|
|
||||||
format-icons = {
|
|
||||||
activated = "";
|
|
||||||
deactivated = "";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
"tray" = {
|
|
||||||
icon-size = 24;
|
|
||||||
spacing = 3;
|
|
||||||
};
|
|
||||||
"clock" = {
|
|
||||||
interval = 1;
|
|
||||||
format = "{:%H:%M:%S}";
|
|
||||||
tooltip-format = "{:%d.%m.%Y}";
|
|
||||||
};
|
|
||||||
# "custom/backlight" = {
|
|
||||||
# format = "{}% {icon}";
|
|
||||||
# interval = 1;
|
|
||||||
# format-icons = [""];
|
|
||||||
# };
|
|
||||||
# "custom/kbd-backlight" = {
|
|
||||||
# exec = "brightnessctl s 5%+";
|
|
||||||
# interval = 1;
|
|
||||||
# format = "{}% {icon}";
|
|
||||||
# format-icons = [""];
|
|
||||||
# on-scroll-up = "~/.local/bin/keyboard-brightness.nu increase";
|
|
||||||
# on-scroll-down = "~/.local/bin/keyboard-brightness.nu decrease";
|
|
||||||
# };
|
|
||||||
# battery = {
|
|
||||||
# states = {
|
|
||||||
# good = 95;
|
|
||||||
# warning = 30;
|
|
||||||
# critical = 15;
|
|
||||||
# };
|
|
||||||
# format = "{capacity}% {icon}";
|
|
||||||
# format-full = "{capacity}% ";
|
|
||||||
# format-charging = "{capacity}% ";
|
|
||||||
# format-plugged = "{capacity}% ";
|
|
||||||
# format-alt = "{icon} {time}";
|
|
||||||
# format-icons = ["" "" "" "" "" "" "" "" "" ""];
|
|
||||||
# };
|
|
||||||
"upower" = {
|
|
||||||
icon-size = 16;
|
|
||||||
format = "{percentage}";
|
|
||||||
hide-if-empty = true;
|
|
||||||
tooltip = true;
|
|
||||||
tooltip-spacing = 20;
|
|
||||||
};
|
|
||||||
# "power-profiles-daemon" = {
|
|
||||||
# format = "{icon}";
|
|
||||||
# tooltip-format = "Power profile: {profile}\nDriver: {driver}";
|
|
||||||
# tooltip = true;
|
|
||||||
# format-icons = {
|
|
||||||
# default = "";
|
|
||||||
# performance = "";
|
|
||||||
# balanced = "";
|
|
||||||
# power-saver = "";
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
"wireplumber" = {
|
|
||||||
scroll-step = 3;
|
|
||||||
format = "{volume}% {icon}";
|
|
||||||
format-muted = "";
|
|
||||||
format-icons = ["" "" ""];
|
|
||||||
on-click = "${pkgs.pwvucontrol}/bin/pwvucontrol";
|
|
||||||
on-click-right = "wpctl set-mute @DEFAULT_SINK@ toggle";
|
|
||||||
};
|
|
||||||
"custom/notification" = {
|
|
||||||
tooltip = false;
|
|
||||||
format = "{icon}";
|
|
||||||
format-icons = {
|
|
||||||
notification = "";
|
|
||||||
none = "";
|
|
||||||
dnd-notification = "";
|
|
||||||
dnd-none = "";
|
|
||||||
};
|
|
||||||
return-type = "json";
|
|
||||||
exec-if = "which swaync-client";
|
|
||||||
exec = "swaync-client -swb";
|
|
||||||
on-click = "swaync-client -t -sw";
|
|
||||||
on-click-right = "swaync-client -d -sw";
|
|
||||||
escape = true;
|
|
||||||
};
|
|
||||||
"privacy" = {
|
|
||||||
# icon-spacing = 4;
|
|
||||||
icon-size = 16;
|
|
||||||
transition-duration = 250;
|
|
||||||
screenshare = {
|
|
||||||
type = "screenshare";
|
|
||||||
tooltip = true;
|
|
||||||
tooltip-icon-size = 24;
|
|
||||||
};
|
|
||||||
audio-in = {
|
|
||||||
type = "audio-in";
|
|
||||||
tooltip = true;
|
|
||||||
tooltip-icon-size = 24;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
"wlr/taskbar" = {
|
|
||||||
format = "{icon}";
|
|
||||||
icon-size = 24;
|
|
||||||
icon-theme = "${config.dconf.settings."org/gnome/desktop/interface".icon-theme}";
|
|
||||||
tooltip-format = "{title}";
|
|
||||||
on-click = "activate";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
style = ''
|
|
||||||
@define-color base00 #${config.lib.stylix.colors.base00};
|
|
||||||
@define-color base01 #${config.lib.stylix.colors.base01};
|
|
||||||
@define-color base02 #${config.lib.stylix.colors.base02};
|
|
||||||
@define-color base03 #${config.lib.stylix.colors.base03};
|
|
||||||
@define-color base04 #${config.lib.stylix.colors.base04};
|
|
||||||
@define-color base05 #${config.lib.stylix.colors.base05};
|
|
||||||
@define-color base06 #${config.lib.stylix.colors.base06};
|
|
||||||
@define-color base07 #${config.lib.stylix.colors.base07};
|
|
||||||
@define-color base08 #${config.lib.stylix.colors.base08};
|
|
||||||
@define-color base09 #${config.lib.stylix.colors.base09};
|
|
||||||
@define-color base0A #${config.lib.stylix.colors.base0A};
|
|
||||||
@define-color base0B #${config.lib.stylix.colors.base0B};
|
|
||||||
@define-color base0C #${config.lib.stylix.colors.base0C};
|
|
||||||
@define-color base0D #${config.lib.stylix.colors.base0D};
|
|
||||||
@define-color base0E #${config.lib.stylix.colors.base0E};
|
|
||||||
@define-color base0F #${config.lib.stylix.colors.base0F};
|
|
||||||
* {
|
|
||||||
font-family: ${config.stylix.fonts.sansSerif.name}, FontAwesome;
|
|
||||||
font-weight: 500;
|
|
||||||
font-size: 100%;
|
|
||||||
/* margin: 0px 2px 2px 2px; */
|
|
||||||
}
|
|
||||||
window#waybar {
|
|
||||||
background-color: @base00;
|
|
||||||
border: 1px solid @base0D;
|
|
||||||
/* border-top: 3px solid @overlay0; */
|
|
||||||
color: @base05;
|
|
||||||
/* padding: 0px 2px 0px 0px; */
|
|
||||||
transition-property: background-color;
|
|
||||||
transition-duration: 0.5s;
|
|
||||||
}
|
|
||||||
.modules-left,
|
|
||||||
.modules-center,
|
|
||||||
.modules-right {
|
|
||||||
padding: 1px;
|
|
||||||
margin-left: 4px;
|
|
||||||
margin-right: 4px;
|
|
||||||
}
|
|
||||||
tooltip {
|
|
||||||
background: @base01;
|
|
||||||
border: 1px solid @base0E;
|
|
||||||
}
|
|
||||||
tooltip label {
|
|
||||||
color: @base05;
|
|
||||||
}
|
|
||||||
button {
|
|
||||||
box-shadow: inset 0 -3px transparent;
|
|
||||||
border-radius: 12px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */
|
|
||||||
button:hover {
|
|
||||||
background: inherit;
|
|
||||||
box-shadow: inset 0 -3px transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
#mode {
|
|
||||||
background-color: rgba(0, 0, 0, 0.2);
|
|
||||||
box-shadow: inset 0 -3px @base05;
|
|
||||||
}
|
|
||||||
|
|
||||||
#clock,
|
|
||||||
#battery,
|
|
||||||
#cpu,
|
|
||||||
#memory,
|
|
||||||
#disk,
|
|
||||||
#temperature,
|
|
||||||
#backlight,
|
|
||||||
#custom-backlight,
|
|
||||||
#custom-kbd-backlight,
|
|
||||||
#workspaces,
|
|
||||||
#network,
|
|
||||||
#pulseaudio,
|
|
||||||
#wireplumber,
|
|
||||||
#custom-media,
|
|
||||||
#laptop,
|
|
||||||
#tray,
|
|
||||||
#mode,
|
|
||||||
#privacy
|
|
||||||
#privacy-item,
|
|
||||||
#idle_inhibitor,
|
|
||||||
#backlight-slider,
|
|
||||||
#custom-notification,
|
|
||||||
#scratchpad,
|
|
||||||
#power-profiles-daemon,
|
|
||||||
#taskbar,
|
|
||||||
#language,
|
|
||||||
#upower,
|
|
||||||
#mpris,
|
|
||||||
#mpd {
|
|
||||||
padding: 0 0.5em;
|
|
||||||
color: @base05;
|
|
||||||
background-color: @base00;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* #upower,
|
|
||||||
#battery,
|
|
||||||
#backlight,
|
|
||||||
#custom-kbd-backlight,
|
|
||||||
#backlight-slider,
|
|
||||||
#cpu,
|
|
||||||
#memory,
|
|
||||||
#disk,
|
|
||||||
#network,
|
|
||||||
#wireplumber,
|
|
||||||
#power-profiles-daemon {
|
|
||||||
padding-right: 0.5em;
|
|
||||||
} */
|
|
||||||
|
|
||||||
#taskbar button,
|
|
||||||
#workspaces button {
|
|
||||||
padding: 0 0.2em;
|
|
||||||
}
|
|
||||||
#workspaces button.focused,
|
|
||||||
#workspaces button.active {
|
|
||||||
color: @base0D;
|
|
||||||
}
|
|
||||||
#taskbar button:hover {
|
|
||||||
box-shadow: transparent;
|
|
||||||
}
|
|
||||||
#taskbar.empty,
|
|
||||||
window#empty {
|
|
||||||
background-color: transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
#battery.critical:not(.charging) {
|
|
||||||
background-color: @base09;
|
|
||||||
color: @base00;
|
|
||||||
animation-name: blink;
|
|
||||||
animation-duration: 0.5s;
|
|
||||||
animation-timing-function: steps(12);
|
|
||||||
animation-iteration-count: infinite;
|
|
||||||
animation-direction: alternate;
|
|
||||||
}
|
|
||||||
|
|
||||||
#power-profiles-daemon.performance {
|
|
||||||
background-color: @base00;
|
|
||||||
color: @base0D;
|
|
||||||
}
|
|
||||||
|
|
||||||
#power-profiles-daemon.balanced {
|
|
||||||
background-color: @base00;
|
|
||||||
color: @base0B;
|
|
||||||
}
|
|
||||||
|
|
||||||
#power-profiles-daemon.power-saver {
|
|
||||||
background-color: @base00;
|
|
||||||
color: @base0A;
|
|
||||||
}
|
|
||||||
|
|
||||||
label:focus {
|
|
||||||
background-color: #000000;
|
|
||||||
}
|
|
||||||
|
|
||||||
#tray > .passive {
|
|
||||||
-gtk-icon-effect: dim;
|
|
||||||
}
|
|
||||||
|
|
||||||
#tray > .needs-attention {
|
|
||||||
-gtk-icon-effect: highlight;
|
|
||||||
background-color: @base08;
|
|
||||||
}
|
|
||||||
#idle_inhibitor:hover {
|
|
||||||
box-shadow: inset 0 -3px @base05;
|
|
||||||
}
|
|
||||||
|
|
||||||
#idle_inhibitor.activated {
|
|
||||||
background-color: @base05;
|
|
||||||
color: @base00;
|
|
||||||
}
|
|
||||||
|
|
||||||
#idle_inhibitor.activated:hover {
|
|
||||||
box-shadow: inset 0 -3px @base00;
|
|
||||||
}
|
|
||||||
|
|
||||||
#laptop,
|
|
||||||
#privacy {
|
|
||||||
padding: 0em;
|
|
||||||
}
|
|
||||||
|
|
||||||
#privacy-item.screenshare {
|
|
||||||
background-color: @base00;
|
|
||||||
color: @base0C;
|
|
||||||
}
|
|
||||||
|
|
||||||
#privacy-item.audio-in {
|
|
||||||
background-color: @base00;
|
|
||||||
color: @base0E;
|
|
||||||
}
|
|
||||||
|
|
||||||
#privacy-item.audio-out {
|
|
||||||
background-color: @base;
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.rofi = {
|
|
||||||
enable = true;
|
|
||||||
theme = {
|
|
||||||
window = {
|
|
||||||
height = 360;
|
|
||||||
border = 3;
|
|
||||||
};
|
|
||||||
|
|
||||||
inputbar = {
|
|
||||||
children = ["prompt" "entry"];
|
|
||||||
border-radius = 5;
|
|
||||||
padding = 2;
|
|
||||||
};
|
|
||||||
|
|
||||||
prompt = {
|
|
||||||
padding = 6;
|
|
||||||
border-radius = 3;
|
|
||||||
margin = "20px 0px 0px 20px";
|
|
||||||
};
|
|
||||||
|
|
||||||
textbox-prompt-colon = {
|
|
||||||
expand = false;
|
|
||||||
str = "~>";
|
|
||||||
};
|
|
||||||
|
|
||||||
entry = {
|
|
||||||
padding = 6;
|
|
||||||
margin = "20px 0px 0px 10px";
|
|
||||||
};
|
|
||||||
|
|
||||||
listview = {
|
|
||||||
border = "0px 0px 0px";
|
|
||||||
padding = "6px 0px 0px";
|
|
||||||
margin = "10px 0px 0px 20px";
|
|
||||||
columns = 2;
|
|
||||||
lines = 5;
|
|
||||||
};
|
|
||||||
|
|
||||||
element = {
|
|
||||||
padding = 5;
|
|
||||||
};
|
|
||||||
|
|
||||||
element-icon = {
|
|
||||||
size = 25;
|
|
||||||
};
|
|
||||||
|
|
||||||
mode-switcher = {
|
|
||||||
spacing = 0;
|
|
||||||
};
|
|
||||||
|
|
||||||
button = {
|
|
||||||
padding = 10;
|
|
||||||
vertical-align = "0.5";
|
|
||||||
horizontal-align = "0.5";
|
|
||||||
};
|
|
||||||
|
|
||||||
message = {
|
|
||||||
margin = 2;
|
|
||||||
padding = 2;
|
|
||||||
border-radius = 5;
|
|
||||||
};
|
|
||||||
|
|
||||||
textbox = {
|
|
||||||
padding = 6;
|
|
||||||
margin = "20 0 0 20";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
extraConfig = {
|
|
||||||
show-icons = true;
|
|
||||||
modi = "run,drun,window";
|
|
||||||
kb-primary-paste = "Control+V,Shift+Insert";
|
|
||||||
kb-secondary-paste = "Control+v,Insert";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
programs.fuzzel = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
main = {
|
|
||||||
terminal = "wezterm -e";
|
|
||||||
fields = "filename,name,generic,keywords,categories,exec";
|
|
||||||
dpi-aware = false;
|
|
||||||
horizontal-pad = 8;
|
|
||||||
show-actions = true;
|
|
||||||
match-mode = "fuzzy";
|
|
||||||
icon-theme = "${config.dconf.settings."org/gnome/desktop/interface".icon-theme}";
|
|
||||||
};
|
|
||||||
border = {
|
|
||||||
width = 2;
|
|
||||||
radius = 4;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
services.dunst = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
global = {
|
|
||||||
width = 300;
|
|
||||||
height = 300;
|
|
||||||
icon_theme = "${config.dconf.settings."org/gnome/desktop/interface".icon-theme}";
|
|
||||||
corner_radius = 4;
|
|
||||||
#corners = "top-right,bottom-left";
|
|
||||||
offset = "16x16";
|
|
||||||
origin = "bottom-right";
|
|
||||||
timeout = 15;
|
|
||||||
frame_width = 2;
|
|
||||||
notification_limit = 5;
|
|
||||||
};
|
|
||||||
rule-telegram = {
|
|
||||||
"desktop_entry" = "org.telegram.desktop";
|
|
||||||
"urgency" = "normal";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
services.wlsunset = {
|
|
||||||
enable = true;
|
|
||||||
latitude = "49.6";
|
|
||||||
longitude = "36.1";
|
|
||||||
temperature = {
|
|
||||||
day = 6500;
|
|
||||||
night = 3000;
|
|
||||||
};
|
|
||||||
systemdTarget = "graphical-session.target";
|
|
||||||
};
|
|
||||||
services.udiskie = {
|
|
||||||
enable = true;
|
|
||||||
automount = false;
|
|
||||||
notify = true;
|
|
||||||
tray = "auto";
|
|
||||||
};
|
|
||||||
# services.flameshot = {
|
|
||||||
# enable = true;
|
|
||||||
# settings = {
|
|
||||||
# General = {
|
|
||||||
# buttons = "@Variant(000x7f000vQList<int>0000x130000000x1000x2000x3000x4000x5000x6000x12000xf000x13000b000 000x10000000v000x17000xe000f000x11)";
|
|
||||||
# filenamePattern = "screenshot-%F_%H-%M-%S";
|
|
||||||
# saveAsFileExtension = "png";
|
|
||||||
# savePath = "/home/user/pics/screenshots";
|
|
||||||
# uiColor = "#${config.lib.stylix.colors.base0D}";
|
|
||||||
# showStartupLaunchMessage = false;
|
|
||||||
# showDesktopNotification = false;
|
|
||||||
# showHelp = false;
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
nautilus
|
|
||||||
helvum
|
|
||||||
loupe
|
|
||||||
evince
|
|
||||||
celluloid
|
|
||||||
mission-center
|
|
||||||
dconf
|
|
||||||
glib
|
|
||||||
libnotify
|
|
||||||
playerctl
|
|
||||||
wdisplays
|
|
||||||
pwvucontrol
|
|
||||||
wl-clipboard-rs
|
|
||||||
polkit_gnome
|
|
||||||
libqalculate
|
|
||||||
#papirus-icon-theme
|
|
||||||
];
|
|
||||||
xdg.userDirs = {
|
|
||||||
enable = true;
|
|
||||||
createDirectories = true;
|
|
||||||
templates = "${config.home.homeDirectory}/temps";
|
|
||||||
publicShare = "${config.home.homeDirectory}/pub";
|
|
||||||
desktop = "${config.home.homeDirectory}/desktop";
|
|
||||||
download = "${config.home.homeDirectory}/downloads";
|
|
||||||
documents = "${config.home.homeDirectory}/docs";
|
|
||||||
pictures = "${config.home.homeDirectory}/pics";
|
|
||||||
videos = "${config.home.homeDirectory}/vids";
|
|
||||||
music = "${config.home.homeDirectory}/music";
|
|
||||||
};
|
|
||||||
xdg.mime.enable = true;
|
|
||||||
xdg.mimeApps = {
|
|
||||||
enable = true;
|
|
||||||
defaultApplications = let
|
|
||||||
file_manager = ["org.gnome.Nautilus.desktop"];
|
|
||||||
web_browser = ["io.github.zen_browser.zen.desktop"];
|
|
||||||
image_viewer = ["org.gnome.Loupe.desktop"];
|
|
||||||
video_player = ["io.github.celluloid_player.Celluloid.desktop"];
|
|
||||||
pdf_reader = ["org.gnome.Evince.desktop"];
|
|
||||||
in {
|
|
||||||
"inode/directory" = file_manager;
|
|
||||||
"video/x-matroska" = video_player;
|
|
||||||
"video/mp4" = video_player;
|
|
||||||
"video/mpeg" = video_player;
|
|
||||||
"video/x-mpeg" = video_player;
|
|
||||||
"image/png" = image_viewer;
|
|
||||||
"image/jpeg" = image_viewer;
|
|
||||||
"application/pdf" = pdf_reader;
|
|
||||||
"text/html" = web_browser;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
systemd.user.settings.Manager.DefaultEnvironment = {
|
|
||||||
#DISPLAY = ":123";
|
|
||||||
};
|
|
||||||
systemd.user.targets.tray = {
|
|
||||||
# workaround for udiskie
|
|
||||||
Unit = {
|
|
||||||
Description = "Home Manager System Tray";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
systemd.user.services = {
|
|
||||||
udiskie = {
|
|
||||||
Unit = {
|
|
||||||
PartOf = ["graphical-session.target"];
|
|
||||||
After = ["graphical-session.target"];
|
|
||||||
Requisite = ["graphical-session.target"];
|
|
||||||
};
|
|
||||||
Install = {
|
|
||||||
WantedBy = ["sway-session.target"];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
# waybar = {
|
|
||||||
# Unit = {
|
|
||||||
# Description = "Swaync notification daemon";
|
|
||||||
# # };
|
|
||||||
# Unit = {
|
|
||||||
# PartOf = ["graphical-session.target"];
|
|
||||||
# After = ["graphical-session.target"];
|
|
||||||
# Requisite = ["graphical-session.target"];
|
|
||||||
# };
|
|
||||||
# Install = {
|
|
||||||
# WantedBy = ["sway-session.target"];
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
copyq = {
|
|
||||||
Unit = {
|
|
||||||
PartOf = ["graphical-session.target"];
|
|
||||||
After = ["graphical-session.target"];
|
|
||||||
Requisite = ["graphical-session.target"];
|
|
||||||
};
|
|
||||||
Install = {
|
|
||||||
WantedBy = ["sway-session.target"];
|
|
||||||
};
|
|
||||||
Service = {
|
|
||||||
Environment = lib.mkForce "QT_QPA_PLATFORM=wayland";
|
|
||||||
Restart = "on-failure";
|
|
||||||
RestartSec = 1;
|
|
||||||
TimeoutStopSec = 10;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
network-manager-applet = {
|
|
||||||
Unit = {
|
|
||||||
PartOf = ["graphical-session.target"];
|
|
||||||
After = ["graphical-session.target"];
|
|
||||||
Requisite = ["graphical-session.target"];
|
|
||||||
};
|
|
||||||
Install = {
|
|
||||||
WantedBy = ["sway-session.target"];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
gnome-polkit-agent = {
|
|
||||||
Unit = {
|
|
||||||
PartOf = ["graphical-session.target"];
|
|
||||||
After = ["graphical-session.target"];
|
|
||||||
Requisite = ["graphical-session.target"];
|
|
||||||
};
|
|
||||||
Install = {
|
|
||||||
WantedBy = ["sway-session.target"];
|
|
||||||
};
|
|
||||||
Service = {
|
|
||||||
Type = "simple";
|
|
||||||
ExecStart = "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1";
|
|
||||||
Restart = "on-failure";
|
|
||||||
RestartSec = 1;
|
|
||||||
TimeoutStopSec = 10;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
wlsunset = {
|
|
||||||
Unit = {
|
|
||||||
PartOf = ["graphical-session.target"];
|
|
||||||
After = ["graphical-session.target"];
|
|
||||||
Requisite = ["graphical-session.target"];
|
|
||||||
};
|
|
||||||
Install = {
|
|
||||||
WantedBy = ["sway-session.target"];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
{}: {
|
{
|
||||||
programs.ghostty.enable = true;
|
programs.ghostty.enable = true;
|
||||||
programs.ghostty = {
|
programs.ghostty = {
|
||||||
settings = {
|
settings = {
|
||||||
|
|||||||
@@ -4,7 +4,6 @@
|
|||||||
./cosmic
|
./cosmic
|
||||||
./dms
|
./dms
|
||||||
./gnome
|
./gnome
|
||||||
# ./niri
|
|
||||||
# ./plasma
|
# ./plasma
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ with lib; let
|
|||||||
cfg = config.desktop.dms;
|
cfg = config.desktop.dms;
|
||||||
in {
|
in {
|
||||||
imports = with inputs; [
|
imports = with inputs; [
|
||||||
dms.nixosModules.dankMaterialShell
|
dms.nixosModules.dank-material-shell
|
||||||
dms.nixosModules.greeter
|
dms.nixosModules.greeter
|
||||||
niri-flake.nixosModules.niri
|
niri-flake.nixosModules.niri
|
||||||
];
|
];
|
||||||
@@ -39,7 +39,7 @@ in {
|
|||||||
programs = {
|
programs = {
|
||||||
niri.enable = true;
|
niri.enable = true;
|
||||||
niri.package = perSystem.niri-flake.niri-unstable;
|
niri.package = perSystem.niri-flake.niri-unstable;
|
||||||
dankMaterialShell = {
|
dank-material-shell = {
|
||||||
enable = true;
|
enable = true;
|
||||||
greeter = {
|
greeter = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|||||||
@@ -1,52 +0,0 @@
|
|||||||
{
|
|
||||||
config,
|
|
||||||
inputs,
|
|
||||||
lib,
|
|
||||||
perSystem,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (lib) mkIf mkEnableOption;
|
|
||||||
cfg = config.desktop.niri;
|
|
||||||
in {
|
|
||||||
options = {
|
|
||||||
desktop.niri.enable =
|
|
||||||
mkEnableOption "enable niri desktop";
|
|
||||||
};
|
|
||||||
config = lib.mkMerge [
|
|
||||||
(mkIf cfg.enable {
|
|
||||||
module.desktop.displayManager = "greetd";
|
|
||||||
module.gnome-keyring.enable = true;
|
|
||||||
module.pipewire.enable = true;
|
|
||||||
|
|
||||||
# nixpkgs.overlays = [inputs.niri.overlays.default];
|
|
||||||
|
|
||||||
programs.niri.enable = true; # wayland compositor in rust
|
|
||||||
programs.niri.package = perSystem.niri-flake.niri-unstable;
|
|
||||||
|
|
||||||
environment.variables = {
|
|
||||||
NIXOS_OZONE_WL = "1";
|
|
||||||
};
|
|
||||||
security = {
|
|
||||||
pam.services.gtklock = {};
|
|
||||||
soteria.enable = true; # polkit agent in rust
|
|
||||||
};
|
|
||||||
services = {
|
|
||||||
blueman.enable = config.hardware.bluetooth.enable;
|
|
||||||
gvfs.enable = true;
|
|
||||||
};
|
|
||||||
xdg.portal = {
|
|
||||||
enable = true;
|
|
||||||
extraPortals = with pkgs; [xdg-desktop-portal-gnome xdg-desktop-portal-gtk];
|
|
||||||
config.niri.default = ["gnome" "gtk"];
|
|
||||||
};
|
|
||||||
})
|
|
||||||
(mkIf (cfg.enable
|
|
||||||
&& config.services.displayManager.autoLogin.enable) {
|
|
||||||
services.greetd.settings.initial_session = {
|
|
||||||
command = "niri-session";
|
|
||||||
user = config.services.displayManager.autoLogin.user;
|
|
||||||
};
|
|
||||||
})
|
|
||||||
];
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./secure-boot.nix
|
||||||
|
./tpm-disk-unlock.nix
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
inherit (lib) mkDefault mkEnableOption;
|
||||||
|
cfg = config.unexplrd.boot.secureBoot;
|
||||||
|
in {
|
||||||
|
options.unexplrd.boot.secureBoot.enable =
|
||||||
|
mkEnableOption "secure boot support";
|
||||||
|
|
||||||
|
config = {
|
||||||
|
boot.loader.systemd-boot.enable = mkDefault (!cfg.enable);
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
inherit (lib) mkDefault mkEnableOption;
|
||||||
|
cfg = config.unexplrd.boot.tpmDiskUnlock;
|
||||||
|
in {
|
||||||
|
options.unexplrd.boot.tpmDiskUnlock.enable =
|
||||||
|
mkEnableOption "TPM2 disk unlock support";
|
||||||
|
|
||||||
|
config = {
|
||||||
|
boot.initrd.systemd.tpm2.enable = mkDefault cfg.enable;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,16 +1,15 @@
|
|||||||
{
|
{lib, ...}: {
|
||||||
config,
|
|
||||||
# inputs,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (lib) mkDefault mkOption mkEnableOption mkIf;
|
|
||||||
cfg = config.unexplrd.config;
|
|
||||||
cfgHost = config.unexplrd.host;
|
|
||||||
in {
|
|
||||||
imports = [
|
imports = [
|
||||||
|
(lib.mkRenamedOptionModule ["unexplrd" "config" "laptop" "homeRowMods"] ["unexplrd" "input" "homeRowMods" "enable"])
|
||||||
|
(lib.mkRenamedOptionModule ["unexplrd" "config" "powerSave"] ["unexplrd" "hardware" "powerSave" "enable"])
|
||||||
|
(lib.mkRenamedOptionModule ["unexplrd" "config" "secureBoot"] ["unexplrd" "boot" "secureBoot" "enable"])
|
||||||
|
(lib.mkRenamedOptionModule ["unexplrd" "config" "tpmDiskUnlock"] ["unexplrd" "boot" "tpmDiskUnlock" "enable"])
|
||||||
|
(lib.mkRenamedOptionModule ["unexplrd" "config" "useIwd"] ["unexplrd" "networking" "iwd" "enable"])
|
||||||
|
(lib.mkRenamedOptionModule ["unexplrd" "config" "vaapi"] ["unexplrd" "hardware" "graphics" "vaapi"])
|
||||||
|
./boot
|
||||||
./hardware
|
./hardware
|
||||||
|
./host.nix
|
||||||
|
./input/home-row-mods.nix
|
||||||
./misc
|
./misc
|
||||||
./module/lanzaboote.nix
|
./module/lanzaboote.nix
|
||||||
./module/locale.nix
|
./module/locale.nix
|
||||||
@@ -24,79 +23,4 @@ in {
|
|||||||
./sops.nix
|
./sops.nix
|
||||||
./users.nix
|
./users.nix
|
||||||
];
|
];
|
||||||
options = {
|
|
||||||
unexplrd.host = {
|
|
||||||
name = mkOption {
|
|
||||||
type = lib.types.str;
|
|
||||||
};
|
|
||||||
id = mkOption {
|
|
||||||
type = lib.types.strMatching "[a-z0-9]{8}";
|
|
||||||
};
|
|
||||||
stateVersion = mkOption {
|
|
||||||
type = lib.types.strMatching ''[0-9]{2}\.[0-9]{2}'';
|
|
||||||
};
|
|
||||||
type = mkOption {
|
|
||||||
type = lib.types.enum ["laptop" "server" "workstation"];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
unexplrd.config = {
|
|
||||||
laptop.homeRowMods = mkEnableOption "set to have mods on asdfjkl;";
|
|
||||||
powerSave = mkEnableOption "set to use various power saving daemons";
|
|
||||||
secureBoot = mkEnableOption "set if secure boot is configured";
|
|
||||||
tpmDiskUnlock = mkEnableOption "set if luks enrolled in tpm2";
|
|
||||||
useIwd = mkEnableOption "set to use iwd instead of wpa-supplicant";
|
|
||||||
vaapi = lib.mkOption {
|
|
||||||
type = lib.types.nullOr (lib.types.enum ["intel-media-driver" "nvidia"]);
|
|
||||||
default = null;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
config = lib.mkMerge [
|
|
||||||
{
|
|
||||||
system.stateVersion = cfgHost.stateVersion;
|
|
||||||
networking.hostName = cfgHost.name;
|
|
||||||
networking.hostId = cfgHost.id;
|
|
||||||
}
|
|
||||||
{
|
|
||||||
boot.initrd.systemd.tpm2.enable = mkDefault cfg.tpmDiskUnlock;
|
|
||||||
boot.loader.systemd-boot.enable = mkDefault (!cfg.secureBoot);
|
|
||||||
}
|
|
||||||
(mkIf (cfg.laptop.homeRowMods)
|
|
||||||
# lib.asserts.assertMsg (config.services.kanata.enable != config.services.keyd.enable) "Kanata and keyd create soft lock when both enabled"
|
|
||||||
{
|
|
||||||
services.kanata.enable = true;
|
|
||||||
services.kanata.keyboards.internal = {
|
|
||||||
extraDefCfg = ''
|
|
||||||
process-unmapped-keys no
|
|
||||||
'';
|
|
||||||
configFile = ./kanata/internal.kbd;
|
|
||||||
};
|
|
||||||
})
|
|
||||||
(mkIf (cfg.powerSave) {
|
|
||||||
powerManagement.enable = true;
|
|
||||||
powerManagement.powertop.enable = true;
|
|
||||||
services.power-profiles-daemon.enable = true;
|
|
||||||
services.thermald.enable = true;
|
|
||||||
services.upower.enable = true;
|
|
||||||
hardware.bluetooth.settings.Policy.AutoEnable = false;
|
|
||||||
})
|
|
||||||
(mkIf cfg.useIwd {
|
|
||||||
networking = {
|
|
||||||
networkmanager.wifi.backend = "iwd";
|
|
||||||
wireless.iwd.enable = true;
|
|
||||||
};
|
|
||||||
})
|
|
||||||
(mkIf (cfg.vaapi == "intel-media-driver") {
|
|
||||||
hardware.graphics.extraPackages = with pkgs; [
|
|
||||||
intel-compute-runtime
|
|
||||||
intel-media-driver
|
|
||||||
vpl-gpu-rt
|
|
||||||
];
|
|
||||||
})
|
|
||||||
(mkIf (cfg.vaapi == "nvidia") {
|
|
||||||
hardware.graphics.extraPackages = with pkgs; [
|
|
||||||
nvidia-vaapi-driver
|
|
||||||
];
|
|
||||||
})
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./facter.nix
|
./facter.nix
|
||||||
|
./graphics/vaapi.nix
|
||||||
|
./power-save.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,29 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
inherit (lib) mkIf mkOption types;
|
||||||
|
cfg = config.unexplrd.hardware.graphics.vaapi;
|
||||||
|
in {
|
||||||
|
options.unexplrd.hardware.graphics.vaapi = mkOption {
|
||||||
|
type = types.nullOr (types.enum ["intel-media-driver" "nvidia"]);
|
||||||
|
default = null;
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkMerge [
|
||||||
|
(mkIf (cfg == "intel-media-driver") {
|
||||||
|
hardware.graphics.extraPackages = with pkgs; [
|
||||||
|
intel-compute-runtime
|
||||||
|
intel-media-driver
|
||||||
|
vpl-gpu-rt
|
||||||
|
];
|
||||||
|
})
|
||||||
|
(mkIf (cfg == "nvidia") {
|
||||||
|
hardware.graphics.extraPackages = with pkgs; [
|
||||||
|
nvidia-vaapi-driver
|
||||||
|
];
|
||||||
|
})
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
inherit (lib) mkEnableOption mkIf;
|
||||||
|
cfg = config.unexplrd.hardware.powerSave;
|
||||||
|
in {
|
||||||
|
options.unexplrd.hardware.powerSave.enable =
|
||||||
|
mkEnableOption "power saving defaults";
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
powerManagement.enable = true;
|
||||||
|
powerManagement.powertop.enable = true;
|
||||||
|
services.power-profiles-daemon.enable = true;
|
||||||
|
services.thermald.enable = true;
|
||||||
|
services.upower.enable = true;
|
||||||
|
hardware.bluetooth.settings.Policy.AutoEnable = false;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
inherit (lib) mkOption types;
|
||||||
|
cfg = config.unexplrd.host;
|
||||||
|
in {
|
||||||
|
options.unexplrd.host = {
|
||||||
|
name = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
id = mkOption {
|
||||||
|
type = types.strMatching "[a-z0-9]{8}";
|
||||||
|
};
|
||||||
|
stateVersion = mkOption {
|
||||||
|
type = types.strMatching ''[0-9]{2}\.[0-9]{2}'';
|
||||||
|
};
|
||||||
|
type = mkOption {
|
||||||
|
type = types.enum ["laptop" "server" "workstation"];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = {
|
||||||
|
system.stateVersion = cfg.stateVersion;
|
||||||
|
networking.hostName = cfg.name;
|
||||||
|
networking.hostId = cfg.id;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
inherit (lib) mkEnableOption mkIf;
|
||||||
|
cfg = config.unexplrd.input.homeRowMods;
|
||||||
|
in {
|
||||||
|
options.unexplrd.input.homeRowMods.enable =
|
||||||
|
mkEnableOption "home row mods for the internal keyboard";
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
services.kanata.enable = true;
|
||||||
|
services.kanata.keyboards.internal = {
|
||||||
|
extraDefCfg = ''
|
||||||
|
process-unmapped-keys no
|
||||||
|
'';
|
||||||
|
configFile = ../kanata/internal.kbd;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -14,7 +14,13 @@
|
|||||||
plymouth.enable = true;
|
plymouth.enable = true;
|
||||||
initrd = {
|
initrd = {
|
||||||
systemd.enable = true;
|
systemd.enable = true;
|
||||||
|
verbose = false;
|
||||||
};
|
};
|
||||||
|
kernelParams = [
|
||||||
|
"quiet"
|
||||||
|
"udev.log_level=3"
|
||||||
|
"systemd.show_status=auto"
|
||||||
|
];
|
||||||
|
|
||||||
kernelPackages = pkgs.linuxPackages_latest;
|
kernelPackages = pkgs.linuxPackages_latest;
|
||||||
# kernelPackages = pkgs.linuxPackages_cachyos;
|
# kernelPackages = pkgs.linuxPackages_cachyos;
|
||||||
@@ -45,7 +51,7 @@
|
|||||||
services.journald.extraConfig = ''
|
services.journald.extraConfig = ''
|
||||||
SystemMaxUse=1G
|
SystemMaxUse=1G
|
||||||
'';
|
'';
|
||||||
systemd.coredump.extraConfig = ''
|
systemd.coredump.settings.Coredump = ''
|
||||||
Storage=none
|
Storage=none
|
||||||
ProcessSizeMax=0
|
ProcessSizeMax=0
|
||||||
'';
|
'';
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
];
|
];
|
||||||
boot = {
|
boot = {
|
||||||
lanzaboote = {
|
lanzaboote = {
|
||||||
enable = config.unexplrd.config.secureBoot;
|
enable = config.unexplrd.boot.secureBoot.enable;
|
||||||
pkiBundle = "/var/lib/sbctl";
|
pkiBundle = "/var/lib/sbctl";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
{
|
{
|
||||||
imports = [./hosts.nix];
|
imports = [
|
||||||
|
./hosts.nix
|
||||||
|
./iwd.nix
|
||||||
|
];
|
||||||
networking.networkmanager = {
|
networking.networkmanager = {
|
||||||
ethernet.macAddress = "stable";
|
ethernet.macAddress = "stable";
|
||||||
wifi.macAddress = "random";
|
wifi.macAddress = "random";
|
||||||
|
|||||||
@@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
inherit (lib) mkEnableOption mkIf;
|
||||||
|
cfg = config.unexplrd.networking.iwd;
|
||||||
|
in {
|
||||||
|
options.unexplrd.networking.iwd.enable =
|
||||||
|
mkEnableOption "iwd as the NetworkManager Wi-Fi backend";
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
networking = {
|
||||||
|
networkmanager.wifi.backend = "iwd";
|
||||||
|
wireless.iwd.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -24,6 +24,9 @@ in {
|
|||||||
];
|
];
|
||||||
systemd.services = {
|
systemd.services = {
|
||||||
nix-daemon.serviceConfig.RestrictNamespaces = lib.mkForce [];
|
nix-daemon.serviceConfig.RestrictNamespaces = lib.mkForce [];
|
||||||
sshd.serviceConfig.ProtectHome = lib.mkForce "no";
|
sshd.serviceConfig = {
|
||||||
|
ReadWritePaths = ["/storage" "/etc/nixos"];
|
||||||
|
ProtectHome = lib.mkForce "no";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
settings = {
|
settings = {
|
||||||
PasswordAuthentication = false;
|
PasswordAuthentication = false;
|
||||||
PermitEmptyPasswords = false;
|
PermitEmptyPasswords = false;
|
||||||
PermitTunnel = false;
|
PermitTunnel = true;
|
||||||
UseDns = false;
|
UseDns = false;
|
||||||
KbdInteractiveAuthentication = false;
|
KbdInteractiveAuthentication = false;
|
||||||
X11Forwarding = config.services.xserver.enable;
|
X11Forwarding = config.services.xserver.enable;
|
||||||
@@ -14,7 +14,7 @@
|
|||||||
ClientAliveCountMax = 0;
|
ClientAliveCountMax = 0;
|
||||||
# AllowUsers = ["user"];
|
# AllowUsers = ["user"];
|
||||||
TCPKeepAlive = false;
|
TCPKeepAlive = false;
|
||||||
AllowTcpForwarding = false;
|
AllowTcpForwarding = "yes";
|
||||||
AllowAgentForwarding = false;
|
AllowAgentForwarding = false;
|
||||||
LogLevel = "VERBOSE";
|
LogLevel = "VERBOSE";
|
||||||
PermitRootLogin = "no";
|
PermitRootLogin = "no";
|
||||||
|
|||||||
@@ -23,6 +23,8 @@
|
|||||||
in {
|
in {
|
||||||
enable = true;
|
enable = true;
|
||||||
createDirectories = true;
|
createDirectories = true;
|
||||||
|
setSessionVariables = true;
|
||||||
|
|
||||||
templates = homeDir "temps";
|
templates = homeDir "temps";
|
||||||
publicShare = homeDir "pub";
|
publicShare = homeDir "pub";
|
||||||
desktop = homeDir "desktop";
|
desktop = homeDir "desktop";
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ in {
|
|||||||
fish
|
fish
|
||||||
helix
|
helix
|
||||||
oh-my-posh
|
oh-my-posh
|
||||||
syncthing
|
# syncthing
|
||||||
wezterm
|
wezterm
|
||||||
wl-kbptr
|
wl-kbptr
|
||||||
yazi
|
yazi
|
||||||
@@ -33,7 +33,7 @@ in {
|
|||||||
ICEAUTHORITY = ''"$XDG_CACHE_HOME"/ICEauthority'';
|
ICEAUTHORITY = ''"$XDG_CACHE_HOME"/ICEauthority'';
|
||||||
NUGET_PACKAGES = ''"$XDG_CACHE_HOME"/NuGetPackages'';
|
NUGET_PACKAGES = ''"$XDG_CACHE_HOME"/NuGetPackages'';
|
||||||
NPM_CONFIG_INIT_MODULE = ''"$XDG_CONFIG_HOME"/npm/config/npm-init.js'';
|
NPM_CONFIG_INIT_MODULE = ''"$XDG_CONFIG_HOME"/npm/config/npm-init.js'';
|
||||||
NPM_CONFIG_CACHE = ''"$XDG_CACHE_HOME"/npm'';
|
# NPM_CONFIG_CACHE = ''"$XDG_CACHE_HOME"/npm'';
|
||||||
# NPM_CONFIG_TMP = ''"$XDG_RUNTIME_DIR"/npm'';
|
# NPM_CONFIG_TMP = ''"$XDG_RUNTIME_DIR"/npm'';
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -213,8 +213,8 @@ in {
|
|||||||
appimage-run
|
appimage-run
|
||||||
adwaita-icon-theme
|
adwaita-icon-theme
|
||||||
# vial # qmk keyboard configuring app
|
# vial # qmk keyboard configuring app
|
||||||
perSystem.t3code.t3code-desktop
|
(perSystem.t3code.desktop.override {withCodex = true;})
|
||||||
perSystem.t3code.t3code-server
|
(perSystem.t3code.server.override {withCodex = true;})
|
||||||
pinentry-gnome3 # pinentry for rbw
|
pinentry-gnome3 # pinentry for rbw
|
||||||
(mkIf libvirtd.enable virt-manager) # libvirt gui
|
(mkIf libvirtd.enable virt-manager) # libvirt gui
|
||||||
# waycheck # check wayland protocols
|
# waycheck # check wayland protocols
|
||||||
|
|||||||
@@ -1,13 +1,15 @@
|
|||||||
{inputs, ...}: {
|
{inputs, ...}: {
|
||||||
imports = [inputs.vicinae.homeManagerModules.default];
|
imports = [inputs.vicinae.homeManagerModules.default];
|
||||||
|
|
||||||
syncthing.enable = true;
|
# syncthing.enable = true;
|
||||||
|
|
||||||
services.easyeffects.enable = true;
|
services.easyeffects.enable = true;
|
||||||
|
|
||||||
# services.pueue.enable = true; # process queue in rust
|
# services.pueue.enable = true; # process queue in rust
|
||||||
services.ssh-agent.enable = true;
|
services.ssh-agent.enable = true;
|
||||||
|
|
||||||
|
services.kdeconnect.enable = true;
|
||||||
|
|
||||||
services.vicinae = {
|
services.vicinae = {
|
||||||
enable = true;
|
enable = true;
|
||||||
systemd.enable = true;
|
systemd.enable = true;
|
||||||
|
|||||||
Reference in New Issue
Block a user