diff --git a/pkg/gonf.go b/pkg/gonf.go
index 7a18c91..88edf9c 100644
--- a/pkg/gonf.go
+++ b/pkg/gonf.go
@@ -28,7 +28,6 @@ func Resolve() (status Status) {
 		case BROKEN:
 			return BROKEN
 		case REPAIRED:
-			packages_list_function()
 			continue
 		}
 		// ----- Services ----------------------------------------------
diff --git a/pkg/packages.go b/pkg/packages.go
index 75346eb..fdce87c 100644
--- a/pkg/packages.go
+++ b/pkg/packages.go
@@ -7,7 +7,6 @@ var packages []*PackagePromise
 
 // packages management functions
 var packages_install_function func([]string) (Status, []string)
-var packages_list_function func()
 var packages_update_function *CommandPromise
 
 // ----- Init ------------------------------------------------------------------
@@ -16,9 +15,8 @@ func init() {
 }
 
 // ----- Public ----------------------------------------------------------------
-func SetPackagesConfiguration(install func([]string) (Status, []string), list func(), update *CommandPromise) {
+func SetPackagesConfiguration(install func([]string) (Status, []string), update *CommandPromise) {
 	packages_install_function = install
-	packages_list_function = list
 	packages_update_function = update
 }
 
diff --git a/stdlib/os/debian/apt.go b/stdlib/os/debian/apt.go
index 5b0b54f..3386f20 100644
--- a/stdlib/os/debian/apt.go
+++ b/stdlib/os/debian/apt.go
@@ -3,14 +3,12 @@ package debian
 import (
 	"bufio"
 	"bytes"
-	_ "embed"
 	"log/slog"
 	"os"
 	"os/exec"
 	"strings"
 
 	gonf "git.adyxax.org/adyxax/gonf/v2/pkg"
-	"git.adyxax.org/adyxax/gonf/v2/stdlib/os/systemd"
 )
 
 var packages map[string]string
@@ -19,33 +17,6 @@ func init() {
 	packages_list()
 }
 
-//go:embed apt-norecommends
-var apt_norecommends []byte
-
-//go:embed sources.list
-var sources_list []byte
-
-func Promise() {
-	rootDir := gonf.ModeUserGroup(0755, "root", "root")
-	rootRO := gonf.ModeUserGroup(0444, "root", "root")
-	gonf.Default("debian-release", "stable")
-	gonf.AppendVariable("debian-extra-sources", "# Extra sources")
-	apt_update := gonf.Command("apt-get", "update", "-qq")
-	gonf.File("/etc/apt/sources.list").
-		Permissions(rootRO).
-		Template(sources_list).
-		Promise().
-		IfRepaired(apt_update)
-	gonf.File("/etc/apt/apt.conf.d/99_norecommends").
-		DirectoriesPermissions(rootDir).
-		Permissions(rootRO).
-		Template(apt_norecommends).
-		Promise()
-	gonf.SetPackagesConfiguration(packages_install, packages_list, apt_update)
-	gonf.Service("opensmtpd").State("enabled", "started").Promise()
-	systemd.Promise()
-}
-
 func packages_install(names []string) (gonf.Status, []string) {
 	gonf.FilterSlice(&names, func(n string) bool {
 		_, ok := packages[n]
diff --git a/stdlib/os/debian/debian.go b/stdlib/os/debian/debian.go
new file mode 100644
index 0000000..9954088
--- /dev/null
+++ b/stdlib/os/debian/debian.go
@@ -0,0 +1,38 @@
+package debian
+
+import (
+	_ "embed"
+	"git.adyxax.org/adyxax/gonf/v2/pkg"
+	"git.adyxax.org/adyxax/gonf/v2/stdlib/os/linux"
+	"git.adyxax.org/adyxax/gonf/v2/stdlib/os/systemd"
+)
+
+//go:embed apt-norecommends
+var apt_norecommends []byte
+
+//go:embed sources.list
+var sources_list []byte
+
+func Promise() {
+	// ----- gonf --------------------------------------------------------------
+	apt_update := gonf.Command("apt-get", "update", "-qq")
+	gonf.SetPackagesConfiguration(packages_install, apt_update)
+	gonf.SetUsersConfiguration(linux.Useradd)
+	// ----- systemd -----------------------------------------------------------
+	systemd.Promise()
+	// ----- apt ---------------------------------------------------------------
+	rootDir := gonf.ModeUserGroup(0755, "root", "root")
+	rootRO := gonf.ModeUserGroup(0444, "root", "root")
+	gonf.Default("debian-release", "stable")
+	gonf.AppendVariable("debian-extra-sources", "# Extra sources")
+	gonf.File("/etc/apt/sources.list").
+		Permissions(rootRO).
+		Template(sources_list).
+		Promise().
+		IfRepaired(apt_update)
+	gonf.File("/etc/apt/apt.conf.d/99_norecommends").
+		DirectoriesPermissions(rootDir).
+		Permissions(rootRO).
+		Contents(apt_norecommends).
+		Promise()
+}