Example #1
0
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()
Example #2
0
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()
Example #3
0
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)
Example #4
0
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"),
]
Example #5
0
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)
Example #6
0
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])
Example #7
0
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)
Example #8
0
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."
            )
Example #9
0
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")
Example #10
0
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")