def setup_systemhud_repo() -> None: installed = False for installed_req in systemhud_venv.installed_requirements: if "jdost/systemhud.git" in installed_req: installed = True if not installed: systemhud_repo.run_in( [systemhud_venv.location / "bin/python", "-m", "pip", "install", "-U", "-e", "src/"] ) File( systemhud_repo.local_path / "etc/polybar", XDG_CONFIG_HOME / "polybar/systemhud_modules", ).apply() for global_bin in ["notify-send", "screen-brightness"]: File( systemhud_venv.location / "bin" / global_bin, UserBin.DIR / global_bin, ).apply()
def symlink_firefox_profile_userjs() -> None: profile = None for setting in (Path.home() / ".mozilla/firefox").glob("*"): if not setting.is_dir(): continue # This is kind of hacky, the profile looks something like: # NNNNNNNN.<name> # so we try and pattern match this with 8 characters followed by a dot parts = setting.name.split(".", 2) if not len(parts) == 2: continue if len(parts[0]) == 8: profile = setting break # Uses the same underlying handler, just manually applies it user_js = File(f"{__name__}/user.js", profile / "user.js") user_js.apply()
import cal import docker import dropbox import firefox import git import gpg import gtk import python import qutebrowser import scrcpy import ssh import streamlink import tmux import unclutter import user_dirs import vim.neovim import wallpaper import web_xdg_open import zathura import zsh from cfgtools.files import XDG_CONFIG_HOME, File, XinitRC web_xdg_open.set_default("firefox") File("systems/hershel/polybar", XDG_CONFIG_HOME / "polybar/system") File("systems/hershel/bspwmrc", XDG_CONFIG_HOME / "bspwm/system") File("systems/hershel/bspwm_external_rules.sh", XDG_CONFIG_HOME / "bspwm/external_rules") File("systems/hershel/sxhkdrc", XDG_CONFIG_HOME / "sxhkd/system") XinitRC("systems/hershel", priority=40)
from cfgtools.system.arch import Pacman from cfgtools.files import File, HOME, XDG_CONFIG_HOME, XDGConfigFile, normalize NAME = normalize(__name__) packages={ Pacman("xorg-xinit"), Pacman("xorg-server"), Pacman("xorg-xmodmap"), Pacman("xorg-xrdb"), } files=[ File(f"{NAME}/xorg.target", XDG_CONFIG_HOME / "systemd/user/xorg.target"), File(f"{NAME}/xinitrc", HOME / ".xinitrc"), XDGConfigFile(f"{NAME}/xinitrc.d/90-systemd"), XDGConfigFile(f"{NAME}/xinitrc.d/10-xmodmap"), XDGConfigFile(f"{NAME}/xinitrc.d/10-xresources"), XDGConfigFile(f"{NAME}/caps-ctrl-swap.xmodmap"), XDGConfigFile(f"{NAME}/Xresources"), ]
from cfgtools.files import File, HOME, XinitRC import alacritty import aur import auth import autorandr import bat import bspwm import docker import dropbox import git import gpg import gtk import networkmanager import polybar import python import screenlock import ssh import tmux import unclutter import user_dirs import vim import wallpaper import zsh File("systems/isabelle/polybar", HOME / ".config/polybar/system") File("systems/isabelle/Xresources", HOME / ".config/xorg/Xresources.system") XinitRC("systems/isabelle", name="system", priority=40)
packages = { Pacman("zsh"), Pacman("zsh-syntax-highlighting"), Pacman("zsh-completions"), AUR("./aur/pkgs/cli-utils"), Apt("zsh"), Apt("zsh-common"), Apt("zsh-syntax-highlighting"), NixPkgBin("exa"), NixPkgBin("ripgrep", "rg"), NixPkgBin("colordiff"), NixPkgBin("fzf"), } files = [ File(f"{NAME}/zshrc", HOME / ".zshrc"), XDGConfigFile(f"{NAME}/settings"), EnvironmentFile(NAME), ] @after def change_user_shell() -> None: zsh_bin = "/bin/zsh" if os.environ.get("SHELL") == zsh_bin: return if _SUDO_CHSH: subprocess.run(["sudo", "chsh", "-s", zsh_bin, getpass.getuser()]) else: subprocess.run(["chsh", "-s", zsh_bin])
from cfgtools.files import File, UserBin, XinitRC, DesktopEntry, normalize from cfgtools.hooks import after from cfgtools.system.arch import Pacman from cfgtools.system.systemd import ensure_service, UserService from cfgtools.utils import hide_xdg_entry import mpv NAME = normalize(__name__) packages = {Pacman("xsecurelock"), Pacman("xss-lock")} files = [ UserBin(f"{NAME}/screenlock.sh", "_screenlock"), UserBin(f"{NAME}/screenlock_wrapper.sh", "screenlock"), UserService(f"{NAME}/screenlock.service"), XinitRC(NAME, priority=10), File( f"{NAME}/saver_mpv-cinemagraph", "/usr/lib/xsecurelock/saver_mpv-cinemagraph", ), DesktopEntry(f"{NAME}/screenlock.desktop"), ] @after def enable_screenlock_service() -> None: ensure_service("screenlock", user=True)
import urllib.request from pathlib import Path from cfgtools.files import HOME, File, normalize from cfgtools.hooks import after from cfgtools.system.arch import Pacman from cfgtools.system.ubuntu import Apt NAME = normalize(__name__) packages = {Pacman("openssh"), Apt("ssh-client")} files = [ File(f"{NAME}/default.ssh", HOME / ".ssh/config.d/default") ] @after def setup_base_ssh_config() -> None: base_config = HOME / ".ssh/config" base_config_template = Path(__file__).parent / "base.ssh" if not base_config.exists(): base_config.write_text(base_config_template.read_text()) else: include_line, _ = base_config_template.read_text().split("\n", 1) if not base_config.read_text().startswith(include_line): print( f"!!! Please add `{include_line}` to the top" f" of your `{base_config}` file." )
import cal import docker import dropbox import git import gpg import gtk import polybar import python import qutebrowser import screenlock import ssh import streamlink import tmux import unclutter import user_dirs import vim import wallpaper import zathura import zsh cal.ENABLED = False File("systems/anthony/polybar", XDG_CONFIG_HOME / "polybar/system") File("systems/anthony/Xresources", XDG_CONFIG_HOME / "xorg/Xresources.system") File("systems/anthony/bspwm_external_rules.sh", XDG_CONFIG_HOME / "bspwm/external_rules") File("systems/anthony/chromium-flags.conf", XDG_CONFIG_HOME / "chromium-flags.conf") XinitRC("systems/anthony", priority=40) File("systems/anthony/drirc", HOME / ".drirc")
from cfgtools.files import EnvironmentFile, File, Folder, HOME, XinitRC, normalize from cfgtools.hooks import after from cfgtools.system.arch import Pacman from cfgtools.system.systemd import ensure_service NAME = normalize(__name__) USER_GPG_FOLDER = HOME / ".local/gpg" GPG_CONFIG_FILES = ["gpg.conf", "gpg-agent.conf", "scdaemon.conf"] packages = {Pacman("gnupg"), Pacman("pcsclite"), Pacman("ccid")} files = [ EnvironmentFile(NAME), Folder(USER_GPG_FOLDER, permissions=0o700), XinitRC(NAME, priority=20), ] + [File(f"{NAME}/f", USER_GPG_FOLDER / f) for f in GPG_CONFIG_FILES] @after def smartcard_daemon_running() -> None: ensure_service("pcscd.socket")