template: add template user & template config

This commit is contained in:
Kirill Samoylenkov 2025-09-30 00:37:26 +05:00
parent 1b5a1d0f7f
commit 8e211d3587
7 changed files with 94 additions and 1 deletions

View file

@ -50,6 +50,13 @@
};
in
{
nixosConfigurations.template-hostname = makeConfig "thinkbook" {
hostName = "template-hostname";
userName = "template";
additionalOverlays = [ inputs.nix-vscode-extensions.overlays.default ];
systemArch = "x86_64-linux";
};
nixosConfigurations.book = makeConfig "thinkbook" {
hostName = "book";
userName = "geekiot";

View file

@ -1 +1,12 @@
Конфигурация под определенного пользователя.
# Для чего эта директория?
Это конечная точка конфигурации для определенного пользователя. Содержит весь необходимых в реализации его системного и пользовательского конфига.
Директории пользователь должны содержать 5 папок:
1. data - пользовательские данные, необходимые ему в конфигурации.
2. home - пользовательская конфигурация home-manager.
3. host - конфигурация системы NixOS.
4. packages - конфигурация его требований от пакетов, попадающих в его системы (free/unfree/license).
5. scripts - пользовательские скрипты и мини приложения, которые требуются ему в конфигурации.
Начальная конфигурация для ознакомления со всеми обязательными значениями лежит в папке пользователя template, также пример существует и в `flake.nix`: `nixosConfigurations.template-hostname`.

View file

@ -0,0 +1,23 @@
{
hostName,
userName,
systemArch,
deviceName,
}:
let
homeDir = "/home/${userName}";
in
{
info = {
inherit userName;
email = "...";
};
paths = {
inherit homeDir;
};
device = {
inherit deviceName hostName systemArch;
};
}

View file

@ -0,0 +1,19 @@
{ userData, customFunctions, ... }:
let
userName = userData.info.userName;
homeDirectory = userData.paths.homeDir;
in
{
imports = customFunctions.scan {
path = ./.;
exclude = [
./default.nix
];
};
home = {
inherit homeDirectory;
username = userName;
stateVersion = "25.05";
};
}

View file

@ -0,0 +1,27 @@
{ userData, customFunctions, ... }:
let
name = userData.info.userName;
home = userData.paths.homeDir;
in
{
imports = customFunctions.scan {
path = ./.;
exclude = [ ./default.nix ];
};
host = {
version = "25.05";
};
users.users.${name} = {
inherit name home;
isNormalUser = true;
description = name;
createHome = true;
homeMode = "700";
extraGroups = [
# "networkmanager"
# "wheel"
];
};
}

View file

@ -0,0 +1,5 @@
{ lib }:
{
allowUnfree = false;
allowBroken = false;
}

View file

@ -0,0 +1 @@
pkgs: { }