feat: basic setup with all packages

This commit is contained in:
2026-06-13 14:14:29 +02:00
commit 811ed1e9c4
15 changed files with 379 additions and 0 deletions
+1
View File
@@ -0,0 +1 @@
import decman
+23
View File
@@ -0,0 +1,23 @@
import decman
from decman.plugins import pacman
class BaseModule(decman.Module):
def __init__(self):
"""Base packages that should never be uninstalled"""
super().__init__("latex")
@pacman.packages
def pkgs(self) -> set[str]:
return {
"texlive",
"texlive-langgerman",
"perl-yaml-tiny",
"perl-file-homedir",
"biber",
"texlab",
}
def on_enable(self, store: decman.Store):
# TODO: clone the git repo
return super().on_enable(store)
+27
View File
@@ -0,0 +1,27 @@
import decman
from decman.plugins import pacman, aur
class NeovimModule(decman.Module):
def __init__(self):
"""Neovim Packages"""
super().__init__("neovim")
@pacman.packages
def pkgs(self) -> set[str]:
return {
"neovim",
"lua",
"lua-language-server",
"tree-sitter",
"tree-sitter-cli",
"stylua",
}
# def directories(self) -> dict[str, decman.Directory]:
# return { "": decman.Directory() }
@aur.packages
def aurpkgs(self) -> set[str]:
# Consider switching to WiVRN
return {"bs-manager-bin", "alvr-bin"}
+28
View File
@@ -0,0 +1,28 @@
import decman
from decman.plugins import pacman
class DevTools(decman.Module):
def __init__(self):
"""Base packages that should never be uninstalled"""
super().__init__("dev-tools")
@pacman.packages
def pkgs(self) -> set[str]:
return {
"act",
"cronie",
"cloc",
"docker",
"docker-buildx",
"docker-compose",
"filezilla",
"kitty",
"lazygit",
"git-lfs",
"hugo",
"meld",
"minisign",
"serpl",
"terminator",
}
+26
View File
@@ -0,0 +1,26 @@
import decman
from decman.plugins import pacman, aur
class Games(decman.Module):
def __init__(self):
"""Base packages that should never be uninstalled"""
super().__init__("games")
@pacman.packages
def pkgs(self) -> set[str]:
return {
"android-udev",
"android-tools",
"lib32-vulkan-radeon",
"vulkan-radeon",
"steam",
"prismlauncher",
"gamemmode",
"gamescope",
}
@aur.packages
def aurpkgs(self) -> set[str]:
# Consider switching to WiVRN
return {"bs-manager-bin", "alvr-bin"}
@@ -0,0 +1,15 @@
import decman
from decman.plugins import aur
class BasePackages(decman.Module):
def __init__(self):
"""Base packages that should never be uninstalled"""
super().__init__("steering-wheel")
@aur.packages
def aurpkgs(self) -> set[str]:
return {"oversteer", "hid-tmff2-dkms-git"}
def on_enable(self, store: decman.Store):
return super().on_enable(store)
+45
View File
@@ -0,0 +1,45 @@
import decman
from decman.plugins import pacman, aur
class BasePackages(decman.Module):
def __init__(self):
"""Base packages that should never be uninstalled"""
super().__init__("base")
@pacman.packages
def pkgs(self) -> set[str]:
return {
"base",
"cups",
"efibootmgr",
"grub",
"linux",
"linux-firmware",
"linux-headers",
"networkmanager",
"git",
"sudo",
"systemd-resolvconf",
"trash-cli",
"base-devel",
"cifs",
"reflector",
"paccache",
"plymouth"
}
@aur.packages
def aurpkgs(self) -> set[str]:
return {"decman"}
def files(self) -> dict[str, decman.File]:
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"),
}
def on_change(self, store):
decman.prg(["mkinitcpio", "-P"])
decman.prg(["grub-mkconfig", "-o", "/boot/grub/grub.cfg"])
+19
View File
@@ -0,0 +1,19 @@
import decman
from decman.plugins import pacman, aur
class BaseModule(decman.Module):
def __init__(self):
"""Base packages that should never be uninstalled"""
super().__init__("base")
@pacman.packages
def pkgs(self) -> set[str]:
return {
"pipewire",
"pipewire-alsa",
"pipewire-pulse",
"pipewire-jack",
"wireplumber",
"pavucontrol",
}
+22
View File
@@ -0,0 +1,22 @@
# NOTE: Bar will be rewritten in QuickShell likely
import decman
from decman.plugins import pacman, aur
class LoginManager(decman.Module):
def __init__(self):
"""Base packages that should never be uninstalled"""
super().__init__("base")
@pacman.packages
def pkgs(self) -> set[str]:
return {
# "quickshell",
"playerctl",
"playerctl",
}
@aur.packages
def aurpkgs(self) -> set[str]:
# TODO: Rewrite bar in quickshell
return {"aylurs-gtk-shell"}
+27
View File
@@ -0,0 +1,27 @@
import decman
from decman.plugins import pacman, aur
class BaseModule(decman.Module):
def __init__(self):
"""Base packages that should never be uninstalled"""
super().__init__("yazi")
@pacman.packages
def pkgs(self) -> set[str]:
return {
"yazi",
"ouch",
"grub",
"linux",
"networkmanager",
"git",
"base-devel",
}
@aur.packages
def aurpkgs(self) -> set[str]:
return {"xdg-desktop-portal-termfilechooser-hunkyburrito-git"}
def files(self) -> dict[str, decman.File]:
return super().files()
+23
View File
@@ -0,0 +1,23 @@
import decman
from decman.plugins import pacman, aur
class BaseModule(decman.Module):
def __init__(self):
"""Base packages that should never be uninstalled"""
super().__init__("fonts")
@pacman.packages
def pkgs(self) -> set[str]:
return {
"adobe-source-code-pro-fonts"
"ttf-fantasque-nerd",
"ttf-jetbrains-mono-nerd",
"ttf-iosevka-nerd",
"ttf-nerd-fonts-symbols-common",
"inter-font",
}
@aur.packages
def aurpkgs(self) -> set[str]:
return {"ttf-comfortaa"}
+33
View File
@@ -0,0 +1,33 @@
import decman
from decman.plugins import pacman, aur
class BaseModule(decman.Module):
def __init__(self):
"""Base packages that should never be uninstalled"""
super().__init__("base")
@pacman.packages
def pkgs(self) -> set[str]:
return {
"hyprland",
"hyprlock",
"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()
def on_change(self, store: decman.Store):
return super().on_change(store)
+30
View File
@@ -0,0 +1,30 @@
from typing import Literal
import decman
from decman.plugins import pacman, systemd
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")
@pacman.packages
def pkgs(self) -> set[str]:
if self._platform == "desktop":
return {
"greetd",
"greetd-tuigreet",
}
else:
return {"gdm"}
# TODO: Config files for laptop and desktop
@systemd.units
def units(self) -> set[str]:
if self._platform == "desktop":
return {"greetd.service"}
else:
return {"gdm.service"}
+55
View File
@@ -0,0 +1,55 @@
import decman
from decman.plugins import pacman, aur
class UtilPackages(decman.Module):
def __init__(self):
"""Util packages"""
super().__init__("util")
@pacman.packages
def pkgs(self) -> set[str]:
return {
"bashtop",
"bluez",
"bluez-utils",
"blueman",
"dig",
"evince",
"fastfetch",
"fd",
"ffmpeg",
"ffmpegthumbnailer",
"fish",
"fzf",
"gdu",
"gimp",
"gwenview",
"handbrake",
"iptables",
"man-pages",
"man-db",
"mpv",
"nextcloud-client",
"obs-studio",
"okular",
"openconnect",
"qalculate-qt",
"ripgrep",
"simple-scan",
"smartmontools",
"thunderbird",
"tldr",
"unzip",
"wget",
"wine",
"xclip",
"zathura",
"zathura-pdf-poppler",
"zip",
"zoxide",
}
@aur.packages
def aurpkgs(self) -> set[str]:
return {"librewolf-bin", "brave-bin", "vesktop-bin", "uxplay", "git-credential-manager-bin"}
+5
View File
@@ -0,0 +1,5 @@
import decman
class SystemTheme(decman.Module):
pass