Update to (somewhat?) dendritic pattern

Heavily inspired by https://github.com/Doc-Steve/dendritic-design-with-flake-parts.

> Atomic commits? Never heard of them!
This commit is contained in:
Weckyy702
2026-03-15 15:04:47 +01:00
parent 5f41ff2b1b
commit e34b5ecce3
81 changed files with 1413 additions and 1073 deletions

View File

@@ -0,0 +1,22 @@
{ inputs, ... }: {
config.flake.factory.autologin = username: {
imports = with inputs.self.modules.nixos; [
];
services.getty.autologinUser = username;
home-manager.sharedModules = [
inputs.self.modules.homeManager.autologin
];
};
config.flake.modules.homeManager.autologin = {
imports = with inputs.self.modules.homeManager; [
];
programs.zsh.profileExtra = ''
if [ -z "$WAYLAND_DISPLAY" ] && [ "$XDG_VTNR" = 1 ]; then
exec hyprland
fi
'';
};
}

View File

@@ -0,0 +1,6 @@
{ lib, ... }: {
options.flake.factory = lib.mkOption {
type = lib.types.attrsOf lib.types.unspecified;
default = { };
};
}

View File

@@ -0,0 +1,9 @@
{
config.flake.factory.grub-boot = device: {
boot.loader.grub = {
enable = true;
inherit device;
configurationLimit = 10;
};
};
}

View File

@@ -0,0 +1,19 @@
{
config.flake.factory.hyprpaper =
{ wallpaper_path
, monitor_names
,
}: { config, ... }: {
services.hyprpaper =
/*
TODO: assert that hyprland is enabled
*/
{
enable = true;
settings = {
preload = [ wallpaper_path ];
wallpaper = map (mon: "mon,${wallpaper_path}") monitor_names;
};
};
};
}

View File

@@ -0,0 +1,36 @@
{
config.flake.factory.mount-cifs =
{ host
, resource
, destination
, credentials_path
, UID
, GID
,
}: {
fileSystems."${destination}" = {
device = "//${host}/${resource}";
fsType = "cifs";
options = [
# automount
"x-systemd.automount"
"noauto"
"nofail"
"soft"
"x-systemd.idle-timeout=60"
"x-systemd.device-timeout=5s"
"x-systemd.mount-timeout=5s"
# mount options
"rw"
"iocharset=utf8"
# user
"uid=${UID}"
"gid=${GID}"
"credentials=${credentials_path}"
];
};
};
}

30
modules/factory/user.nix Normal file
View File

@@ -0,0 +1,30 @@
{ self, ... }: {
config.flake.factory.user = username: isAdmin: {
nixos."${username}" =
{ lib
, pkgs
, ...
}: {
users.users."${username}" = {
isNormalUser = true;
home = "/home/${username}";
extraGroups = lib.optionals isAdmin [ "wheel" ];
shell = pkgs.zsh;
};
programs.zsh.enable = true;
# required for zsh completion
environment.pathsToLink = [ "/share/zsh" ];
home-manager.users."${username}" = {
imports = [
self.modules.homeManager."${username}"
];
};
};
homeManager."${username}" = {
home.username = "${username}";
};
};
}