From f5b495969bdce0c141c4ecdce1b3e4ab2089f423 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Zanghelini?= Date: Mon, 3 Nov 2025 01:03:58 -0300 Subject: [PATCH 01/27] try kebab over underscores for app icons --- dots/.config/quickshell/ii/services/AppSearch.qml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/dots/.config/quickshell/ii/services/AppSearch.qml b/dots/.config/quickshell/ii/services/AppSearch.qml index 6be896404..196e1bed3 100644 --- a/dots/.config/quickshell/ii/services/AppSearch.qml +++ b/dots/.config/quickshell/ii/services/AppSearch.qml @@ -86,6 +86,10 @@ Singleton { return str.toLowerCase().replace(/\s+/g, "-"); } + function getUndescoreToKebabAppName(str) { + return str.toLowerCase().replace(/_/g, "-"); + } + function guessIcon(str) { if (!str || str.length == 0) return "image-missing"; @@ -124,6 +128,8 @@ Singleton { const kebabNormalizedGuess = getKebabNormalizedAppName(str); if (iconExists(kebabNormalizedGuess)) return kebabNormalizedGuess; + const undescoreToKebabGuess = getUndescoreToKebabAppName(str); + if (iconExists(undescoreToKebabGuess)) return undescoreToKebabGuess; // Search in desktop entries const iconSearchResults = Fuzzy.go(str, preppedIcons, { From f2055d128eb3342dd1e361a2895bae4de58bd498 Mon Sep 17 00:00:00 2001 From: 0blivi0nis <182329535+0blivi0nis@users.noreply.github.com> Date: Mon, 3 Nov 2025 17:04:39 -0800 Subject: [PATCH 02/27] fix(lock): extra checks for fingerprint --- dots/.config/quickshell/ii/modules/lock/LockContext.qml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/dots/.config/quickshell/ii/modules/lock/LockContext.qml b/dots/.config/quickshell/ii/modules/lock/LockContext.qml index b3b7fece2..17893bb18 100644 --- a/dots/.config/quickshell/ii/modules/lock/LockContext.qml +++ b/dots/.config/quickshell/ii/modules/lock/LockContext.qml @@ -38,6 +38,7 @@ Scope { root.resetTargetAction(); root.clearText(); root.unlockInProgress = false; + stopFingerPam(); } Timer { @@ -69,7 +70,9 @@ Scope { } function stopFingerPam() { - fingerPam.abort(); + if (fingerPam.running) { + fingerPam.abort(); + } } Process { From eb55f2533de2a6021272d0c71d50d2f867332174 Mon Sep 17 00:00:00 2001 From: clsty Date: Tue, 4 Nov 2025 14:54:12 +0800 Subject: [PATCH 03/27] Update dist-nix --- sdata/dist-nix/home-manager/home.nix | 31 ++++++++++++++-------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/sdata/dist-nix/home-manager/home.nix b/sdata/dist-nix/home-manager/home.nix index 7c52b8c42..a6877b392 100644 --- a/sdata/dist-nix/home-manager/home.nix +++ b/sdata/dist-nix/home-manager/home.nix @@ -166,21 +166,22 @@ ### illogical-impulse-toolkit kdePackages.kdialog #kdialog (Used in Quickshell config) - # TODO: Deal with qt6 things, see https://nixos.wiki/wiki/Qt - #qt6-5compat (Maybe for some qt support) - #qt6-avif-image-plugin (Maybe for some qt support) - #qt6-base (Maybe for some qt support) - #qt6-declarative (Maybe for some qt support) - #qt6-imageformats (Maybe for some qt support) - #qt6-multimedia (Maybe for some qt support) - #qt6-positioning (Maybe for some qt support) - #qt6-quicktimeline (Maybe for some qt support) - #qt6-sensors (Maybe for some qt support) - #qt6-svg (Maybe for some qt support) - #qt6-tools (Maybe for some qt support) - #qt6-translations (Maybe for some qt support) - #qt6-virtualkeyboard (Maybe for some qt support) - #qt6-wayland (Maybe for some qt support) + # https://nixos.wiki/wiki/Qt + # https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/libraries/qt-6/srcs.nix + qt6.qt5compat #qt6-5compat + #qt6.qtimageformats (TODO: really?) #qt6-avif-image-plugin + qt6.qtbase #qt6-base + qt6.qtdeclarative #qt6-declarative + qt6.qtimageformats #qt6-imageformats + qt6.qtmultimedia #qt6-multimedia + qt6.qtpositioning #qt6-positioning + qt6.qtquicktimeline #qt6-quicktimeline + qt6.qtsensors #qt6-sensors + qt6.qtsvg #qt6-svg + qt6.qttools #qt6-tools + qt6.qttranslations #qt6-translations + qt6.qtvirtualkeyboard #qt6-virtualkeyboard + qt6.qtwayland #qt6-wayland kdePackages.syntax-highlighting #syntax-highlighting (Used in Quickshell config) upower #upower (Used in Quickshell config) wtype #wtype (Used in Hyprland scripts/fuzzel-emoji.sh) From e5283cac5c55d7c76a065056fdb133cf6bfe7d94 Mon Sep 17 00:00:00 2001 From: clsty Date: Tue, 4 Nov 2025 14:59:08 +0800 Subject: [PATCH 04/27] Remove non-needed deps from dist-arch --- sdata/dist-arch/illogical-impulse-basic/PKGBUILD | 2 -- sdata/dist-arch/illogical-impulse-hyprland/PKGBUILD | 6 ------ sdata/dist-arch/illogical-impulse-python/PKGBUILD | 1 - sdata/dist-arch/illogical-impulse-widgets/PKGBUILD | 4 +--- sdata/dist-arch/previous_dependencies.conf | 2 -- 5 files changed, 1 insertion(+), 14 deletions(-) diff --git a/sdata/dist-arch/illogical-impulse-basic/PKGBUILD b/sdata/dist-arch/illogical-impulse-basic/PKGBUILD index a403480e8..3948d41bf 100644 --- a/sdata/dist-arch/illogical-impulse-basic/PKGBUILD +++ b/sdata/dist-arch/illogical-impulse-basic/PKGBUILD @@ -5,7 +5,6 @@ pkgdesc='Illogical Impulse Basic Dependencies' arch=(any) license=(None) depends=( - axel bc coreutils cliphist @@ -14,7 +13,6 @@ depends=( wget ripgrep jq - meson xdg-user-dirs # Used in install script rsync diff --git a/sdata/dist-arch/illogical-impulse-hyprland/PKGBUILD b/sdata/dist-arch/illogical-impulse-hyprland/PKGBUILD index 797d2d470..8722c9246 100644 --- a/sdata/dist-arch/illogical-impulse-hyprland/PKGBUILD +++ b/sdata/dist-arch/illogical-impulse-hyprland/PKGBUILD @@ -6,16 +6,10 @@ arch=(any) license=(None) depends=( hypridle - hyprcursor hyprland - hyprland-qtutils - hyprland-qt-support - hyprlang hyprlock hyprpicker hyprsunset - hyprutils - hyprwayland-scanner xdg-desktop-portal-hyprland wl-clipboard ) diff --git a/sdata/dist-arch/illogical-impulse-python/PKGBUILD b/sdata/dist-arch/illogical-impulse-python/PKGBUILD index fc1ac1e05..a0de2df19 100644 --- a/sdata/dist-arch/illogical-impulse-python/PKGBUILD +++ b/sdata/dist-arch/illogical-impulse-python/PKGBUILD @@ -12,5 +12,4 @@ depends=( libsoup3 libportal-gtk4 gobject-introspection - sassc ) diff --git a/sdata/dist-arch/illogical-impulse-widgets/PKGBUILD b/sdata/dist-arch/illogical-impulse-widgets/PKGBUILD index 45e8bb1d4..76f71d43f 100644 --- a/sdata/dist-arch/illogical-impulse-widgets/PKGBUILD +++ b/sdata/dist-arch/illogical-impulse-widgets/PKGBUILD @@ -6,13 +6,11 @@ arch=(any) license=(None) depends=( fuzzel - glib2 # for `gsettings` it seems? + glib2 imagemagick hypridle - hyprutils hyprlock hyprpicker - nm-connection-editor songrec translate-shell wlogout diff --git a/sdata/dist-arch/previous_dependencies.conf b/sdata/dist-arch/previous_dependencies.conf index 4f32959e3..733e63359 100644 --- a/sdata/dist-arch/previous_dependencies.conf +++ b/sdata/dist-arch/previous_dependencies.conf @@ -2,7 +2,6 @@ ### Must be one package per line as it needs to be compared against the explicitly installed list from pacman illogical-impulse-ags archlinux-xdg-menu -axel bc coreutils cliphist @@ -14,7 +13,6 @@ wget ripgrep gojq npm -meson typescript gjs xdg-user-dirs From 5a3abbe45af4f7f5592d8217e9a5e8278f6f37a2 Mon Sep 17 00:00:00 2001 From: clsty Date: Tue, 4 Nov 2025 15:10:03 +0800 Subject: [PATCH 05/27] Remove non-needed deps in dist-nix --- sdata/dist-nix/home-manager/home.nix | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/sdata/dist-nix/home-manager/home.nix b/sdata/dist-nix/home-manager/home.nix index a6877b392..d5a4e3ff0 100644 --- a/sdata/dist-nix/home-manager/home.nix +++ b/sdata/dist-nix/home-manager/home.nix @@ -56,7 +56,6 @@ ### illogical-impulse-basic - #axel#axel (TODOrm: actually not needed cuz it's only used for install Bibata_Cursor in package-installers.sh) bc #bc (Used in quickshell/ii/scripts/colors/switchwall.sh for example) uutils-coreutils-noprefix #coreutils (Too many executables involved, not sure where been used) cliphist #cliphist (Used in Hyprland and Quickshell config) @@ -65,7 +64,6 @@ wget #wget (Used in Quickshell config) ripgrep #ripgrep (Not sure where been used) jq #jq (Widely used) - #meson (TODOrm: Actually not needed. It was used in building AGS.) xdg-user-dirs #xdg-user-dirs (Used in Hyprland and Quickshell config) rsync #rsync (Used in install script) yq-go #go-yq (Used in install script) @@ -79,7 +77,7 @@ adw-gtk3 #adw-gtk-theme-git (https://github.com/lassekongo83/adw-gtk3) (Used in Quickshell config) kdePackages.breeze kdePackages.breeze-icons #breeze (Used in kdeglobals config) #breeze-plus (https://github.com/mjkim0727/breeze-plus) (TODO: Not available as nixpkg) (Used in kde-material-you-colors config) - #darkly-bin (TODOrm: seems not being used?) + darkly darkly-qt5 #darkly-bin (TODO: darkly is supposed to be set as the theme for Qt apps, just have not figured out how to properly set it yet.) eza #eza (Used in Fish config: `alias ls 'eza --icons'`) #fish (Probably should not install via Nix) fontconfig #fontconfig (Basic thing) @@ -98,16 +96,10 @@ ### illogical-impulse-hyprland hypridle #hypridle (Used for loginctl to lock session) - #hyprcursor (TODOrm: Seems not being used?) #hyprland (Need NixGL, included elsewhere) - #hyprland-qtutils (TODOrm: Not needed, it's already a dependency of Hyprland itself, and it's not being used anywhere in this repo) - #hyprland-qt-support (TODOrm: Not needed, it's already a dep of hyprland-qtutils which is a dep of Hyprland, and it's not being used anywhere in this repo) - #hyprlang (TODOrm: Not needed, it's already a dependency of Hyprland, hypridle, etc.) #hyprlock (Should not be installed via Nix) hyprpicker #hyprpicker (Used in Hyprland and Quickshell config) hyprsunset #hyprsunset (Used in Quickshell config) - #hyprutils #hyprutils (TODOrm: Not needed, it's already a dep of Hyprland and not being used anywhere in this repo) - #hyprwayland-scanner (TODOrm: Not needed, it's already a dep of Hyprland and not being used anywhere in this repo) #xdg-desktop-portal-hyprland (DUPLICATE) wl-clipboard #wl-clipboard (Surely needed) @@ -148,7 +140,6 @@ libsoup_3 #libsoup3 (Not explicitly used) libportal-gtk4 #libportal-gtk4 (Not explicitly used) gobject-introspection #gobject-introspection (Not explicitly used) - #sassc (TODOrm: Not used anymore) ### illogical-impulse-quickshell-git @@ -196,7 +187,6 @@ #hyprutils (DUPLICATE) #hyprlock (DUPLICATE) #hyprpicker (DUPLICATE) - #nm-connection-editor (TODOrm: Not needed) songrec #songrec (Used in Quickshell config) translate-shell #translate-shell (Used in Quickshell config) wlogout #wlogout (Used in Hyprland config) From 9bbabc3079fd254dbee26c8dfd49051d33546bcc Mon Sep 17 00:00:00 2001 From: clsty Date: Tue, 4 Nov 2025 15:23:41 +0800 Subject: [PATCH 06/27] Tweak order of deps in PKGBUILD --- sdata/dist-arch/illogical-impulse-toolkit/PKGBUILD | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/sdata/dist-arch/illogical-impulse-toolkit/PKGBUILD b/sdata/dist-arch/illogical-impulse-toolkit/PKGBUILD index adf51792a..f3e4f943b 100644 --- a/sdata/dist-arch/illogical-impulse-toolkit/PKGBUILD +++ b/sdata/dist-arch/illogical-impulse-toolkit/PKGBUILD @@ -6,6 +6,10 @@ arch=(any) license=(None) depends=( kdialog + syntax-highlighting + upower + wtype + ydotool qt6-5compat qt6-avif-image-plugin qt6-base @@ -20,8 +24,4 @@ depends=( qt6-translations qt6-virtualkeyboard qt6-wayland - syntax-highlighting - upower - wtype - ydotool ) From fbb284ae00e6c0003da41bfc47435b05e3af067c Mon Sep 17 00:00:00 2001 From: clsty Date: Tue, 4 Nov 2025 15:30:54 +0800 Subject: [PATCH 07/27] Update message in dist-nix --- sdata/dist-nix/install-deps.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/sdata/dist-nix/install-deps.sh b/sdata/dist-nix/install-deps.sh index 52edf2355..731258e87 100644 --- a/sdata/dist-nix/install-deps.sh +++ b/sdata/dist-nix/install-deps.sh @@ -24,6 +24,11 @@ function install_home-manager(){ command -v $cmd && return echo "Failed in installing $cmd." echo "Please install it by yourself and then retry." + echo "" + echo "Hint: It's also possible that the installation is actually successful," + echo "but your \"\$PATH\" is not properly set." + echo "This can happen when you have used \"su user\" to switch user." + echo "If this is the problem, use \"su - user\" instead." return 1 } function install_nix(){ From 27754e5d033d9a374b114082bc9eb7bea1bcee58 Mon Sep 17 00:00:00 2001 From: clsty Date: Tue, 4 Nov 2025 15:34:41 +0800 Subject: [PATCH 08/27] Update flake.lock --- sdata/dist-nix/home-manager/flake.lock | 432 +------------------------ 1 file changed, 14 insertions(+), 418 deletions(-) diff --git a/sdata/dist-nix/home-manager/flake.lock b/sdata/dist-nix/home-manager/flake.lock index 3c2f0f3f0..c184eee32 100644 --- a/sdata/dist-nix/home-manager/flake.lock +++ b/sdata/dist-nix/home-manager/flake.lock @@ -1,57 +1,8 @@ { "nodes": { - "aquamarine": { - "inputs": { - "hyprutils": [ - "hyprland", - "hyprutils" - ], - "hyprwayland-scanner": [ - "hyprland", - "hyprwayland-scanner" - ], - "nixpkgs": [ - "hyprland", - "nixpkgs" - ], - "systems": [ - "hyprland", - "systems" - ] - }, - "locked": { - "lastModified": 1760101617, - "narHash": "sha256-8jf/3ZCi+B7zYpIyV04+3wm72BD7Z801IlOzsOACR7I=", - "owner": "hyprwm", - "repo": "aquamarine", - "rev": "1826a9923881320306231b1c2090379ebf9fa4f8", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "aquamarine", - "type": "github" - } - }, - "flake-compat": { - "flake": false, - "locked": { - "lastModified": 1747046372, - "narHash": "sha256-CIVLLkVgvHYbgI2UpXvIIBJ12HWgX+fjA8Xf8PUmqCY=", - "owner": "edolstra", - "repo": "flake-compat", - "rev": "9100a0f413b0c601e0533d1d94ffd501ce2e7885", - "type": "github" - }, - "original": { - "owner": "edolstra", - "repo": "flake-compat", - "type": "github" - } - }, "flake-utils": { "inputs": { - "systems": "systems_2" + "systems": "systems" }, "locked": { "lastModified": 1731533236, @@ -67,28 +18,6 @@ "type": "github" } }, - "gitignore": { - "inputs": { - "nixpkgs": [ - "hyprland", - "pre-commit-hooks", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1709087332, - "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", - "type": "github" - } - }, "home-manager": { "inputs": { "nixpkgs": [ @@ -110,269 +39,10 @@ "type": "github" } }, - "hyprcursor": { - "inputs": { - "hyprlang": [ - "hyprland", - "hyprlang" - ], - "nixpkgs": [ - "hyprland", - "nixpkgs" - ], - "systems": [ - "hyprland", - "systems" - ] - }, - "locked": { - "lastModified": 1753964049, - "narHash": "sha256-lIqabfBY7z/OANxHoPeIrDJrFyYy9jAM4GQLzZ2feCM=", - "owner": "hyprwm", - "repo": "hyprcursor", - "rev": "44e91d467bdad8dcf8bbd2ac7cf49972540980a5", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "hyprcursor", - "type": "github" - } - }, - "hyprgraphics": { - "inputs": { - "hyprutils": [ - "hyprland", - "hyprutils" - ], - "nixpkgs": [ - "hyprland", - "nixpkgs" - ], - "systems": [ - "hyprland", - "systems" - ] - }, - "locked": { - "lastModified": 1760445448, - "narHash": "sha256-fXGjL6dw31FPFRrmIemzGiNSlfvEJTJNsmadZi+qNhI=", - "owner": "hyprwm", - "repo": "hyprgraphics", - "rev": "50fb9f069219f338a11cf0bcccb9e58357d67757", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "hyprgraphics", - "type": "github" - } - }, - "hyprland": { - "inputs": { - "aquamarine": "aquamarine", - "hyprcursor": "hyprcursor", - "hyprgraphics": "hyprgraphics", - "hyprland-protocols": "hyprland-protocols", - "hyprland-qtutils": "hyprland-qtutils", - "hyprlang": "hyprlang", - "hyprutils": "hyprutils", - "hyprwayland-scanner": "hyprwayland-scanner", - "nixpkgs": "nixpkgs", - "pre-commit-hooks": "pre-commit-hooks", - "systems": "systems", - "xdph": "xdph" - }, - "locked": { - "lastModified": 1761780088, - "narHash": "sha256-ylKrWQeIAGyysfHbgZpcWUs9UsbiOBIVXTPqaiV3lf0=", - "owner": "hyprwm", - "repo": "Hyprland", - "rev": "6ade4d58cab67e18aa758ef664e36421cab4d8b2", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "Hyprland", - "type": "github" - } - }, - "hyprland-protocols": { - "inputs": { - "nixpkgs": [ - "hyprland", - "nixpkgs" - ], - "systems": [ - "hyprland", - "systems" - ] - }, - "locked": { - "lastModified": 1759610243, - "narHash": "sha256-+KEVnKBe8wz+a6dTLq8YDcF3UrhQElwsYJaVaHXJtoI=", - "owner": "hyprwm", - "repo": "hyprland-protocols", - "rev": "bd153e76f751f150a09328dbdeb5e4fab9d23622", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "hyprland-protocols", - "type": "github" - } - }, - "hyprland-qt-support": { - "inputs": { - "hyprlang": [ - "hyprland", - "hyprland-qtutils", - "hyprlang" - ], - "nixpkgs": [ - "hyprland", - "hyprland-qtutils", - "nixpkgs" - ], - "systems": [ - "hyprland", - "hyprland-qtutils", - "systems" - ] - }, - "locked": { - "lastModified": 1749154592, - "narHash": "sha256-DO7z5CeT/ddSGDEnK9mAXm1qlGL47L3VAHLlLXoCjhE=", - "owner": "hyprwm", - "repo": "hyprland-qt-support", - "rev": "4c8053c3c888138a30c3a6c45c2e45f5484f2074", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "hyprland-qt-support", - "type": "github" - } - }, - "hyprland-qtutils": { - "inputs": { - "hyprland-qt-support": "hyprland-qt-support", - "hyprlang": [ - "hyprland", - "hyprlang" - ], - "hyprutils": [ - "hyprland", - "hyprland-qtutils", - "hyprlang", - "hyprutils" - ], - "nixpkgs": [ - "hyprland", - "nixpkgs" - ], - "systems": [ - "hyprland", - "systems" - ] - }, - "locked": { - "lastModified": 1759080228, - "narHash": "sha256-RgDoAja0T1hnF0pTc56xPfLfFOO8Utol2iITwYbUhTk=", - "owner": "hyprwm", - "repo": "hyprland-qtutils", - "rev": "629b15c19fa4082e4ce6be09fdb89e8c3312aed7", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "hyprland-qtutils", - "type": "github" - } - }, - "hyprlang": { - "inputs": { - "hyprutils": [ - "hyprland", - "hyprutils" - ], - "nixpkgs": [ - "hyprland", - "nixpkgs" - ], - "systems": [ - "hyprland", - "systems" - ] - }, - "locked": { - "lastModified": 1758927902, - "narHash": "sha256-LZgMds7M94+vuMql2bERQ6LiFFdhgsEFezE4Vn+Ys3A=", - "owner": "hyprwm", - "repo": "hyprlang", - "rev": "4dafa28d4f79877d67a7d1a654cddccf8ebf15da", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "hyprlang", - "type": "github" - } - }, - "hyprutils": { - "inputs": { - "nixpkgs": [ - "hyprland", - "nixpkgs" - ], - "systems": [ - "hyprland", - "systems" - ] - }, - "locked": { - "lastModified": 1759619523, - "narHash": "sha256-r1ed7AR2ZEb2U8gy321/Xcp1ho2tzn+gG1te/Wxsj1A=", - "owner": "hyprwm", - "repo": "hyprutils", - "rev": "3df7bde01efb3a3e8e678d1155f2aa3f19e177ef", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "hyprutils", - "type": "github" - } - }, - "hyprwayland-scanner": { - "inputs": { - "nixpkgs": [ - "hyprland", - "nixpkgs" - ], - "systems": [ - "hyprland", - "systems" - ] - }, - "locked": { - "lastModified": 1755184602, - "narHash": "sha256-RCBQN8xuADB0LEgaKbfRqwm6CdyopE1xIEhNc67FAbw=", - "owner": "hyprwm", - "repo": "hyprwayland-scanner", - "rev": "b3b0f1f40ae09d4447c20608e5a4faf8bf3c492d", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "hyprwayland-scanner", - "type": "github" - } - }, "nixgl": { "inputs": { "flake-utils": "flake-utils", - "nixpkgs": "nixpkgs_2" + "nixpkgs": "nixpkgs" }, "locked": { "lastModified": 1752054764, @@ -389,22 +59,6 @@ } }, "nixpkgs": { - "locked": { - "lastModified": 1761114652, - "narHash": "sha256-f/QCJM/YhrV/lavyCVz8iU3rlZun6d+dAiC3H+CDle4=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "01f116e4df6a15f4ccdffb1bcd41096869fb385c", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, - "nixpkgs_2": { "locked": { "lastModified": 1746378225, "narHash": "sha256-OeRSuL8PUjIfL3Q0fTbNJD/fmv1R+K2JAOqWJd3Oceg=", @@ -419,7 +73,7 @@ "type": "github" } }, - "nixpkgs_3": { + "nixpkgs_2": { "locked": { "lastModified": 1761597516, "narHash": "sha256-wxX7u6D2rpkJLWkZ2E932SIvDJW8+ON/0Yy8+a5vsDU=", @@ -434,53 +88,36 @@ "type": "indirect" } }, - "pre-commit-hooks": { + "quickshell": { "inputs": { - "flake-compat": "flake-compat", - "gitignore": "gitignore", "nixpkgs": [ - "hyprland", "nixpkgs" ] }, "locked": { - "lastModified": 1760663237, - "narHash": "sha256-BflA6U4AM1bzuRMR8QqzPXqh8sWVCNDzOdsxXEguJIc=", - "owner": "cachix", - "repo": "git-hooks.nix", - "rev": "ca5b894d3e3e151ffc1db040b6ce4dcc75d31c37", + "lastModified": 1761821581, + "narHash": "sha256-nLuc6jA7z+H/6bHPEBSOYPbz7RtvNCZiTKmYItJuBmM=", + "owner": "quickshell-mirror", + "repo": "quickshell", + "rev": "db1777c20b936a86528c1095cbcb1ebd92801402", "type": "github" }, "original": { - "owner": "cachix", - "repo": "git-hooks.nix", + "owner": "quickshell-mirror", + "repo": "quickshell", + "rev": "db1777c20b936a86528c1095cbcb1ebd92801402", "type": "github" } }, "root": { "inputs": { "home-manager": "home-manager", - "hyprland": "hyprland", "nixgl": "nixgl", - "nixpkgs": "nixpkgs_3" + "nixpkgs": "nixpkgs_2", + "quickshell": "quickshell" } }, "systems": { - "locked": { - "lastModified": 1689347949, - "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", - "owner": "nix-systems", - "repo": "default-linux", - "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default-linux", - "type": "github" - } - }, - "systems_2": { "locked": { "lastModified": 1681028828, "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", @@ -494,47 +131,6 @@ "repo": "default", "type": "github" } - }, - "xdph": { - "inputs": { - "hyprland-protocols": [ - "hyprland", - "hyprland-protocols" - ], - "hyprlang": [ - "hyprland", - "hyprlang" - ], - "hyprutils": [ - "hyprland", - "hyprutils" - ], - "hyprwayland-scanner": [ - "hyprland", - "hyprwayland-scanner" - ], - "nixpkgs": [ - "hyprland", - "nixpkgs" - ], - "systems": [ - "hyprland", - "systems" - ] - }, - "locked": { - "lastModified": 1760713634, - "narHash": "sha256-5HXelmz2x/uO26lvW7MudnadbAfoBnve4tRBiDVLtOM=", - "owner": "hyprwm", - "repo": "xdg-desktop-portal-hyprland", - "rev": "753bbbdf6a052994da94062e5b753288cef28dfb", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "xdg-desktop-portal-hyprland", - "type": "github" - } } }, "root": "root", From d509a8777b25c37d8c507806e05b00049573ca5b Mon Sep 17 00:00:00 2001 From: clsty Date: Tue, 4 Nov 2025 15:47:57 +0800 Subject: [PATCH 09/27] Update home.nix --- sdata/dist-nix/home-manager/home.nix | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/sdata/dist-nix/home-manager/home.nix b/sdata/dist-nix/home-manager/home.nix index d5a4e3ff0..abbb79e73 100644 --- a/sdata/dist-nix/home-manager/home.nix +++ b/sdata/dist-nix/home-manager/home.nix @@ -33,13 +33,13 @@ foot # Used in Quickshell and Hyprland config; its config is also included ##### Other basic things ##### - dbus xorg.xlsclients networkmanager + dbus xorg.xlsclients ##### Not work, to be solved ##### - # swaylock pamtester + # hyprlock pamtester - # TODO: migrate all packages from dist-arch. Note that for each package, must know why it's needed and how it's used specifically, cuz things may be need tweak to properly use the package installed by Nix, especially those have hardcoded path /usr/* . + # NOTE: below are migrated from dist-arch. For each package, must know why it's needed and how it's used specifically, cuz things may be need tweak to properly use the package installed by Nix, for example those have hardcoded path /usr/* . ### illogical-impulse-audio libcava #cava (Used in Quickshell config) lxqt.pavucontrol-qt #pavucontrol-qt (Used in Hyprland and Quickshell config) @@ -77,9 +77,9 @@ adw-gtk3 #adw-gtk-theme-git (https://github.com/lassekongo83/adw-gtk3) (Used in Quickshell config) kdePackages.breeze kdePackages.breeze-icons #breeze (Used in kdeglobals config) #breeze-plus (https://github.com/mjkim0727/breeze-plus) (TODO: Not available as nixpkg) (Used in kde-material-you-colors config) - darkly darkly-qt5 #darkly-bin (TODO: darkly is supposed to be set as the theme for Qt apps, just have not figured out how to properly set it yet.) + darkly darkly-qt5 #darkly-bin (darkly is supposed to be set as the theme for Qt apps, just have not figured out how to properly set it yet.) eza #eza (Used in Fish config: `alias ls 'eza --icons'`) - #fish (Probably should not install via Nix) + #fish (Install via system PM instead) fontconfig #fontconfig (Basic thing) kitty #kitty (Used in fuzzel, Hyprland, kdeglobals and Quickshell config; kitty config is also included as dots) matugen #matugen-bin (Used in Quickshell) @@ -106,10 +106,10 @@ ### illogical-impulse-kde kdePackages.bluedevil #bluedevil (Seems not being used anywhere, maybe a part of KDE settings panel) - #gnome-keyring #gnome-keyring (TODO: Maybe should not be installed by Nix) (Provide executable gnome-keyring-daemon, used in Hyprland and Quickshell config) + #gnome-keyring #gnome-keyring (TODO: Install via system PM instead) (Provide executable gnome-keyring-daemon, used in Hyprland and Quickshell config) networkmanager #networkmanager kdePackages.plasma-nm #plasma-nm (Seems not being used anywhere, maybe a part of KDE settings panel) - #polkit-kde-agent (TODO: Maybe should not install by Nix) + #polkit-kde-agent (TODO: Install via system PM instead) kdePackages.dolphin #dolphin (Used in Hyprland and Quickshell config) kdePackages.systemsettings #systemsettings (Used in Hyprland keybinds.conf) From 4443b736d856b1a1c3e328af8c91ee2435ef9457 Mon Sep 17 00:00:00 2001 From: clsty Date: Tue, 4 Nov 2025 15:57:44 +0800 Subject: [PATCH 10/27] Add pkg-config for nix --- sdata/dist-nix/home-manager/home.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdata/dist-nix/home-manager/home.nix b/sdata/dist-nix/home-manager/home.nix index abbb79e73..7ffb973e5 100644 --- a/sdata/dist-nix/home-manager/home.nix +++ b/sdata/dist-nix/home-manager/home.nix @@ -133,7 +133,7 @@ ### illogical-impulse-python - clang #clang (Some python package may need this to be built, e.g. #1235) + pkg-config clang #clang (Some python package may need this to be built, e.g. #1235; Also pkg-config is needed for Nix when running uv install) uv #uv (Used for python venv) gtk4 #gtk4 (Not explicitly used) libadwaita #libadwaita (Not explicitly used) From 38cd1a71697b21060ee8b425099533d31a69460c Mon Sep 17 00:00:00 2001 From: clsty Date: Tue, 4 Nov 2025 20:47:35 +0800 Subject: [PATCH 11/27] Update dist-nix --- sdata/dist-nix/home-manager/home.nix | 10 ++++++---- sdata/lib/package-installers.sh | 6 +++++- sdata/subcmd-install/3.files-legacy.sh | 10 +++++++--- sdata/uv/shell.nix | 12 ++++++++++++ 4 files changed, 30 insertions(+), 8 deletions(-) create mode 100644 sdata/uv/shell.nix diff --git a/sdata/dist-nix/home-manager/home.nix b/sdata/dist-nix/home-manager/home.nix index 7ffb973e5..8636a8489 100644 --- a/sdata/dist-nix/home-manager/home.nix +++ b/sdata/dist-nix/home-manager/home.nix @@ -30,10 +30,12 @@ ## inetutils: provides hostname, ifconfig, ping, etc. ## libnotify: provides notify-send inetutils libnotify - foot # Used in Quickshell and Hyprland config; its config is also included - ##### Other basic things ##### - dbus xorg.xlsclients + ##### Other MISC ##### + dbus xorg.xlsclients # some basic things + foot # Used in Quickshell and Hyprland config; its config is also included + kdePackages.kconfig # provide kwriteconfig6, used in install script + ##### Not work, to be solved ##### # hyprlock pamtester @@ -133,7 +135,7 @@ ### illogical-impulse-python - pkg-config clang #clang (Some python package may need this to be built, e.g. #1235; Also pkg-config is needed for Nix when running uv install) + #clang (Some python package may need this to be built, e.g. #1235; However when cmake is installed by Nix, then pkg-config, cairo etc will be used but they can only be accessible in Nix development environment for example nix-shell, nix develop, etc. See `sdata/uv/shell.nix`. ) uv #uv (Used for python venv) gtk4 #gtk4 (Not explicitly used) libadwaita #libadwaita (Not explicitly used) diff --git a/sdata/lib/package-installers.sh b/sdata/lib/package-installers.sh index 24f3bf3ce..5f71cd7c1 100644 --- a/sdata/lib/package-installers.sh +++ b/sdata/lib/package-installers.sh @@ -88,6 +88,10 @@ install-python-packages(){ # we need python 3.12 https://github.com/python-pillow/Pillow/issues/8089 x uv venv --prompt .venv $(eval echo $ILLOGICAL_IMPULSE_VIRTUAL_ENV) -p 3.12 x source $(eval echo $ILLOGICAL_IMPULSE_VIRTUAL_ENV)/bin/activate - x uv pip install -r sdata/uv/requirements.txt + if [[ "$INSTALL_VIA_NIX" = true ]]; then + x nix-shell ${REPO_ROOT}/sdata/uv/shell.nix --run "uv pip install -r ${REPO_ROOT}/sdata/uv/requirements.txt" + else + x uv pip install -r ${REPO_ROOT}/sdata/uv/requirements.txt + fi x deactivate } diff --git a/sdata/subcmd-install/3.files-legacy.sh b/sdata/subcmd-install/3.files-legacy.sh index 88337a1db..858fd351d 100644 --- a/sdata/subcmd-install/3.files-legacy.sh +++ b/sdata/subcmd-install/3.files-legacy.sh @@ -3,7 +3,6 @@ # shellcheck shell=bash -# TODO: When --via-nix is specified, use dots-extra/vianix/hypridle.conf instead # In case some dirs does not exists v mkdir -p $XDG_BIN_HOME $XDG_CACHE_HOME $XDG_CONFIG_HOME $XDG_DATA_HOME/icons @@ -80,13 +79,18 @@ case $SKIP_HYPRLAND in v cp dots/.config/hypr/hyprland.conf $t fi t="$XDG_CONFIG_HOME/hypr/hypridle.conf" + if [[ "$INSTALL_VIA_NIX" = true ]]; then + s=dots/.config/hypr/hypridle.conf + else + s=dots-extra/vianix/hypridle.conf + fi if [ -f $t ];then echo -e "${STY_BLUE}[$0]: \"$t\" already exists.${STY_RST}" - v cp -f dots/.config/hypr/hypridle.conf $t.new + v cp -f $s $t.new existed_hypridle_conf=y else echo -e "${STY_YELLOW}[$0]: \"$t\" does not exist yet.${STY_RST}" - v cp dots/.config/hypr/hypridle.conf $t + v cp $s $t existed_hypridle_conf=n fi t="$XDG_CONFIG_HOME/hypr/hyprlock.conf" diff --git a/sdata/uv/shell.nix b/sdata/uv/shell.nix new file mode 100644 index 000000000..46f9f8f65 --- /dev/null +++ b/sdata/uv/shell.nix @@ -0,0 +1,12 @@ +{ pkgs ? import {} }: +pkgs.mkShell { + buildInputs = with pkgs; [ + pkg-config + meson + ninja + cairo + dbus + dbus-glib + glib + ]; +} From 7440f780699ee99a70e998e0463a1c06e04396fb Mon Sep 17 00:00:00 2001 From: clsty Date: Tue, 4 Nov 2025 20:54:14 +0800 Subject: [PATCH 12/27] Update TODO --- sdata/dist-nix/README.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/sdata/dist-nix/README.md b/sdata/dist-nix/README.md index 20f80025d..5febf4698 100644 --- a/sdata/dist-nix/README.md +++ b/sdata/dist-nix/README.md @@ -9,7 +9,12 @@ Note that this script must be idempotent. TODO: -- [ ] Write a proper `flake.nix` and `home.nix` and other files under `dist-nix/home-manager/` to install all dependencies that `dist-arch/` does. (**excluding** the screenlock) +- [ ] Fix all TODOs inside `dist-nix`. +- [ ] Warn user if inode-limited filesystem (typically ext4) is used. +- [ ] Deal with error when running `systemctl --user enable ydotool --now`: + ```plain + Failed to connect to user scope bus via local transport: $DBUS_SESSION_BUS_ADDRESS and $XDG_RUNTIME_DIR not defined (consider using --machine=@.host --user to connect to bus of other user) + ``` ## Attentions ### PAM From 5a4b4e6d3c9084f8d72f8130b66d103b6208668c Mon Sep 17 00:00:00 2001 From: clsty Date: Tue, 4 Nov 2025 20:58:46 +0800 Subject: [PATCH 13/27] Fix VIANIX --- sdata/subcmd-install/3.files-legacy.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sdata/subcmd-install/3.files-legacy.sh b/sdata/subcmd-install/3.files-legacy.sh index 858fd351d..6f67f0a16 100644 --- a/sdata/subcmd-install/3.files-legacy.sh +++ b/sdata/subcmd-install/3.files-legacy.sh @@ -80,9 +80,9 @@ case $SKIP_HYPRLAND in fi t="$XDG_CONFIG_HOME/hypr/hypridle.conf" if [[ "$INSTALL_VIA_NIX" = true ]]; then - s=dots/.config/hypr/hypridle.conf - else s=dots-extra/vianix/hypridle.conf + else + s=dots/.config/hypr/hypridle.conf fi if [ -f $t ];then echo -e "${STY_BLUE}[$0]: \"$t\" already exists.${STY_RST}" From 4cad27696350a0c5f6258630328870eab501bff7 Mon Sep 17 00:00:00 2001 From: clsty Date: Tue, 4 Nov 2025 21:10:56 +0800 Subject: [PATCH 14/27] Try fix Hyprland --- sdata/dist-nix/home-manager/home.nix | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/sdata/dist-nix/home-manager/home.nix b/sdata/dist-nix/home-manager/home.nix index 8636a8489..63a895af0 100644 --- a/sdata/dist-nix/home-manager/home.nix +++ b/sdata/dist-nix/home-manager/home.nix @@ -22,6 +22,15 @@ ## Allow fontconfig to discover fonts in home.packages fonts.fontconfig.enable = true; + wayland.windowManager.hyprland = { + ## Make sure home-manager not generate ~/.config/hypr/hyprland.conf + systemd.enable = false; plugins = []; settings = {}; extraConfig = ""; + enable = true; + ## Use NixGL + package = config.lib.nixGL.wrap pkgs.hyprland; + }; + + home = { packages = with pkgs; [ @@ -195,7 +204,7 @@ ] ++ [ - (config.lib.nixGL.wrap pkgs.hyprland) + #(config.lib.nixGL.wrap pkgs.hyprland) (config.lib.nixGL.wrap quickshell.packages.x86_64-linux.default) ]; }//home_attrs; From 7f8265c9e6dea042aeb367622de5228c6798e4b1 Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Tue, 4 Nov 2025 14:47:14 +0100 Subject: [PATCH 15/27] auto color scheme: dont use "content" --- .../quickshell/ii/scripts/colors/scheme_for_image.py | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/dots/.config/quickshell/ii/scripts/colors/scheme_for_image.py b/dots/.config/quickshell/ii/scripts/colors/scheme_for_image.py index 8aa0ccbea..7adc8ce70 100755 --- a/dots/.config/quickshell/ii/scripts/colors/scheme_for_image.py +++ b/dots/.config/quickshell/ii/scripts/colors/scheme_for_image.py @@ -30,12 +30,7 @@ def image_colorfulness(image): # scheme-content respects the image's colors very well, but it might # look too saturated, so we only use it for not very colorful images to be safe def pick_scheme(colorfulness): - if colorfulness < 10: - # return "scheme-monochrome" - return "scheme-content" - elif colorfulness < 20: - return "scheme-content" - elif colorfulness < 50: + if colorfulness < 40: return "scheme-neutral" else: return "scheme-tonal-spot" From c2942afe8e48693c8e0c87d35fee6511bdee9344 Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Tue, 4 Nov 2025 15:07:44 +0100 Subject: [PATCH 16/27] make regionselection kb focus ondemand --- .../quickshell/ii/modules/regionSelector/RegionSelection.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dots/.config/quickshell/ii/modules/regionSelector/RegionSelection.qml b/dots/.config/quickshell/ii/modules/regionSelector/RegionSelection.qml index 5ecce47ba..a0853cc89 100644 --- a/dots/.config/quickshell/ii/modules/regionSelector/RegionSelection.qml +++ b/dots/.config/quickshell/ii/modules/regionSelector/RegionSelection.qml @@ -17,7 +17,7 @@ PanelWindow { color: "transparent" WlrLayershell.namespace: "quickshell:regionSelector" WlrLayershell.layer: WlrLayer.Overlay - WlrLayershell.keyboardFocus: WlrKeyboardFocus.Exclusive + WlrLayershell.keyboardFocus: WlrKeyboardFocus.OnDemand exclusionMode: ExclusionMode.Ignore anchors { left: true From 9471223a76bacc38aca96e871ad50ae87fececf3 Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Tue, 4 Nov 2025 15:08:08 +0100 Subject: [PATCH 17/27] nuke primarytab --- .../modules/common/widgets/PrimaryTabBar.qml | 92 ---------- .../common/widgets/PrimaryTabButton.qml | 172 ------------------ 2 files changed, 264 deletions(-) delete mode 100644 dots/.config/quickshell/ii/modules/common/widgets/PrimaryTabBar.qml delete mode 100644 dots/.config/quickshell/ii/modules/common/widgets/PrimaryTabButton.qml diff --git a/dots/.config/quickshell/ii/modules/common/widgets/PrimaryTabBar.qml b/dots/.config/quickshell/ii/modules/common/widgets/PrimaryTabBar.qml deleted file mode 100644 index d606c9e17..000000000 --- a/dots/.config/quickshell/ii/modules/common/widgets/PrimaryTabBar.qml +++ /dev/null @@ -1,92 +0,0 @@ -import qs.modules.common -import qs.services -import QtQuick -import QtQuick.Controls -import QtQuick.Layouts -import Qt.labs.synchronizer - -ColumnLayout { - id: root - spacing: 0 - required property var tabButtonList // Something like [{"icon": "notifications", "name": Translation.tr("Notifications")}, {"icon": "volume_up", "name": Translation.tr("Volume mixer")}] - property alias currentIndex: tabBar.currentIndex - property bool enableIndicatorAnimation: false - property color colIndicator: Appearance?.colors.colPrimary ?? "#65558F" - property color colBorder: Appearance?.m3colors.m3outlineVariant ?? "#C6C6D0" - - onCurrentIndexChanged: { - enableIndicatorAnimation = true - } - - property bool centerTabBar: parent.width > 500 - Layout.fillWidth: !centerTabBar - Layout.alignment: Qt.AlignHCenter - implicitWidth: Math.max(tabBar.implicitWidth, 600) - - TabBar { - id: tabBar - Layout.fillWidth: true - - background: Item { - WheelHandler { - onWheel: (event) => { - if (event.angleDelta.y < 0) - tabBar.incrementCurrentIndex() - else if (event.angleDelta.y > 0) - tabBar.decrementCurrentIndex() - } - acceptedDevices: PointerDevice.Mouse | PointerDevice.TouchPad - } - } - - Repeater { - model: root.tabButtonList - delegate: PrimaryTabButton { - selected: (index == root.currentIndex) - buttonText: modelData.name - buttonIcon: modelData.icon - minimumWidth: 160 - onClicked: tabBar.setCurrentIndex(index) - } - } - } - - Item { // Tab indicator - id: tabIndicator - Layout.fillWidth: true - height: 3 - - Rectangle { - id: indicator - property int tabCount: root.tabButtonList.length - property real fullTabSize: root.width / tabCount; - property real targetWidth: tabBar.contentItem?.children[0]?.children[tabBar.currentIndex]?.tabContentWidth ?? 0 - - implicitWidth: targetWidth - anchors { - top: parent.top - bottom: parent.bottom - } - - x: tabBar.currentIndex * fullTabSize + (fullTabSize - targetWidth) / 2 - - color: root.colIndicator - radius: Appearance?.rounding.full ?? 9999 - - Behavior on x { - animation: Appearance?.animation.elementMove.numberAnimation.createObject(this) - } - - Behavior on implicitWidth { - animation: Appearance?.animation.elementMove.numberAnimation.createObject(this) - } - } - } - - Rectangle { // Tabbar bottom border - id: tabBarBottomBorder - Layout.fillWidth: true - implicitHeight: 1 - color: root.colBorder - } -} diff --git a/dots/.config/quickshell/ii/modules/common/widgets/PrimaryTabButton.qml b/dots/.config/quickshell/ii/modules/common/widgets/PrimaryTabButton.qml deleted file mode 100644 index bedcc2d92..000000000 --- a/dots/.config/quickshell/ii/modules/common/widgets/PrimaryTabButton.qml +++ /dev/null @@ -1,172 +0,0 @@ -import qs.modules.common -import qs.modules.common.widgets -import qs.modules.common.functions -import Qt5Compat.GraphicalEffects -import QtQuick -import QtQuick.Controls -import QtQuick.Layouts - -TabButton { - id: button - property string buttonText - property string buttonIcon - property real minimumWidth: 110 - property bool selected: false - property int tabContentWidth: contentItem.children[0].implicitWidth - property int rippleDuration: 1200 - height: buttonBackground.height - implicitWidth: Math.max(tabContentWidth, buttonBackground.implicitWidth, minimumWidth) - - property color colBackground: ColorUtils.transparentize(Appearance?.colors.colLayer1Hover, 1) || "transparent" - property color colBackgroundHover: Appearance?.colors.colLayer1Hover ?? "#E5DFED" - property color colRipple: Appearance?.colors.colLayer1Active ?? "#D6CEE2" - property color colActive: Appearance?.colors.colPrimary ?? "#65558F" - property color colInactive: Appearance?.colors.colOnLayer1 ?? "#45464F" - - component RippleAnim: NumberAnimation { - duration: rippleDuration - easing.type: Appearance?.animation.elementMoveEnter.type - easing.bezierCurve: Appearance?.animationCurves.standardDecel - } - - MouseArea { - anchors.fill: parent - cursorShape: Qt.PointingHandCursor - onPressed: (event) => { - button.click() // Because the MouseArea already consumed the event - const {x,y} = event - const stateY = buttonBackground.y; - rippleAnim.x = x; - rippleAnim.y = y - stateY; - - const dist = (ox,oy) => ox*ox + oy*oy - const stateEndY = stateY + buttonBackground.height - rippleAnim.radius = Math.sqrt(Math.max(dist(0, stateY), dist(0, stateEndY), dist(width, stateY), dist(width, stateEndY))) - - rippleFadeAnim.complete(); - rippleAnim.restart(); - } - onReleased: (event) => { - rippleFadeAnim.restart(); - } - } - - RippleAnim { - id: rippleFadeAnim - duration: rippleDuration * 2 - target: ripple - property: "opacity" - to: 0 - } - - SequentialAnimation { - id: rippleAnim - - property real x - property real y - property real radius - - PropertyAction { - target: ripple - property: "x" - value: rippleAnim.x - } - PropertyAction { - target: ripple - property: "y" - value: rippleAnim.y - } - PropertyAction { - target: ripple - property: "opacity" - value: 1 - } - ParallelAnimation { - RippleAnim { - target: ripple - properties: "implicitWidth,implicitHeight" - from: 0 - to: rippleAnim.radius * 2 - } - } - } - - background: Rectangle { - id: buttonBackground - radius: Appearance?.rounding.small - implicitHeight: 50 - color: (button.hovered ? button.colBackgroundHover : button.colBackground) - layer.enabled: true - layer.effect: OpacityMask { - maskSource: Rectangle { - width: buttonBackground.width - height: buttonBackground.height - radius: buttonBackground.radius - } - } - - Behavior on color { - animation: Appearance?.animation.elementMoveFast.colorAnimation.createObject(this) - } - - Item { - id: ripple - width: ripple.implicitWidth - height: ripple.implicitHeight - opacity: 0 - - property real implicitWidth: 0 - property real implicitHeight: 0 - visible: width > 0 && height > 0 - - Behavior on opacity { - animation: Appearance?.animation.elementMoveFast.colorAnimation.createObject(this) - } - - RadialGradient { - anchors.fill: parent - gradient: Gradient { - GradientStop { position: 0.0; color: button.colRipple } - GradientStop { position: 0.3; color: button.colRipple } - GradientStop { position: 0.5 ; color: Qt.rgba(button.colRipple.r, button.colRipple.g, button.colRipple.b, 0) } - } - } - - transform: Translate { - x: -ripple.width / 2 - y: -ripple.height / 2 - } - } - } - - contentItem: Item { - anchors.centerIn: buttonBackground - ColumnLayout { - anchors.centerIn: parent - spacing: 0 - MaterialSymbol { - visible: buttonIcon?.length > 0 - Layout.alignment: Qt.AlignHCenter - horizontalAlignment: Text.AlignHCenter - text: buttonIcon - iconSize: Appearance?.font.pixelSize.hugeass ?? 25 - fill: selected ? 1 : 0 - color: selected ? button.colActive : button.colInactive - Behavior on color { - animation: Appearance?.animation.elementMoveFast.colorAnimation.createObject(this) - } - } - StyledText { - id: buttonTextWidget - Layout.alignment: Qt.AlignHCenter - horizontalAlignment: Text.AlignHCenter - font.pixelSize: Appearance?.font.pixelSize.small - color: selected ? button.colActive : button.colInactive - text: buttonText - Behavior on color { - animation: Appearance?.animation.elementMoveFast.colorAnimation.createObject(this) - } - } - } - } -} \ No newline at end of file From 9d830767c7276a6b4f434ddd536198af02b4bdec Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Tue, 4 Nov 2025 15:10:55 +0100 Subject: [PATCH 18/27] lock: fix wrong password shake fricks up text field placement (#2368) --- .../quickshell/ii/modules/lock/LockSurface.qml | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/dots/.config/quickshell/ii/modules/lock/LockSurface.qml b/dots/.config/quickshell/ii/modules/lock/LockSurface.qml index 4fc147de4..526a7d3b4 100644 --- a/dots/.config/quickshell/ii/modules/lock/LockSurface.qml +++ b/dots/.config/quickshell/ii/modules/lock/LockSurface.qml @@ -119,6 +119,7 @@ MouseArea { ToolbarTextField { id: passwordBox + Layout.rightMargin: -Layout.leftMargin placeholderText: GlobalStates.screenUnlockFailed ? Translation.tr("Incorrect password") : Translation.tr("Enter password") // Style @@ -156,11 +157,11 @@ MouseArea { // Shake when wrong password SequentialAnimation { id: wrongPasswordShakeAnim - NumberAnimation { target: passwordBox; property: "x"; to: -30; duration: 50 } - NumberAnimation { target: passwordBox; property: "x"; to: 30; duration: 50 } - NumberAnimation { target: passwordBox; property: "x"; to: -15; duration: 40 } - NumberAnimation { target: passwordBox; property: "x"; to: 15; duration: 40 } - NumberAnimation { target: passwordBox; property: "x"; to: 0; duration: 30 } + NumberAnimation { target: passwordBox; property: "Layout.leftMargin"; to: -30; duration: 50 } + NumberAnimation { target: passwordBox; property: "Layout.leftMargin"; to: 30; duration: 50 } + NumberAnimation { target: passwordBox; property: "Layout.leftMargin"; to: -15; duration: 40 } + NumberAnimation { target: passwordBox; property: "Layout.leftMargin"; to: 15; duration: 40 } + NumberAnimation { target: passwordBox; property: "Layout.leftMargin"; to: 0; duration: 30 } } Connections { target: GlobalStates From 67695c8edb2852817093acf946fb2296525685c0 Mon Sep 17 00:00:00 2001 From: end-4 <97237370+end-4@users.noreply.github.com> Date: Tue, 4 Nov 2025 22:52:48 +0100 Subject: [PATCH 19/27] Update OverviewWidget.qml --- .../.config/quickshell/ii/modules/overview/OverviewWidget.qml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dots/.config/quickshell/ii/modules/overview/OverviewWidget.qml b/dots/.config/quickshell/ii/modules/overview/OverviewWidget.qml index 50e3a8ee1..18501b082 100644 --- a/dots/.config/quickshell/ii/modules/overview/OverviewWidget.qml +++ b/dots/.config/quickshell/ii/modules/overview/OverviewWidget.qml @@ -224,8 +224,8 @@ Item { } z: Drag.active ? root.windowDraggingZ : (root.windowZ + windowData?.floating) - Drag.hotSpot.x: targetWindowWidth / 2 - Drag.hotSpot.y: targetWindowHeight / 2 + Drag.hotSpot.x: width / 2 + Drag.hotSpot.y: height / 2 MouseArea { id: dragArea anchors.fill: parent From c19766c88795737fac10653e09c0bbcd6380d65a Mon Sep 17 00:00:00 2001 From: clsty Date: Wed, 5 Nov 2025 07:31:04 +0800 Subject: [PATCH 20/27] Updpate flake.lock --- sdata/dist-nix/home-manager/flake.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/sdata/dist-nix/home-manager/flake.lock b/sdata/dist-nix/home-manager/flake.lock index c184eee32..0f2007bf6 100644 --- a/sdata/dist-nix/home-manager/flake.lock +++ b/sdata/dist-nix/home-manager/flake.lock @@ -45,11 +45,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1752054764, - "narHash": "sha256-Ob/HuUhANoDs+nvYqyTKrkcPXf4ZgXoqMTQoCK0RFgQ=", + "lastModified": 1762090880, + "narHash": "sha256-fbRQzIGPkjZa83MowjbD2ALaJf9y6KMDdJBQMKFeY/8=", "owner": "nix-community", "repo": "nixGL", - "rev": "a8e1ce7d49a149ed70df676785b07f63288f53c5", + "rev": "b6105297e6f0cd041670c3e8628394d4ee247ed5", "type": "github" }, "original": { @@ -75,11 +75,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1761597516, - "narHash": "sha256-wxX7u6D2rpkJLWkZ2E932SIvDJW8+ON/0Yy8+a5vsDU=", + "lastModified": 1761999846, + "narHash": "sha256-IYlYnp4O4dzEpL77BD/lj5NnJy2J8qbHkNSFiPBCbqo=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "daf6dc47aa4b44791372d6139ab7b25269184d55", + "rev": "3de8f8d73e35724bf9abef41f1bdbedda1e14a31", "type": "github" }, "original": { From 51076dda88d338cc6b597ceff65ff0ff2efeee08 Mon Sep 17 00:00:00 2001 From: clsty Date: Wed, 5 Nov 2025 07:55:22 +0800 Subject: [PATCH 21/27] Update TODO --- sdata/dist-nix/home-manager/home.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/sdata/dist-nix/home-manager/home.nix b/sdata/dist-nix/home-manager/home.nix index 63a895af0..b0af38bf5 100644 --- a/sdata/dist-nix/home-manager/home.nix +++ b/sdata/dist-nix/home-manager/home.nix @@ -4,6 +4,8 @@ nixGL.packages = nixgl.packages; nixGL.defaultWrapper = "mesa"; + # TODO: The home.nix generates ~/.config/fontconfig conflicts with the one under dots/ + # TODO: The home.nix generates ~/.config/xdg-desktop-portal conflicts with the one under dots/ xdg.portal = { enable = true; extraPortals = with pkgs; [ From e24630b9be089063e88a02ddb18d470a87f1d004 Mon Sep 17 00:00:00 2001 From: clsty Date: Wed, 5 Nov 2025 08:40:05 +0800 Subject: [PATCH 22/27] Use qt6 and NixGL wrapper for quickshell --- sdata/dist-nix/home-manager/home.nix | 3 +- sdata/dist-nix/home-manager/quickshell.nix | 40 ++++++++++++++++++++++ 2 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 sdata/dist-nix/home-manager/quickshell.nix diff --git a/sdata/dist-nix/home-manager/home.nix b/sdata/dist-nix/home-manager/home.nix index b0af38bf5..236b2f39f 100644 --- a/sdata/dist-nix/home-manager/home.nix +++ b/sdata/dist-nix/home-manager/home.nix @@ -207,7 +207,8 @@ ] ++ [ #(config.lib.nixGL.wrap pkgs.hyprland) - (config.lib.nixGL.wrap quickshell.packages.x86_64-linux.default) + #(config.lib.nixGL.wrap quickshell.packages.x86_64-linux.default) + (import ./quickshell.nix { inherit pkgs quickshell; nixGLWrap = config.lib.nixGL.wrap; }) ]; }//home_attrs; } diff --git a/sdata/dist-nix/home-manager/quickshell.nix b/sdata/dist-nix/home-manager/quickshell.nix new file mode 100644 index 000000000..7b4fbee20 --- /dev/null +++ b/sdata/dist-nix/home-manager/quickshell.nix @@ -0,0 +1,40 @@ +{ pkgs, quickshell, nixGLWrap, ... }: +let + qs = nixGLWrap quickshell.packages.x86_64-linux.default; +in pkgs.stdenv.mkDerivation { + name = "illogical-impulse-quickshell-wrapper"; + dontUnpack = true; + dontConfigure = true; + dontBuild = true; + + nativeBuildInputs = [ + pkgs.makeWrapper + pkgs.qt6.wrapQtAppsHook + ]; + + buildInputs = with pkgs; [ + qs + qt6.qtbase + kdePackages.qt5compat + kdePackages.qtdeclarative + kdePackages.kdialog + kdePackages.qtwayland + kdePackages.qtpositioning + kdePackages.qtlocation + kdePackages.syntax-highlighting + gsettings-desktop-schemas + ]; + + installPhase = '' + mkdir -p $out/bin + ls -l ${qs}/bin || true + makeWrapper ${qs}/bin/qs $out/bin/qs \ + --prefix XDG_DATA_DIRS : ${pkgs.gsettings-desktop-schemas}/share/gsettings-schemas/${pkgs.gsettings-desktop-schemas.name} + chmod +x $out/bin/qs + ''; + + meta = with pkgs.lib; { + description = "Quickshell wrapped with NixGL + bundled Qt deps for home-manager usage"; + license = licenses.mit; + }; +} From 5f4f8980f086e262498eab851cad629210c4cdfb Mon Sep 17 00:00:00 2001 From: clsty Date: Wed, 5 Nov 2025 10:24:21 +0800 Subject: [PATCH 23/27] Move Qt deps into Quickshell PKGBUILD --- .../illogical-impulse-quickshell-git/PKGBUILD | 17 +++++++++++++++- .../illogical-impulse-toolkit/PKGBUILD | 20 ++----------------- 2 files changed, 18 insertions(+), 19 deletions(-) diff --git a/sdata/dist-arch/illogical-impulse-quickshell-git/PKGBUILD b/sdata/dist-arch/illogical-impulse-quickshell-git/PKGBUILD index 9aac9658c..b7909843b 100644 --- a/sdata/dist-arch/illogical-impulse-quickshell-git/PKGBUILD +++ b/sdata/dist-arch/illogical-impulse-quickshell-git/PKGBUILD @@ -9,7 +9,7 @@ conflicts=("quickshell-git") _pkgname=quickshell pkgname="$_prefix-$_pkgname-git" pkgver=0.1.0.r1 -pkgrel=3 +pkgrel=4 pkgdesc="$_pkgname-git which version pinned for $_prefix" arch=(x86_64 aarch64) url='https://git.outfoxxed.me/quickshell/quickshell' @@ -26,6 +26,21 @@ depends=( 'libdrm' 'mesa' 'google-breakpad' + # NOTE: Below are custom dependencies of illogical-impulse + qt6-5compat + qt6-avif-image-plugin + qt6-imageformats + qt6-multimedia + qt6-positioning + qt6-quicktimeline + qt6-sensors + qt6-svg + qt6-tools + qt6-translations + qt6-virtualkeyboard + qt6-wayland + kdialog + syntax-highlighting ) makedepends=( 'spirv-tools' diff --git a/sdata/dist-arch/illogical-impulse-toolkit/PKGBUILD b/sdata/dist-arch/illogical-impulse-toolkit/PKGBUILD index f3e4f943b..fa0823ea7 100644 --- a/sdata/dist-arch/illogical-impulse-toolkit/PKGBUILD +++ b/sdata/dist-arch/illogical-impulse-toolkit/PKGBUILD @@ -1,27 +1,11 @@ pkgname=illogical-impulse-toolkit pkgver=1.0 -pkgrel=1 -pkgdesc='Illogical Impulse GTK/Qt Dependencies' +pkgrel=2 +pkgdesc='Illogical Impulse Toolkit Dependencies' arch=(any) license=(None) depends=( - kdialog - syntax-highlighting upower wtype ydotool - qt6-5compat - qt6-avif-image-plugin - qt6-base - qt6-declarative - qt6-imageformats - qt6-multimedia - qt6-positioning - qt6-quicktimeline - qt6-sensors - qt6-svg - qt6-tools - qt6-translations - qt6-virtualkeyboard - qt6-wayland ) From 22469dc5f29cd0e721623eaab9f86a4b0034e82d Mon Sep 17 00:00:00 2001 From: clsty Date: Wed, 5 Nov 2025 10:40:08 +0800 Subject: [PATCH 24/27] Update dist-nix (use unstable nixpkgs) --- sdata/dist-nix/home-manager/flake.nix | 10 ++--- sdata/dist-nix/home-manager/home.nix | 43 +++++----------------- sdata/dist-nix/home-manager/quickshell.nix | 32 +++++++++++----- 3 files changed, 37 insertions(+), 48 deletions(-) diff --git a/sdata/dist-nix/home-manager/flake.nix b/sdata/dist-nix/home-manager/flake.nix index d9b9a30b6..2c8ba6821 100644 --- a/sdata/dist-nix/home-manager/flake.nix +++ b/sdata/dist-nix/home-manager/flake.nix @@ -3,15 +3,14 @@ description = "illogical-impulse"; inputs = { - nixpkgs.url = "nixpkgs/nixos-25.05"; + #nixpkgs.url = "nixpkgs/nixos-25.05"; + nixpkgs.url = "nixpkgs/nixos-unstable"; home-manager = { - url = "github:nix-community/home-manager/release-25.05"; + #url = "github:nix-community/home-manager/release-25.05"; + url = "github:nix-community/home-manager/master"; inputs.nixpkgs.follows = "nixpkgs"; }; - #hyprland = { - # url = "github:hyprwm/Hyprland"; - #}; nixgl.url = "github:nix-community/nixGL"; quickshell = { url = "github:quickshell-mirror/quickshell/db1777c20b936a86528c1095cbcb1ebd92801402"; @@ -24,6 +23,7 @@ home_attrs = rec { username = import ./username.nix; homeDirectory = "/home/${username}"; + # Do not edit stateVersion value, see https://github.com/nix-community/home-manager/issues/5794 stateVersion = "25.05"; }; system = "x86_64-linux"; diff --git a/sdata/dist-nix/home-manager/home.nix b/sdata/dist-nix/home-manager/home.nix index 236b2f39f..e9646a4ab 100644 --- a/sdata/dist-nix/home-manager/home.nix +++ b/sdata/dist-nix/home-manager/home.nix @@ -4,8 +4,6 @@ nixGL.packages = nixgl.packages; nixGL.defaultWrapper = "mesa"; - # TODO: The home.nix generates ~/.config/fontconfig conflicts with the one under dots/ - # TODO: The home.nix generates ~/.config/xdg-desktop-portal conflicts with the one under dots/ xdg.portal = { enable = true; extraPortals = with pkgs; [ @@ -14,15 +12,14 @@ xdg-desktop-portal-wlr kdePackages.xdg-desktop-portal-kde ]; - config.hyprland = { - default = [ "hyprland" "gtk" ]; - "org.freedesktop.impl.portal.ScreenCast" = [ - "gnome" - ]; - }; + # The following seems to generate ~/.config/xdg-desktop-portal conflicting with the one under dots/ + #config.hyprland = { + # default = [ "hyprland" "gtk" ]; + # "org.freedesktop.impl.portal.ScreenCast" = [ "gnome" ]; + #}; }; - ## Allow fontconfig to discover fonts in home.packages - fonts.fontconfig.enable = true; + # The following seems to generate ~/.config/fontconfig conflicting with the one under dots/ + #fonts.fontconfig.enable = true; wayland.windowManager.hyprland = { ## Make sure home-manager not generate ~/.config/hypr/hyprland.conf @@ -32,8 +29,6 @@ package = config.lib.nixGL.wrap pkgs.hyprland; }; - - home = { packages = with pkgs; [ ##### Sure ##### @@ -155,10 +150,6 @@ gobject-introspection #gobject-introspection (Not explicitly used) - ### illogical-impulse-quickshell-git - #quickshell.packages.x86_64-linux.default (NixGL applicable, included elsewhere) - - ### illogical-impulse-screencapture hyprshot #hyprshot (Used in Hyprland keybinds.conf as fallback) slurp #slurp (Used in Hyprland and Quickshell config) @@ -169,24 +160,6 @@ ### illogical-impulse-toolkit - kdePackages.kdialog #kdialog (Used in Quickshell config) - # https://nixos.wiki/wiki/Qt - # https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/libraries/qt-6/srcs.nix - qt6.qt5compat #qt6-5compat - #qt6.qtimageformats (TODO: really?) #qt6-avif-image-plugin - qt6.qtbase #qt6-base - qt6.qtdeclarative #qt6-declarative - qt6.qtimageformats #qt6-imageformats - qt6.qtmultimedia #qt6-multimedia - qt6.qtpositioning #qt6-positioning - qt6.qtquicktimeline #qt6-quicktimeline - qt6.qtsensors #qt6-sensors - qt6.qtsvg #qt6-svg - qt6.qttools #qt6-tools - qt6.qttranslations #qt6-translations - qt6.qtvirtualkeyboard #qt6-virtualkeyboard - qt6.qtwayland #qt6-wayland - kdePackages.syntax-highlighting #syntax-highlighting (Used in Quickshell config) upower #upower (Used in Quickshell config) wtype #wtype (Used in Hyprland scripts/fuzzel-emoji.sh) ydotool #ydotool (Used in Quickshell config) @@ -207,6 +180,8 @@ ] ++ [ #(config.lib.nixGL.wrap pkgs.hyprland) + + ### illogical-impulse-quickshell-git #(config.lib.nixGL.wrap quickshell.packages.x86_64-linux.default) (import ./quickshell.nix { inherit pkgs quickshell; nixGLWrap = config.lib.nixGL.wrap; }) ]; diff --git a/sdata/dist-nix/home-manager/quickshell.nix b/sdata/dist-nix/home-manager/quickshell.nix index 7b4fbee20..83601718d 100644 --- a/sdata/dist-nix/home-manager/quickshell.nix +++ b/sdata/dist-nix/home-manager/quickshell.nix @@ -3,6 +3,11 @@ let qs = nixGLWrap quickshell.packages.x86_64-linux.default; in pkgs.stdenv.mkDerivation { name = "illogical-impulse-quickshell-wrapper"; + meta = with pkgs.lib; { + description = "Quickshell wrapped with NixGL + bundled Qt deps for home-manager usage"; + license = licenses.gpl3Only; + }; + dontUnpack = true; dontConfigure = true; dontBuild = true; @@ -14,15 +19,29 @@ in pkgs.stdenv.mkDerivation { buildInputs = with pkgs; [ qs - qt6.qtbase - kdePackages.qt5compat - kdePackages.qtdeclarative - kdePackages.kdialog kdePackages.qtwayland kdePackages.qtpositioning kdePackages.qtlocation kdePackages.syntax-highlighting gsettings-desktop-schemas + # https://nixos.wiki/wiki/Qt + # https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/libraries/qt-6/srcs.nix + qt6.qtbase #qt6-base + qt6.qtdeclarative #qt6-declarative + qt6.qt5compat #qt6-5compat + #qt6-avif-image-plugin (TODO: seems not available as nixpkg) + qt6.qtimageformats #qt6-imageformats + qt6.qtmultimedia #qt6-multimedia + qt6.qtpositioning #qt6-positioning + qt6.qtquicktimeline #qt6-quicktimeline + qt6.qtsensors #qt6-sensors + qt6.qtsvg #qt6-svg + qt6.qttools #qt6-tools + qt6.qttranslations #qt6-translations + qt6.qtvirtualkeyboard #qt6-virtualkeyboard + qt6.qtwayland #qt6-wayland + kdePackages.kdialog #kdialog (Used in Quickshell config) + kdePackages.syntax-highlighting #syntax-highlighting (Used in Quickshell config) ]; installPhase = '' @@ -32,9 +51,4 @@ in pkgs.stdenv.mkDerivation { --prefix XDG_DATA_DIRS : ${pkgs.gsettings-desktop-schemas}/share/gsettings-schemas/${pkgs.gsettings-desktop-schemas.name} chmod +x $out/bin/qs ''; - - meta = with pkgs.lib; { - description = "Quickshell wrapped with NixGL + bundled Qt deps for home-manager usage"; - license = licenses.mit; - }; } From a92bd67957e92e6e83e344f48acd5073ce08f720 Mon Sep 17 00:00:00 2001 From: clsty Date: Wed, 5 Nov 2025 10:44:48 +0800 Subject: [PATCH 25/27] Update flake.lock --- sdata/dist-nix/home-manager/flake.lock | 16 ++++++++-------- sdata/dist-nix/home-manager/flake.nix | 1 + 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/sdata/dist-nix/home-manager/flake.lock b/sdata/dist-nix/home-manager/flake.lock index 0f2007bf6..8485622b2 100644 --- a/sdata/dist-nix/home-manager/flake.lock +++ b/sdata/dist-nix/home-manager/flake.lock @@ -25,16 +25,16 @@ ] }, "locked": { - "lastModified": 1758463745, - "narHash": "sha256-uhzsV0Q0I9j2y/rfweWeGif5AWe0MGrgZ/3TjpDYdGA=", + "lastModified": 1762296971, + "narHash": "sha256-Jyv3L5rrUYpecON+9zyFz2VqgTSTsIG35fXuCyuCQv0=", "owner": "nix-community", "repo": "home-manager", - "rev": "3b955f5f0a942f9f60cdc9cacb7844335d0f21c3", + "rev": "34fe48801d2a5301b814eaa1efb496499d06cebc", "type": "github" }, "original": { "owner": "nix-community", - "ref": "release-25.05", + "ref": "master", "repo": "home-manager", "type": "github" } @@ -75,16 +75,16 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1761999846, - "narHash": "sha256-IYlYnp4O4dzEpL77BD/lj5NnJy2J8qbHkNSFiPBCbqo=", + "lastModified": 1762111121, + "narHash": "sha256-4vhDuZ7OZaZmKKrnDpxLZZpGIJvAeMtK6FKLJYUtAdw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "3de8f8d73e35724bf9abef41f1bdbedda1e14a31", + "rev": "b3d51a0365f6695e7dd5cdf3e180604530ed33b4", "type": "github" }, "original": { "id": "nixpkgs", - "ref": "nixos-25.05", + "ref": "nixos-unstable", "type": "indirect" } }, diff --git a/sdata/dist-nix/home-manager/flake.nix b/sdata/dist-nix/home-manager/flake.nix index 2c8ba6821..d88daad6e 100644 --- a/sdata/dist-nix/home-manager/flake.nix +++ b/sdata/dist-nix/home-manager/flake.nix @@ -3,6 +3,7 @@ description = "illogical-impulse"; inputs = { + # Qt 6.10 is not yet available from released version of nixpkgs. #nixpkgs.url = "nixpkgs/nixos-25.05"; nixpkgs.url = "nixpkgs/nixos-unstable"; From 564fd54cdb4f698158d8e65b0ecc3d641d04a347 Mon Sep 17 00:00:00 2001 From: clsty Date: Wed, 5 Nov 2025 11:51:47 +0800 Subject: [PATCH 26/27] Update dist-nix (improve install via system PM) --- sdata/dist-nix/home-manager/home.nix | 8 +-- sdata/dist-nix/install-deps.sh | 86 +++++++---------------- sdata/dist-nix/install-setups.sh | 39 ++++++++++ sdata/subcmd-install/2.setups-selector.sh | 2 +- 4 files changed, 70 insertions(+), 65 deletions(-) create mode 100644 sdata/dist-nix/install-setups.sh diff --git a/sdata/dist-nix/home-manager/home.nix b/sdata/dist-nix/home-manager/home.nix index e9646a4ab..e8f96cde2 100644 --- a/sdata/dist-nix/home-manager/home.nix +++ b/sdata/dist-nix/home-manager/home.nix @@ -87,7 +87,7 @@ #breeze-plus (https://github.com/mjkim0727/breeze-plus) (TODO: Not available as nixpkg) (Used in kde-material-you-colors config) darkly darkly-qt5 #darkly-bin (darkly is supposed to be set as the theme for Qt apps, just have not figured out how to properly set it yet.) eza #eza (Used in Fish config: `alias ls 'eza --icons'`) - #fish (Install via system PM instead) + #fish (Install via system PM instead; TODO: should install via nix in future when authentication problem fixed) fontconfig #fontconfig (Basic thing) kitty #kitty (Used in fuzzel, Hyprland, kdeglobals and Quickshell config; kitty config is also included as dots) matugen #matugen-bin (Used in Quickshell) @@ -105,7 +105,7 @@ ### illogical-impulse-hyprland hypridle #hypridle (Used for loginctl to lock session) #hyprland (Need NixGL, included elsewhere) - #hyprlock (Should not be installed via Nix) + #hyprlock (Should not be installed via Nix; TODO: should install via nix in future when authentication problem fixed) hyprpicker #hyprpicker (Used in Hyprland and Quickshell config) hyprsunset #hyprsunset (Used in Quickshell config) #xdg-desktop-portal-hyprland (DUPLICATE) @@ -114,10 +114,10 @@ ### illogical-impulse-kde kdePackages.bluedevil #bluedevil (Seems not being used anywhere, maybe a part of KDE settings panel) - #gnome-keyring #gnome-keyring (TODO: Install via system PM instead) (Provide executable gnome-keyring-daemon, used in Hyprland and Quickshell config) + #gnome-keyring #gnome-keyring (TODO: Install via system PM instead; should install via nix in future when authentication problem fixed) (Provide executable gnome-keyring-daemon, used in Hyprland and Quickshell config) networkmanager #networkmanager kdePackages.plasma-nm #plasma-nm (Seems not being used anywhere, maybe a part of KDE settings panel) - #polkit-kde-agent (TODO: Install via system PM instead) + #polkit-kde-agent (TODO: Install via system PM instead; should install via nix in future when authentication problem fixed) kdePackages.dolphin #dolphin (Used in Hyprland and Quickshell config) kdePackages.systemsettings #systemsettings (Used in Hyprland keybinds.conf) diff --git a/sdata/dist-nix/install-deps.sh b/sdata/dist-nix/install-deps.sh index 731258e87..0de7cccc7 100644 --- a/sdata/dist-nix/install-deps.sh +++ b/sdata/dist-nix/install-deps.sh @@ -45,56 +45,24 @@ function install_nix(){ echo "Please install it by yourself and then retry." return 1 } -function install_curl(){ - local cmd=curl - +function install_cmds(){ if [[ "$OS_DISTRO_ID" == "arch" || "$OS_DISTRO_ID_LIKE" == "arch" || "$OS_DISTRO_ID" == "cachyos" ]]; then + local pkgs=() + for cmd in "$@";do + # For package name which is not cmd name, use "case" syntax to replace + pkgs+=($cmd) + done x sudo pacman -Syu - x sudo pacman -S --noconfirm $cmd + x sudo pacman -S --noconfirm --needed "${pkgs[@]}" elif [[ "$OS_DISTRO_ID" == "debian" || "$OS_DISTRO_ID_LIKE" == "debian" ]]; then - x sudo apt update - x sudo apt install $cmd + local pkgs=() + for cmd in "$@";do + # For package name which is not cmd name, use "case" syntax to replace + pkgs+=($cmd) + done + x sudo apt update -y + x sudo apt install -y "${pkgs[@]}" fi - - command -v $cmd && return - echo "Failed in installing $cmd." - echo "Please install it by yourself and then retry." - return 1 -} -function install_fish(){ - local cmd=fish - - if [[ "$OS_DISTRO_ID" == "arch" || "$OS_DISTRO_ID_LIKE" == "arch" || "$OS_DISTRO_ID" == "cachyos" ]]; then - x sudo pacman -Syu - x sudo pacman -S --noconfirm $cmd - elif [[ "$OS_DISTRO_ID" == "debian" || "$OS_DISTRO_ID_LIKE" == "debian" ]]; then - x sudo apt update - x sudo apt install $cmd - fi - - command -v $cmd && return - echo "Failed in installing $cmd." - echo "Please install it by yourself and then retry." - return 1 -} -function install_swaylock(){ - local cmd=swaylock - echo "Detecting command \"$cmd\"..." - command -v $cmd && return - echo "Command \"$cmd\" not found, try to install..." - - if [[ "$OS_DISTRO_ID" == "arch" || "$OS_DISTRO_ID_LIKE" == "arch" || "$OS_DISTRO_ID" == "cachyos" ]]; then - x sudo pacman -Syu - x sudo pacman -S --noconfirm $cmd - elif [[ "$OS_DISTRO_ID" == "debian" || "$OS_DISTRO_ID_LIKE" == "debian" ]]; then - x sudo apt update - x sudo apt install $cmd - fi - - command -v $cmd && return - echo "Failed in installing $cmd." - echo "Please install it by yourself and then retry." - return 1 } function hm_deps(){ @@ -115,21 +83,19 @@ function hm_deps(){ vianix-warning -if ! command -v curl >/dev/null 2>&1;then - echo -e "${STY_YELLOW}[$0]: \"curl\" not found.${STY_RST}" - showfun install_curl - v install_curl -fi -if ! command -v fish >/dev/null 2>&1;then - echo -e "${STY_YELLOW}[$0]: \"fish\" not found.${STY_RST}" - showfun install_fish - v install_fish -fi -if ! command -v swaylock >/dev/null 2>&1;then - echo -e "${STY_YELLOW}[$0]: \"swaylock\" not found.${STY_RST}" - showfun install_swaylock - v install_swaylock +NOT_FOUND_CMDS=() +TEST_CMDS=(curl fish swaylock gnome-keyring) +for cmd in "${TEST_CMDS[@]}"; do + if ! command -v $cmd >/dev/null 2>&1;then + NOT_FOUND_CMDS+=($cmd) + fi +done +if [[ ${#NOT_FOUND_CMDS[@]} -gt 0 ]]; then + echo -e "${STY_YELLOW}[$0]: Not found: ${NOT_FOUND_CMDS[*]}.${STY_RST}" + showfun install_cmds + v install_cmds "${NOT_FOUND_CMDS[@]}" fi + if ! command -v nix >/dev/null 2>&1;then echo -e "${STY_YELLOW}[$0]: \"nix\" not found.${STY_RST}" showfun install_nix diff --git a/sdata/dist-nix/install-setups.sh b/sdata/dist-nix/install-setups.sh new file mode 100644 index 000000000..0ddcfcf37 --- /dev/null +++ b/sdata/dist-nix/install-setups.sh @@ -0,0 +1,39 @@ +# This script is meant to be sourced. +# It's not for directly running. + +##################################################################################### +# These python packages are installed using uv into the venv (virtual environment). Once the folder of the venv gets deleted, they are all gone cleanly. So it's considered as setups, not dependencies. +showfun install-python-packages +v install-python-packages + +if [[ -z $(getent group i2c) ]]; then + v sudo groupadd i2c +fi + +v sudo usermod -aG video,i2c,input "$(whoami)" + +if [[ ! -z $(systemctl --version) ]]; then + v bash -c "echo i2c-dev | sudo tee /etc/modules-load.d/i2c-dev.conf" + # TODO: find a proper way for enable Nix installed ydotool + if ! [[ "${INSTALL_VIA_NIX}" == true ]]; then + v systemctl --user enable ydotool --now + fi + v sudo systemctl enable bluetooth --now +elif [[ ! -z $(openrc --version) ]]; then + v bash -c "echo 'modules=i2c-dev' | sudo tee -a /etc/conf.d/modules" + v sudo rc-update add modules boot + v sudo rc-update add ydotool default + v sudo rc-update add bluetooth default + + x sudo rc-service ydotool start + x sudo rc-service bluetooth start +else + printf "${STY_RED}" + printf "====================INIT SYSTEM NOT FOUND====================\n" + printf "${STY_RST}" + pause +fi + +v gsettings set org.gnome.desktop.interface font-name 'Rubik 11' +v gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark' +v kwriteconfig6 --file kdeglobals --group KDE --key widgetStyle Darkly diff --git a/sdata/subcmd-install/2.setups-selector.sh b/sdata/subcmd-install/2.setups-selector.sh index e4c8e612d..0a72e8728 100644 --- a/sdata/subcmd-install/2.setups-selector.sh +++ b/sdata/subcmd-install/2.setups-selector.sh @@ -19,7 +19,7 @@ export OS_DISTRO_ID_LIKE=$(awk -F'=' '/^ID_LIKE=/ { gsub("\"","",$2); print tolo if [[ "$INSTALL_VIA_NIX" == "true" ]]; then - TARGET_ID=fallback + TARGET_ID=nix printf "${STY_YELLOW}" printf "===WARNING===\n" printf "./sdata/dist-${TARGET_ID}/install-setups.sh will be used.\n" From 8214e2d052c7300628b14d6b8c1256adcd102f3c Mon Sep 17 00:00:00 2001 From: clsty Date: Wed, 5 Nov 2025 12:17:43 +0800 Subject: [PATCH 27/27] Update dist-nix/install-deps.sh --- sdata/dist-nix/install-deps.sh | 81 ++++++++++++++++++++-------------- 1 file changed, 47 insertions(+), 34 deletions(-) diff --git a/sdata/dist-nix/install-deps.sh b/sdata/dist-nix/install-deps.sh index 0de7cccc7..cda6f38f4 100644 --- a/sdata/dist-nix/install-deps.sh +++ b/sdata/dist-nix/install-deps.sh @@ -8,7 +8,54 @@ function vianix-warning(){ printf "despite that this should be reversible.\n" pause } +function install_cmds(){ + if [[ "$OS_DISTRO_ID" == "arch" || "$OS_DISTRO_ID_LIKE" == "arch" || "$OS_DISTRO_ID" == "cachyos" ]]; then + local pkgs=() + for cmd in "$@";do + # For package name which is not cmd name, use "case" syntax to replace + pkgs+=($cmd) + done + x sudo pacman -Syu + x sudo pacman -S --noconfirm --needed "${pkgs[@]}" + elif [[ "$OS_DISTRO_ID" == "debian" || "$OS_DISTRO_ID_LIKE" == "debian" ]]; then + local pkgs=() + for cmd in "$@";do + # For package name which is not cmd name, use "case" syntax to replace + pkgs+=($cmd) + done + x sudo apt update -y + x sudo apt install -y "${pkgs[@]}" + elif [[ "$OS_DISTRO_ID" == "fedora" || "$OS_DISTRO_ID_LIKE" == "fedora" ]]; then + local pkgs=() + for cmd in "$@";do + # For package name which is not cmd name, use "case" syntax to replace + pkgs+=($cmd) + done + x sudo dnf install -y "${pkgs[@]}" + elif [[ "$OS_DISTRO_ID" =~ ^(opensuse-leap|opensuse-tumbleweed)$ ]] || [[ "$OS_DISTRO_ID_LIKE" =~ ^(opensuse|suse)(\ (opensuse|suse))?$ ]]; then + local pkgs=() + for cmd in "$@";do + # For package name which is not cmd name, use "case" syntax to replace + pkgs+=($cmd) + done + x sudo zypper refresh + x sudo zypper -n install "${pkgs[@]}" + fi +} +function install_nix(){ + # https://github.com/NixOS/experimental-nix-installer + local cmd=nix + x mkdir -p ${REPO_ROOT}/cache + x curl -JLo ${REPO_ROOT}/cache/nix-installer https://artifacts.nixos.org/experimental-installer + x sh ${REPO_ROOT}/cache/nix-installer install + try source '/nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh' + + command -v $cmd && return + echo "Failed in installing $cmd." + echo "Please install it by yourself and then retry." + return 1 +} function install_home-manager(){ # https://nix-community.github.io/home-manager/index.xhtml#sec-install-standalone local cmd=home-manager @@ -31,40 +78,6 @@ function install_home-manager(){ echo "If this is the problem, use \"su - user\" instead." return 1 } -function install_nix(){ - # https://github.com/NixOS/experimental-nix-installer - local cmd=nix - - x mkdir -p ${REPO_ROOT}/cache - x curl -JLo ${REPO_ROOT}/cache/nix-installer https://artifacts.nixos.org/experimental-installer - x sh ${REPO_ROOT}/cache/nix-installer install - try source '/nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh' - - command -v $cmd && return - echo "Failed in installing $cmd." - echo "Please install it by yourself and then retry." - return 1 -} -function install_cmds(){ - if [[ "$OS_DISTRO_ID" == "arch" || "$OS_DISTRO_ID_LIKE" == "arch" || "$OS_DISTRO_ID" == "cachyos" ]]; then - local pkgs=() - for cmd in "$@";do - # For package name which is not cmd name, use "case" syntax to replace - pkgs+=($cmd) - done - x sudo pacman -Syu - x sudo pacman -S --noconfirm --needed "${pkgs[@]}" - elif [[ "$OS_DISTRO_ID" == "debian" || "$OS_DISTRO_ID_LIKE" == "debian" ]]; then - local pkgs=() - for cmd in "$@";do - # For package name which is not cmd name, use "case" syntax to replace - pkgs+=($cmd) - done - x sudo apt update -y - x sudo apt install -y "${pkgs[@]}" - fi -} - function hm_deps(){ SETUP_HM_DIR="${REPO_ROOT}/sdata/dist-nix/home-manager" SETUP_USERNAME_NIXFILE="${SETUP_HM_DIR}/username.nix"