fixes
This commit is contained in:
parent
99745a7f02
commit
7972325396
17 changed files with 839 additions and 869 deletions
|
|
@ -45,64 +45,64 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf (cfg.enable && !pkgs.stdenv.isDarwin) {
|
config = mkIf (cfg.enable && !pkgs.stdenv.isDarwin) {
|
||||||
programs.ags = {
|
programs.ags = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
||||||
# Generate _colors.scss with our theme colors
|
# Generate _colors.scss with our theme colors
|
||||||
configDir = pkgs.runCommand "ags-config" {} ''
|
configDir = pkgs.runCommand "ags-config" {} ''
|
||||||
cp -r ${./cfg} $out
|
cp -r ${./cfg} $out
|
||||||
chmod -R +w $out
|
chmod -R +w $out
|
||||||
cat > $out/scss/_colors.scss << EOF
|
cat > $out/scss/_colors.scss << EOF
|
||||||
/* Generated from lib/theme/default.nix */
|
/* Generated from lib/theme/default.nix */
|
||||||
$rosewater: ${colors.rosewater.hex};
|
$rosewater: ${colors.rosewater.hex};
|
||||||
$flamingo: ${colors.flamingo.hex};
|
$flamingo: ${colors.flamingo.hex};
|
||||||
$pink: ${colors.pink.hex};
|
$pink: ${colors.pink.hex};
|
||||||
$mauve: ${colors.mauve.hex};
|
$mauve: ${colors.mauve.hex};
|
||||||
$red: ${colors.red.hex};
|
$red: ${colors.red.hex};
|
||||||
$maroon: ${colors.maroon.hex};
|
$maroon: ${colors.maroon.hex};
|
||||||
$peach: ${colors.peach.hex};
|
$peach: ${colors.peach.hex};
|
||||||
$yellow: ${colors.yellow.hex};
|
$yellow: ${colors.yellow.hex};
|
||||||
$green: ${colors.green.hex};
|
$green: ${colors.green.hex};
|
||||||
$teal: ${colors.teal.hex};
|
$teal: ${colors.teal.hex};
|
||||||
$sky: ${colors.sky.hex};
|
$sky: ${colors.sky.hex};
|
||||||
$sapphire: ${colors.sapphire.hex};
|
$sapphire: ${colors.sapphire.hex};
|
||||||
$blue: ${colors.blue.hex};
|
$blue: ${colors.blue.hex};
|
||||||
$lavender: ${colors.lavender.hex};
|
$lavender: ${colors.lavender.hex};
|
||||||
$text: ${colors.text.hex};
|
$text: ${colors.text.hex};
|
||||||
$subtext1: ${colors.subtext1.hex};
|
$subtext1: ${colors.subtext1.hex};
|
||||||
$subtext0: ${colors.subtext0.hex};
|
$subtext0: ${colors.subtext0.hex};
|
||||||
$overlay2: ${colors.overlay2.hex};
|
$overlay2: ${colors.overlay2.hex};
|
||||||
$overlay1: ${colors.overlay1.hex};
|
$overlay1: ${colors.overlay1.hex};
|
||||||
$overlay0: ${colors.overlay0.hex};
|
$overlay0: ${colors.overlay0.hex};
|
||||||
$surface2: ${colors.surface2.hex};
|
$surface2: ${colors.surface2.hex};
|
||||||
$surface1: ${colors.surface1.hex};
|
$surface1: ${colors.surface1.hex};
|
||||||
$surface0: ${colors.surface0.hex};
|
$surface0: ${colors.surface0.hex};
|
||||||
$base: ${colors.base.hex};
|
$base: ${colors.base.hex};
|
||||||
$mantle: ${colors.mantle.hex};
|
$mantle: ${colors.mantle.hex};
|
||||||
$crust: ${colors.crust.hex};
|
$crust: ${colors.crust.hex};
|
||||||
|
|
||||||
/* Default accent color */
|
/* Default accent color */
|
||||||
$accent: ${colors.sapphire.hex};
|
$accent: ${colors.sapphire.hex};
|
||||||
EOF
|
EOF
|
||||||
'';
|
'';
|
||||||
|
|
||||||
extraPackages = dependencies;
|
extraPackages = dependencies;
|
||||||
};
|
|
||||||
|
|
||||||
systemd.user.services.ags = {
|
|
||||||
Unit = {
|
|
||||||
Description = "Aylur's Gtk Shell";
|
|
||||||
PartOf = [
|
|
||||||
"tray.target"
|
|
||||||
"hyprland-session.target"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
Service = {
|
|
||||||
Environment = "PATH=/run/wrappers/bin:${lib.makeBinPath dependencies}";
|
|
||||||
ExecStart = "${config.programs.ags.package}/bin/ags";
|
|
||||||
Restart = "on-failure";
|
|
||||||
};
|
|
||||||
Install.WantedBy = ["hyprland-session.target"];
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
systemd.user.services.ags = {
|
||||||
|
Unit = {
|
||||||
|
Description = "Aylur's Gtk Shell";
|
||||||
|
PartOf = [
|
||||||
|
"tray.target"
|
||||||
|
"hyprland-session.target"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
Service = {
|
||||||
|
Environment = "PATH=/run/wrappers/bin:${lib.makeBinPath dependencies}";
|
||||||
|
ExecStart = "${config.programs.ags.package}/bin/ags";
|
||||||
|
Restart = "on-failure";
|
||||||
|
};
|
||||||
|
Install.WantedBy = ["hyprland-session.target"];
|
||||||
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -14,8 +14,9 @@ in {
|
||||||
enable = mkBoolOpt false "Enable Anyrun";
|
enable = mkBoolOpt false "Enable Anyrun";
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf (cfg.enable && !pkgs.stdenv.isDarwin) {
|
config =
|
||||||
};
|
mkIf (cfg.enable && !pkgs.stdenv.isDarwin) {
|
||||||
|
};
|
||||||
# programs.anyrun = {
|
# programs.anyrun = {
|
||||||
# enable = true;
|
# enable = true;
|
||||||
# config = {
|
# config = {
|
||||||
|
|
|
||||||
|
|
@ -13,9 +13,9 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf (cfg.enable && !pkgs.stdenv.isDarwin) {
|
config = mkIf (cfg.enable && !pkgs.stdenv.isDarwin) {
|
||||||
programs.rofi = {
|
programs.rofi = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs.rofi-wayland;
|
package = pkgs.rofi-wayland;
|
||||||
|
|
||||||
# Basic configuration
|
# Basic configuration
|
||||||
terminal = "kitty";
|
terminal = "kitty";
|
||||||
|
|
@ -196,5 +196,5 @@ in {
|
||||||
size: 0;
|
size: 0;
|
||||||
}
|
}
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -60,11 +60,12 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
# Linux-specific packages (Qt theming)
|
# Linux-specific packages (Qt theming)
|
||||||
home.packages = with pkgs; lib.mkIf (!pkgs.stdenv.isDarwin) [
|
home.packages = with pkgs;
|
||||||
qt5.qttools
|
lib.mkIf (!pkgs.stdenv.isDarwin) [
|
||||||
qt6Packages.qtstyleplugin-kvantum
|
qt5.qttools
|
||||||
libsForQt5.qtstyleplugin-kvantum
|
qt6Packages.qtstyleplugin-kvantum
|
||||||
libsForQt5.qt5ct
|
libsForQt5.qtstyleplugin-kvantum
|
||||||
];
|
libsForQt5.qt5ct
|
||||||
|
];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -15,75 +15,75 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf (cfg.enable && !pkgs.stdenv.isDarwin) {
|
config = mkIf (cfg.enable && !pkgs.stdenv.isDarwin) {
|
||||||
programs.swaylock = {
|
programs.swaylock = {
|
||||||
enable = true;
|
enable = true;
|
||||||
catppuccin.enable = false;
|
catppuccin.enable = false;
|
||||||
package = pkgs.swaylock-effects;
|
package = pkgs.swaylock-effects;
|
||||||
settings = with colors; {
|
settings = with colors; {
|
||||||
clock = true;
|
clock = true;
|
||||||
color = base.hex;
|
color = base.hex;
|
||||||
font = "Work Sans";
|
font = "Work Sans";
|
||||||
image = "${wallpaper}";
|
image = "${wallpaper}";
|
||||||
show-failed-attempts = false;
|
show-failed-attempts = false;
|
||||||
indicator = true;
|
indicator = true;
|
||||||
indicator-radius = 200;
|
indicator-radius = 200;
|
||||||
indicator-thickness = 20;
|
indicator-thickness = 20;
|
||||||
line-color = "00000000";
|
line-color = "00000000";
|
||||||
ring-color = "00000000";
|
ring-color = "00000000";
|
||||||
inside-color = "00000000";
|
inside-color = "00000000";
|
||||||
key-hl-color = "f2cdcd";
|
key-hl-color = "f2cdcd";
|
||||||
separator-color = "00000000";
|
separator-color = "00000000";
|
||||||
text-color = text.hex;
|
text-color = text.hex;
|
||||||
text-caps-lock-color = "";
|
text-caps-lock-color = "";
|
||||||
line-ver-color = rosewater.hex;
|
line-ver-color = rosewater.hex;
|
||||||
ring-ver-color = rosewater.hex;
|
ring-ver-color = rosewater.hex;
|
||||||
inside-ver-color = base.hex;
|
inside-ver-color = base.hex;
|
||||||
text-ver-color = text.hex;
|
text-ver-color = text.hex;
|
||||||
ring-wrong-color = teal.hex;
|
ring-wrong-color = teal.hex;
|
||||||
text-wrong-color = teal.hex;
|
text-wrong-color = teal.hex;
|
||||||
inside-wrong-color = base.hex;
|
inside-wrong-color = base.hex;
|
||||||
inside-clear-color = base.hex;
|
inside-clear-color = base.hex;
|
||||||
text-clear-color = text.hex;
|
text-clear-color = text.hex;
|
||||||
ring-clear-color = lavender.hex;
|
ring-clear-color = lavender.hex;
|
||||||
line-clear-color = base.hex;
|
line-clear-color = base.hex;
|
||||||
line-wrong-color = base.hex;
|
line-wrong-color = base.hex;
|
||||||
bs-hl-color = teal.hex;
|
bs-hl-color = teal.hex;
|
||||||
line-uses-ring = false;
|
line-uses-ring = false;
|
||||||
grace = 2;
|
grace = 2;
|
||||||
grace-no-mouse = true;
|
grace-no-mouse = true;
|
||||||
grace-no-touch = true;
|
grace-no-touch = true;
|
||||||
datestr = "%d.%m";
|
datestr = "%d.%m";
|
||||||
fade-in = "0.1";
|
fade-in = "0.1";
|
||||||
ignore-empty-password = true;
|
ignore-empty-password = true;
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
systemd.user.services.hypridle = {
|
|
||||||
Unit = {
|
|
||||||
Description = "Idle Daemon for Hyprland";
|
|
||||||
};
|
|
||||||
Service = {
|
|
||||||
Type = "simple";
|
|
||||||
ExecStart = lib.getExe inputs.hypridle.packages.${pkgs.system}.hypridle;
|
|
||||||
Restart = "on-failure";
|
|
||||||
};
|
|
||||||
Install = {
|
|
||||||
WantedBy = ["hyprland-session.target"];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
xdg.configFile."hypr/hypridle.conf".text = ''
|
|
||||||
general {
|
|
||||||
lock_cmd = ${pkgs.swaylock-effects}/bin/swaylock -fF
|
|
||||||
before_sleep_cmd = ${pkgs.swaylock-effects}/bin/swaylock -fF # command ran before sleep
|
|
||||||
ignore_dbus_inhibit = false # whether to ignore dbus-sent idle-inhibit requests (used by e.g. firefox or steam)
|
|
||||||
}
|
|
||||||
|
|
||||||
listener {
|
|
||||||
timeout = 300 # in seconds
|
|
||||||
on-timeout = ${config.wayland.windowManager.hyprland.package}/bin/hyprctl dispatch dpms off
|
|
||||||
on-resume = ${config.wayland.windowManager.hyprland.package}/bin/hyprctl dispatch dpms on
|
|
||||||
}
|
|
||||||
'';
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
systemd.user.services.hypridle = {
|
||||||
|
Unit = {
|
||||||
|
Description = "Idle Daemon for Hyprland";
|
||||||
|
};
|
||||||
|
Service = {
|
||||||
|
Type = "simple";
|
||||||
|
ExecStart = lib.getExe inputs.hypridle.packages.${pkgs.system}.hypridle;
|
||||||
|
Restart = "on-failure";
|
||||||
|
};
|
||||||
|
Install = {
|
||||||
|
WantedBy = ["hyprland-session.target"];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
xdg.configFile."hypr/hypridle.conf".text = ''
|
||||||
|
general {
|
||||||
|
lock_cmd = ${pkgs.swaylock-effects}/bin/swaylock -fF
|
||||||
|
before_sleep_cmd = ${pkgs.swaylock-effects}/bin/swaylock -fF # command ran before sleep
|
||||||
|
ignore_dbus_inhibit = false # whether to ignore dbus-sent idle-inhibit requests (used by e.g. firefox or steam)
|
||||||
|
}
|
||||||
|
|
||||||
|
listener {
|
||||||
|
timeout = 300 # in seconds
|
||||||
|
on-timeout = ${config.wayland.windowManager.hyprland.package}/bin/hyprctl dispatch dpms off
|
||||||
|
on-resume = ${config.wayland.windowManager.hyprland.package}/bin/hyprctl dispatch dpms on
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
32
modules/home/services/wallpaper/default.nix
Normal file
32
modules/home/services/wallpaper/default.nix
Normal file
|
|
@ -0,0 +1,32 @@
|
||||||
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
with lib;
|
||||||
|
with lib.custom; let
|
||||||
|
cfg = config.services.wallpaper;
|
||||||
|
|
||||||
|
mkService = recursiveUpdate {
|
||||||
|
Unit.PartOf = ["graphical-session.target"];
|
||||||
|
Unit.After = ["graphical-session.target"];
|
||||||
|
Install.WantedBy = ["graphical-session.target"];
|
||||||
|
};
|
||||||
|
in {
|
||||||
|
options.services.wallpaper = with types; {
|
||||||
|
enable = mkBoolOpt false "Enable MPD (Music Player Daemon)";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf (cfg.enable && !pkgs.stdenv.isDarwin) {
|
||||||
|
systemd.user.services = {
|
||||||
|
swaybg = mkService {
|
||||||
|
Unit.Description = "Wallpaper Chooser";
|
||||||
|
Service = {
|
||||||
|
ExecStart = "${getExe pkgs.swaybg} -i ${wallpaper}";
|
||||||
|
Restart = "always";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -73,75 +73,81 @@ in {
|
||||||
shellAliases = import ../aliases.nix {inherit pkgs lib config;};
|
shellAliases = import ../aliases.nix {inherit pkgs lib config;};
|
||||||
};
|
};
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs;
|
||||||
gnumake
|
[
|
||||||
# Runs programs without installing them
|
gnumake
|
||||||
comma
|
# Runs programs without installing them
|
||||||
|
comma
|
||||||
|
|
||||||
# grep replacement
|
# grep replacement
|
||||||
ripgrep
|
ripgrep
|
||||||
|
|
||||||
# ping, but with cool graph
|
# ping, but with cool graph
|
||||||
gping
|
gping
|
||||||
|
|
||||||
fzf
|
fzf
|
||||||
|
|
||||||
# dns client
|
# dns client
|
||||||
dogdns
|
dogdns
|
||||||
|
|
||||||
# neofetch but for git repos
|
# neofetch but for git repos
|
||||||
onefetch
|
onefetch
|
||||||
|
|
||||||
# neofetch but for cpu's
|
# neofetch but for cpu's
|
||||||
cpufetch
|
cpufetch
|
||||||
|
|
||||||
# download from yt and other websites
|
# download from yt and other websites
|
||||||
yt-dlp
|
yt-dlp
|
||||||
|
|
||||||
zsh-history
|
zsh-history
|
||||||
|
|
||||||
# man pages for tiktok attention span mfs
|
# man pages for tiktok attention span mfs
|
||||||
tealdeer
|
tealdeer
|
||||||
|
|
||||||
# markdown previewer
|
# markdown previewer
|
||||||
glow
|
glow
|
||||||
|
|
||||||
# profiling tool
|
# profiling tool
|
||||||
hyperfine
|
hyperfine
|
||||||
|
|
||||||
imagemagick
|
imagemagick
|
||||||
ffmpeg-full
|
ffmpeg-full
|
||||||
|
|
||||||
# preview images in terminal
|
# preview images in terminal
|
||||||
catimg
|
catimg
|
||||||
|
|
||||||
# networking stuff
|
# networking stuff
|
||||||
nmap
|
nmap
|
||||||
wget
|
wget
|
||||||
|
|
||||||
# faster find
|
# faster find
|
||||||
fd
|
fd
|
||||||
|
|
||||||
# http request thingy
|
# http request thingy
|
||||||
xh
|
xh
|
||||||
|
|
||||||
# generate regex
|
# generate regex
|
||||||
grex
|
grex
|
||||||
|
|
||||||
# json thingy
|
# json thingy
|
||||||
jq
|
jq
|
||||||
|
|
||||||
# syncthnig for acoustic people
|
# syncthnig for acoustic people
|
||||||
rsync
|
rsync
|
||||||
|
|
||||||
figlet
|
figlet
|
||||||
# Generate qr codes
|
# Generate qr codes
|
||||||
qrencode
|
qrencode
|
||||||
|
|
||||||
unzip
|
unzip
|
||||||
] ++ (if !pkgs.stdenv.isDarwin then [
|
]
|
||||||
hcxdumptool
|
++ (
|
||||||
hashcat
|
if !pkgs.stdenv.isDarwin
|
||||||
] else []);
|
then [
|
||||||
|
hcxdumptool
|
||||||
|
hashcat
|
||||||
|
]
|
||||||
|
else []
|
||||||
|
);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -46,36 +46,42 @@ in {
|
||||||
programs.carapace.enable = true;
|
programs.carapace.enable = true;
|
||||||
programs.carapace.enableNushellIntegration = true;
|
programs.carapace.enableNushellIntegration = true;
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs;
|
||||||
gnumake
|
[
|
||||||
comma
|
gnumake
|
||||||
ripgrep
|
comma
|
||||||
gping
|
ripgrep
|
||||||
fzf
|
gping
|
||||||
dogdns
|
fzf
|
||||||
onefetch
|
dogdns
|
||||||
cpufetch
|
onefetch
|
||||||
yt-dlp
|
cpufetch
|
||||||
zsh-history
|
yt-dlp
|
||||||
tealdeer
|
zsh-history
|
||||||
glow
|
tealdeer
|
||||||
hyperfine
|
glow
|
||||||
imagemagick
|
hyperfine
|
||||||
ffmpeg-full
|
imagemagick
|
||||||
catimg
|
ffmpeg-full
|
||||||
nmap
|
catimg
|
||||||
wget
|
nmap
|
||||||
fd
|
wget
|
||||||
xh
|
fd
|
||||||
grex
|
xh
|
||||||
jq
|
grex
|
||||||
rsync
|
jq
|
||||||
figlet
|
rsync
|
||||||
qrencode
|
figlet
|
||||||
unzip
|
qrencode
|
||||||
] ++ (if !pkgs.stdenv.isDarwin then [
|
unzip
|
||||||
hcxdumptool
|
]
|
||||||
hashcat
|
++ (
|
||||||
] else []);
|
if !pkgs.stdenv.isDarwin
|
||||||
|
then [
|
||||||
|
hcxdumptool
|
||||||
|
hashcat
|
||||||
|
]
|
||||||
|
else []
|
||||||
|
);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -80,75 +80,81 @@ in {
|
||||||
shellAliases = import ../aliases.nix {inherit pkgs lib config;};
|
shellAliases = import ../aliases.nix {inherit pkgs lib config;};
|
||||||
};
|
};
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
home.packages = with pkgs;
|
||||||
gnumake
|
[
|
||||||
# Runs programs without installing them
|
gnumake
|
||||||
comma
|
# Runs programs without installing them
|
||||||
|
comma
|
||||||
|
|
||||||
# grep replacement
|
# grep replacement
|
||||||
ripgrep
|
ripgrep
|
||||||
|
|
||||||
# ping, but with cool graph
|
# ping, but with cool graph
|
||||||
gping
|
gping
|
||||||
|
|
||||||
# dns client
|
# dns client
|
||||||
dogdns
|
dogdns
|
||||||
|
|
||||||
# neofetch but for git repos
|
# neofetch but for git repos
|
||||||
onefetch
|
onefetch
|
||||||
|
|
||||||
# neofetch but for cpu's
|
# neofetch but for cpu's
|
||||||
cpufetch
|
cpufetch
|
||||||
|
|
||||||
# download from yt and other websites
|
# download from yt and other websites
|
||||||
yt-dlp
|
yt-dlp
|
||||||
|
|
||||||
zsh-history
|
zsh-history
|
||||||
|
|
||||||
# man pages for tiktok attention span mfs
|
# man pages for tiktok attention span mfs
|
||||||
tealdeer
|
tealdeer
|
||||||
|
|
||||||
# markdown previewer
|
# markdown previewer
|
||||||
glow
|
glow
|
||||||
|
|
||||||
# profiling tool
|
# profiling tool
|
||||||
hyperfine
|
hyperfine
|
||||||
|
|
||||||
imagemagick
|
imagemagick
|
||||||
ffmpeg-full
|
ffmpeg-full
|
||||||
|
|
||||||
# preview images in terminal
|
# preview images in terminal
|
||||||
catimg
|
catimg
|
||||||
|
|
||||||
# networking stuff
|
# networking stuff
|
||||||
nmap
|
nmap
|
||||||
wget
|
wget
|
||||||
|
|
||||||
# faster find
|
# faster find
|
||||||
fd
|
fd
|
||||||
|
|
||||||
# http request thingy
|
# http request thingy
|
||||||
xh
|
xh
|
||||||
|
|
||||||
# generate regex
|
# generate regex
|
||||||
grex
|
grex
|
||||||
|
|
||||||
# json thingy
|
# json thingy
|
||||||
jq
|
jq
|
||||||
|
|
||||||
# syncthnig for acoustic people
|
# syncthnig for acoustic people
|
||||||
rsync
|
rsync
|
||||||
|
|
||||||
figlet
|
figlet
|
||||||
# Generate qr codes
|
# Generate qr codes
|
||||||
qrencode
|
qrencode
|
||||||
|
|
||||||
# script kidde stuff
|
# script kidde stuff
|
||||||
|
|
||||||
unzip
|
unzip
|
||||||
] ++ (if !pkgs.stdenv.isDarwin then [
|
]
|
||||||
hcxdumptool
|
++ (
|
||||||
hashcat
|
if !pkgs.stdenv.isDarwin
|
||||||
] else []);
|
then [
|
||||||
|
hcxdumptool
|
||||||
|
hashcat
|
||||||
|
]
|
||||||
|
else []
|
||||||
|
);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -257,14 +257,6 @@ in {
|
||||||
# };
|
# };
|
||||||
# };
|
# };
|
||||||
|
|
||||||
# systemd.user.services = {
|
services.wallpaper.enable = true;
|
||||||
# swaybg = mkService {
|
};
|
||||||
# Unit.Description = "Wallpaper chooser";
|
|
||||||
# Service = {
|
|
||||||
# ExecStart = "${getExe pkgs.swaybg} -i ${wallpaper}";
|
|
||||||
# Restart = "always";
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
# };
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,554 +0,0 @@
|
||||||
# This file contains the Niri configuration that will only be included on Linux
|
|
||||||
{
|
|
||||||
options,
|
|
||||||
config,
|
|
||||||
lib,
|
|
||||||
inputs,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
with lib;
|
|
||||||
with lib.custom; let
|
|
||||||
cfg = config.wms.niri;
|
|
||||||
|
|
||||||
mkService = recursiveUpdate {
|
|
||||||
Unit.PartOf = ["graphical-session.target"];
|
|
||||||
Unit.After = ["graphical-session.target"];
|
|
||||||
Install.WantedBy = ["graphical-session.target"];
|
|
||||||
};
|
|
||||||
|
|
||||||
actions = config.lib.niri.actions;
|
|
||||||
niri = "${config.programs.niri.package}/bin/niri";
|
|
||||||
|
|
||||||
mkColor = color: {inherit color;};
|
|
||||||
mkGradient = from: to: {
|
|
||||||
angle ? 180,
|
|
||||||
relative-to ? "window",
|
|
||||||
in' ? null,
|
|
||||||
}: {
|
|
||||||
gradient = {inherit from to angle relative-to in';};
|
|
||||||
};
|
|
||||||
|
|
||||||
spawnSlackOnWeekday = pkgs.writeShellScriptBin "spawn-slack-on-weekday" ''
|
|
||||||
# Get the day of the week (1=Monday, ..., 7=Sunday)
|
|
||||||
DAY_OF_WEEK=$(${pkgs.coreutils}/bin/date +%u)
|
|
||||||
|
|
||||||
# Check if it's a weekday (between 1 and 5 inclusive)
|
|
||||||
if [ "$DAY_OF_WEEK" -ge 1 ] && [ "$DAY_OF_WEEK" -le 5 ]; then
|
|
||||||
# Execute Slack. Use the full path for robustness.
|
|
||||||
# Ensure pkgs.slack is available (e.g., via environment.systemPackages)
|
|
||||||
exec ${pkgs.slack}/bin/slack
|
|
||||||
fi
|
|
||||||
# Exit successfully if not a weekday or after exec replaces the process
|
|
||||||
exit 0
|
|
||||||
'';
|
|
||||||
in {
|
|
||||||
config = mkIf cfg.enable {
|
|
||||||
programs.niri = {
|
|
||||||
package = pkgs.niri;
|
|
||||||
|
|
||||||
settings = {
|
|
||||||
# Input device configuration
|
|
||||||
input = {
|
|
||||||
keyboard = {
|
|
||||||
xkb = {
|
|
||||||
rules = "";
|
|
||||||
model = "";
|
|
||||||
layout = "us";
|
|
||||||
variant = "";
|
|
||||||
options = "ctrl:nocaps";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
touchpad = {
|
|
||||||
enable = true;
|
|
||||||
tap = true;
|
|
||||||
dwt = true;
|
|
||||||
dwtp = true;
|
|
||||||
natural-scroll = true;
|
|
||||||
|
|
||||||
# Other options
|
|
||||||
# accel-profile = "flat";
|
|
||||||
# accel-speed = 0.0;
|
|
||||||
disabled-on-external-mouse = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
mouse = {
|
|
||||||
enable = true;
|
|
||||||
natural-scroll = false;
|
|
||||||
accel-speed = 0.0;
|
|
||||||
accel-profile = "flat";
|
|
||||||
};
|
|
||||||
|
|
||||||
trackpoint = {
|
|
||||||
enable = true;
|
|
||||||
natural-scroll = false;
|
|
||||||
# accel-profile = "flat";
|
|
||||||
# accel-speed = 0.0;
|
|
||||||
# scroll-button = "middle";
|
|
||||||
middle-emulation = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
warp-mouse-to-focus = true;
|
|
||||||
|
|
||||||
focus-follows-mouse = {
|
|
||||||
enable = true;
|
|
||||||
threshold = 1;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# Output configuration
|
|
||||||
outputs."DP-1" = {
|
|
||||||
enable = true;
|
|
||||||
mode = {
|
|
||||||
width = 2560;
|
|
||||||
height = 1440;
|
|
||||||
refresh = 240.000;
|
|
||||||
};
|
|
||||||
variable-refresh-rate = true;
|
|
||||||
scale = 1.0;
|
|
||||||
transform = {
|
|
||||||
flipped = false;
|
|
||||||
rotation = 0;
|
|
||||||
};
|
|
||||||
position = {
|
|
||||||
x = 0;
|
|
||||||
y = 0;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# Environment variables
|
|
||||||
environment = {
|
|
||||||
DISPLAY = ":0"; # for applications using xwayland-satillite
|
|
||||||
};
|
|
||||||
|
|
||||||
hotkey-overlay = {
|
|
||||||
skip-at-startup = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Window manager behavior
|
|
||||||
layout = {
|
|
||||||
gaps = 4;
|
|
||||||
center-focused-column = true;
|
|
||||||
|
|
||||||
# Column widths in preset-column-widths are relative to the available space
|
|
||||||
preset-column-widths = [
|
|
||||||
{proportion = 1.0;} # One column that takes all available space
|
|
||||||
{proportion = 0.5;} # Two columns of equal size
|
|
||||||
{proportion = 0.66;} # Two columns: first takes 2/3, second takes 1/3
|
|
||||||
];
|
|
||||||
|
|
||||||
# A new column will use this width by default
|
|
||||||
default-column-width = {
|
|
||||||
proportion = 0.5; # Half of the available space
|
|
||||||
};
|
|
||||||
|
|
||||||
# Focused window highlight
|
|
||||||
focus-ring = {
|
|
||||||
enable = true;
|
|
||||||
width = 4;
|
|
||||||
active = mkGradient colors.lavender.hex colors.sapphire.hex {
|
|
||||||
angle = 45;
|
|
||||||
};
|
|
||||||
inactive = mkGradient colors.overlay0.hex colors.overlay0.hex {
|
|
||||||
angle = 45;
|
|
||||||
relative-to = "window";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# Window borders
|
|
||||||
border = {
|
|
||||||
enable = true;
|
|
||||||
width = 4;
|
|
||||||
active = colors.lavender.hex;
|
|
||||||
inactive = colors.overlay0.hex;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Reserved screen areas (e.g., for panels)
|
|
||||||
struts = {
|
|
||||||
left = 0;
|
|
||||||
right = 0;
|
|
||||||
top = 0;
|
|
||||||
bottom = 0;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
# Spawn processes at startup
|
|
||||||
spawn-at-startup = [
|
|
||||||
{command = ["xwayland-satellite"];}
|
|
||||||
{command = ["${pkgs.writeShellScriptBin "thunderbird-delayed" ''sleep 5; thunderbird''}/bin/thunderbird-delayed"];}
|
|
||||||
{command = ["${pkgs.writeShellScriptBin "zen-delayed" ''sleep 5; zen''}/bin/zen-delayed"];}
|
|
||||||
{command = ["vesktop"];}
|
|
||||||
{command = ["spotify"];}
|
|
||||||
{command = ["${spawnSlackOnWeekday}/bin/spawn-slack-on-weekday"];}
|
|
||||||
];
|
|
||||||
|
|
||||||
# Prefer server-side decorations
|
|
||||||
prefer-no-csd = true;
|
|
||||||
|
|
||||||
# Screenshot path
|
|
||||||
screenshot-path = "${config.home.homeDirectory}/Pictures/screenshots/Screenshot_%F_%H-%M-%S.png";
|
|
||||||
|
|
||||||
# Animations for windows, workspace transitions, etc.
|
|
||||||
animations = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
debug = {
|
|
||||||
wait-for-frame-completion-in-pipewire = [];
|
|
||||||
};
|
|
||||||
|
|
||||||
layer-rules = [
|
|
||||||
{
|
|
||||||
# Match layer shell surfaces with the GTK layer shell namespace
|
|
||||||
matches = [
|
|
||||||
{namespace = "gtk-layer-shell";}
|
|
||||||
];
|
|
||||||
|
|
||||||
# Don't blur out this layer shell surface
|
|
||||||
block-out-from = ["blur"];
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
window-rules = [
|
|
||||||
{
|
|
||||||
# Matching criteria
|
|
||||||
matches = [
|
|
||||||
{app-id = "waybar";}
|
|
||||||
{app-id = "eww-bar";}
|
|
||||||
{app-id = "ags";}
|
|
||||||
{app-id = "gtk-layer-shell";}
|
|
||||||
{app-id = "mako";}
|
|
||||||
{app-id = "swaync-client";}
|
|
||||||
{app-id = "swaync-control-center";}
|
|
||||||
];
|
|
||||||
|
|
||||||
# Rules
|
|
||||||
block-out-from = ["blur"];
|
|
||||||
}
|
|
||||||
|
|
||||||
# Configure rounded corners
|
|
||||||
{
|
|
||||||
geometry-corner-radius = {
|
|
||||||
top-left = 0;
|
|
||||||
top-right = 0;
|
|
||||||
bottom-left = 0;
|
|
||||||
bottom-right = 0;
|
|
||||||
};
|
|
||||||
clip-to-geometry = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
# Configure a different appearance for window cast targets
|
|
||||||
{
|
|
||||||
matches = [{is-window-cast-target = true;}];
|
|
||||||
focus-ring = {
|
|
||||||
active = colors.red.hex;
|
|
||||||
inactive = colors.red.hex;
|
|
||||||
};
|
|
||||||
shadow = {
|
|
||||||
color = colors.red.hex;
|
|
||||||
};
|
|
||||||
tab-indicator = {
|
|
||||||
active = colors.red.hex;
|
|
||||||
inactive = colors.red.hex;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
# Configure floating Windows
|
|
||||||
{
|
|
||||||
matches = [
|
|
||||||
{app-id = "zenity";}
|
|
||||||
];
|
|
||||||
excludes = [
|
|
||||||
{title = "Zen Browser";}
|
|
||||||
];
|
|
||||||
open-floating = true;
|
|
||||||
open-focused = true;
|
|
||||||
default-floating-position = {
|
|
||||||
relative-to = "window-manager";
|
|
||||||
x = 0;
|
|
||||||
y = 0;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
# Configure video apps
|
|
||||||
{
|
|
||||||
matches = [
|
|
||||||
{app-id = "mpv";}
|
|
||||||
{app-id = "io.github.celluloid_player.Celluloid";}
|
|
||||||
];
|
|
||||||
variable-refresh-rate = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
# Configure maximized Firefox
|
|
||||||
{
|
|
||||||
matches = [
|
|
||||||
{at-startup = true;}
|
|
||||||
{app-id = "firefox";}
|
|
||||||
];
|
|
||||||
open-maximized = true;
|
|
||||||
open-on-workspace = "01-browser";
|
|
||||||
}
|
|
||||||
|
|
||||||
# Configure Zen Browser
|
|
||||||
{
|
|
||||||
matches = [
|
|
||||||
{at-startup = true;}
|
|
||||||
{app-id = "zen";}
|
|
||||||
];
|
|
||||||
open-on-workspace = "01-browser";
|
|
||||||
}
|
|
||||||
|
|
||||||
# Configure VSCode
|
|
||||||
{
|
|
||||||
matches = [
|
|
||||||
{at-startup = true;}
|
|
||||||
{app-id = "code-url-handler";}
|
|
||||||
];
|
|
||||||
open-on-workspace = "02-code";
|
|
||||||
}
|
|
||||||
|
|
||||||
# Configure chat apps
|
|
||||||
{
|
|
||||||
matches = [
|
|
||||||
{at-startup = true;}
|
|
||||||
{app-id = "vesktop";}
|
|
||||||
];
|
|
||||||
open-on-workspace = "03-chat";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
|
|
||||||
# Named workspaces
|
|
||||||
workspaces."01-browser" = {
|
|
||||||
name = "browser";
|
|
||||||
};
|
|
||||||
workspaces."02-code" = {
|
|
||||||
name = "code";
|
|
||||||
};
|
|
||||||
workspaces."03-chat" = {
|
|
||||||
name = "chat";
|
|
||||||
};
|
|
||||||
workspaces."04-work" = {
|
|
||||||
name = "work";
|
|
||||||
};
|
|
||||||
|
|
||||||
# Keybindings
|
|
||||||
binds = {
|
|
||||||
# Show help
|
|
||||||
"Mod+Shift+Slash" = {action = actions.show-hotkey-overlay;};
|
|
||||||
|
|
||||||
# Terminal and launcher
|
|
||||||
"Mod+Return" = {action = actions.spawn "kitty";};
|
|
||||||
"Mod+D" = {action = actions.spawn "fuzzel";};
|
|
||||||
"Super+Alt+L" = {action = actions.spawn "swaylock";};
|
|
||||||
# "Mod+T" = { action = actions.spawn "bash" "-c" "notify-send hello && exec alacritty"; };
|
|
||||||
|
|
||||||
# "Mod+S" = {action = actions.set-dynamic-cast-window;};
|
|
||||||
#
|
|
||||||
# "Mod+Shift+S" = {action = actions.set-dynamic-cast-monitor;};
|
|
||||||
#
|
|
||||||
# "XF86AudioLowerVolume" = {
|
|
||||||
# action = actions.spawn "pamixer" "--decrease" "5";
|
|
||||||
# allow-when-locked = true;
|
|
||||||
# };
|
|
||||||
# "XF86AudioRaiseVolume" = {
|
|
||||||
# action = actions.spawn "pamixer" "--increase" "5";
|
|
||||||
# allow-when-locked = true;
|
|
||||||
# };
|
|
||||||
# "XF86AudioMute" = {
|
|
||||||
# action = actions.spawn "pamixer" "--toggle-mute";
|
|
||||||
# allow-when-locked = true;
|
|
||||||
# };
|
|
||||||
# "XF86AudioMicMute" = {
|
|
||||||
# action = actions.spawn "pamixer" "--default-source" "--toggle-mute";
|
|
||||||
# allow-when-locked = true;
|
|
||||||
# };
|
|
||||||
# "XF86MonBrightnessDown" = {
|
|
||||||
# action = actions.spawn "brightnessctl" "set" "5%-";
|
|
||||||
# allow-when-locked = true;
|
|
||||||
# };
|
|
||||||
# "XF86MonBrightnessUp" = {
|
|
||||||
# action = actions.spawn "brightnessctl" "set" "5%+";
|
|
||||||
# allow-when-locked = true;
|
|
||||||
# };
|
|
||||||
|
|
||||||
# Media controls
|
|
||||||
"XF86AudioRaiseVolume" = {
|
|
||||||
allow-when-locked = true;
|
|
||||||
action = actions.spawn "pamixer" "-i" "5";
|
|
||||||
};
|
|
||||||
"XF86AudioLowerVolume" = {
|
|
||||||
allow-when-locked = true;
|
|
||||||
action = actions.spawn "pamixer" "-d" "5";
|
|
||||||
};
|
|
||||||
"XF86AudioMute" = {
|
|
||||||
allow-when-locked = true;
|
|
||||||
action = actions.spawn "pamixer" "--toggle-mute";
|
|
||||||
};
|
|
||||||
"XF86AudioMicMute" = {
|
|
||||||
allow-when-locked = true;
|
|
||||||
action = actions.spawn "pamixer" "--default-source"
|
|
||||||
"--toggle-mute";
|
|
||||||
};
|
|
||||||
|
|
||||||
# Close window
|
|
||||||
"Mod+Q" = {action = actions.close-window;};
|
|
||||||
|
|
||||||
# Focus windows and columns
|
|
||||||
"Mod+Left" = {action = actions.focus-column-left;};
|
|
||||||
"Mod+Down" = {action = actions.focus-window-down;};
|
|
||||||
"Mod+Up" = {action = actions.focus-window-up;};
|
|
||||||
"Mod+Right" = {action = actions.focus-column-right;};
|
|
||||||
"Mod+H" = {action = actions.focus-column-left;};
|
|
||||||
"Mod+J" = {action = actions.focus-window-down;};
|
|
||||||
"Mod+K" = {action = actions.focus-window-up;};
|
|
||||||
"Mod+L" = {action = actions.focus-column-right;};
|
|
||||||
|
|
||||||
# Move windows within a column
|
|
||||||
"Mod+Ctrl+Left" = {action = actions.move-column-left;};
|
|
||||||
"Mod+Ctrl+Down" = {action = actions.move-window-down;};
|
|
||||||
"Mod+Ctrl+Up" = {action = actions.move-window-up;};
|
|
||||||
"Mod+Ctrl+Right" = {action = actions.move-column-right;};
|
|
||||||
"Mod+Ctrl+H" = {action = actions.move-column-left;};
|
|
||||||
"Mod+Ctrl+J" = {action = actions.move-window-down;};
|
|
||||||
"Mod+Ctrl+K" = {action = actions.move-window-up;};
|
|
||||||
"Mod+Ctrl+L" = {action = actions.move-column-right;};
|
|
||||||
|
|
||||||
# "Mod+Alt+Left" = {action = actions.move-to-monitor-left;};
|
|
||||||
# "Mod+Alt+Down" = {action = actions.move-to-monitor-down;};
|
|
||||||
# "Mod+Alt+Up" = {action = actions.move-to-monitor-up;};
|
|
||||||
# "Mod+Alt+Right" = {action = actions.move-to-monitor-right;};
|
|
||||||
# "Mod+Alt+H" = {action = actions.move-to-monitor-left;};
|
|
||||||
# "Mod+Alt+J" = {action = actions.move-to-monitor-down;};
|
|
||||||
# "Mod+Alt+K" = {action = actions.move-to-monitor-up;};
|
|
||||||
# "Mod+Alt+L" = {action = actions.move-to-monitor-right;};
|
|
||||||
|
|
||||||
"Mod+Home" = {action = actions.focus-column-first;};
|
|
||||||
"Mod+End" = {action = actions.focus-column-last;};
|
|
||||||
"Mod+Ctrl+Home" = {action = actions.move-column-to-first;};
|
|
||||||
"Mod+Ctrl+End" = {action = actions.move-column-to-last;};
|
|
||||||
|
|
||||||
# Move window out of column
|
|
||||||
"Mod+Shift+Left" = {action = actions.move-view-left;};
|
|
||||||
"Mod+Shift+Down" = {action = actions.move-view-down;};
|
|
||||||
"Mod+Shift+Up" = {action = actions.move-view-up;};
|
|
||||||
"Mod+Shift+Right" = {action = actions.move-view-right;};
|
|
||||||
"Mod+Shift+H" = {action = actions.move-view-left;};
|
|
||||||
"Mod+Shift+J" = {action = actions.move-view-down;};
|
|
||||||
"Mod+Shift+K" = {action = actions.move-view-up;};
|
|
||||||
"Mod+Shift+L" = {action = actions.move-view-right;};
|
|
||||||
|
|
||||||
"Mod+Ctrl+Shift+F" = {action = actions.toggle-windowed-fullscreen;};
|
|
||||||
|
|
||||||
# Move to a different monitor
|
|
||||||
"Mod+Shift+Ctrl+Left" = {action = actions.move-to-monitor-left;};
|
|
||||||
"Mod+Shift+Ctrl+Down" = {action = actions.move-to-monitor-down;};
|
|
||||||
"Mod+Shift+Ctrl+Up" = {action = actions.move-to-monitor-up;};
|
|
||||||
"Mod+Shift+Ctrl+Right" = {action = actions.move-to-monitor-right;};
|
|
||||||
"Mod+Shift+Ctrl+H" = {action = actions.move-to-monitor-left;};
|
|
||||||
"Mod+Shift+Ctrl+J" = {action = actions.move-to-monitor-down;};
|
|
||||||
"Mod+Shift+Ctrl+K" = {action = actions.move-to-monitor-up;};
|
|
||||||
"Mod+Shift+Ctrl+L" = {action = actions.move-to-monitor-right;};
|
|
||||||
|
|
||||||
# Switch to workspace
|
|
||||||
"Mod+Page_Down" = {action = actions.focus-workspace-down;};
|
|
||||||
"Mod+Page_Up" = {action = actions.focus-workspace-up;};
|
|
||||||
"Mod+U" = {action = actions.focus-workspace-previous;};
|
|
||||||
"Mod+I" = {action = actions.focus-workspace-next;};
|
|
||||||
"Mod+Ctrl+Page_Down" = {action = actions.move-column-to-workspace-down;};
|
|
||||||
"Mod+Ctrl+Page_Up" = {action = actions.move-column-to-workspace-up;};
|
|
||||||
"Mod+Ctrl+U" = {action = actions.move-column-to-workspace-down;};
|
|
||||||
"Mod+Ctrl+I" = {action = actions.move-column-to-workspace-up;};
|
|
||||||
|
|
||||||
# Move window to workspace
|
|
||||||
"Mod+Shift+Page_Down" = {action = actions.move-view-to-workspace-down;};
|
|
||||||
"Mod+Shift+Page_Up" = {action = actions.move-view-to-workspace-up;};
|
|
||||||
"Mod+Shift+U" = {action = actions.move-view-to-workspace-previous;};
|
|
||||||
"Mod+Shift+I" = {action = actions.move-view-to-workspace-next;};
|
|
||||||
|
|
||||||
# Switch workspaces using scroll wheel
|
|
||||||
"Mod+WheelScrollDown" = {
|
|
||||||
cooldown-ms = 50;
|
|
||||||
action = actions.focus-workspace-down;
|
|
||||||
};
|
|
||||||
"Mod+WheelScrollUp" = {
|
|
||||||
cooldown-ms = 50;
|
|
||||||
action = actions.focus-workspace-up;
|
|
||||||
};
|
|
||||||
"Mod+Ctrl+WheelScrollDown" = {
|
|
||||||
cooldown-ms = 50;
|
|
||||||
action = actions.move-column-to-workspace-down;
|
|
||||||
};
|
|
||||||
"Mod+Ctrl+WheelScrollUp" = {
|
|
||||||
cooldown-ms = 50;
|
|
||||||
action = actions.move-column-to-workspace-up;
|
|
||||||
};
|
|
||||||
|
|
||||||
"Mod+WheelScrollRight" = {action = actions.focus-column-right;};
|
|
||||||
"Mod+WheelScrollLeft" = {action = actions.focus-column-left;};
|
|
||||||
"Mod+Ctrl+WheelScrollRight" = {action = actions.move-column-right;};
|
|
||||||
"Mod+Ctrl+WheelScrollLeft" = {action = actions.move-column-left;};
|
|
||||||
|
|
||||||
"Mod+Shift+WheelScrollDown" = {action = actions.move-view-to-workspace-down;};
|
|
||||||
"Mod+Shift+WheelScrollUp" = {action = actions.move-view-to-workspace-up;};
|
|
||||||
"Mod+Ctrl+Shift+WheelScrollDown" = {action = actions.move-view-to-workspace-down;};
|
|
||||||
"Mod+Ctrl+Shift+WheelScrollUp" = {action = actions.move-view-to-workspace-up;};
|
|
||||||
|
|
||||||
# Named workspaces
|
|
||||||
"Mod+Comma" = {action = actions.focus-workspace-previous;};
|
|
||||||
"Mod+Period" = {action = actions.focus-workspace-next;};
|
|
||||||
|
|
||||||
"Mod+BracketLeft" = {action = actions.consume-or-expel-window-left;};
|
|
||||||
"Mod+BracketRight" = {action = actions.consume-or-expel-window-right;};
|
|
||||||
|
|
||||||
"Mod+R" = {action = actions.switch-preset-column-width;};
|
|
||||||
"Mod+Shift+R" = {action = actions.switch-preset-window-height;};
|
|
||||||
"Mod+Ctrl+R" = {action = actions.reset-window-height;};
|
|
||||||
"Mod+F" = {action = actions.maximize-column;};
|
|
||||||
"Mod+Shift+F" = {action = actions.toggle-fullscreen;};
|
|
||||||
"Mod+C" = {action = actions.center-column;};
|
|
||||||
"Mod+Ctrl+F" = {action = actions.expand-column-to-available-width;};
|
|
||||||
|
|
||||||
"Mod+V" = {action = actions.toggle-floating;};
|
|
||||||
|
|
||||||
"Mod+Minus" = {action = actions.decrease-column-width;};
|
|
||||||
"Mod+Equal" = {action = actions.increase-column-width;};
|
|
||||||
|
|
||||||
"Mod+Shift+Minus" = {action = actions.set-column-width 33;};
|
|
||||||
"Mod+Shift+Equal" = {action = actions.set-column-width 67;};
|
|
||||||
|
|
||||||
"Print" = {action = actions.screen-shot {};};
|
|
||||||
"Mod+Shift+E" = {action = actions.quit {};}; # Default: no skip-confirmation
|
|
||||||
"Ctrl+Alt+Delete" = {action = actions.quit {};};
|
|
||||||
|
|
||||||
"Mod+Shift+P" = {action = actions.lock-screen {};};
|
|
||||||
|
|
||||||
# Navigate to specific workspaces
|
|
||||||
# These bindings use the names of the workspaces defined above
|
|
||||||
"Mod+1" = {
|
|
||||||
action = actions.focus-workspace "01-browser";
|
|
||||||
};
|
|
||||||
"Mod+2" = {
|
|
||||||
action = actions.focus-workspace "02-code";
|
|
||||||
};
|
|
||||||
"Mod+3" = {
|
|
||||||
action = actions.focus-workspace "03-chat";
|
|
||||||
};
|
|
||||||
"Mod+4" = {
|
|
||||||
action = actions.focus-workspace "04-work";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
systemd.user.services = {
|
|
||||||
swaybg = mkService {
|
|
||||||
Unit.Description = "Wallpaper Chooser";
|
|
||||||
Service = {
|
|
||||||
ExecStart = "${getExe pkgs.swaybg} -i ${wallpaper}";
|
|
||||||
Restart = "always";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
@ -12,12 +12,499 @@ with lib.custom; {
|
||||||
enable = mkBoolOpt false "Enable niri";
|
enable = mkBoolOpt false "Enable niri";
|
||||||
};
|
};
|
||||||
|
|
||||||
imports = optionals (pkgs.stdenv.isLinux) [
|
|
||||||
./config.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
# For Darwin, just provide empty configuration
|
# For Darwin, just provide empty configuration
|
||||||
config = mkIf (config.wms.niri.enable && pkgs.stdenv.isDarwin) {
|
config = mkIf (config.wms.niri.enable && !pkgs.stdenv.isDarwin) {
|
||||||
# Empty configuration for Darwin - module is effectively disabled
|
programs.niri = let
|
||||||
|
actions = config.lib.niri.actions;
|
||||||
|
|
||||||
|
mkGradient = from: to: {
|
||||||
|
angle ? 180,
|
||||||
|
relative-to ? "window",
|
||||||
|
in' ? null,
|
||||||
|
}: {
|
||||||
|
gradient = {inherit from to angle relative-to in';};
|
||||||
|
};
|
||||||
|
|
||||||
|
spawnSlackOnWeekday = pkgs.writeShellScriptBin "spawn-slack-on-weekday" ''
|
||||||
|
# Get the day of the week (1=Monday, ..., 7=Sunday)
|
||||||
|
DAY_OF_WEEK=$(${pkgs.coreutils}/bin/date +%u)
|
||||||
|
|
||||||
|
# Check if it's a weekday (between 1 and 5 inclusive)
|
||||||
|
if [ "$DAY_OF_WEEK" -ge 1 ] && [ "$DAY_OF_WEEK" -le 5 ]; then
|
||||||
|
# Execute Slack. Use the full path for robustness.
|
||||||
|
# Ensure pkgs.slack is available (e.g., via environment.systemPackages)
|
||||||
|
exec ${pkgs.slack}/bin/slack
|
||||||
|
fi
|
||||||
|
# Exit successfully if not a weekday or after exec replaces the process
|
||||||
|
exit 0
|
||||||
|
'';
|
||||||
|
in {
|
||||||
|
package = pkgs.niri;
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
# Input device configuration
|
||||||
|
input = {
|
||||||
|
keyboard = {
|
||||||
|
# xkb settings are empty in KDL, using defaults/empty strings
|
||||||
|
xkb = {
|
||||||
|
rules = "";
|
||||||
|
model = "";
|
||||||
|
layout = "";
|
||||||
|
variant = "";
|
||||||
|
options = null; # Or "" if you prefer explicit empty
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
touchpad = {
|
||||||
|
enable = true; # Not explicitly 'off' in KDL
|
||||||
|
tap = true;
|
||||||
|
dwt = false; # Commented out in KDL
|
||||||
|
dwtp = false; # Commented out in KDL
|
||||||
|
natural-scroll = true;
|
||||||
|
# accel-speed = 0.2; # Commented out
|
||||||
|
# accel-profile = "flat"; # Commented out
|
||||||
|
# scroll-method = "two-finger"; # Commented out
|
||||||
|
disabled-on-external-mouse = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
mouse = {
|
||||||
|
enable = true; # Not explicitly 'off' in KDL
|
||||||
|
natural-scroll = false; # Commented out in KDL
|
||||||
|
accel-speed = 0.2;
|
||||||
|
accel-profile = "flat";
|
||||||
|
# scroll-method = "no-scroll"; # Commented out
|
||||||
|
};
|
||||||
|
|
||||||
|
trackpoint = {
|
||||||
|
enable = true; # Not explicitly 'off' in KDL
|
||||||
|
natural-scroll = false; # Commented out
|
||||||
|
# accel-speed = 0.2; # Commented out
|
||||||
|
# accel-profile = "flat"; # Commented out
|
||||||
|
# scroll-method = "on-button-down"; # Commented out
|
||||||
|
# scroll-button = 273; # Commented out
|
||||||
|
middle-emulation = false; # Commented out
|
||||||
|
};
|
||||||
|
|
||||||
|
warp-mouse-to-focus = true;
|
||||||
|
|
||||||
|
focus-follows-mouse = {
|
||||||
|
enable = false; # Commented out in KDL
|
||||||
|
# max-scroll-amount = "0%"; # Only relevant if enabled
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Output configuration
|
||||||
|
outputs."DP-1" = {
|
||||||
|
enable = true; # Not explicitly 'off'
|
||||||
|
mode = {
|
||||||
|
width = 2560;
|
||||||
|
height = 1440;
|
||||||
|
refresh = 239.972;
|
||||||
|
};
|
||||||
|
variable-refresh-rate = "on-demand";
|
||||||
|
scale = 1;
|
||||||
|
transform = {
|
||||||
|
# "normal"
|
||||||
|
rotation = 0;
|
||||||
|
flipped = false;
|
||||||
|
};
|
||||||
|
position = {
|
||||||
|
x = 0;
|
||||||
|
y = 0;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Environment variables
|
||||||
|
environment = {
|
||||||
|
DISPLAY = ":0"; # for applications using xwayland-satillite
|
||||||
|
};
|
||||||
|
|
||||||
|
hotkey-overlay = {
|
||||||
|
skip-at-startup = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Layout settings
|
||||||
|
layout = {
|
||||||
|
gaps = 16;
|
||||||
|
center-focused-column = "never";
|
||||||
|
|
||||||
|
preset-column-widths = [
|
||||||
|
{proportion = 0.33333;}
|
||||||
|
{proportion = 0.5;}
|
||||||
|
{proportion = 0.66667;}
|
||||||
|
# { fixed = 1920; } # Example if needed
|
||||||
|
];
|
||||||
|
|
||||||
|
# preset-window-heights = []; # Empty in KDL
|
||||||
|
|
||||||
|
default-column-width = {proportion = 0.5;};
|
||||||
|
# default-column-width = {}; # Alternative from KDL comments
|
||||||
|
|
||||||
|
focus-ring = {
|
||||||
|
enable = true; # Not explicitly 'off'
|
||||||
|
width = 4;
|
||||||
|
active = mkGradient colors.blue.hex colors.sky.hex {angle = 45;};
|
||||||
|
# active = mkColor "#7fc8ff"; # Alternative solid color from KDL
|
||||||
|
inactive = mkGradient colors.surface1.hex colors.surface2.hex {
|
||||||
|
angle = 45;
|
||||||
|
relative-to = "workspace-view";
|
||||||
|
};
|
||||||
|
# inactive = mkColor "#505050"; # Alternative solid color from KDL
|
||||||
|
};
|
||||||
|
|
||||||
|
border = {
|
||||||
|
enable = true; # Explicitly 'off' in KDL
|
||||||
|
width = 0;
|
||||||
|
active = mkColor colors.blue.hex;
|
||||||
|
inactive = mkColor colors.base.hex;
|
||||||
|
# active-gradient = ... # Commented out in KDL
|
||||||
|
# inactive-gradient = ... # Commented out in KDL
|
||||||
|
};
|
||||||
|
|
||||||
|
struts = {
|
||||||
|
# left = 64; # Commented out
|
||||||
|
# right = 64; # Commented out
|
||||||
|
# top = 64; # Commented out
|
||||||
|
# bottom = 64; # Commented out
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Spawn processes at startup
|
||||||
|
spawn-at-startup = [
|
||||||
|
{command = ["xwayland-satellite"];}
|
||||||
|
{command = ["${pkgs.writeShellScriptBin "thunderbird-delayed" ''sleep 5; thunderbird''}/bin/thunderbird-delayed"];}
|
||||||
|
{command = ["${pkgs.writeShellScriptBin "zen-delayed" ''sleep 5; zen''}/bin/zen-delayed"];}
|
||||||
|
{command = ["vesktop"];}
|
||||||
|
{command = ["spotify"];}
|
||||||
|
|
||||||
|
{command = ["${spawnSlackOnWeekday}/bin/spawn-slack-on-weekday"];}
|
||||||
|
];
|
||||||
|
|
||||||
|
# Prefer server-side decorations
|
||||||
|
prefer-no-csd = true;
|
||||||
|
|
||||||
|
# Screenshot path
|
||||||
|
screenshot-path = "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png";
|
||||||
|
# screenshot-path = null; # Alternative from KDL comments
|
||||||
|
|
||||||
|
# Animation settings
|
||||||
|
animations = {
|
||||||
|
enable = true; # Not explicitly 'off'
|
||||||
|
# slowdown = 3.0; # Commented out
|
||||||
|
# Individual animation settings can be added here if needed
|
||||||
|
};
|
||||||
|
|
||||||
|
debug = {
|
||||||
|
wait-for-frame-completion-in-pipewire = [];
|
||||||
|
};
|
||||||
|
|
||||||
|
layer-rules = [
|
||||||
|
{
|
||||||
|
matches = [
|
||||||
|
{namespace = "notifications$";}
|
||||||
|
];
|
||||||
|
|
||||||
|
block-out-from = "screen-capture";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
# Window rules
|
||||||
|
window-rules = [
|
||||||
|
# Password manager rule (example from KDL comments)
|
||||||
|
{
|
||||||
|
matches = [
|
||||||
|
{app-id = "^org\\.keepassxc\\.KeePassXC$";}
|
||||||
|
{app-id = "^org\\.gnome\\.World\\.Secrets$";}
|
||||||
|
{app-id = "^1Password$";}
|
||||||
|
{app-id = "^thunderbird$";}
|
||||||
|
{app-id = "^signal$";}
|
||||||
|
{app-id = "^vesktop$";}
|
||||||
|
{app-id = "^slack$";}
|
||||||
|
];
|
||||||
|
block-out-from = "screen-capture";
|
||||||
|
}
|
||||||
|
# Rounded corners rule (example from KDL comments)
|
||||||
|
{
|
||||||
|
# No matches means apply to all windows
|
||||||
|
geometry-corner-radius = {
|
||||||
|
top-left = 12.0;
|
||||||
|
top-right = 12.0;
|
||||||
|
bottom-left = 12.0;
|
||||||
|
bottom-right = 12.0;
|
||||||
|
};
|
||||||
|
clip-to-geometry = true;
|
||||||
|
}
|
||||||
|
# Window cast target rule
|
||||||
|
{
|
||||||
|
matches = [{is-window-cast-target = true;}];
|
||||||
|
focus-ring = {
|
||||||
|
active = mkColor colors.red.hex;
|
||||||
|
inactive = mkColor (lerpColor colors.red.hex colors.base.hex 0.5);
|
||||||
|
};
|
||||||
|
shadow = {
|
||||||
|
# Only color is specified in KDL rule
|
||||||
|
color = "#7d0d2d70";
|
||||||
|
};
|
||||||
|
tab-indicator = {
|
||||||
|
active = mkColor colors.red.hex;
|
||||||
|
inactive = mkColor (lerpColor colors.red.hex colors.base.hex 0.5);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
# fix steam popups holy fuck they're annoying
|
||||||
|
{
|
||||||
|
matches = [
|
||||||
|
{app-id = "^steam$";}
|
||||||
|
];
|
||||||
|
|
||||||
|
excludes = [{title = "^Steam$";}];
|
||||||
|
|
||||||
|
open-floating = true;
|
||||||
|
|
||||||
|
open-focused = false;
|
||||||
|
|
||||||
|
default-floating-position = {
|
||||||
|
relative-to = "bottom-right";
|
||||||
|
x = 16;
|
||||||
|
y = 16;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
{
|
||||||
|
matches = [
|
||||||
|
{
|
||||||
|
app-id = "^cyberpunk2077.exe$";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
app-id = "^Overwatch2.exe$";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
variable-refresh-rate = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
matches = [
|
||||||
|
{
|
||||||
|
at-startup = true;
|
||||||
|
app-id = "^zen$";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
open-maximized = true;
|
||||||
|
|
||||||
|
open-on-workspace = "browser";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
matches = [
|
||||||
|
{
|
||||||
|
at-startup = true;
|
||||||
|
app-id = "^spotify$";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
at-startup = true;
|
||||||
|
app-id = "^vesktop$";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
open-on-workspace = "chat";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
matches = [
|
||||||
|
{
|
||||||
|
at-startup = true;
|
||||||
|
app-id = "^Slack$";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
at-startup = true;
|
||||||
|
app-id = "^thunderbird$";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
open-on-workspace = "work";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
workspaces."01-browser" = {
|
||||||
|
name = "browser";
|
||||||
|
};
|
||||||
|
workspaces."02-code" = {
|
||||||
|
name = "code";
|
||||||
|
};
|
||||||
|
workspaces."03-chat" = {
|
||||||
|
name = "chat";
|
||||||
|
};
|
||||||
|
workspaces."04-work" = {
|
||||||
|
name = "work";
|
||||||
|
};
|
||||||
|
|
||||||
|
# Keybindings
|
||||||
|
binds =
|
||||||
|
{
|
||||||
|
"Mod+Shift+Slash" = {action = actions.show-hotkey-overlay;};
|
||||||
|
|
||||||
|
"Mod+Return" = {action = actions.spawn "kitty";};
|
||||||
|
"Mod+D" = {action = actions.spawn "fuzzel";};
|
||||||
|
"Super+Alt+L" = {action = actions.spawn "swaylock";};
|
||||||
|
# "Mod+T" = { action = actions.spawn "bash" "-c" "notify-send hello && exec alacritty"; };
|
||||||
|
|
||||||
|
# "Mod+S" = {action = actions.set-dynamic-cast-window;};
|
||||||
|
#
|
||||||
|
# "Mod+Shift+S" = {action = actions.set-dynamic-cast-monitor;};
|
||||||
|
#
|
||||||
|
# "Mod+Z" = {action = actions.clear-dynamic-cast-target;};
|
||||||
|
|
||||||
|
"XF86AudioRaiseVolume" = {
|
||||||
|
allow-when-locked = true;
|
||||||
|
action = actions.spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.1+";
|
||||||
|
};
|
||||||
|
"XF86AudioLowerVolume" = {
|
||||||
|
allow-when-locked = true;
|
||||||
|
action = actions.spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.1-";
|
||||||
|
};
|
||||||
|
"XF86AudioMute" = {
|
||||||
|
allow-when-locked = true;
|
||||||
|
action = actions.spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SINK@" "toggle";
|
||||||
|
};
|
||||||
|
"XF86AudioMicMute" = {
|
||||||
|
allow-when-locked = true;
|
||||||
|
action =
|
||||||
|
actions.spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SOURCE@" "toggle";
|
||||||
|
};
|
||||||
|
|
||||||
|
"Mod+Q" = {action = actions.close-window;};
|
||||||
|
|
||||||
|
"Mod+Left" = {action = actions.focus-column-left;};
|
||||||
|
"Mod+Down" = {action = actions.focus-window-down;};
|
||||||
|
"Mod+Up" = {action = actions.focus-window-up;};
|
||||||
|
"Mod+Right" = {action = actions.focus-column-right;};
|
||||||
|
"Mod+H" = {action = actions.focus-column-left;};
|
||||||
|
"Mod+J" = {action = actions.focus-window-down;};
|
||||||
|
"Mod+K" = {action = actions.focus-window-up;};
|
||||||
|
"Mod+L" = {action = actions.focus-column-right;};
|
||||||
|
|
||||||
|
"Mod+Ctrl+Left" = {action = actions.move-column-left;};
|
||||||
|
"Mod+Ctrl+Down" = {action = actions.move-window-down;};
|
||||||
|
"Mod+Ctrl+Up" = {action = actions.move-window-up;};
|
||||||
|
"Mod+Ctrl+Right" = {action = actions.move-column-right;};
|
||||||
|
"Mod+Ctrl+H" = {action = actions.move-column-left;};
|
||||||
|
"Mod+Ctrl+J" = {action = actions.move-window-down;};
|
||||||
|
"Mod+Ctrl+K" = {action = actions.move-window-up;};
|
||||||
|
"Mod+Ctrl+L" = {action = actions.move-column-right;};
|
||||||
|
|
||||||
|
# Alternative commands (commented out in KDL)
|
||||||
|
# "Mod+J" = { action = actions.focus-window-or-workspace-down; };
|
||||||
|
# "Mod+K" = { action = actions.focus-window-or-workspace-up; };
|
||||||
|
# "Mod+Ctrl+J" = { action = actions.move-window-down-or-to-workspace-down; };
|
||||||
|
# "Mod+Ctrl+K" = { action = actions.move-window-up-or-to-workspace-up; };
|
||||||
|
|
||||||
|
"Mod+Home" = {action = actions.focus-column-first;};
|
||||||
|
"Mod+End" = {action = actions.focus-column-last;};
|
||||||
|
"Mod+Ctrl+Home" = {action = actions.move-column-to-first;};
|
||||||
|
"Mod+Ctrl+End" = {action = actions.move-column-to-last;};
|
||||||
|
|
||||||
|
"Mod+Shift+Left" = {action = actions.focus-monitor-left;};
|
||||||
|
"Mod+Shift+Down" = {action = actions.focus-monitor-down;};
|
||||||
|
"Mod+Shift+Up" = {action = actions.focus-monitor-up;};
|
||||||
|
"Mod+Shift+Right" = {action = actions.focus-monitor-right;};
|
||||||
|
"Mod+Shift+H" = {action = actions.focus-monitor-left;};
|
||||||
|
"Mod+Shift+J" = {action = actions.focus-workspace-down;};
|
||||||
|
"Mod+Shift+K" = {action = actions.focus-workspace-up;};
|
||||||
|
"Mod+Shift+L" = {action = actions.focus-monitor-right;};
|
||||||
|
|
||||||
|
"Mod+Ctrl+Shift+F" = {action = actions.toggle-windowed-fullscreen;};
|
||||||
|
|
||||||
|
"Mod+Shift+Ctrl+Left" = {action = actions.move-column-to-monitor-left;};
|
||||||
|
"Mod+Shift+Ctrl+Down" = {action = actions.move-column-to-monitor-down;};
|
||||||
|
"Mod+Shift+Ctrl+Up" = {action = actions.move-column-to-monitor-up;};
|
||||||
|
"Mod+Shift+Ctrl+Right" = {action = actions.move-column-to-monitor-right;};
|
||||||
|
"Mod+Shift+Ctrl+H" = {action = actions.move-column-to-monitor-left;};
|
||||||
|
"Mod+Shift+Ctrl+J" = {action = actions.move-column-to-monitor-down;};
|
||||||
|
"Mod+Shift+Ctrl+K" = {action = actions.move-column-to-monitor-up;};
|
||||||
|
"Mod+Shift+Ctrl+L" = {action = actions.move-column-to-monitor-right;};
|
||||||
|
|
||||||
|
"Mod+Page_Down" = {action = actions.focus-workspace-down;};
|
||||||
|
"Mod+Page_Up" = {action = actions.focus-workspace-up;};
|
||||||
|
"Mod+U" = {action = actions.focus-workspace-down;};
|
||||||
|
"Mod+I" = {action = actions.focus-workspace-up;};
|
||||||
|
"Mod+Ctrl+Page_Down" = {action = actions.move-column-to-workspace-down;};
|
||||||
|
"Mod+Ctrl+Page_Up" = {action = actions.move-column-to-workspace-up;};
|
||||||
|
"Mod+Ctrl+U" = {action = actions.move-column-to-workspace-down;};
|
||||||
|
"Mod+Ctrl+I" = {action = actions.move-column-to-workspace-up;};
|
||||||
|
|
||||||
|
"Mod+Shift+Page_Down" = {action = actions.move-workspace-down;};
|
||||||
|
"Mod+Shift+Page_Up" = {action = actions.move-workspace-up;};
|
||||||
|
"Mod+Shift+U" = {action = actions.move-workspace-down;};
|
||||||
|
"Mod+Shift+I" = {action = actions.move-workspace-up;};
|
||||||
|
|
||||||
|
"Mod+WheelScrollDown" = {
|
||||||
|
cooldown-ms = 150;
|
||||||
|
action = actions.focus-workspace-down;
|
||||||
|
};
|
||||||
|
"Mod+WheelScrollUp" = {
|
||||||
|
cooldown-ms = 150;
|
||||||
|
action = actions.focus-workspace-up;
|
||||||
|
};
|
||||||
|
"Mod+Ctrl+WheelScrollDown" = {
|
||||||
|
cooldown-ms = 150;
|
||||||
|
action = actions.move-column-to-workspace-down;
|
||||||
|
};
|
||||||
|
"Mod+Ctrl+WheelScrollUp" = {
|
||||||
|
cooldown-ms = 150;
|
||||||
|
action = actions.move-column-to-workspace-up;
|
||||||
|
};
|
||||||
|
|
||||||
|
"Mod+WheelScrollRight" = {action = actions.focus-column-right;};
|
||||||
|
"Mod+WheelScrollLeft" = {action = actions.focus-column-left;};
|
||||||
|
"Mod+Ctrl+WheelScrollRight" = {action = actions.move-column-right;};
|
||||||
|
"Mod+Ctrl+WheelScrollLeft" = {action = actions.move-column-left;};
|
||||||
|
|
||||||
|
"Mod+Shift+WheelScrollDown" = {action = actions.focus-column-right;};
|
||||||
|
"Mod+Shift+WheelScrollUp" = {action = actions.focus-column-left;};
|
||||||
|
"Mod+Ctrl+Shift+WheelScrollDown" = {action = actions.move-column-right;};
|
||||||
|
"Mod+Ctrl+Shift+WheelScrollUp" = {action = actions.move-column-left;};
|
||||||
|
|
||||||
|
"Mod+Comma" = {action = actions.consume-window-into-column;};
|
||||||
|
"Mod+Period" = {action = actions.expel-window-from-column;};
|
||||||
|
|
||||||
|
"Mod+BracketLeft" = {action = actions.consume-or-expel-window-left;};
|
||||||
|
"Mod+BracketRight" = {action = actions.consume-or-expel-window-right;};
|
||||||
|
|
||||||
|
"Mod+R" = {action = actions.switch-preset-column-width;};
|
||||||
|
"Mod+Shift+R" = {action = actions.switch-preset-window-height;};
|
||||||
|
"Mod+Ctrl+R" = {action = actions.reset-window-height;};
|
||||||
|
"Mod+F" = {action = actions.maximize-column;};
|
||||||
|
"Mod+Shift+F" = {action = actions.fullscreen-window;};
|
||||||
|
"Mod+C" = {action = actions.center-column;};
|
||||||
|
"Mod+Ctrl+F" = {action = actions.expand-column-to-available-width;};
|
||||||
|
|
||||||
|
"Mod+V" = {action = actions.toggle-window-floating;};
|
||||||
|
|
||||||
|
"Mod+Minus" = {action = actions.set-column-width "-10%";};
|
||||||
|
"Mod+Equal" = {action = actions.set-column-width "+10%";};
|
||||||
|
|
||||||
|
"Mod+Shift+Minus" = {action = actions.set-window-height "-10%";};
|
||||||
|
"Mod+Shift+Equal" = {action = actions.set-window-height "+10%";};
|
||||||
|
|
||||||
|
"Print" = {action = actions.screenshot {};}; # Empty attrset for default args
|
||||||
|
"Mod+Shift+E" = {action = actions.quit {};}; # Default: no skip-confirmation
|
||||||
|
"Ctrl+Alt+Delete" = {action = actions.quit {};};
|
||||||
|
|
||||||
|
"Mod+Shift+P" = {action = actions.power-off-monitors;};
|
||||||
|
}
|
||||||
|
// lib.attrsets.listToAttrs (builtins.concatMap (i:
|
||||||
|
with actions; [
|
||||||
|
{
|
||||||
|
name = "Mod+${toString i}";
|
||||||
|
value.action = focus-workspace i;
|
||||||
|
}
|
||||||
|
# FIXME: use this action directly untril sodiboo/niri-flake#1018 is fixed.
|
||||||
|
{
|
||||||
|
name = "Mod+Shift+${toString i}";
|
||||||
|
value.action = spawn [niri "msg" "action" "move-column-to-workspace" (toString i)];
|
||||||
|
}
|
||||||
|
]) (lib.range 1 9));
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
services.wallpaper.enable = true;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -45,5 +45,7 @@ in {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
services.wallpaper.enable = true;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -57,14 +57,6 @@ in {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
systemd.user.services = {
|
services.wallpaper.enable = true;
|
||||||
swaybg = mkService {
|
|
||||||
Unit.Description = "Wallpaper Chooser";
|
|
||||||
Service = {
|
|
||||||
ExecStart = "${getExe pkgs.swaybg} -i ${wallpaper}";
|
|
||||||
Restart = "always";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -50,7 +50,7 @@ in {
|
||||||
{
|
{
|
||||||
hostName = "localhost";
|
hostName = "localhost";
|
||||||
protocol = null;
|
protocol = null;
|
||||||
system = "x86_64-linux";
|
systems = ["builtin" "x86_64-linux"];
|
||||||
supportedFeatures = ["kvm" "nixos-test" "big-parallel" "benchmark"];
|
supportedFeatures = ["kvm" "nixos-test" "big-parallel" "benchmark"];
|
||||||
maxJobs = 8;
|
maxJobs = 8;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,6 @@ in {
|
||||||
packages = with pkgs; [
|
packages = with pkgs; [
|
||||||
material-icons
|
material-icons
|
||||||
material-design-icons
|
material-design-icons
|
||||||
roboto
|
|
||||||
work-sans
|
work-sans
|
||||||
comic-neue
|
comic-neue
|
||||||
source-sans
|
source-sans
|
||||||
|
|
|
||||||
|
|
@ -1,31 +1,31 @@
|
||||||
{pkgs, ...}:{
|
{pkgs, ...}: {
|
||||||
# List packages installed in system profile. To search by name, run:
|
# List packages installed in system profile. To search by name, run:
|
||||||
# $ nix-env -qaP | grep wget
|
# $ nix-env -qaP | grep wget
|
||||||
environment.systemPackages =
|
environment.systemPackages = [
|
||||||
[ pkgs.vim
|
pkgs.vim
|
||||||
];
|
];
|
||||||
|
|
||||||
# Auto upgrade nix package
|
# Auto upgrade nix package
|
||||||
nix.package = pkgs.nix;
|
nix.package = pkgs.nix;
|
||||||
|
|
||||||
# Necessary for using flakes on this system.
|
# Necessary for using flakes on this system.
|
||||||
nix.settings.experimental-features = "nix-command flakes";
|
nix.settings.experimental-features = "nix-command flakes";
|
||||||
|
|
||||||
# Create /etc/zshrc that loads the nix-darwin environment.
|
# Create /etc/zshrc that loads the nix-darwin environment.
|
||||||
programs.zsh.enable = true; # default shell on catalina
|
programs.zsh.enable = true; # default shell on catalina
|
||||||
programs.fish.enable = true;
|
programs.fish.enable = true;
|
||||||
|
|
||||||
# Used for backwards compatibility, please read the changelog before changing.
|
# Used for backwards compatibility, please read the changelog before changing.
|
||||||
# $ darwin-rebuild changelog
|
# $ darwin-rebuild changelog
|
||||||
system.stateVersion = 4;
|
system.stateVersion = 4;
|
||||||
|
|
||||||
home-manager.useGlobalPkgs = true;
|
home-manager.useGlobalPkgs = true;
|
||||||
home-manager.useUserPackages = true;
|
home-manager.useUserPackages = true;
|
||||||
users.users.zack = {
|
users.users.zack = {
|
||||||
name = "zack";
|
name = "zack";
|
||||||
home = "/Users/zack";
|
home = "/Users/zack";
|
||||||
};
|
};
|
||||||
|
|
||||||
# The platform the configuration will be used on.
|
# The platform the configuration will be used on.
|
||||||
nixpkgs.hostPlatform = "aarch64-darwin";
|
nixpkgs.hostPlatform = "aarch64-darwin";
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue