This commit is contained in:
end-4
2025-11-05 08:52:18 +01:00
9 changed files with 205 additions and 153 deletions
@@ -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'
@@ -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
)
+11 -11
View File
@@ -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"
}
@@ -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,16 +75,16 @@
},
"nixpkgs_2": {
"locked": {
"lastModified": 1761597516,
"narHash": "sha256-wxX7u6D2rpkJLWkZ2E932SIvDJW8+ON/0Yy8+a5vsDU=",
"lastModified": 1762111121,
"narHash": "sha256-4vhDuZ7OZaZmKKrnDpxLZZpGIJvAeMtK6FKLJYUtAdw=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "daf6dc47aa4b44791372d6139ab7b25269184d55",
"rev": "b3d51a0365f6695e7dd5cdf3e180604530ed33b4",
"type": "github"
},
"original": {
"id": "nixpkgs",
"ref": "nixos-25.05",
"ref": "nixos-unstable",
"type": "indirect"
}
},
+6 -5
View File
@@ -3,15 +3,15 @@
description = "illogical-impulse";
inputs = {
nixpkgs.url = "nixpkgs/nixos-25.05";
# Qt 6.10 is not yet available from released version of nixpkgs.
#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 +24,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";
+17 -37
View File
@@ -12,15 +12,16 @@
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;
# TODO: The following seems to generate ~/.config/fontconfig conflicting with the one under dots/
# However, fontconfig may rely on this to properly find fonts installed via Nix.
# Need a proper way to deal with it.
#fonts.fontconfig.enable = true;
wayland.windowManager.hyprland = {
## Make sure home-manager not generate ~/.config/hypr/hyprland.conf
@@ -30,8 +31,6 @@
package = config.lib.nixGL.wrap pkgs.hyprland;
};
home = {
packages = with pkgs; [
##### Sure #####
@@ -90,7 +89,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)
@@ -108,7 +107,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)
@@ -117,10 +116,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)
@@ -153,10 +152,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)
@@ -167,24 +162,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)
@@ -205,7 +182,10 @@
]
++ [
#(config.lib.nixGL.wrap pkgs.hyprland)
(config.lib.nixGL.wrap quickshell.packages.x86_64-linux.default)
### 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; })
];
}//home_attrs;
}
@@ -0,0 +1,54 @@
{ pkgs, quickshell, nixGLWrap, ... }:
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;
nativeBuildInputs = [
pkgs.makeWrapper
pkgs.qt6.wrapQtAppsHook
];
buildInputs = with pkgs; [
qs
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 = ''
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
'';
}
+59 -80
View File
@@ -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,72 +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_curl(){
local cmd=curl
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_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(){
SETUP_HM_DIR="${REPO_ROOT}/sdata/dist-nix/home-manager"
SETUP_USERNAME_NIXFILE="${SETUP_HM_DIR}/username.nix"
@@ -115,21 +96,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
+39
View File
@@ -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
+1 -1
View File
@@ -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"