Skip to content

Remove home-manager from the config entirely #197

Description

@etrobert-bot

Remove home-manager from the config entirely, replacing each managed setting with a native NixOS / nix-darwin module or a wrapped package.

Current footprint

Everything lives under modules/home/, wired three ways:

  • NixOS: home-manager.users.soft = … in modules/nixos-workstation.nix (tower) and modules/hosts/leod/configuration.nix
  • darwin: modules/hosts/aaron/configuration.nix
  • standalone homeConfigurations in modules/home/default.nix
  • flake input + flakeModule: flake.nix (home-manager input, inputs.home-manager.flakeModules.home-manager, modules/home/* imports)

Managed settings and their native replacements:

Source What it does Replacement
common.nix ~/.prettierrc (proseWrap: always) activation symlink / environment.etc / commit into repo
common.nix ~/.config/home-manager~/setup symlink drop (HM CLI only)
common.nix username, stateVersion, programs.home-manager.enable drop
linux.nix xdg.mime.enable NixOS xdg.mime.enable (system option)
linux.nix programs.hyprlock settings programs.hyprlock.enable already set; ship config via environment.etc."hypr/hyprlock.conf" or a wrapped pkg
linux.nix services.mpd NixOS services.mpd (system service, user = "soft")
linux.nix services.mpdris2 no NixOS module → custom systemd.user.services.mpdris2 (mirror darkman.nix)
hypridle.nix services.hypridle custom systemd.user.services.hypridle + config file
darwin.nix services.syncthing no nix-darwin module → custom launchd.user.agents (serve + settings-push)
darwin.nix ~/.hushlogin, shellAliases.bg darwin activation script + alias into zsh-wrapped

pi has no home-manager — nothing to do there.

Plan — atomic PRs

home-manager stays functional until the last PR; each is verified with a host build.

  1. Linux mpd/mpdris2 — system services.mpd + custom systemd.user.services.mpdris2. (tower + leod)
  2. Linux hyprlock config — render settings to /etc/hypr/hyprlock.conf; keep programs.hyprlock.enable.
  3. Linux hypridle — custom user service + config file (folds hypridle.nix + leod.nix).
  4. Darwin syncthinglaunchd.user.agents.{syncthing,syncthing-init}, reusing lib/syncthing-settings.nix.
  5. Darwin misc.hushlogin via activation; bg alias into zsh-wrapped.
  6. .prettierrc + drop ~/.config/home-manager symlink — cross-host.
  7. Teardown — delete modules/home/, remove the 4 home-manager.users/homeConfigurations wirings, drop home-manager.{nixos,darwin}Modules imports from the 3 host files, remove the home-manager package from modules/workstation.nix, the home-manager block (useGlobalPkgs/useUserPackages), the flake input + flakeModule import, and the modules/home/* entries in flake.nix.

Open design choices

  • .prettierrc: global symlink (preserve behavior) vs. drop and rely on per-project config.
  • hyprlock/hypridle config: inline environment.etc text vs. full *-wrapped packages (matches repo convention, heavier).

Tracking (split into atomic child issues, 2026-06-23)

This epic is split into 7 atomic PRs. PRs 1–6 are independent and run in parallel; PR 7 (teardown) depends on all of 1–6 being merged.

Decisions locked in: .prettierrc kept as a global file (so non-project markdown like ~/sync/doc still gets proseWrap: always); hyprlock + hypridle delivered as *-wrapped packages.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions