{ lib, inputs, config, pkgs, ... }: let configFormat = pkgs.formats.json {}; configJson = configFormat.generate "qtile-config.json" { theme = config.themes.default; scripts = { brightness = ./config/brightness.sh; notifications = { clear_popups = "${inputs.self}/scripts/notifications/clear-popups.sh"; pause = "${inputs.self}/scripts/notifications/pause.sh"; unpause = "${inputs.self}/scripts/notifications/unpause.sh"; show_center = "${inputs.self}/scripts/notifications/show-center.sh"; }; }; wallpaper = pkgs.fetchurl { url = "https://raw.githubusercontent.com/NixOS/nixos-artwork/c68a508b95baa0fcd99117f2da2a0f66eb208bbf/wallpapers/nix-wallpaper-nineish-dark-gray.png"; hash = "sha256-nhIUtCy/Hb8UbuxXeL3l3FMausjQrnjTVi1B3GkL9B8="; }; defaults = { terminal = config.home-config.defaultTerminal.meta.mainProgram; }; programs = { sequence_detector = "${lib.getExe inputs.self.packages.${pkgs.system}.sequence-detector} -c ${./config/sequence-detector.config.json}"; }; startup = { apps = config.home-config.startup.apps; hooks = [ "systemctl start --user xorg-wm-services.target" ]; }; }; in { imports = [ ./launcher.nix ./services.nix ./autorandr.nix ]; options = { profiles.desktop.qtile = { enable = lib.mkEnableOption "qtile"; }; }; config = lib.mkIf config.profiles.desktop.qtile.enable { profiles.desktop.enable = true; home.packages = [ pkgs.ksnip ]; home.file.".sessions/start-qtile".source = pkgs.writeShellApplication { name = "start-qtile"; runtimeInputs = [ pkgs.xorg.xinit ]; text = '' startx ${pkgs.writeShellScript "qtile-internal" '' autorandr -c qtile start -b x11 systemctl stop --user graphical-session.target ''} ''; } + "/bin/start-qtile"; # xdg.configFile."qtile/config.py".text = '' # import sys # sys.path.insert(0, "${./config}") # import config # ''; xdg.configFile."qtile/nixenvironment.py".text = '' import json class obj(object): def __init__(self, dict_): self.__dict__.update(dict_) with open('${configJson}', 'r') as f: nixConfig = json.load(f, object_hook = obj) print('Loaded nix config') ''; xdg.configFile."qtile/config.py".source = ./config/config.py; xdg.configFile."qtile/utils.py".source = ./config/utils.py; xdg.configFile."qtile/functions.py".source = ./config/functions.py; xdg.configFile."qtile/bars.py".source = ./config/bars.py; xdg.configFile."qtile/screens.py".source = ./config/screens.py; xdg.configFile."qtile/tasklist.py".source = ./config/tasklist.py; xdg.configFile."qtile/xmonadcustom.py".source = ./config/xmonadcustom.py; }; }