Last active
October 9, 2023 18:04
-
-
Save arjan-s/bc942826ff1d2e5e60430740fef912fd to your computer and use it in GitHub Desktop.
qtile master with qtile-extras on NixOS
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(final: super: { | |
pythonPackagesOverlays = | |
(super.pythonPackagesOverlays or []) | |
++ [ | |
(_: pprev: { | |
qtile = pprev.qtile.overridePythonAttrs (_: { | |
version = ''unstable-2023-10-06''; # qtile | |
src = super.fetchFromGitHub { | |
owner = "qtile"; | |
repo = "qtile"; | |
rev = ''da90e98762e4f1f4e625705fe9cf01ba1e5cc651''; # qtile | |
hash = ''sha256-Rd8m5LUStVktbm7VrjFNKQUbGQPRav8Oloq1KvMUT8k=''; # qtile | |
}; | |
}); | |
qtile-extras = pprev.qtile-extras.overridePythonAttrs (old: { | |
version = ''unstable-2023-10-08''; # extras | |
src = super.fetchFromGitHub { | |
owner = "elParaguayo"; | |
repo = "qtile-extras"; | |
rev = ''ba982952257ff121879646cca00ac4e38f5e8f43''; # extras | |
hash = ''sha256-IjDGrWa5lzmt9JPmG9L84DX2sZcPtqpHx7IM+nfXQ5M=''; # extras | |
}; | |
}); | |
}) | |
]; | |
python3 = let | |
self = super.python3.override { | |
inherit self; | |
packageOverrides = super.lib.composeManyExtensions final.pythonPackagesOverlays; | |
}; | |
in | |
self; | |
python3Packages = final.python3.pkgs; | |
}) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
pkgs, | |
lib, | |
... | |
}: let | |
qtileEnvironment = pkgs.python3.withPackages (_: with pkgs.python3Packages; [qtile qtile-extras]); | |
qtileStartScript = pkgs.writeScriptBin "qtile_start.sh" '' | |
#!${pkgs.bash}/bin/bash | |
[ -d $HOME/.local/share/qtile ] || mkdir $HOME/.local/share/qtile | |
[ -f $HOME/.local/share/qtile/qtile.log ] && mv $HOME/.local/share/qtile/qtile.log{,.1} | |
[ -f $HOME/.local/share/qtile/qtile.stdout ] && mv $HOME/.local/share/qtile/qtile.stdout{,.1} | |
[ -f $HOME/.local/share/qtile/qtile.stderr ] && mv $HOME/.local/share/qtile/qtile.stderr{,.1} | |
${qtileEnvironment}/bin/qtile start -b wayland 1>$HOME/.local/share/qtile/qtile.stdout 2>$HOME/.local/share/qtile/qtile.stderr | |
''; | |
in { | |
services.xserver = { | |
gdk-pixbuf.modulePackages = [pkgs.librsvg]; | |
windowManager.qtile = { | |
# this is the first option for starting Qtile with wayland backend | |
enable = true; | |
backend = "wayland"; | |
extraPackages = python3Packages: with python3Packages; [qtile-extras]; | |
}; | |
}; | |
programs = { | |
xwayland.enable = true; | |
dconf.enable = true; | |
}; | |
services = { | |
gnome.gnome-keyring.enable = true; | |
gvfs.enable = true; # Mount, trash, and other functionalities | |
tumbler.enable = true; # Thumbnail support for images in Thunar | |
greetd = { | |
# this is the second option for starting Qtile with wayland backend | |
enable = true; | |
vt = 2; | |
settings = { | |
default_session = { | |
command = "${pkgs.greetd.tuigreet}/bin/tuigreet --time --cmd ${qtileStartScript}/bin/qtile_start.sh"; | |
user = "greeter"; | |
}; | |
}; | |
}; | |
}; | |
systemd.services.greetd = { | |
unitConfig = { | |
After = lib.mkOverride 0 ["multi-user.target"]; | |
}; | |
serviceConfig = { | |
Type = "idle"; | |
}; | |
}; | |
security = { | |
pam.services = { | |
swaylock = {}; | |
login.enableGnomeKeyring = true; | |
greetd.enableGnomeKeyring = true; | |
}; | |
polkit.enable = true; | |
}; | |
hardware.opengl.enable = true; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env bash | |
echo -n "Fetching qtile hash... " | |
nurl --json https://github.com/qtile/qtile > /tmp/repo_qtile.json 2>/dev/null | |
REV="$(jq -r .args.rev < /tmp/repo_qtile.json)" | |
HASH="$(jq -r .args.hash < /tmp/repo_qtile.json)" | |
echo "$HASH" | |
if ( grep "$HASH.*qtile" overlays/default.nix &>/dev/null ); then | |
echo "overlays/default.nix is up to date" | |
else | |
echo "Updating overlays/default.nix..." | |
sed -i "s@rev = .*# qtile@rev = ''$REV''; # qtile@" overlays/default.nix | |
sed -i "s@hash = .*# qtile@hash = ''$HASH''; # qtile@" overlays/default.nix | |
sed -i "s@version = .*# qtile@version = ''unstable-$(date +%Y-%m-%d)''; # qtile@" overlays/default.nix | |
fi | |
echo -n "Fetching qtile-extras hash... " | |
nurl --json https://github.com/elparaguayo/qtile-extras > /tmp/repo_qtile-extras.json 2>/dev/null | |
REV="$(jq -r .args.rev < /tmp/repo_qtile-extras.json)" | |
HASH="$(jq -r .args.hash < /tmp/repo_qtile-extras.json)" | |
echo "$HASH" | |
if ( grep "$HASH.*extras" overlays/default.nix &>/dev/null ); then | |
echo "overlays/default.nix is up to date" | |
else | |
echo "Updating overlays/default.nix..." | |
sed -i "s@rev = .*# extras@rev = ''$REV''; # extras@" overlays/default.nix | |
sed -i "s@hash = .*# extras@hash = ''$HASH''; # extras@" overlays/default.nix | |
sed -i "s@version = .*# extras@version = ''unstable-$(date +%Y-%m-%d)''; # extras@" overlays/default.nix | |
fi |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment