Avoid possible infinite recursion

Signed-off-by: Nikolaos Karaolidis <nick@karaolidis.com>
This commit is contained in:
2024-07-16 17:46:58 +03:00
parent df781012fd
commit 566b4e0157
38 changed files with 216 additions and 187 deletions

View File

@@ -1,5 +1,5 @@
{
user ? throw "user argument is required",
username ? throw "username argument is required",
}:
{
config,
@@ -8,7 +8,7 @@
...
}:
{
home-manager.users.${user.name}.systemd.user.services.mpris-proxy = {
home-manager.users.${username}.systemd.user.services.mpris-proxy = {
Unit = {
Description = "MPRIS proxy";
Requires = [ "sound.target" ];

View File

@@ -1,7 +1,12 @@
{
user ? throw "user argument is required",
username ? throw "username argument is required",
}:
{ lib, pkgs, ... }:
{
home-manager.users.${user.name}.home.packages = with pkgs; [ brightnessctl ];
users.users.${username}.extraGroups = [
"video"
"inputs"
];
home-manager.users.${username}.home.packages = with pkgs; [ brightnessctl ];
}

View File

@@ -1,9 +1,9 @@
{
user ? throw "user argument is required",
username ? throw "username argument is required",
}:
{ ... }:
{
home-manager.users.${user.name}.programs.btop = {
home-manager.users.${username}.programs.btop = {
enable = true;
settings = {
theme_background = false;

View File

@@ -1,5 +1,5 @@
{
user ? throw "user argument is required",
username ? throw "username argument is required",
}:
{
config,
@@ -8,15 +8,16 @@
...
}:
let
hmConfig = config.home-manager.users.${user.name};
userConfig = config.users.users.${username};
hmConfig = config.home-manager.users.${username};
in
{
home-manager.users.${user.name} = {
home-manager.users.${username} = {
programs.git = {
enable = true;
lfs.enable = true;
userName = user.fullName;
userEmail = user.email;
userName = userConfig.fullName;
userEmail = userConfig.email;
signing = {
signByDefault = true;

View File

@@ -1,5 +1,5 @@
{
user ? throw "user argument is required",
username ? throw "username argument is required",
}:
{
config,
@@ -8,11 +8,12 @@
...
}:
let
hmConfig = config.home-manager.users.${user.name};
userConfig = config.users.users.${username};
hmConfig = config.home-manager.users.${username};
gpgPath = "${hmConfig.xdg.dataHome}/gnupg";
in
{
home-manager.users.${user.name} = {
home-manager.users.${username} = {
programs.gpg = {
enable = true;
homedir = gpgPath;
@@ -37,7 +38,7 @@ in
];
runtimeEnv = {
GNUPGHOME = gpgPath;
HOME = user.home;
HOME = userConfig.home;
};
text = builtins.readFile ./import-gpg-keys.sh;
}
@@ -64,7 +65,7 @@ in
Install.WantedBy = [ "default.target" ];
};
tmpfiles.rules = [ "d ${gpgPath} 0700 ${user.name} users -" ];
tmpfiles.rules = [ "d ${gpgPath} 0700 ${username} users -" ];
};
sops.secrets = {

View File

@@ -1,5 +1,5 @@
{
user ? throw "user argument is required",
username ? throw "username argument is required",
}:
{ config, inputs, ... }:
{
@@ -14,7 +14,7 @@
backupFileExtension = "bak";
useGlobalPkgs = true;
users.${user.name} = {
users.${username} = {
home.stateVersion = "24.05";
systemd.user.startServices = "sd-switch";
nix.settings = config.nix.settings;

View File

@@ -1,9 +1,9 @@
{
user ? throw "user argument is required",
username ? throw "username argument is required",
}:
{ ... }:
{
home-manager.users.${user.name} = {
home-manager.users.${username} = {
programs.neovim = {
enable = true;
defaultEditor = true;

View File

@@ -1,5 +1,5 @@
{
user ? throw "user argument is required",
username ? throw "username argument is required",
}:
{
config,
@@ -7,22 +7,25 @@
lib,
...
}:
let
userConfig = config.users.users.${username};
in
{
programs.fuse.userAllowOther = true;
systemd.tmpfiles.rules = ([
"d /persist/home 0755 root root -"
"d /cache/home 0755 root root -"
"d /persist${user.home} 0700 ${user.name} users -"
"d /cache${user.home} 0700 ${user.name} users -"
"d /persist${userConfig.home} 0700 ${username} users -"
"d /cache${userConfig.home} 0700 ${username} users -"
]);
home-manager.users.${user.name} = {
home-manager.users.${username} = {
imports = [ inputs.impermanence.nixosModules.home-manager.impermanence ];
home.persistence = {
"/persist${user.home}".allowOther = true;
"/cache${user.home}".allowOther = true;
"/persist${userConfig.home}".allowOther = true;
"/cache${userConfig.home}".allowOther = true;
};
};
}

View File

@@ -1,9 +1,9 @@
{
user ? throw "user argument is required",
username ? throw "username argument is required",
}:
{ pkgs, ... }:
{
home-manager.users.${user.name} = {
home-manager.users.${username} = {
home.packages = with pkgs; [
wireplumber
playerctl

View File

@@ -1,5 +1,5 @@
{
user ? throw "user argument is required",
username ? throw "username argument is required",
}:
{
config,
@@ -8,17 +8,18 @@
...
}:
let
userConfig = config.users.users.${username};
sopsKeyPath = ".config/sops-nix/key.txt";
in
{
home-manager.users.${user.name} = {
home-manager.users.${username} = {
imports = [ inputs.sops-nix.homeManagerModules.sops ];
sops.age.keyFile = "/persist${user.home}/${sopsKeyPath}";
sops.age.keyFile = "/persist${userConfig.home}/${sopsKeyPath}";
home = {
persistence."/persist${user.home}".files = [ sopsKeyPath ];
sessionVariables.SOPS_AGE_KEY_FILE = "${user.home}/${sopsKeyPath}";
persistence."/persist${userConfig.home}".files = [ sopsKeyPath ];
sessionVariables.SOPS_AGE_KEY_FILE = "${userConfig.home}/${sopsKeyPath}";
};
};
}

View File

@@ -1,5 +1,5 @@
{
user ? throw "user argument is required",
username ? throw "username argument is required",
}:
{ config, ... }:
{
@@ -14,17 +14,17 @@
sops.secrets = {
# openssl genpkey -algorithm RSA -out key.pem -pkeyopt rsa_keygen_bits:3072
"syncthing/key" = {
owner = user.name;
owner = username;
group = "users";
};
# openssl req -new -x509 -key key.pem -out cert.pem -days 9999 -subj "/CN=syncthing"
"syncthing/cert" = {
owner = user.name;
owner = username;
group = "users";
};
};
home-manager.users.${user.name}.services.syncthing = {
home-manager.users.${username}.services.syncthing = {
enable = true;
key = config.sops.secrets."syncthing/key".path;
cert = config.sops.secrets."syncthing/cert".path;

View File

@@ -1,5 +1,5 @@
{
user ? throw "user argument is required",
username ? throw "username argument is required",
}:
{
config,
@@ -8,10 +8,11 @@
...
}:
let
hmConfig = config.home-manager.users.${user.name};
userConfig = config.users.users.${username};
hmConfig = config.home-manager.users.${username};
in
{
home-manager.users.${user.name} = {
home-manager.users.${username} = {
imports = [ ./options.nix ];
xdg = {
@@ -22,13 +23,13 @@ in
userDirs = {
enable = true;
extraConfig = {
XDG_VM_DIR = "${user.home}/VMs";
XDG_GIT_DIR = "${user.home}/git";
XDG_VM_DIR = "${userConfig.home}/VMs";
XDG_GIT_DIR = "${userConfig.home}/git";
};
};
};
home.persistence."/persist${user.home}".directories = with hmConfig.xdg.userDirs; [
home.persistence."/persist${userConfig.home}".directories = with hmConfig.xdg.userDirs; [
relativeDesktop
relativeDocuments
relativeDownload

View File

@@ -1,12 +1,13 @@
{
user ? throw "user argument is required",
username ? throw "username argument is required",
}:
{ config, ... }:
let
hmConfig = config.home-manager.users.${user.name};
userConfig = config.users.users.${username};
hmConfig = config.home-manager.users.${username};
in
{
home-manager.users.${user.name} = {
home-manager.users.${username} = {
programs.zsh = {
enable = true;
dotDir = "${hmConfig.xdg.relativeConfigHome}/zsh";
@@ -20,6 +21,8 @@ in
syntaxHighlighting.enable = true;
};
home.persistence."/persist${user.home}".directories = [ "${hmConfig.xdg.relativeDataHome}/zsh" ];
home.persistence."/persist${userConfig.home}".directories = [
"${hmConfig.xdg.relativeDataHome}/zsh"
];
};
}