Skip to content

Instantly share code, notes, and snippets.

@arjan-s
Last active October 9, 2023 18:04
Show Gist options
  • Save arjan-s/bc942826ff1d2e5e60430740fef912fd to your computer and use it in GitHub Desktop.
Save arjan-s/bc942826ff1d2e5e60430740fef912fd to your computer and use it in GitHub Desktop.
qtile master with qtile-extras on NixOS
(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;
})
{
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;
}
#!/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