diff --git a/flake.lock b/flake.lock index 30e3db4..1660a20 100644 --- a/flake.lock +++ b/flake.lock @@ -932,6 +932,62 @@ "type": "github" } }, + "niri-flake": { + "inputs": { + "niri-stable": "niri-stable", + "niri-unstable": "niri-unstable", + "nixpkgs": "nixpkgs_9", + "nixpkgs-stable": "nixpkgs-stable_3", + "xwayland-satellite-stable": "xwayland-satellite-stable", + "xwayland-satellite-unstable": "xwayland-satellite-unstable" + }, + "locked": { + "lastModified": 1749396815, + "narHash": "sha256-vwr2vLETE4CSi4c6SFoQyP+uBUnvwPPQmn+1D1207ts=", + "owner": "sodiboo", + "repo": "niri-flake", + "rev": "e6db401ff0aa3b03507b4819f9a44deab3cfcf2f", + "type": "github" + }, + "original": { + "owner": "sodiboo", + "repo": "niri-flake", + "type": "github" + } + }, + "niri-stable": { + "flake": false, + "locked": { + "lastModified": 1740117926, + "narHash": "sha256-mTTHA0RAaQcdYe+9A3Jx77cmmyLFHmRoZdd8RpWa+m8=", + "owner": "YaLTeR", + "repo": "niri", + "rev": "b94a5db8790339cf9134873d8b490be69e02ac71", + "type": "github" + }, + "original": { + "owner": "YaLTeR", + "ref": "v25.02", + "repo": "niri", + "type": "github" + } + }, + "niri-unstable": { + "flake": false, + "locked": { + "lastModified": 1749327170, + "narHash": "sha256-mBrxeWd7L8oAIh6G2PgKuZAzqyZMyjBpHEAcSSTbhJg=", + "owner": "YaLTeR", + "repo": "niri", + "rev": "f918eabe6a144e78c62c3fc0cfa7fe32e4623e5a", + "type": "github" + }, + "original": { + "owner": "YaLTeR", + "repo": "niri", + "type": "github" + } + }, "nix": { "inputs": { "flake-compat": [ @@ -1054,7 +1110,7 @@ "nix-gaming": { "inputs": { "flake-parts": "flake-parts_4", - "nixpkgs": "nixpkgs_9" + "nixpkgs": "nixpkgs_10" }, "locked": { "lastModified": 1749175147, @@ -1152,7 +1208,7 @@ "nixos-wsl": { "inputs": { "flake-compat": "flake-compat_5", - "nixpkgs": "nixpkgs_10" + "nixpkgs": "nixpkgs_11" }, "locked": { "lastModified": 1746453552, @@ -1292,6 +1348,22 @@ "type": "github" } }, + "nixpkgs-stable_3": { + "locked": { + "lastModified": 1749237914, + "narHash": "sha256-N5waoqWt8aMr/MykZjSErOokYH6rOsMMXu3UOVH5kiw=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "70c74b02eac46f4e4aa071e45a6189ce0f6d9265", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-25.05", + "repo": "nixpkgs", + "type": "github" + } + }, "nixpkgs-unstable": { "locked": { "lastModified": 1748929857, @@ -1309,6 +1381,22 @@ } }, "nixpkgs_10": { + "locked": { + "lastModified": 1748662220, + "narHash": "sha256-7gGa49iB9nCnFk4h/g9zwjlQAyjtpgcFkODjcOQS0Es=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "59138c7667b7970d205d6a05a8bfa2d78caa3643", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_11": { "locked": { "lastModified": 1742937945, "narHash": "sha256-lWc+79eZRyvHp/SqMhHTMzZVhpxkRvthsP1Qx6UCq0E=", @@ -1324,7 +1412,7 @@ "type": "github" } }, - "nixpkgs_11": { + "nixpkgs_12": { "locked": { "lastModified": 1749086602, "narHash": "sha256-DJcgJMekoxVesl9kKjfLPix2Nbr42i7cpEHJiTnBUwU=", @@ -1340,7 +1428,7 @@ "type": "github" } }, - "nixpkgs_12": { + "nixpkgs_13": { "locked": { "lastModified": 1744868846, "narHash": "sha256-5RJTdUHDmj12Qsv7XOhuospjAjATNiTMElplWnJE9Hs=", @@ -1356,7 +1444,7 @@ "type": "github" } }, - "nixpkgs_13": { + "nixpkgs_14": { "locked": { "lastModified": 1747610100, "narHash": "sha256-rpR5ZPMkWzcnCcYYo3lScqfuzEw5Uyfh+R0EKZfroAc=", @@ -1486,16 +1574,16 @@ }, "nixpkgs_9": { "locked": { - "lastModified": 1748662220, - "narHash": "sha256-7gGa49iB9nCnFk4h/g9zwjlQAyjtpgcFkODjcOQS0Es=", + "lastModified": 1749285348, + "narHash": "sha256-frdhQvPbmDYaScPFiCnfdh3B/Vh81Uuoo0w5TkWmmjU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "59138c7667b7970d205d6a05a8bfa2d78caa3643", + "rev": "3e3afe5174c561dee0df6f2c2b2236990146329f", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", + "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } @@ -3707,13 +3795,14 @@ "home-manager": "home-manager", "impermanence": "impermanence", "neovim": "neovim", + "niri-flake": "niri-flake", "nix-darwin": "nix-darwin", "nix-flatpak": "nix-flatpak", "nix-gaming": "nix-gaming", "nix-on-droid": "nix-on-droid", "nixos-facter-modules": "nixos-facter-modules", "nixos-wsl": "nixos-wsl", - "nixpkgs": "nixpkgs_11", + "nixpkgs": "nixpkgs_12", "nixpkgs-master": "nixpkgs-master", "nixpkgs-unstable": "nixpkgs-unstable", "sops-nix": "sops-nix", @@ -3778,7 +3867,7 @@ }, "sops-nix": { "inputs": { - "nixpkgs": "nixpkgs_12" + "nixpkgs": "nixpkgs_13" }, "locked": { "lastModified": 1747603214, @@ -3806,7 +3895,7 @@ "git-hooks": "git-hooks_2", "gnome-shell": "gnome-shell", "home-manager": "home-manager_2", - "nixpkgs": "nixpkgs_13", + "nixpkgs": "nixpkgs_14", "nur": "nur", "systems": "systems_4", "tinted-foot": "tinted-foot", @@ -3992,6 +4081,39 @@ "repo": "treefmt-nix", "type": "github" } + }, + "xwayland-satellite-stable": { + "flake": false, + "locked": { + "lastModified": 1739246919, + "narHash": "sha256-/hBM43/Gd0/tW+egrhlWgOIISeJxEs2uAOIYVpfDKeU=", + "owner": "Supreeeme", + "repo": "xwayland-satellite", + "rev": "44590a416d4a3e8220e19e29e0b6efe64a80315d", + "type": "github" + }, + "original": { + "owner": "Supreeeme", + "ref": "v0.5.1", + "repo": "xwayland-satellite", + "type": "github" + } + }, + "xwayland-satellite-unstable": { + "flake": false, + "locked": { + "lastModified": 1749315541, + "narHash": "sha256-bEik1BfVOFnWvtOrcOHluos/edJ8f+G2y1QySbt/0Ak=", + "owner": "Supreeeme", + "repo": "xwayland-satellite", + "rev": "da2ecb5be816de35e2efe23a408a1c49fe8b11ba", + "type": "github" + }, + "original": { + "owner": "Supreeeme", + "repo": "xwayland-satellite", + "type": "github" + } } }, "root": "root", diff --git a/flake.nix b/flake.nix index b5b5f59..2084d54 100644 --- a/flake.nix +++ b/flake.nix @@ -66,6 +66,9 @@ url = "git+https://github.com/KyleKrein/BeeEngine?submodules=1"; }; conduwuit.url = "github:matrix-construct/tuwunel"; + niri-flake = { + url = "github:sodiboo/niri-flake"; + }; }; outputs = { diff --git a/nixos/configuration.nix b/nixos/configuration.nix index 7a54ce7..140d8cc 100644 --- a/nixos/configuration.nix +++ b/nixos/configuration.nix @@ -42,10 +42,6 @@ in boot = { kernelPackages = lib.mkDefault pkgs.linuxPackages_6_14; - - plymouth = { - enable = true; - }; loader = { systemd-boot.enable = true; efi.canTouchEfiVariables = if hwconfig.hostname != "kylekrein-mac" then true else false; @@ -244,38 +240,6 @@ in home-manager = { useGlobalPkgs = true; useUserPackages = true; - extraSpecialArgs = { - inherit pkgs; - inherit hwconfig; - inherit first-nixos-install; - inherit inputs; - }; - }; - stylix = { - enable = true; - image = "${./modules/hyprland/wallpaper.jpg}"; - autoEnable = true; - opacity = { - desktop = 0.0;#0.5; - }; - targets = { - gtk.enable = true; - plymouth = { - enable = true; - #logo = ./fastfetch/nixos.png; - logoAnimated = false; - }; - }; - fonts = { - sizes = { - applications = 14; - desktop = 12; - popups = 12; - terminal = 16; - }; - }; - polarity = "dark"; - base16Scheme = "${pkgs.base16-schemes}/share/themes/catppuccin-mocha.yaml"; }; programs.bash = { diff --git a/nixos/home.nix b/nixos/home.nix index 5f4b43f..1ba7454 100644 --- a/nixos/home.nix +++ b/nixos/home.nix @@ -23,25 +23,23 @@ in inherit inputs; } ) - ++ lib.optional (config.programs.hyprland.enable) ( - import ./modules/hyprland/home.nix { - inherit pkgs; - inherit username; - inherit inputs; - inherit hwconfig; - inherit lib; - } - ) + #++ lib.optional (config.programs.hyprland.enable) ( + # import ./modules/hyprland/home.nix { + # inherit pkgs; + # inherit username; + # inherit inputs; + # inherit hwconfig; + # inherit lib; + # } + #) ++ lib.optional (builtins.pathExists ./homes/${username}) ( - import ./homes/${username} { inherit username; } + import ./homes/${username} { inherit username; inherit config; inherit pkgs; inherit lib; inherit inputs; inherit hwconfig; } ); # Home Manager needs a bit of information about you and the paths it should # manage. home.username = username; home.homeDirectory = "/home/${username}"; - stylix = { - enable = lib.strings.hasInfix "kylekrein" hwconfig.hostname; - }; + #xdg.configFile."Kvantum/kvantum.kvconfig".source = (pkgs.formats.ini {}).generate "kvantum.kvconfig" { # General.theme = "Catppuccin-Mocha"; # }; @@ -106,8 +104,8 @@ in programs.kitty = { enable = lib.strings.hasInfix "kylekrein" hwconfig.hostname; font = { - #name = "JetBrainsMono Nerd Font"; - #size = 16; + name = "JetBrainsMono Nerd Font"; + size = 20; }; settings = { confirm_os_window_close = 0; diff --git a/nixos/homes/kylekrein/battery-status.nix b/nixos/homes/kylekrein/battery-status.nix new file mode 100644 index 0000000..f363627 --- /dev/null +++ b/nixos/homes/kylekrein/battery-status.nix @@ -0,0 +1,83 @@ +{pkgs, hwconfig, ...}: +let + battery-path = "/sys/class/power_supply/${if hwconfig.hostname == "kylekrein-mac" then "macsmc-battery" else "BAT0"}"; + get-battery-level = "${pkgs.writeShellScriptBin "get-battery-level" '' + cat ${battery-path}/capacity 2>/dev/null || echo "N/A" + ''}/bin/get-battery-level"; + get-status = "${pkgs.writeShellScriptBin "get-status" '' + cat ${battery-path}/status 2>/dev/null || echo "Unknown" + ''}/bin/get-status"; + get-icon = "${pkgs.writeShellScriptBin "get-icon" '' +BATTERY_LEVEL=$(${get-battery-level}) +STATUS=$(${get-status}) +if [[ "$BATTERY_LEVEL" == "N/A" ]]; then + ICON="󰂑 " +elif [[ "$STATUS" == "Charging" ]]; then + if [[ $BATTERY_LEVEL -ge 90 ]]; then + ICON="󰂋 " + elif [[ $BATTERY_LEVEL -ge 80 ]]; then + ICON="󰂊 " + elif [[ $BATTERY_LEVEL -ge 70 ]]; then + ICON="󰢞 " + elif [[ $BATTERY_LEVEL -ge 60 ]]; then + ICON="󰂉 " + elif [[ $BATTERY_LEVEL -ge 50 ]]; then + ICON="󰢝 " + elif [[ $BATTERY_LEVEL -ge 40 ]]; then + ICON="󰂈 " + elif [[ $BATTERY_LEVEL -ge 30 ]]; then + ICON="󰂇 " + elif [[ $BATTERY_LEVEL -ge 20 ]]; then + ICON="󰂆 " + elif [[ $BATTERY_LEVEL -ge 10 ]]; then + ICON="󰢜 " + else + ICON="󰢜 " + fi +else + if [[ $BATTERY_LEVEL -ge 90 ]]; then + ICON="󰂂 " + elif [[ $BATTERY_LEVEL -ge 70 ]]; then + ICON="󰂀 " + elif [[ $BATTERY_LEVEL -ge 50 ]]; then + ICON="󰁾 " + elif [[ $BATTERY_LEVEL -ge 30 ]]; then + ICON="󰁼 " + elif [[ $BATTERY_LEVEL -ge 10 ]]; then + ICON="󰁺 " + else + ICON="󰁺 " + fi +fi + +echo "$ICON" + ''}/bin/get-icon"; + get-remaining-time = "${pkgs.writeShellScriptBin "get-remaining-time" '' +REMAINING_ENERGY=$(cat ${battery-path}/energy_now) +POWER_USAGE=$(cat ${battery-path}/power_now) +if [[ -n "$REMAINING_ENERGY" && -n "$POWER_USAGE" && "$POWER_USAGE" -ne 0 ]]; then + TIME_LEFT=$((0 - (REMAINING_ENERGY / POWER_USAGE))) + MINUTES_LEFT=$(((0 - ( (REMAINING_ENERGY * 60) / POWER_USAGE )) - (TIME_LEFT * 60))) + echo "$TIME_LEFT h $MINUTES_LEFT min" +else + echo "" +fi + ''}/bin/get-remaining-time"; +in +{ + available = hwconfig.isLaptop; + icon = get-icon; + status = get-status; + time = get-remaining-time; + level = get-battery-level; + labelAdaptive = "${pkgs.writeShellScriptBin "labelAdaptive" '' + if [[ "$(${get-status})" == "Charging" ]]; then + echo "$(${get-battery-level})% $(${get-icon})" + else + echo "$(${get-remaining-time}) $(${get-icon})" + fi + ''}/bin/labelAdaptive"; + labelPercent = "${pkgs.writeShellScriptBin "labelPercent" '' + echo "$(${get-battery-level})% $(${get-icon})" + ''}/bin/labelPercent"; +} diff --git a/nixos/homes/kylekrein/default.nix b/nixos/homes/kylekrein/default.nix index 71ae827..b7531fb 100644 --- a/nixos/homes/kylekrein/default.nix +++ b/nixos/homes/kylekrein/default.nix @@ -1,5 +1,14 @@ -{username, ...}: { +{config, username, pkgs, lib, inputs, hwconfig, ...}: { imports = [ ./git.nix - ]; + ] ++ lib.optional (lib.strings.hasInfix "kylekrein" hwconfig.hostname) ( + import ./niri.nix { + inherit pkgs; + inherit config; + inherit username; + inherit inputs; + inherit hwconfig; + inherit lib; + } + ); } diff --git a/nixos/homes/kylekrein/niri.nix b/nixos/homes/kylekrein/niri.nix new file mode 100644 index 0000000..187ea40 --- /dev/null +++ b/nixos/homes/kylekrein/niri.nix @@ -0,0 +1,217 @@ +#https://github.com/sodiboo/niri-flake/blob/main/default-config.kdl.nix +#https://github.com/sodiboo/niri-flake/blob/main/docs.md +#https://github.com/sodiboo/system/blob/main/niri.mod.nix +{config, pkgs, lib, inputs, hwconfig, ...}: +{ + programs.fuzzel = { + enable = true; + settings.main.terminal = "kitty"; + }; + services.swaync = { + enable = true; + }; + imports = [ + ./waybar + ]; + home.packages = with pkgs;[ + wlogout + brightnessctl + fuzzel + waybar + swaybg + libnotify + swaylock + ]; + programs.niri = { + settings = { + outputs = lib.mkIf (hwconfig.hostname == "kylekrein-homepc") { + "DP-1" = { + scale = 1.6; + position.x = 1600; + position.y = 0; + }; + "DP-3" = { + scale = 1.6; + position.x = 0; + position.y = 0; + }; + }; + spawn-at-startup = let + set-low-brightness = lib.mkIf (hwconfig.isLaptop) { + command = [ + "${lib.getExe pkgs.brightnessctl}" + "set" + "25%" + ]; + }; + in [ + set-low-brightness + { + command = [ + "${lib.getExe pkgs.waybar}" + ]; + } + { + command = [ + "${lib.getExe pkgs.networkmanagerapplet}" + ]; + } + { + command = [ + "${pkgs.solaar}/bin/solaar" + "-w" + "hide" + ]; + } + { + command = [ + "${lib.getExe pkgs.swaybg}" + "-m" + "fill" + "-i" + "${../../modules/hyprland/wallpaper.jpg}" + ]; + } + { + command = [ + "emacs" + "--daemon" + ]; + } + ]; + layout = { + preset-column-widths = [ + {proportion = 1.0 / 3.0;} + {proportion = 1.0 / 2.0;} + {proportion = 2.0 / 3.0;} + {proportion = 1.0;} + ]; + default-column-width = {proportion = 1.0 / 3.0;}; + }; + binds = with config.lib.niri.actions; + let + sh = spawn "sh" "-c"; + in { + "Mod+E".action = sh "emacsclient -c"; + "Mod+T".action = spawn "kitty"; + "Mod+D".action = spawn "fuzzel"; + "Mod+B".action = spawn "librewolf"; + "Mod+H".action = show-hotkey-overlay; + "Mod+F".action = fullscreen-window; + "Mod+R".action = switch-preset-column-width; + "Mod+Q".action = close-window; + #"Mod+Q".action = ; + "Mod+Shift+S".action = screenshot; + "Mod+1".action = focus-workspace 1; + "Mod+2".action = focus-workspace 2; + "Mod+3".action = focus-workspace 3; + "Mod+4".action = focus-workspace 4; + "Mod+5".action = focus-workspace 5; + "Mod+6".action = focus-workspace 6; + "Mod+7".action = focus-workspace 7; + "Mod+8".action = focus-workspace 8; + "Mod+9".action = focus-workspace 9; + "Mod+0".action = focus-workspace 10; + + "Mod+Shift+1".action.move-column-to-workspace = 1; + "Mod+Shift+2".action.move-column-to-workspace = 2; + "Mod+Shift+3".action.move-column-to-workspace = 3; + "Mod+Shift+4".action.move-column-to-workspace = 4; + "Mod+Shift+5".action.move-column-to-workspace = 5; + "Mod+Shift+6".action.move-column-to-workspace = 6; + "Mod+Shift+7".action.move-column-to-workspace = 7; + "Mod+Shift+8".action.move-column-to-workspace = 8; + "Mod+Shift+9".action.move-column-to-workspace = 9; + "Mod+Shift+0".action.move-column-to-workspace = 10; + + "Mod+Left".action = focus-column-left; + "Mod+Right".action = focus-column-right; + "Mod+Up".action = focus-workspace-up; + "Mod+Down".action = focus-workspace-down; + "Mod+Shift+Left".action = move-column-left; + "Mod+Shift+Right".action = move-column-right; + "Mod+Shift+Up".action = move-column-to-workspace-up; + "Mod+Shift+Down".action = move-column-to-workspace-down; + "Mod+Ctrl+Left".action = focus-monitor-left; + "Mod+Ctrl+Right".action = focus-monitor-right; + "Mod+Shift+Ctrl+Left".action = move-column-to-monitor-left; + "Mod+Shift+Ctrl+Right".action = move-column-to-monitor-right; + + + "XF86AudioRaiseVolume".action = sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1+"; + "XF86AudioLowerVolume".action = sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1-"; + "XF86AudioMute".action = sh "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"; + + "XF86MonBrightnessUp".action = sh "brightnessctl set 10%+"; + "XF86MonBrightnessDown".action = sh "brightnessctl set 10%-"; + #"Mod+Tab".action = focus-window-down-or-column-right; + #"Mod+Shift+Tab".action = focus-window-up-or-column-left; + "Mod+Tab".action = open-overview; + }; + input = { + focus-follows-mouse = { + #enable = true; + }; + warp-mouse-to-focus = true; + keyboard = { + xkb.layout = "us, ru"; + xkb.options = "grp:lctrl_toggle, ctrl:nocaps" + (if hwconfig.hostname == "kylekrein-mac" then ", altwin:swap_alt_win" else ""); + track-layout = "window"; + }; + touchpad = { + tap = true; + #accel-profile = "adaptive"; + click-method = "clickfinger"; + }; + }; + cursor = { + hide-after-inactive-ms = 10000; + }; + gestures.hot-corners.enable = true; + prefer-no-csd = true; + environment = { + XDG_SESSION_TYPE = "wayland"; + __GL_GSYNC_ALLOWED = "1"; + QT_QPA_PLATFORM = "wayland"; + }; + window-rules = [ + { #active + matches = [ + { + is-active = true; + } + ]; + opacity = 0.9; + } + { #inactive + matches = [ + { + is-active = false; + } + ]; + opacity = 0.7; + } + { #opaque + matches = [ + { + app-id = "emacs"; + } + { + app-id = "blender"; + } + ]; + opacity = 1.0; + } + { #app-launcher + matches = [ + { + title = "emacs-run-launcher"; + } + ]; + open-floating = true; + open-focused = true; + } + ]; + }; + }; +} diff --git a/nixos/homes/kylekrein/waybar/default.nix b/nixos/homes/kylekrein/waybar/default.nix new file mode 100644 index 0000000..703227c --- /dev/null +++ b/nixos/homes/kylekrein/waybar/default.nix @@ -0,0 +1,199 @@ +{ pkgs, lib, hwconfig, ... }: +let +battery = (import ../battery-status.nix {inherit pkgs; inherit hwconfig;}); +in +{ + programs.waybar = { + enable = true; + systemd.enable = true; + + #window#waybar { + # background: transparent; + #border-bottom: none; + #} + #${builtins.readFile "${pkgs.waybar}/etc/xdg/waybar/style.css"} + style = '' + ${builtins.readFile ./waybarstyle.css} + + * { + font-size: 15px; + } + ''; + settings = [{ + height = 36; + layer = "top"; + position = "top"; + tray = { spacing = 3; }; + modules-center = [ + #"hyprland/window" + "clock" + ]; + modules-left = [ + "wlr/taskbar" + "niri/workspaces" + # "hyprland/window" + ]; + modules-right = lib.optional hwconfig.isLaptop "backlight" + ++ [ + "pulseaudio" + #"network" + #"cpu" + "memory" + #"temperature" + "niri/language" + ] ++ lib.optional battery.available "custom/battery" + ++ [ + "tray" + "custom/notification" + #"custom/disablehypridle" + "custom/power" + ]; + battery = { + format = " {time} {icon} "; + format-alt = " {capacity}% {icon} "; + format-charging = " {capacity}%  "; + format-icons = [ "" "" "" "" "" ]; + format-plugged = " {capacity}%  "; + states = { + critical = 10; + warning = 20; + }; + }; + backlight = { + format = "{percent}% 󰛩"; + on-scroll-up = "${pkgs.brightnessctl}/bin/brightnessctl s 5%+"; + on-scroll-down = "${pkgs.brightnessctl}/bin/brightnessctl s 5%-"; + }; + "custom/battery" = { + exec ="${pkgs.writeShellScriptBin "battery-widget" '' + ${battery.labelAdaptive} + ${battery.labelPercent} + ''}/bin/battery-widget"; + interval = 20; + tooltip = true; + }; + clock = { + format-alt = "{:%d.%m.%Y}"; + tooltip-format = "{:%d.%m.%Y | %H:%M}"; + }; + cpu = { + format = "{usage}% "; + tooltip = false; + }; + "niri/language" = { + format = " {}"; + format-en = "EN"; + format-ru = "RU"; + }; + "wlr/taskbar" = { + format = "{icon}"; + icon-size = 18; + tooltip-format = "{title}"; + on-click = "activate"; + on-click-middle = "close"; + }; + memory = { + interval = 1; + format = " {used}/{total}Gb"; + }; + network = { + interval = 1; + format-alt = "{ifname}: {ipaddr}/{cidr}"; + format-disconnected = "Disconnected ⚠"; + format-ethernet = "{ifname}: {ipaddr}/{cidr}  up: {bandwidthUpBits} down: {bandwidthDownBits}"; + format-linked = "{ifname} (No IP) "; + #format-wifi = "{signalStrength}% "; + format-wifi = "{signalStrength}%  "; + tooltip-format = "{essid} ({signalStrength}%) "; + }; + pulseaudio = { + format = "{icon} {volume}% {format_source}"; + format-bluetooth = "{icon} {volume}%  {format_source}"; + format-bluetooth-muted = " {icon}  {format_source}"; + format-icons = { + car = ""; + default = [ "" "" "" ]; + handsfree = ""; + headphones = ""; + headset = ""; + phone = ""; + portable = ""; + }; + format-muted = " {format_source}"; + format-source = "  {volume}%"; + format-source-muted = ""; + on-click = "${pkgs.pwvucontrol}/bin/pwvucontrol"; + }; + "hyprland/submap" = { format = ''{}''; }; + temperature = { + critical-threshold = 80; + format = "{temperatureC}°C {icon}"; + format-icons = [ "" "" "" ]; + }; + + "hyprland/workspaces" = { + disable-scroll = true; + all-outputs = false; + warp-on-scroll = true; + format = "{name}{icon} "; + format-icons = { + urgent = ""; + active = ""; + default = ""; + }; + #persistent-workspaces = { + # "*" = 3; + #}; + }; + + "custom/power" = { + format = "⏻ "; + tooltip = false; + #menu = "on-click"; + #menu-file = ./power_menu.xml; + #menu-actions = { + # shutdown = "shutdown -h now"; + # reboot = "reboot"; + # suspend = "systemctl suspend"; + # hibernate = "systemctl hibernate"; + #}; + on-click = "wlogout"; + }; + + "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 = "sleep 0.1 && swaync-client -t -sw"; + on-click-right = "sleep 0.1 && swaync-client -d -sw"; + escape = true; + }; + + "custom/disablehypridle" = { + exec = '' + if pgrep -x "hypridle" > /dev/null; then + echo "{\"text\": \"  \", \"tooltip\": \"Hypridle is running\", \"class\": \"active\"}"; + else + echo "{\"text\": \"  \", \"tooltip\": \"Hypridle is not running\", \"class\": \"inactive\"}"; + fi + ''; + return-type = "json"; + on-click = '' + if pgrep -x "hypridle" > /dev/null; then + pkill hypridle + else + hypridle & + fi + ''; + }; + }]; + }; +} diff --git a/nixos/homes/kylekrein/waybar/waybarstyle.css b/nixos/homes/kylekrein/waybar/waybarstyle.css new file mode 100644 index 0000000..3a19a1d --- /dev/null +++ b/nixos/homes/kylekrein/waybar/waybarstyle.css @@ -0,0 +1,92 @@ +* { + border: none; + font-family: Font Awesome, Roboto, Arial, sans-serif; + font-size: 13px; + color: #B9826A;/*#ffffff;*/ + border-radius: 20px; +} + +window { + /*font-weight: bold;*/ +} +window#waybar { + background: transparent;/*rgba(0, 0, 0, 0);*/ +} +/*-----module groups----*/ +.modules-right { + background-color: rgba(0,43,51,0.85); + margin: 2px 10px 0 0; +} +.modules-center { + background-color: rgba(0,43,51,0.85); + margin: 2px 0 0 0; +} +.modules-left { + margin: 2px 0 0 5px; + background-color: rgba(0,119,179,0.6); +} +/*-----modules indv----*/ +#workspaces button { + padding: 1px 5px; + background-color: transparent; +} +#workspaces button:hover { + box-shadow: inherit; + background-color: rgba(0,153,153,1); +} + +#workspaces button.focused { + background-color: rgba(0,43,51,0.85); +} + +#clock, +#battery, +#cpu, +#memory, +#temperature, +#network, +#pulseaudio, +#custom-media, +#tray, +#mode, +#custom-power, +#custom-menu, +#idle_inhibitor { + padding: 0 10px; +} +#mode { + color: #cc3436; + font-weight: bold; +} +#custom-power { + background-color: rgba(0,119,179,0.6); + border-radius: 100px; + margin: 5px 5px; + padding: 1px 1px 1px 6px; +} +/*-----Indicators----*/ +#idle_inhibitor.activated { + color: #2dcc36; +} +#pulseaudio.muted { + color: #cc3436; +} +#battery.charging { + color: #2dcc36; +} +#battery.warning:not(.charging) { + color: #e6e600; +} +#battery.critical:not(.charging) { + color: #cc3436; +} +#temperature.critical { + color: #cc3436; +} +/*-----Colors----*/ +/* + *rgba(0,85,102,1),#005566 --> Indigo(dye) + *rgba(0,43,51,1),#002B33 --> Dark Green + *rgba(0,153,153,1),#009999 --> Persian Green + * + */ diff --git a/nixos/hosts/kylekrein-homepc/default.nix b/nixos/hosts/kylekrein-homepc/default.nix index d6c9ad2..619388c 100644 --- a/nixos/hosts/kylekrein-homepc/default.nix +++ b/nixos/hosts/kylekrein-homepc/default.nix @@ -11,17 +11,13 @@ imports = [ ../../hardware/nvidia - ../../modules/hyprland + ../../modules/niri ../../modules/libvirt ../../users/kylekrein (import ../../modules/libvirt/user.nix {username = "kylekrein";}) - ../../users/dima - (import ../../modules/libvirt/user.nix {username = "dima";}) - - ../../users/tania ]; sops.secrets."ssh_keys/${hwconfig.hostname}" = {}; @@ -54,15 +50,6 @@ user = "ollama"; group = "ollama"; }; - services.llama-cpp = { - enable = false; - model = "/home/kylekrein/Downloads/ds/DeepSeek-R1-GGUF/DeepSeek-R1-UD-IQ1_S/DeepSeek-R1-UD-IQ1_S-00001-of-00003.gguf"; - port = 10005; - extraFlags = [ - "--ctx-size 1024" #context size - "--n-gpu-layers 0" - ]; - }; services.open-webui.enable = true; #services.open-webui.package = unstable-pkgs.open-webui; diff --git a/nixos/modules/hyprland/default.nix b/nixos/modules/hyprland/default.nix index e542f7e..ee2ebea 100644 --- a/nixos/modules/hyprland/default.nix +++ b/nixos/modules/hyprland/default.nix @@ -1,5 +1,31 @@ { pkgs, inputs, hwconfig, unstable-pkgs, ... }: { + stylix = { + enable = true; + image = "${./wallpaper.jpg}"; + autoEnable = true; + opacity = { + desktop = 0.0;#0.5; + }; + targets = { + gtk.enable = true; + plymouth = { + enable = false; + #logo = ./fastfetch/nixos.png; + logoAnimated = false; + }; + }; + fonts = { + sizes = { + applications = 14; + desktop = 12; + popups = 12; + terminal = 16; + }; + }; + polarity = "dark"; + base16Scheme = "${pkgs.base16-schemes}/share/themes/catppuccin-mocha.yaml"; + }; environment.systemPackages = with pkgs; [ #kando diff --git a/nixos/modules/niri/default.nix b/nixos/modules/niri/default.nix new file mode 100644 index 0000000..d53a016 --- /dev/null +++ b/nixos/modules/niri/default.nix @@ -0,0 +1,22 @@ +{ pkgs, inputs, ...}: +{ + nixpkgs.overlays = [ + inputs.niri-flake.overlays.niri + ]; + imports = [ + inputs.niri-flake.nixosModules.niri + ]; + programs.niri = { + enable = true; + package = pkgs.niri-unstable; + }; + niri-flake.cache.enable = true; + environment.systemPackages = with pkgs;[ + wl-clipboard + wayland-utils + libsecret + gamescope + xwayland-satellite-stable + swaybg + ]; +} diff --git a/nixos/users/kylekrein/default.nix b/nixos/users/kylekrein/default.nix index 54581be..1f33747 100644 --- a/nixos/users/kylekrein/default.nix +++ b/nixos/users/kylekrein/default.nix @@ -32,16 +32,13 @@ in { nix.settings.trusted-users = [ "kylekrein" ]; - - home-manager.users."${username}" = import ../../home.nix { - inherit lib; + home-manager.extraSpecialArgs = { inherit username; inherit inputs; inherit first-nixos-install; inherit hwconfig; - inherit config; - inherit pkgs; }; + home-manager.users."${username}" = ../../home.nix; kylekrein.services.autoUpgrade = { #configDir = lib.mkForce "/home/${username}/nixos-config"; #user = lib.mkForce username;