diff --git a/flake.lock b/flake.lock index 14ce230..71c9e72 100644 --- a/flake.lock +++ b/flake.lock @@ -1,5 +1,51 @@ { "nodes": { + "caelestia-cli": { + "inputs": { + "caelestia-shell": [ + "caelestia-shell" + ], + "nixpkgs": [ + "caelestia-shell", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1768010798, + "narHash": "sha256-CmEy/t3CCDnUvn594sXtv0vRxt1JQaqj0nGdtQFU3mA=", + "owner": "caelestia-dots", + "repo": "cli", + "rev": "70a8624eacfc1b90fe248aef722ae708e775a927", + "type": "github" + }, + "original": { + "owner": "caelestia-dots", + "repo": "cli", + "type": "github" + } + }, + "caelestia-shell": { + "inputs": { + "caelestia-cli": "caelestia-cli", + "nixpkgs": [ + "nixpkgs" + ], + "quickshell": "quickshell" + }, + "locked": { + "lastModified": 1768629486, + "narHash": "sha256-W50hARtSVHxAtrG6dHKbLjU1PHDumJyB70IwKzuoIL0=", + "owner": "caelestia-dots", + "repo": "shell", + "rev": "96942d5ff38698513f0330618073dbdf2af1bd59", + "type": "github" + }, + "original": { + "owner": "caelestia-dots", + "repo": "shell", + "type": "github" + } + }, "fenix": { "inputs": { "nixpkgs": [ @@ -149,8 +195,30 @@ }, "parent": [] }, + "quickshell": { + "inputs": { + "nixpkgs": [ + "caelestia-shell", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1768080170, + "narHash": "sha256-HYKRNShQe5YnnxLazQajB9JkAPGpVcUt9jQ3KwilITQ=", + "ref": "refs/heads/master", + "rev": "bcc3d4265e8b3ed2b17b801923905b60a3927823", + "revCount": 722, + "type": "git", + "url": "https://git.outfoxxed.me/outfoxxed/quickshell" + }, + "original": { + "type": "git", + "url": "https://git.outfoxxed.me/outfoxxed/quickshell" + } + }, "root": { "inputs": { + "caelestia-shell": "caelestia-shell", "home-manager": "home-manager", "nixpkgs": "nixpkgs", "personal": "personal", diff --git a/flake.nix b/flake.nix index 717171c..5461a5a 100644 --- a/flake.nix +++ b/flake.nix @@ -22,6 +22,13 @@ flake = false; }; + # nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable"; + + caelestia-shell = { + url = "github:caelestia-dots/shell"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + }; outputs = inputs@{ self, nixpkgs, home-manager, ... }: diff --git a/home-manager/home.nix b/home-manager/home.nix index 279dbde..63619b8 100755 --- a/home-manager/home.nix +++ b/home-manager/home.nix @@ -27,6 +27,14 @@ name = "Nordzy"; package = pkgs.nordzy-icon-theme; }; + # iconTheme = { + # name = "kora"; + # package = pkgs.kora-icon-theme; + # }; + # iconTheme = { + # name = "suru"; + # package = pkgs.lomiri.suru-icon-theme; + # }; }; home.sessionVariables.QS_ICON_THEME = "Nordzy"; @@ -35,7 +43,6 @@ xdg.mimeApps = { enable = true; - # Optional but often helpful: ensure these associations exist at all associations.added = { "image/jpeg" = [ "imv.desktop" ]; "image/png" = [ "imv.desktop" ]; @@ -48,7 +55,7 @@ "image/png" = "imv.desktop"; "image/webp" = "imv.desktop"; "image/gif" = "imv.desktop"; - "image/svg+xml" = "org.gnome.eog.desktop"; # example: Eye of GNOME for SVG + "image/svg+xml" = "org.gnome.eog.desktop"; # Videos "video/mp4" = "vlc.desktop"; @@ -57,16 +64,11 @@ "video/quicktime" = "vlc.desktop"; # mov "video/webm" = "vlc.desktop"; - # Audio (optional: also vlc, or a dedicated player) "audio/mpeg" = "vlc.desktop"; "audio/flac" = "vlc.desktop"; "audio/ogg" = "vlc.desktop"; - # PDFs - # "application/pdf" = "org.gnome.Evince.desktop"; # or "okular.desktop" - - # Plain text (example) - "text/plain" = "code.desktop"; # VS Code, for example + "text/plain" = "code.desktop"; "x-scheme-handler/http" = "zen-twilight.desktop"; "x-scheme-handler/https" = "zen-twilight.desktop"; diff --git a/home-manager/modules/hypr/hypr.nix b/home-manager/modules/hypr/hypr.nix index 56fc9de..df9fdd7 100644 --- a/home-manager/modules/hypr/hypr.nix +++ b/home-manager/modules/hypr/hypr.nix @@ -1,10 +1,11 @@ -{ config, pkgs, lib, ... }: +{ config, pkgs, lib, inputs, ... }: # TODO: # - make hyprexpo work { imports = [ + inputs.caelestia-shell.homeManagerModules.default # ./hyprland/env.nix # ./hyprland/execs.nix # ./hyprland/general.nix @@ -12,10 +13,27 @@ # ./hyprland/active.nix ./hyprland/rules.nix ./hyprland/keybinds.nix # done - ./hyprlock.nix # done + # ./hyprlock.nix # done ./hypridle.nix # done - ./qs/qs.nix ] ++ lib.optional (builtins.pathExists ./hyprland/my.nix) ./hyprland/my.nix; + + programs.caelestia = { + enable = true; + systemd = { + enable = false; # if you prefer starting from your compositor + target = "graphical-session.target"; + environment = [ ]; + }; + settings = { + # bar.status = { showBattery = false; }; + # paths.wallpaperDir = "~/Images"; + }; + cli = { + enable = true; # Also add caelestia-cli to path + # settings = { theme.enableGtk = false; }; + }; + }; + home.packages = with pkgs; [ (pkgs.writeScriptBin "wallpaper" ('' #!${pkgs.python311}/bin/python3 @@ -27,14 +45,14 @@ nemo pywal jq - quickshell + xdg-desktop-portal + xdg-desktop-portal-gtk + xdg-desktop-portal-hyprland + xdg-desktop-portal-shana + # wayvnc # configure in future for auto start ]; programs.vicinae.enable = true; services.swww.enable = true; - programs.hyprpanel = { - enable = true; - settings = builtins.fromJSON (builtins.readFile ./hyprpanel.json); - }; home.file.".config/hypr/scripts" = { source = ./scripts; @@ -54,14 +72,12 @@ layerrule = [ "noanim, vicinae" "blur,vicinae" "ignorealpha 0, vicinae" ]; env = [ "XCURSOR_SIZE,24" "HYPRCURSOR_SIZE,24" ]; - # кто-то возраждает swww - # надо узнать, кому он нужен exec-once = [ - "hyprlock --immediate-render --no-fade-in &" + "caelestia shell &" + "caelestia shell lock lock; until [ $? -eq 0 ]; do sleep 1; caelestia shell lock lock; done" + # "hyprlock --immediate-render --no-fade-in &" "wal -R &" - "swww img ${config.home.homeDirectory}/Pictures/wallpaper.png &" - # "(swww-daemon &) && sleep 2 && swww img ${config.home.homeDirectory}/Pictures/wallpaper.png" - "hyprpanel &" + # "swww img ${config.home.homeDirectory}/Pictures/wallpaper.png &" "vicinae server &" "gsettings set org.gnome.desktop.interface cursor-theme '${config.home.pointerCursor.name}'" "gsettings set org.gnome.desktop.interface cursor-size ${ @@ -74,9 +90,11 @@ debug = { disable_logs = false; }; monitor = [ - "eDP-1,preferred,auto,1.25" + "eDP-1,preferred,0x0,1.25" "HDMI-A-1,preferred,auto-left,auto" "HDMI-A-2,preferred,auto-left,auto" + "vcl-samsung,2340x1080@30,0x864,2" + "vcl-xiaomi,1440x900@30,-900x0,1" ]; input = { @@ -211,6 +229,8 @@ disable_splash_rendering = true; focus_on_activate = false; + vrr = 0; + # TODO: enable after rules.nix # vfr = 1; diff --git a/home-manager/modules/hypr/hypridle.nix b/home-manager/modules/hypr/hypridle.nix index 1f6a397..425aeaa 100644 --- a/home-manager/modules/hypr/hypridle.nix +++ b/home-manager/modules/hypr/hypridle.nix @@ -2,7 +2,8 @@ { services.hypridle = let - lock_cmd = "hyprlock --grace 10"; + lock_cmd = "caelestia shell lock lock &"; + # lock_cmd = "hyprlock --grace 10"; # lock_cmd = "exit"; suspend_cmd = "systemctl suspend || loginctl suspend"; in { @@ -16,11 +17,11 @@ listener = [ { - timeout = 300; # 5 mins + timeout = 420; # 7 mins on-timeout = "loginctl lock-session"; } { - timeout = 600; # 10 mins + timeout = 780; # 13 mins # on-timeout = "hyprctl dispatch dpms off"; # on-resume = "hyprctl dispatch dpms on"; } diff --git a/home-manager/modules/hypr/hyprland/keybinds.nix b/home-manager/modules/hypr/hyprland/keybinds.nix index 9ec40ca..72f9b22 100644 --- a/home-manager/modules/hypr/hyprland/keybinds.nix +++ b/home-manager/modules/hypr/hyprland/keybinds.nix @@ -126,13 +126,20 @@ # '' ]; - bindd = [ + bindd = [ # d - description "${super}, M, Toggle power profile,exec, ~/.config/hypr/scripts/switch_config.sh" - # "${super}+Shift, S, Screenshot, exec, hyprshot --freeze --clipboard-only --mode region --silent" ", Print, Screenshot screen to file, exec, hyprshot --mode output --mode active " "${super}+Shift, S, Screenshot region, exec, hyprshot --freeze --clipboard-only --mode region --silent" "${super}+Shift, T, OCR, exec, hyprshot -m region --raw | tesseract stdin stdout" - "${super}, L, Lock screen, exec, hyprlock --immediate-render --no-fade-in" + "${super}, L, Lock screen, exec, caelestia shell lock lock" + ", XF86AudioMicMute, Disable microphone, exec, wpctl set-mute @DEFAULT_SOURCE@ toggle" # а они у меня есть?.. F4 + Fn + ", XF86Display, Lock Hyprland, exec, caelestia shell lock lock" # F7 + Fn can be in future toggle vnc + # ", XF86WLAN, Open Amnezia, exec, AmneziaVPN" # F8 + Fn need to disable by default + ", XF86Tools, Open NixOS config in VSCode, exec, code ~/Documents/Github/nixos-config" + # ", XF86Bluetooth, Open control center, exec, caelestia shell controlCenter open || kitty -n1 blueman || kitty -n1 bluetoothctl" # need to disable by default + # ", XF86Keyboard" + ", XF86Favorites, Open special workspace, togglespecialworkspace, special" + # ", XF86WakeUp" ]; bindm = [ @@ -142,9 +149,9 @@ "${super}, mouse:275, togglespecialworkspace" ]; - bindle = [ - ", XF86MonBrightnessUp, exec, brightnessctl s 5%+" - ", XF86MonBrightnessDown, exec, brightnessctl s 5%-" + bindle = [ # l - locked, e - repeat + ", XF86MonBrightnessUp, exec, caelestia shell brightness set +0.05 || brightnessctl s 5%+" + ", XF86MonBrightnessDown, exec, caelestia shell brightness set 0.05- || brightnessctl s 5%-" ", XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 2%+" ", XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 2%-" ]; diff --git a/home-manager/modules/hypr/qs/qs.nix b/home-manager/modules/hypr/qs/qs.nix deleted file mode 100644 index 3b352d0..0000000 --- a/home-manager/modules/hypr/qs/qs.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ config, pkgs, lib, ... }: - -let - qmlPrefix = pkgs.qt6Packages.qtbase.qtQmlPrefix; - qmlDir = pkg: "${pkg}/${qmlPrefix}"; - - qsWrapped = pkgs.writeShellScriptBin "qss" '' - export QML_IMPORT_PATH="${qmlDir pkgs.qt6Packages.qtpositioning}:${ - qmlDir pkgs.qt6Packages.qtlocation - }:${qmlDir pkgs.qt6Packages.qt5compat}:''${QML_IMPORT_PATH:-}" - export QML2_IMPORT_PATH="$QML_IMPORT_PATH" - exec ${pkgs.quickshell}/bin/qs "$@" - ''; -in { - home.packages = [ - pkgs.quickshell - pkgs.qt6Packages.qt5compat - pkgs.qt6Packages.qtpositioning - pkgs.qt6Packages.qtlocation - qsWrapped - ]; - -} diff --git a/home-manager/modules/zsh/zsh.nix b/home-manager/modules/zsh/zsh.nix index 58d456d..ac2f633 100644 --- a/home-manager/modules/zsh/zsh.nix +++ b/home-manager/modules/zsh/zsh.nix @@ -1,4 +1,4 @@ -{ config, pkgs, ... }: +{ config, pkgs, inputs, ... }: { home.packages = with pkgs; [ @@ -21,7 +21,9 @@ bat ripgrep entr + ddgr + cava github-copilot-cli ]; diff --git a/hosts/loki-nixos/configuration.nix b/hosts/loki-nixos/configuration.nix index 1f5fdf9..ff030a3 100644 --- a/hosts/loki-nixos/configuration.nix +++ b/hosts/loki-nixos/configuration.nix @@ -13,75 +13,17 @@ boot.resumeDevice = "/dev/nvme0n1p2"; # -- tmp -- - programs.dconf.enable = true; - # No display manager / X11 required services.xserver.enable = false; services.displayManager.gdm.enable = false; - - # Hyprland (NixOS module sets up the usual system bits like portals/polkit/etc.) - # programs.hyprland = { - # enable = true; - # xwayland.enable = true; - - # # Recommended on NixOS for systemd-managed sessions (optional, but nice): - # withUWSM = true; - # }; - - # A terminal for the default Hyprland config (you can pick another) - # environment.systemPackages = with pkgs; [ - # kitty - # ]; - - # Auto-login on tty1 services.getty.autologinUser = "krosh"; - # Optional: only do the autologin once per boot services.getty.autologinOnce = true; - # Start Hyprland immediately after the tty1 autologin. - # Choose ONE of the blocks below depending on your shell. - - ## If you log in with zsh: programs.zsh.enable = true; programs.zsh.loginShellInit = '' if [ "$(tty)" = "/dev/tty1" ] && [ -z "$WAYLAND_DISPLAY" ] && [ -z "$DISPLAY" ] && [ -z "$SSH_CONNECTION" ]; then - # If using UWSM: - #if command -v uwsm >/dev/null 2>&1 && uwsm check may-start; then - # exec uwsm start hyprland.desktop - #fi - - # Fallback (no UWSM): exec Hyprland 2>/dev/null 1>&2 fi ''; - ## If you log in with bash instead, use this (and remove the zsh block): - # programs.bash.loginShellInit = '' - # if [ "$(tty)" = "/dev/tty1" ] && [ -z "$WAYLAND_DISPLAY" ] && [ -z "$DISPLAY" ] && [ -z "$SSH_CONNECTION" ]; then - # if command -v uwsm >/dev/null 2>&1 && uwsm check may-start; then - # exec uwsm start hyprland.desktop - # fi - # exec Hyprland - # fi - # ''; - - # systemd.services.getty."tty1".exec = - # [ "/bin/login" "-f" "krosh" "--" "${pkgs.hyprland}/bin/Hyprland" ]; - - # --- Temp sections for testing purposes --- - # services.pipewire = { - # enable = true; - # alsa.enable = true; - # pulse.enable = true; - # alsa.support32Bit = true; - # }; - - # environment.systemPackages = with pkgs; [ - # pavucontrol - # qpwgraph - # paprefs - # helvum - - # ]; - } diff --git a/nixos/modules/power.nix b/nixos/modules/power.nix index 1f7f349..86ab2f9 100644 --- a/nixos/modules/power.nix +++ b/nixos/modules/power.nix @@ -6,65 +6,80 @@ services.power-profiles-daemon.enable = false; powerManagement.powertop.enable = true; + services.thermald.enable = true; services.system76-scheduler.settings.cfsProfiles.enable = true; # networking.networkmanager.wifi.powersave = true; + services.auto-cpufreq.enable = true; + + hardware.intel-gpu-tools.enable = true; + + ### NixOS power management + # powerManagement = { + # enable = true; + # #cpufreq.min = 800000; + # #cpufreq.max = 2200000; + # # powertop.enable = true; + # #powerUpCommands = + # cpuFreqGovernor = "schedutil"; # power, performance, ondemand + # }; + boot.kernelParams = [ "usbcore.autosuspend=0" ]; - services.tlp = { - enable = true; - settings = { # power saving priority - CPU_ENERGY_PERF_POLICY_ON_AC = "balance_performance"; - CPU_ENERGY_PERF_POLICY_ON_BAT = "balance_power"; - CPU_ENERGY_PERF_POLICY_ON_SAV = "power"; + # services.tlp = { + # enable = true; + # settings = { # power saving priority + # CPU_ENERGY_PERF_POLICY_ON_AC = "balance_performance"; + # CPU_ENERGY_PERF_POLICY_ON_BAT = "balance_power"; + # CPU_ENERGY_PERF_POLICY_ON_SAV = "power"; - PLATFORM_PROFILE_ON_AC = "performance"; - PLATFORM_PROFILE_ON_BAT = "power"; - PLATFORM_PROFILE_ON_SAV = "low-power"; + # PLATFORM_PROFILE_ON_AC = "performance"; + # PLATFORM_PROFILE_ON_BAT = "power"; + # PLATFORM_PROFILE_ON_SAV = "low-power"; - CPU_BOOST_ON_AC = 1; - CPU_BOOST_ON_BAT = 0; - CPU_BOOST_ON_SAV = 0; + # CPU_BOOST_ON_AC = 1; + # CPU_BOOST_ON_BAT = 0; + # CPU_BOOST_ON_SAV = 0; - CPU_HWP_DYN_BOOST_ON_AC = 1; - CPU_HWP_DYN_BOOST_ON_BAT = 0; - CPU_HWP_DYN_BOOST_ON_SAV = 0; + # CPU_HWP_DYN_BOOST_ON_AC = 1; + # CPU_HWP_DYN_BOOST_ON_BAT = 0; + # CPU_HWP_DYN_BOOST_ON_SAV = 0; - AMDGPU_ABM_LEVEL_ON_AC = 0; - AMDGPU_ABM_LEVEL_ON_BAT = 3; - AMDGPU_ABM_LEVEL_ON_SAV = 3; + # AMDGPU_ABM_LEVEL_ON_AC = 0; + # AMDGPU_ABM_LEVEL_ON_BAT = 3; + # AMDGPU_ABM_LEVEL_ON_SAV = 3; - # CPU_BOOST_ON_AC = 1; - # CPU_BOOST_ON_BAT = 0; - # CPU_HWP_DYN_BOOST_ON_AC = 1; - # CPU_HWP_DYN_BOOST_ON_BAT = 0; - # CPU_SCALING_GOVERNOR_ON_AC = "performance"; - # CPU_SCALING_GOVERNOR_ON_BAT = "powersave"; - # CPU_SCALING_MIN_FREQ_ON_BAT = 0; - # CPU_ENERGY_PERF_POLICY_ON_AC = "performance"; - # CPU_ENERGY_PERF_POLICY_ON_BAT = "power"; + # # CPU_BOOST_ON_AC = 1; + # # CPU_BOOST_ON_BAT = 0; + # # CPU_HWP_DYN_BOOST_ON_AC = 1; + # # CPU_HWP_DYN_BOOST_ON_BAT = 0; + # # CPU_SCALING_GOVERNOR_ON_AC = "performance"; + # # CPU_SCALING_GOVERNOR_ON_BAT = "powersave"; + # # CPU_SCALING_MIN_FREQ_ON_BAT = 0; + # # CPU_ENERGY_PERF_POLICY_ON_AC = "performance"; + # # CPU_ENERGY_PERF_POLICY_ON_BAT = "power"; - # AMDGPU_ABM_LEVEL_ON_AC = 0; - # AMDGPU_ABM_LEVEL_ON_BAT = 0; - # PLATFORM_PROFILE_ON_AC = "performance"; - # PLATFORM_PROFILE_ON_BAT = "low-power"; - # PCIE_ASPM_ON_BAT = "powersupersave"; - # SATA_LINKPWR_ON_AC = "med_power_with_dipm"; - # SATA_LINKPWR_ON_BAT = "min_power"; - # RUNTIME_PM_ON_AC = "on"; - # RUNTIME_PM_ON_BAT = "auto"; - # SOUND_POWER_SAVE_ON_AC = 0; - # SOUND_POWER_SAVE_ON_BAT = 1; - # SOUND_POWER_SAVE_CONTROLLER = "Y"; - # CPU_MAX_PERF_ON_AC = 100; - # CPU_MAX_PERF_ON_BAT = 50; - # NMI_WATCHDOG = 0; + # # AMDGPU_ABM_LEVEL_ON_AC = 0; + # # AMDGPU_ABM_LEVEL_ON_BAT = 0; + # # PLATFORM_PROFILE_ON_AC = "performance"; + # # PLATFORM_PROFILE_ON_BAT = "low-power"; + # # PCIE_ASPM_ON_BAT = "powersupersave"; + # # SATA_LINKPWR_ON_AC = "med_power_with_dipm"; + # # SATA_LINKPWR_ON_BAT = "min_power"; + # # RUNTIME_PM_ON_AC = "on"; + # # RUNTIME_PM_ON_BAT = "auto"; + # # SOUND_POWER_SAVE_ON_AC = 0; + # # SOUND_POWER_SAVE_ON_BAT = 1; + # # SOUND_POWER_SAVE_CONTROLLER = "Y"; + # # CPU_MAX_PERF_ON_AC = 100; + # # CPU_MAX_PERF_ON_BAT = 50; + # # NMI_WATCHDOG = 0; - # USB_AUTOSUSPEND = 0; - # USB_BLACKLIST_BTUSB = 0; - # START_CHARGE_THRESH_BAT0 = 0; - # STOP_CHARGE_THRESH_BAT0 = 1; - }; - }; + # # USB_AUTOSUSPEND = 0; + # # USB_BLACKLIST_BTUSB = 0; + # # START_CHARGE_THRESH_BAT0 = 0; + # # STOP_CHARGE_THRESH_BAT0 = 1; + # }; + # }; } diff --git a/nixos/modules/unsorted.nix b/nixos/modules/unsorted.nix index d5ffb8b..c549aae 100644 --- a/nixos/modules/unsorted.nix +++ b/nixos/modules/unsorted.nix @@ -25,13 +25,17 @@ services.upower.enable = true; hardware.bluetooth.enable = true; + programs.dconf.enable = true; + environment.systemPackages = with pkgs; [ (writeShellScriptBin "power_max" (builtins.readFile ../scripts/max.sh)) (writeShellScriptBin "power_min" (builtins.readFile ../scripts/min.sh)) (writeShellScriptBin "reload" (builtins.readFile ../scripts/reload.sh)) # papirus-icon-theme + kora-icon-theme nordzy-icon-theme adwaita-icon-theme - # hicolor-icon-theme + hicolor-icon-theme + lomiri.suru-icon-theme ]; } diff --git a/nixos/modules/wm.nix b/nixos/modules/wm.nix index 7bff27e..646f384 100644 --- a/nixos/modules/wm.nix +++ b/nixos/modules/wm.nix @@ -10,9 +10,9 @@ services.displayManager.gdm.enable = lib.mkDefault true; services.desktopManager.gnome.enable = lib.mkDefault false; - programs.uwsm.enable = true; + # programs.uwsm.enable = true; programs.hyprland = { enable = lib.mkDefault true; - withUWSM = true; + withUWSM = false; }; }