mirror of
https://github.com/larstvei/nix-config.git
synced 2026-03-23 04:30:12 +00:00
Compare commits
No commits in common. "326148e7951edf8442f56bfbf3171cd4a6263e74" and "9f101ad7078f2571b43f9f975d1f782bc403713e" have entirely different histories.
326148e795
...
9f101ad707
@ -12,7 +12,14 @@
|
|||||||
../../modules/desktop
|
../../modules/desktop
|
||||||
];
|
];
|
||||||
|
|
||||||
|
services.fprintd.enable = true;
|
||||||
services.gnome.gnome-keyring.enable = true;
|
services.gnome.gnome-keyring.enable = true;
|
||||||
|
security.pam.services = {
|
||||||
|
login.fprintAuth = true;
|
||||||
|
sudo.fprintAuth = true;
|
||||||
|
hyprlock.fprintAuth = true;
|
||||||
|
login.enableGnomeKeyring = true;
|
||||||
|
};
|
||||||
|
|
||||||
systemd.services.disable-thinkpad-leds = {
|
systemd.services.disable-thinkpad-leds = {
|
||||||
description = "Disable ThinkPad lid logo LED and power button led";
|
description = "Disable ThinkPad lid logo LED and power button led";
|
||||||
|
|||||||
@ -22,7 +22,7 @@
|
|||||||
imports = [
|
imports = [
|
||||||
inputs.zen-browser.homeModules.beta
|
inputs.zen-browser.homeModules.beta
|
||||||
./hypr
|
./hypr
|
||||||
./swaylock
|
./theme
|
||||||
];
|
];
|
||||||
|
|
||||||
programs.zen-browser = {
|
programs.zen-browser = {
|
||||||
@ -44,9 +44,4 @@
|
|||||||
# find more options here: https://mozilla.github.io/policy-templates/
|
# find more options here: https://mozilla.github.io/policy-templates/
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
services.darkman = {
|
|
||||||
enable = true;
|
|
||||||
settings.portal = true;
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,7 +1,6 @@
|
|||||||
{ pkgs, inputs, ... }:
|
{ pkgs, inputs, ... }:
|
||||||
let
|
let
|
||||||
nanostatus = inputs.nanostatus.packages.${pkgs.system}.default;
|
nanostatus = inputs.nanostatus.packages.${pkgs.system}.default;
|
||||||
|
|
||||||
toggle-mirror-display = pkgs.writeShellScriptBin "toggle-mirror-display" ''
|
toggle-mirror-display = pkgs.writeShellScriptBin "toggle-mirror-display" ''
|
||||||
if hyprctl monitors | grep -q '^Monitor eDP-1'; then
|
if hyprctl monitors | grep -q '^Monitor eDP-1'; then
|
||||||
M=$(hyprctl monitors | awk '/Monitor/ && $2 != "eDP-1" { print $2 }' | head -n1)
|
M=$(hyprctl monitors | awk '/Monitor/ && $2 != "eDP-1" { print $2 }' | head -n1)
|
||||||
@ -14,10 +13,7 @@ in
|
|||||||
{
|
{
|
||||||
wayland.windowManager.hyprland.settings = {
|
wayland.windowManager.hyprland.settings = {
|
||||||
input = {
|
input = {
|
||||||
kb_layout = "us";
|
kb_options = "altwin:swap_alt_win";
|
||||||
kb_variant = "mac";
|
|
||||||
# Both Alt keys becomes Option (called Mod5)
|
|
||||||
kb_options = "lv3:alt_switch,apple:alupckeys";
|
|
||||||
|
|
||||||
repeat_delay = 300;
|
repeat_delay = 300;
|
||||||
repeat_rate = 50;
|
repeat_rate = 50;
|
||||||
@ -29,48 +25,56 @@ in
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
"$mod" = "SUPER Mod5";
|
"$mod" = "SUPER";
|
||||||
|
"$shiftMod" = "SUPER_SHIFT";
|
||||||
|
|
||||||
bind = [
|
bind = [
|
||||||
"$mod, code:41, fullscreen" # F (code:41)
|
# Master layout
|
||||||
"$mod, code:24, killactive" # Q (code:24)
|
"$mod, F, fullscreen"
|
||||||
"$mod, code:119, exec, swaylock" # Delete (code:119)
|
"$mod, Return, layoutmsg, swapwithmaster master"
|
||||||
|
"$mod, minus, layoutmsg, mfact -0.01"
|
||||||
|
"$mod, equal, layoutmsg, mfact +0.01"
|
||||||
|
"$mod, Tab, layoutmsg, cyclenext"
|
||||||
|
"$shiftMod, Tab, layoutmsg, cycleprev"
|
||||||
|
"$mod, comma, layoutmsg, addmaster"
|
||||||
|
"$mod, period, layoutmsg, removemaster"
|
||||||
|
|
||||||
# Focus Movement (Super + Alt + HJKL)
|
# App launchers / session
|
||||||
|
"$mod, T, exec, kitty"
|
||||||
|
"$mod, E, exec, emacs"
|
||||||
|
"$mod, B, exec, zen-beta"
|
||||||
|
"$mod, Q, killactive"
|
||||||
|
|
||||||
"$mod, code:43, movefocus, l" # H (code:43)
|
"$mod, S, exec, grimblast copysave area /tmp/screenshot-$(date +%F--%T).png"
|
||||||
"$mod, code:44, movefocus, d" # J (code:44)
|
"$shiftMod, S, exec, grimblast copysave screen /tmp/screenshot-$(date +%F--%T).png"
|
||||||
"$mod, code:45, movefocus, u" # K (code:45)
|
|
||||||
"$mod, code:46, movefocus, r" # L (code:46)
|
|
||||||
|
|
||||||
# Window Movement (Super + Shift + Alt + HJKL)
|
# Window focus & movement
|
||||||
"$mod SHIFT, code:43, movewindow, l"
|
"$mod, H, movefocus, l"
|
||||||
"$mod SHIFT, code:44, movewindow, d"
|
"$mod, J, movefocus, d"
|
||||||
"$mod SHIFT, code:45, movewindow, u"
|
"$mod, K, movefocus, u"
|
||||||
"$mod SHIFT, code:46, movewindow, r"
|
"$mod, L, movefocus, r"
|
||||||
|
"$shiftMod, H, movewindow, l"
|
||||||
|
"$shiftMod, J, movewindow, d"
|
||||||
|
"$shiftMod, K, movewindow, u"
|
||||||
|
"$shiftMod, L, movewindow, r"
|
||||||
|
|
||||||
# Master Layout & Resize
|
"$mod, =, resizeactive, +10"
|
||||||
"$mod, code:36, layoutmsg, swapwithmaster master" # Return (code:36)
|
"$mod, -, resizeactive, -10"
|
||||||
"$mod, code:20, layoutmsg, mfact -0.01" # Minus (code:20)
|
|
||||||
"$mod, code:21, layoutmsg, mfact +0.01" # Equal (code:21)
|
|
||||||
"$mod, code:23, layoutmsg, cyclenext" # Tab (code:23)
|
|
||||||
"$mod SHIFT, code:23, layoutmsg, cycleprev"
|
|
||||||
"$mod, code:59, layoutmsg, addmaster" # Comma (code:59)
|
|
||||||
"$mod, code:60, layoutmsg, removemaster" # Period (code:60)
|
|
||||||
|
|
||||||
# App Launchers (Super + Alt + Key)
|
"$mod, D, exec, darkman toggle"
|
||||||
"$mod, code:28, exec, kitty" # T (code:28)
|
"$mod, space, exec, ${nanostatus}/bin/nanostatus-toggle"
|
||||||
"$mod, code:26, exec, emacs" # E (code:26)
|
"$mod, delete, exec, hyprlock"
|
||||||
"$mod, code:56, exec, zen-beta" # B (code:56)
|
"$shiftMod, M, exec, ${toggle-mirror-display}/bin/toggle-mirror-display"
|
||||||
"$mod, code:40, exec, darkman toggle" # D (code:40)
|
|
||||||
"$mod, code:65, exec, ${nanostatus}/bin/nanostatus-toggle" # Space (code:65)
|
|
||||||
"$mod SHIFT, code:58, exec, ${toggle-mirror-display}/bin/toggle-mirror-display" # M (code:58) + Shift
|
|
||||||
|
|
||||||
# Screenshots
|
# Text input (macOS-like way of producing Norwegian characters)
|
||||||
|
"$mod, A, exec, wtype 'å'"
|
||||||
|
"$mod, O, exec, wtype 'ø'"
|
||||||
|
"$mod, apostrophe, exec, wtype 'æ'"
|
||||||
|
"$shiftMod, A, exec, wtype 'Å'"
|
||||||
|
"$shiftMod, O, exec, wtype 'Ø'"
|
||||||
|
"$shiftMod, apostrophe, exec, wtype 'Æ'"
|
||||||
|
|
||||||
"$mod, code:39, exec, grimblast copysave area /tmp/screenshot-$(date +%F--%T).png" # S (code:39)
|
# Media & brightness
|
||||||
"$mod SHIFT, code:39, exec, grimblast copysave screen /tmp/screenshot-$(date +%F--%T).png"
|
|
||||||
|
|
||||||
# Media & Brightness (Standard Keys)
|
|
||||||
", XF86AudioRaiseVolume, exec, pamixer -i 5 "
|
", XF86AudioRaiseVolume, exec, pamixer -i 5 "
|
||||||
", XF86AudioLowerVolume, exec, pamixer -d 5 "
|
", XF86AudioLowerVolume, exec, pamixer -d 5 "
|
||||||
", XF86AudioMute, exec, pamixer -t"
|
", XF86AudioMute, exec, pamixer -t"
|
||||||
@ -79,38 +83,19 @@ in
|
|||||||
", XF86MonBrightnessDown, exec, brightnessctl set 5%-"
|
", XF86MonBrightnessDown, exec, brightnessctl set 5%-"
|
||||||
"SHIFT, XF86MonBrightnessUp, exec, brightnessctl set 100%"
|
"SHIFT, XF86MonBrightnessUp, exec, brightnessctl set 100%"
|
||||||
"SHIFT, XF86MonBrightnessDown, exec, brightnessctl set 1"
|
"SHIFT, XF86MonBrightnessDown, exec, brightnessctl set 1"
|
||||||
|
]
|
||||||
# Workspaces (Super + Alt + 1-9)
|
++ builtins.concatLists (
|
||||||
# 1=code:10, 2=code:11, ... 9=code:18, 0=code:19
|
builtins.genList (
|
||||||
"$mod, code:10, workspace, 1"
|
i:
|
||||||
"$mod SHIFT, code:10, movetoworkspace, 1"
|
let
|
||||||
|
code = "1${toString i}";
|
||||||
"$mod, code:11, workspace, 2"
|
ws = toString (i + 1);
|
||||||
"$mod SHIFT, code:11, movetoworkspace, 2"
|
in
|
||||||
|
[
|
||||||
"$mod, code:12, workspace, 3"
|
"$mod, code:${code}, workspace, ${ws}"
|
||||||
"$mod SHIFT, code:12, movetoworkspace, 3"
|
"$shiftMod, code:${code}, movetoworkspace, ${ws}"
|
||||||
|
]
|
||||||
"$mod, code:13, workspace, 4"
|
) 9
|
||||||
"$mod SHIFT, code:13, movetoworkspace, 4"
|
);
|
||||||
|
|
||||||
"$mod, code:14, workspace, 5"
|
|
||||||
"$mod SHIFT, code:14, movetoworkspace, 5"
|
|
||||||
|
|
||||||
"$mod, code:15, workspace, 6"
|
|
||||||
"$mod SHIFT, code:15, movetoworkspace, 6"
|
|
||||||
|
|
||||||
"$mod, code:16, workspace, 7"
|
|
||||||
"$mod SHIFT, code:16, movetoworkspace, 7"
|
|
||||||
|
|
||||||
"$mod, code:17, workspace, 8"
|
|
||||||
"$mod SHIFT, code:17, movetoworkspace, 8"
|
|
||||||
|
|
||||||
"$mod, code:18, workspace, 9"
|
|
||||||
"$mod SHIFT, code:18, movetoworkspace, 9"
|
|
||||||
|
|
||||||
"$mod, code:19, workspace, 10"
|
|
||||||
"$mod SHIFT, code:19, movetoworkspace, 10"
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,11 +1,8 @@
|
|||||||
let
|
|
||||||
theme = import ../theme;
|
|
||||||
in
|
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./bindings
|
./bindings
|
||||||
./hypridle
|
./hypridle
|
||||||
# ./hyprlock
|
./hyprlock
|
||||||
];
|
];
|
||||||
|
|
||||||
programs.kitty.enable = true;
|
programs.kitty.enable = true;
|
||||||
@ -15,7 +12,7 @@ in
|
|||||||
|
|
||||||
settings = {
|
settings = {
|
||||||
|
|
||||||
exec-once = [ "swaylock || hyprctl dispatch exit" ];
|
exec-once = [ "hyprlock || hyprctl dispatch exit" ];
|
||||||
|
|
||||||
misc.disable_hyprland_logo = true;
|
misc.disable_hyprland_logo = true;
|
||||||
|
|
||||||
@ -58,17 +55,4 @@ in
|
|||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
services.darkman = {
|
|
||||||
lightModeScripts.hyprland-light = ''
|
|
||||||
hyprctl keyword misc:background_color 0x${theme.bg.light}
|
|
||||||
hyprctl keyword general:col.active_border 0xFF${theme.primary.light}
|
|
||||||
hyprctl keyword general:col.inactive_border 0xFF${theme.secondary.light}
|
|
||||||
'';
|
|
||||||
darkModeScripts.hyprland-dark = ''
|
|
||||||
hyprctl keyword misc:background_color 0x${theme.bg.dark}
|
|
||||||
hyprctl keyword general:col.active_border 0xFF${theme.primary.dark}
|
|
||||||
hyprctl keyword general:col.inactive_border 0xFF${theme.secondary.dark}
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
enable = true;
|
enable = true;
|
||||||
settings = {
|
settings = {
|
||||||
general = {
|
general = {
|
||||||
lock_cmd = "swaylock";
|
lock_cmd = "hyprlock";
|
||||||
before_sleep_cmd = "loginctl lock-session";
|
before_sleep_cmd = "loginctl lock-session";
|
||||||
};
|
};
|
||||||
listener = [
|
listener = [
|
||||||
|
|||||||
32
modules/desktop/hypr/hyprlock/default.nix
Normal file
32
modules/desktop/hypr/hyprlock/default.nix
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
{
|
||||||
|
programs.hyprlock = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
background = [
|
||||||
|
{
|
||||||
|
monitor = "";
|
||||||
|
path = "screenshot";
|
||||||
|
blur_passes = 3;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
input-field = [
|
||||||
|
{
|
||||||
|
monitor = "";
|
||||||
|
size = "600, 100";
|
||||||
|
position = "0, 0";
|
||||||
|
halign = "center";
|
||||||
|
valign = "center";
|
||||||
|
|
||||||
|
outline_thickness = 4;
|
||||||
|
|
||||||
|
placeholder_text = "⋯";
|
||||||
|
fade_on_empty = false;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
auth."fingerprint:enabled" = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@ -1,40 +0,0 @@
|
|||||||
let
|
|
||||||
theme = import ../theme;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
programs.swaylock = {
|
|
||||||
enable = true;
|
|
||||||
settings = {
|
|
||||||
color = theme.bg.dark;
|
|
||||||
indicator-caps-lock = true;
|
|
||||||
|
|
||||||
inside-color = theme.bg.dark;
|
|
||||||
inside-clear-color = theme.bg.dark;
|
|
||||||
inside-caps-lock-color = theme.bg.dark;
|
|
||||||
inside-ver-color = theme.bg.dark;
|
|
||||||
inside-wrong-color = theme.bg.dark;
|
|
||||||
|
|
||||||
ring-color = theme.secondary.dark;
|
|
||||||
ring-clear-color = theme.warning.dark;
|
|
||||||
ring-caps-lock-color = theme.primary.light;
|
|
||||||
ring-ver-color = theme.primary.dark;
|
|
||||||
ring-wrong-color = theme.error.dark;
|
|
||||||
|
|
||||||
text-color = theme.fg.dark;
|
|
||||||
text-clear-color = theme.fg.dark;
|
|
||||||
text-caps-lock-color = theme.fg.dark;
|
|
||||||
text-ver-color = theme.fg.dark;
|
|
||||||
text-wrong-color = theme.fg.dark;
|
|
||||||
|
|
||||||
key-hl-color = theme.primary.light;
|
|
||||||
bs-hl-color = theme.warning.dark;
|
|
||||||
|
|
||||||
line-color = "00000000";
|
|
||||||
line-clear-color = "00000000";
|
|
||||||
line-caps-lock-color = "00000000";
|
|
||||||
line-ver-color = "00000000";
|
|
||||||
line-wrong-color = "00000000";
|
|
||||||
separator-color = "00000000";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
@ -1,12 +1,12 @@
|
|||||||
{
|
let
|
||||||
fg = {
|
|
||||||
light = "37474F";
|
|
||||||
dark = "ECEFF4";
|
|
||||||
};
|
|
||||||
bg = {
|
bg = {
|
||||||
light = "FAFAFA";
|
light = "FAFAFA";
|
||||||
dark = "2E3440";
|
dark = "2E3440";
|
||||||
};
|
};
|
||||||
|
fg = {
|
||||||
|
light = "37474F";
|
||||||
|
dark = "ECEFF4";
|
||||||
|
};
|
||||||
primary = {
|
primary = {
|
||||||
light = "673AB7";
|
light = "673AB7";
|
||||||
dark = "81A1C1";
|
dark = "81A1C1";
|
||||||
@ -15,12 +15,20 @@
|
|||||||
light = "90A4AE";
|
light = "90A4AE";
|
||||||
dark = "677691";
|
dark = "677691";
|
||||||
};
|
};
|
||||||
warning = {
|
in
|
||||||
light = "FF6F00";
|
{
|
||||||
dark = "EBCB8B";
|
services.darkman = {
|
||||||
};
|
enable = true;
|
||||||
error = {
|
settings.portal = true;
|
||||||
light = "FFAB91";
|
lightModeScripts.hyprland-light = ''
|
||||||
dark = "D08770";
|
hyprctl keyword misc:background_color 0x${bg.light}
|
||||||
|
hyprctl keyword general:col.active_border 0xFF${primary.light}
|
||||||
|
hyprctl keyword general:col.inactive_border 0xFF${secondary.light}
|
||||||
|
'';
|
||||||
|
darkModeScripts.hyprland-dark = ''
|
||||||
|
hyprctl keyword misc:background_color 0x${bg.dark}
|
||||||
|
hyprctl keyword general:col.active_border 0xFF${primary.dark}
|
||||||
|
hyprctl keyword general:col.inactive_border 0xFF${secondary.dark}
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@ -18,19 +18,12 @@
|
|||||||
home = "/home/larstvei";
|
home = "/home/larstvei";
|
||||||
shell = pkgs.fish;
|
shell = pkgs.fish;
|
||||||
extraGroups = [
|
extraGroups = [
|
||||||
"dialout"
|
|
||||||
"networkmanager"
|
"networkmanager"
|
||||||
"wheel"
|
"wheel"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
services.xserver.xkb = {
|
console.keyMap = "us";
|
||||||
layout = "us";
|
|
||||||
variant = "mac";
|
|
||||||
options = "lv3:alt_switch,apple:alupckeys";
|
|
||||||
};
|
|
||||||
|
|
||||||
console.useXkbConfig = true;
|
|
||||||
|
|
||||||
nixpkgs.config.allowUnfree = true;
|
nixpkgs.config.allowUnfree = true;
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user