add caelestia shell

This commit is contained in:
2026-01-20 23:02:45 +03:00
parent 2eb01e9603
commit c09233132b
12 changed files with 210 additions and 165 deletions
Generated
+68
View File
@@ -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",
+7
View File
@@ -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, ... }:
+10 -8
View File
@@ -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";
+35 -15
View File
@@ -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;
+4 -3
View File
@@ -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";
}
@@ -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%-"
];
-23
View File
@@ -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
];
}
+3 -1
View File
@@ -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
];
-58
View File
@@ -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
# ];
}
+63 -48
View File
@@ -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;
# };
# };
}
+5 -1
View File
@@ -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
];
}
+2 -2
View File
@@ -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;
};
}