1
0
mirror of https://github.com/XNM1/linux-nixos-hyprland-config-dotfiles.git synced 2025-09-15 09:45:58 +03:00

feat: update hyprland, helix, bootloader and other configs

Changelog:
- autostart: remove hypridle from autostart script
- helix: add copilot LSP for Rust, JS/TS variants
- hyprland:
  - Refactor window rules with regex patterns
  - Update brightness controls for intel_backlight
  - Adjust pyprland scratchpad configurations
- bootloader:
  - Add i915 kernel modules
  - Disable initrd verbose logging
- greetd: update tuigreet command to use uwsm
- hyprland: enable hyprlock, hypridle services
- linux-kernel: add security hardening params
- ollama: add new LLM models (gemma3, deepcoder)
- utils: add sqlx-cli and kitty
- kitty: add config
- virtualisation:
  - Add lima, nerdctl
- vpn:
  - Enable mullvad VPN
  - Add mullvad and tor browsers
- stylus-themes: update to latest
This commit is contained in:
xnm
2025-04-21 18:52:02 +03:00
parent 1a4f6d28c8
commit 78d6258bfe
15 changed files with 2840 additions and 104 deletions

View File

@@ -1,3 +1,3 @@
function autostart function autostart
pypr & hyprpaper & waybar & poweralertd & wl-paste --type text --watch cliphist store & wl-paste --type image --watch cliphist store & wl-clip-persist --clipboard regular & avizo-service & systemctl --user start psi-notify & hypridle pypr & hyprpaper & waybar & poweralertd -s & wl-paste --type text --watch cliphist store & wl-paste --type image --watch cliphist store & wl-clip-persist --clipboard regular & avizo-service & systemctl --user start psi-notify
end end

View File

@@ -22,7 +22,7 @@ args = ["--stdio"]
[[language]] [[language]]
name = "rust" name = "rust"
language-servers = [ "rust-analyzer" ] language-servers = [ "rust-analyzer", "copilot" ]
[language-server.rust-analyzer.config] [language-server.rust-analyzer.config]
checkOnSave = { command = "clippy" } checkOnSave = { command = "clippy" }
@@ -35,21 +35,25 @@ language-servers = [ "emmet-lsp", "vscode-html-language-server" ]
name = "javascript" name = "javascript"
auto-format = true auto-format = true
indent = { tab-width = 4, unit = " " } indent = { tab-width = 4, unit = " " }
language-servers = [ "typescript-language-server", "copilot" ]
[[language]] [[language]]
name = "jsx" name = "jsx"
auto-format = true auto-format = true
indent = { tab-width = 4, unit = " " } indent = { tab-width = 4, unit = " " }
language-servers = [ "typescript-language-server", "copilot" ]
[[language]] [[language]]
name = "typescript" name = "typescript"
auto-format = true auto-format = true
indent = { tab-width = 4, unit = " " } indent = { tab-width = 4, unit = " " }
language-servers = [ "typescript-language-server", "copilot" ]
[[language]] [[language]]
name = "tsx" name = "tsx"
auto-format = true auto-format = true
indent = { tab-width = 4, unit = " " } indent = { tab-width = 4, unit = " " }
language-servers = [ "typescript-language-server", "copilot" ]
[[language]] [[language]]
name = "config" name = "config"

View File

@@ -164,24 +164,31 @@ device {
# Example windowrule v1 # Example windowrule v1
# windowrule = float, ^(kitty)$ # windowrule = float, ^(kitty)$
windowrule = opaque, brave windowrule = float, title:.*mpv$
windowrule = float, imv windowrule = opaque, title:.*mpv$
windowrule = opaque, imv windowrule = size 50% 50%, title:.*mpv$
windowrule = float, title:(Media viewer) windowrule = float, content:video
windowrule = opaque, title:(Media viewer) windowrule = opaque, content:video
windowrule = opaque, title:(YouTube Music) windowrule = size 50% 50%, content:video
windowrule = opaque, title:(qutebrowser)
windowrule = opaque, title:(Slack) windowrule = float, title:.*imv.*
windowrule = opaque, telegram windowrule = opaque, title:.*imv.*
windowrule = float, mpv windowrule = size 70% 70%, title:.*imv.*
windowrule = opaque, mpv windowrule = float, content:photo
windowrule = opaque, swappy windowrule = opaque, content:photo
windowrule = center 1, swappy windowrule = size 70% 70%, content:photo
windowrule = stayfocused, swappy
# windowrule = size 50% 50%, mpv windowrule = float, title:.*\.pdf$
# Example windowrule v2 windowrule = opaque, title:.*\.pdf$
# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$ windowrule = maximize, title:.*\.pdf$
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
windowrule = opaque, title:.*YouTube - Brave$
windowrule = opaque, title:swappy
windowrule = center 1, title:swappy
windowrule = stayfocused, title:swappy
windowrule = opaque, title:^TelegramDesktop$
# See https://wiki.hyprland.org/Configuring/Keywords/ for more # See https://wiki.hyprland.org/Configuring/Keywords/ for more
$mainMod = SUPER $mainMod = SUPER
@@ -236,11 +243,11 @@ submap=reset
# Scrachpads # Scrachpads
bind = $mainMod CTRL, T, exec, pypr toggle term bind = $mainMod CTRL, T, exec, pypr toggle term
$dropterm = ^(wezterm_dropdown)$ $dropterm = title:^wezterm_dropdown$
windowrule = float, $dropterm windowrule = float, $dropterm
bind = $mainMod CTRL, V, exec, pypr toggle volume bind = $mainMod CTRL, V, exec, pypr toggle volume
$volume_sidemenu = ^(pavucontrol)$ $volume_sidemenu = title:^Volume Control$
windowrule = float, $volume_sidemenu windowrule = float, $volume_sidemenu
# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more # Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
@@ -294,8 +301,8 @@ bind = , XF86AudioLowerVolume, exec, volumectl -u down
bind = , XF86AudioMute, exec, volumectl toggle-mute bind = , XF86AudioMute, exec, volumectl toggle-mute
bind = , XF86AudioMicMute, exec, volumectl -m toggle-mute bind = , XF86AudioMicMute, exec, volumectl -m toggle-mute
bind = , XF86MonBrightnessUp, exec, lightctl up bind = , XF86MonBrightnessUp, exec, lightctl -D intel_backlight up
bind = , XF86MonBrightnessDown, exec, lightctl down bind = , XF86MonBrightnessDown, exec, lightctl -D intel_backlight down
# Move focus with mainMod + arrow keys # Move focus with mainMod + arrow keys
bind = $mainMod, left, movefocus, l bind = $mainMod, left, movefocus, l

View File

@@ -8,7 +8,8 @@ plugins = [
] ]
[scratchpads.term] [scratchpads.term]
command = "wezterm start --always-new-process --class wezterm_dropdown" command = "wezterm start --always-new-process"
class = "wezterm_dropdown"
animation = "fromTop" animation = "fromTop"
unfocus = "hide" unfocus = "hide"
excludes = "*" excludes = "*"
@@ -16,7 +17,7 @@ lazy = true
multi = false multi = false
[scratchpads.volume] [scratchpads.volume]
command = "pavucontrol --class volume_sidemenu" command = "pavucontrol"
animation = "fromLeft" animation = "fromLeft"
class = "volume_sidemenu" class = "volume_sidemenu"
size = "40% 70%" size = "40% 70%"

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@@ -6,7 +6,10 @@
boot.loader.efi.canTouchEfiVariables = true; boot.loader.efi.canTouchEfiVariables = true;
boot.loader.timeout = 2; boot.loader.timeout = 2;
boot.initrd.enable = true; boot.initrd.enable = true;
boot.initrd.verbose = false;
boot.initrd.systemd.enable = true; boot.initrd.systemd.enable = true;
boot.initrd.availableKernelModules = [ "i915" ];
boot.initrd.kernelModules = [ "i915" ];
boot.consoleLogLevel = 3; boot.consoleLogLevel = 3;
boot.plymouth = { boot.plymouth = {
enable = true; enable = true;

View File

@@ -6,12 +6,21 @@
enable = true; enable = true;
settings = { settings = {
default_session = { default_session = {
command = "${pkgs.greetd.tuigreet}/bin/tuigreet --time --time-format '%I:%M %p | %a %h | %F' --cmd Hyprland"; command = "${pkgs.greetd.tuigreet}/bin/tuigreet \
--time --time-format '%I:%M %p | %a %h | %F' \
--cmd 'uwsm start hyprland'";
user = "greeter"; user = "greeter";
}; };
}; };
}; };
users.users.greeter = {
isNormalUser = false;
description = "greetd greeter user";
extraGroups = [ "video" "audio" ];
linger = true;
};
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
greetd.tuigreet greetd.tuigreet
]; ];

View File

@@ -50,7 +50,7 @@
./mosh.nix ./mosh.nix
./firewall.nix ./firewall.nix
./dns.nix ./dns.nix
# ./vpn.nix ./vpn.nix
./users.nix ./users.nix
./virtualisation.nix ./virtualisation.nix
./programming-languages.nix ./programming-languages.nix

View File

@@ -2,10 +2,16 @@
{ {
# Enable Hyprland # Enable Hyprland
programs.hyprland.enable = true; programs.hyprland = {
enable = true;
withUWSM = true;
};
environment.sessionVariables.NIXOS_OZONE_WL = "1"; environment.sessionVariables.NIXOS_OZONE_WL = "1";
environment.sessionVariables.WLR_NO_HARDWARE_CURSORS = "1"; environment.sessionVariables.WLR_NO_HARDWARE_CURSORS = "1";
programs.hyprlock.enable = true;
services.hypridle.enable = true;
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
pyprland pyprland
hyprpicker hyprpicker
@@ -15,6 +21,7 @@
hyprpaper hyprpaper
inputs.wezterm.packages.${pkgs.system}.default inputs.wezterm.packages.${pkgs.system}.default
kitty
cool-retro-term cool-retro-term
starship starship

View File

@@ -2,10 +2,18 @@
{ {
# Linux Kernel # Linux Kernel
security.forcePageTableIsolation = true;
security.lockKernelModules = true;
# security.protectKernelImage = true;
security.unprivilegedUsernsClone = true;
security.virtualisation.flushL1DataCache = "cond";
boot.kernelPackages = pkgs.linuxKernel.packages.linux_zen; boot.kernelPackages = pkgs.linuxKernel.packages.linux_zen;
boot.kernelParams = [ boot.kernelParams = [
"splash"
"quiet" "quiet"
"splash"
"loglevel=3"
"rd.udev.log_priority=3"
"systemd.show_status=auto"
"fbcon=nodefer" "fbcon=nodefer"
"vt.global_cursor_default=0" "vt.global_cursor_default=0"
"kernel.modules_disabled=1" "kernel.modules_disabled=1"

View File

@@ -4,7 +4,7 @@
services.ollama = { services.ollama = {
enable = true; enable = true;
loadModels = [ "llama3.2:3b" "llama3.2-vision:11b" "phi4:14b" "deepseek-r1:7b" "dolphin3:8b" "smallthinker:3b" "nomic-embed-text" ]; loadModels = [ "llama3.2:3b" "llama3.2-vision:11b" "phi4:14b" "deepseek-r1:7b" "dolphin3:8b" "smallthinker:3b" "nomic-embed-text" "gemma3:12b" "gemma3:27b" "deepcoder:14b" ];
acceleration = "cuda"; acceleration = "cuda";
}; };

View File

@@ -14,5 +14,6 @@
surrealdb-migrations surrealdb-migrations
surrealist surrealist
trunk trunk
sqlx-cli
]; ];
} }

View File

@@ -1,6 +1,12 @@
{ pkgs, ... }: { pkgs, ... }:
{ {
# Enable Kasm
# services.kasmweb = {
# enable = true;
# listenPort = 9999;
# };
# Enable Containerd # Enable Containerd
# virtualisation.containerd.enable = true; # virtualisation.containerd.enable = true;
@@ -15,6 +21,7 @@
# }; # };
# users.extraGroups.docker.members = [ "xnm" ]; # users.extraGroups.docker.members = [ "xnm" ];
# Enable Podman # Enable Podman
virtualisation.podman = { virtualisation.podman = {
enable = true; enable = true;
@@ -31,7 +38,7 @@
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
nvidia-docker nvidia-docker
# nerdctl nerdctl
# firecracker # firecracker
# firectl # firectl
@@ -39,6 +46,7 @@
distrobox distrobox
qemu qemu
lima
podman-compose podman-compose
podman-tui podman-tui

View File

@@ -7,5 +7,8 @@
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
mullvad-closest mullvad-closest
mullvad-browser
tor-browser
]; ];
} }