feat: todos, decman config almost complete

This commit is contained in:
2026-06-14 17:58:00 +02:00
parent e74b162b91
commit 04a5d8919c
32 changed files with 1632 additions and 72 deletions
+38 -7
View File
@@ -2,22 +2,53 @@ import decman
from decman.plugins import pacman
class BaseModule(decman.Module):
def __init__(self):
class Latex(decman.Module):
def __init__(self, user: str):
"""Base packages that should never be uninstalled"""
self._user = user
super().__init__("latex")
@pacman.packages
def pkgs(self) -> set[str]:
return {
"texlive",
"texlive-langgerman",
"biber",
"perl-yaml-tiny",
"perl-file-homedir",
"biber",
"python-pygments",
"texlab",
"texlive-basic",
"texlive-bibtexextra",
"texlive-binextra",
"texlive-context",
"texlive-fontsextra",
"texlive-fontsrecommended",
"texlive-fontutils",
"texlive-formatsextra",
"texlive-games",
"texlive-humanities",
"texlive-latex",
"texlive-latexextra",
"texlive-latexrecommended",
"texlive-lualatex",
"texlive-mathscience",
"texlive-metapost",
"texlive-music",
"texlive-pictures",
"texlive-plaingeneric",
"texlive-pstricks",
"texlive-publishers",
"texlive-xetex",
"texlive-langgerman",
}
def on_enable(self, store: decman.Store):
# TODO: clone the git repo
return super().on_enable(store)
decman.prg(
[
"cd",
"~/projects/",
"git",
"clone",
"https://git.janishutz.com/janishutz/latex",
],
user=self._user,
)
+2 -1
View File
@@ -2,7 +2,7 @@ import decman
from decman.plugins import pacman, aur
class NeovimModule(decman.Module):
class Neovim(decman.Module):
def __init__(self):
"""Neovim Packages"""
super().__init__("neovim")
@@ -15,6 +15,7 @@ class NeovimModule(decman.Module):
"lua-language-server",
"tree-sitter",
"tree-sitter-cli",
"shell-color-scripts-git",
"stylua",
}
+21 -2
View File
@@ -17,12 +17,31 @@ class DevTools(decman.Module):
"docker-buildx",
"docker-compose",
"filezilla",
"kitty",
"lazygit",
"git-lfs",
"hugo",
"kitty",
"lazygit",
"meld",
"minisign",
"python-argcomplete",
"python-black",
"python-build",
"python-colorama",
"python-install",
"python-jsonschema",
"python-pip",
"python-numpy",
"python-scipy",
"python-sympy",
"serpl",
"terminator",
}
def directories(self) -> dict[str, decman.Directory]:
return {
"~/.config/lazygit": decman.Directory("./config/lazygit"),
"~/.config/kitty": decman.Directory("./config/kitty"),
}
def files(self) -> dict[str, decman.File]:
return {"~/.indentconfig.yaml": decman.File("./linters/indentconfig.yaml")}
+9 -5
View File
@@ -12,12 +12,16 @@ class Games(decman.Module):
return {
"android-udev",
"android-tools",
"lib32-vulkan-radeon",
"vulkan-radeon",
"steam",
"prismlauncher",
"gamemmode",
"gamemode",
"gamescope",
# "lib32-vulkan-radeon",
"lovr",
"obs-studio",
"obs-studio-plugin-browser",
"prismlauncher",
"steam",
"vulkan-radeon",
"v4l2loopback-dkms",
}
@aur.packages
+1 -1
View File
@@ -2,7 +2,7 @@ import decman
from decman.plugins import aur
class BasePackages(decman.Module):
class SteeringWheel(decman.Module):
def __init__(self):
"""Base packages that should never be uninstalled"""
super().__init__("steering-wheel")
@@ -0,0 +1,23 @@
import decman
from decman.plugins import pacman
class VirtualMachines(decman.Module):
def __init__(self, user: str):
"""Set up virtual machines"""
self._user = user
super().__init__("virtualmachines")
@pacman.packages
def pkgs(self) -> set[str]:
return {
"dnsmasq",
"ebtables",
"qemu-base",
"vde2" "virt-manager",
"virt-viewer",
}
def on_enable(self, store: decman.Store):
# TODO: Everywhere, make user configurable
decman.prg(["usermod", "-G", "libvirt", "-a", self._user])
+14 -6
View File
@@ -11,33 +11,41 @@ class BasePackages(decman.Module):
def pkgs(self) -> set[str]:
return {
"base",
"base-devel",
"cifs",
"cups",
"efibootmgr",
"git",
"grub",
"linux",
"linux-firmware",
"linux-headers",
"mesa",
"mesa-utils",
"networkmanager",
"git",
"paccache",
"plymouth",
"reflector",
"sudo",
"systemd-resolvconf",
"trash-cli",
"base-devel",
"cifs",
"reflector",
"paccache",
"plymouth"
}
@aur.packages
def aurpkgs(self) -> set[str]:
return {"decman"}
# TODO:
# def file_variables(self) -> dict[str, str]:
# return super().file_variables()
def files(self) -> dict[str, decman.File]:
# TODO: File substitutions (for PC and laptop)
return {
"/etc/mkinitcpio.conf": decman.File(source_file="./system/mkinitcpio.conf"),
"/etc/pacman.conf": decman.File(source_file="./system/pacman.conf"),
"/etc/default/grub": decman.File(source_file="./system/grub"),
"/etc/environment": decman.File(source_file="./system/environment"),
}
def on_change(self, store):
+3 -3
View File
@@ -1,11 +1,11 @@
import decman
from decman.plugins import pacman, aur
from decman.plugins import pacman
class BaseModule(decman.Module):
class Pipewire(decman.Module):
def __init__(self):
"""Base packages that should never be uninstalled"""
super().__init__("base")
super().__init__("pipewire")
@pacman.packages
def pkgs(self) -> set[str]:
+15 -10
View File
@@ -2,26 +2,31 @@ import decman
from decman.plugins import pacman, aur
class BaseModule(decman.Module):
class FileManager(decman.Module):
def __init__(self):
"""Base packages that should never be uninstalled"""
super().__init__("yazi")
super().__init__("filemanager")
@pacman.packages
def pkgs(self) -> set[str]:
return {
"yazi",
"ifuse",
"libimobiledevice",
"ouch",
"grub",
"linux",
"networkmanager",
"git",
"base-devel",
"yazi",
}
@aur.packages
def aurpkgs(self) -> set[str]:
return {"xdg-desktop-portal-termfilechooser-hunkyburrito-git"}
def files(self) -> dict[str, decman.File]:
return super().files()
def directories(self) -> dict[str, decman.Directory]:
return {
"~/.config/xdg-desktop-portal": decman.Directory(
"./config/xdg-desktop-portal"
),
"~/.config/xdg-desktop-portal-termfilechooser": decman.Directory(
"./config/xdg-desktop-portal-termfilechooser"
),
"~/.config/yazi": decman.Directory("./config/yazi"),
}
+2 -2
View File
@@ -2,7 +2,7 @@ import decman
from decman.plugins import pacman, aur
class BaseModule(decman.Module):
class Fonts(decman.Module):
def __init__(self):
"""Base packages that should never be uninstalled"""
super().__init__("fonts")
@@ -10,7 +10,7 @@ class BaseModule(decman.Module):
@pacman.packages
def pkgs(self) -> set[str]:
return {
"adobe-source-code-pro-fonts"
"adobe-source-code-pro-fonts",
"ttf-fantasque-nerd",
"ttf-jetbrains-mono-nerd",
"ttf-iosevka-nerd",
+4 -6
View File
@@ -1,11 +1,11 @@
import decman
from decman.plugins import pacman, aur
from decman.plugins import pacman
class BaseModule(decman.Module):
class Hyprland(decman.Module):
def __init__(self):
"""Base packages that should never be uninstalled"""
super().__init__("base")
super().__init__("hyprland")
@pacman.packages
def pkgs(self) -> set[str]:
@@ -15,19 +15,17 @@ class BaseModule(decman.Module):
"hypridle",
"hyprshutdown",
"grimblast",
"grim",
"xdg-desktop-portal-hyprland",
"hyprpolkitagent",
"hyprpaper",
"wl-clipboard",
"cliphist",
"hyrplauncher",
"hyprpwcenter",
"hyprtoolkit",
}
def directories(self) -> dict[str, decman.Directory]:
return super().directories()
return {"~/.config/hypr": decman.Directory("./config/hypr")}
def on_change(self, store: decman.Store):
return super().on_change(store)
+11 -4
View File
@@ -8,7 +8,7 @@ class LoginManager(decman.Module):
def __init__(self, platform: Literal["desktop", "laptop"]):
"""Base packages that should never be uninstalled"""
self._platform: Literal["desktop", "laptop"] = platform
super().__init__("base")
super().__init__("login")
@pacman.packages
def pkgs(self) -> set[str]:
@@ -20,12 +20,19 @@ class LoginManager(decman.Module):
else:
return {"gdm"}
# TODO: Config files for laptop and desktop
# TODO: Consider dms greetd for desktop
@systemd.units
def units(self) -> set[str]:
if self._platform == "desktop":
return {"greetd.service"}
else:
return {"gdm.service"}
def files(self) -> dict[str, decman.File]:
if self._platform == "desktop":
return {
"/etc/greetd/config.toml": decman.File("./system/greetd/config.toml"),
"/etc/pam.d/greetd": decman.File("./system/greetd/pam"),
}
else:
# TODO: GDM config files
return {}
+2 -5
View File
@@ -6,15 +6,12 @@ from decman.plugins import pacman
class DesktopShell(decman.Module):
def __init__(self):
"""DesktopShell"""
super().__init__("base")
super().__init__("desktopshell")
@pacman.packages
def pkgs(self) -> set[str]:
return {"dms-shell", "cava", "matugen"}
# TODO: Copy the config, once done
# TODO: Copy the config of dms, once done
def directories(self) -> dict[str, decman.Directory]:
return { "~/.config/matugen": decman.Directory("./config/matugen") }
def files(self) -> dict[str, decman.File]:
return { "~/.config/matugen": decman.File("") }
+19 -4
View File
@@ -12,8 +12,7 @@ class UtilPackages(decman.Module):
return {
"bashtop",
"bluez",
"bluez-utils",
"blueman",
"clamav",
"dig",
"evince",
"fastfetch",
@@ -31,9 +30,9 @@ class UtilPackages(decman.Module):
"man-db",
"mpv",
"nextcloud-client",
"obs-studio",
"okular",
"openconnect",
"os-prober",
"qalculate-qt",
"ripgrep",
"simple-scan",
@@ -48,8 +47,24 @@ class UtilPackages(decman.Module):
"zathura-pdf-poppler",
"zip",
"zoxide",
"networkmanager-openconnect",
}
@aur.packages
def aurpkgs(self) -> set[str]:
return {"librewolf-bin", "brave-bin", "vesktop-bin", "uxplay", "git-credential-manager-bin"}
return {
"librewolf-bin",
"brave-bin",
"vesktop-bin",
"uxplay",
"git-credential-manager-bin",
"gradia",
"parabolic"
}
def directories(self) -> dict[str, decman.Directory]:
return {
"~/.config/fish": decman.Directory("./config/fish"),
"~/.config/fastfetch": decman.Directory("./config/fastfetch"),
"~/.config/mpv": decman.Directory("./config/mpv"),
}
-5
View File
@@ -1,5 +0,0 @@
import decman
class SystemTheme(decman.Module):
pass