adyya-flake/home.mod.nix

73 lines
2.1 KiB
Nix

{ home-manager, ... }:
{
universal.modules = [
home-manager.nixosModules.home-manager
(
{ config, pkgs, ... }:
{
users.users.emv = {
isNormalUser = true;
description = "emv";
# shell = pkgs.zsh; # this is scuffed as hell, please, for the love of fuck, make a zsh.mod.nix file sometime
# ignoreShellProgramCheck = true;
extraGroups = [ "wheel" ];
};
home-manager = {
backupFileExtension = "bak";
useGlobalPkgs = true;
useUserPackages = true;
users.emv = {
home.username = "emv";
home.homeDirectory = "/home/emv";
home.stateVersion = "24.05";
imports = config._module.args.home_modules;
};
};
}
)
];
personal.home_modules = [
(
{
lib,
config,
...
}:
{
options.systemd-fuckery = {
auto-restart = lib.mkOption {
type = lib.types.listOf lib.types.str;
default = [ ];
};
};
config = {
home.activation.restartSystemdFuckery =
let
ensureRuntimeDir = "XDG_RUNTIME_DIR=\${XDG_RUNTIME_DIR:-/run/user/$(id -u)}";
systemctl = "env ${ensureRuntimeDir} ${config.systemd.user.systemctlPath}";
each = f: builtins.concatStringsSep "\n" (map f config.systemd-fuckery.auto-restart);
in
lib.mkIf (config.systemd-fuckery.auto-restart != [ ]) (
lib.hm.dag.entryAfter [ "reloadSystemd" ] ''
systemdStatus=$(${systemctl} --user is-system-running 2>&1 || true)
if [[ $systemdStatus == 'running' || $systemdStatus == 'degraded' ]]; then
${
each (unit: ''
run ${systemctl} --user try-restart ${unit}.service
'')
}
else
echo "User systemd daemon not running. Skipping reload."
fi
''
);
};
}
)
];
}