From 8e211d358754181deb1560bdfafa15c7ac78827e Mon Sep 17 00:00:00 2001 From: geekiot Date: Tue, 30 Sep 2025 00:37:26 +0500 Subject: [PATCH] template: add template user & template config --- flake.nix | 7 +++++++ users/README.md | 13 ++++++++++++- users/template/data/default.nix | 23 +++++++++++++++++++++++ users/template/home/default.nix | 19 +++++++++++++++++++ users/template/host/default.nix | 27 +++++++++++++++++++++++++++ users/template/packages/default.nix | 5 +++++ users/template/scripts/default.nix | 1 + 7 files changed, 94 insertions(+), 1 deletion(-) create mode 100644 users/template/data/default.nix create mode 100644 users/template/home/default.nix create mode 100644 users/template/host/default.nix create mode 100644 users/template/packages/default.nix create mode 100644 users/template/scripts/default.nix diff --git a/flake.nix b/flake.nix index 07d5275..03a62eb 100644 --- a/flake.nix +++ b/flake.nix @@ -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"; diff --git a/users/README.md b/users/README.md index 01000a4..8601e78 100644 --- a/users/README.md +++ b/users/README.md @@ -1 +1,12 @@ -Конфигурация под определенного пользователя. \ No newline at end of file +# Для чего эта директория? + +Это конечная точка конфигурации для определенного пользователя. Содержит весь необходимых в реализации его системного и пользовательского конфига. + +Директории пользователь должны содержать 5 папок: +1. data - пользовательские данные, необходимые ему в конфигурации. +2. home - пользовательская конфигурация home-manager. +3. host - конфигурация системы NixOS. +4. packages - конфигурация его требований от пакетов, попадающих в его системы (free/unfree/license). +5. scripts - пользовательские скрипты и мини приложения, которые требуются ему в конфигурации. + +Начальная конфигурация для ознакомления со всеми обязательными значениями лежит в папке пользователя template, также пример существует и в `flake.nix`: `nixosConfigurations.template-hostname`. diff --git a/users/template/data/default.nix b/users/template/data/default.nix new file mode 100644 index 0000000..b5a5c02 --- /dev/null +++ b/users/template/data/default.nix @@ -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; + }; +} diff --git a/users/template/home/default.nix b/users/template/home/default.nix new file mode 100644 index 0000000..ca745c9 --- /dev/null +++ b/users/template/home/default.nix @@ -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"; + }; +} diff --git a/users/template/host/default.nix b/users/template/host/default.nix new file mode 100644 index 0000000..64eecb3 --- /dev/null +++ b/users/template/host/default.nix @@ -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" + ]; + }; +} diff --git a/users/template/packages/default.nix b/users/template/packages/default.nix new file mode 100644 index 0000000..d9e6834 --- /dev/null +++ b/users/template/packages/default.nix @@ -0,0 +1,5 @@ +{ lib }: +{ + allowUnfree = false; + allowBroken = false; +} diff --git a/users/template/scripts/default.nix b/users/template/scripts/default.nix new file mode 100644 index 0000000..2fb07e0 --- /dev/null +++ b/users/template/scripts/default.nix @@ -0,0 +1 @@ +pkgs: { }