Hello Everyone,
as you can see on my screenshot, i am using an intel based mac for years now, which i customized to my needs. However i have reached the limits of this machine in terms of customization options and would like to move to linux to test it out as a daily driver. I’m actually quite happy with mac from the pov that everything just works, however there are certain things that annoy me, but apple does not allow me to change them.
As a newbie in terms of desktop linux (i’ve used ubuntu roughly 12 years ago as a daily driver and am familar with headless linux), i’d like your advice.
Specifically I am looking for:
- a minimal, fast system
- keyboard / shortcut based - all interactions can be done from keyboard (within common sense limits)
- all keys can be custom mapped (i have muscle memory of my custom keys for certain actions, so i’d like to keep them)
- all can be configured from dotfiles (worse case shell scripts and ansible)
- very low ressource consumption, snappy system with no delays.
I’d like to try NixOs due to it’s unique configuration ability, however on a headless server it was a buggy pain just weeks ago (for example user passwords just vanished/changed without any external influence, not allowing access anymore), so i’m open to alternatives.
What i am looking for in advice is:
- a minimal, configurable (file based for git) tiling window manager
- a top status bar like you see in the screenshot that i can freely configure
- as much terminal emulator based as possible (i honestly mostly only need a browser and the terminal, most other apps have a TUI that i can use with the keyboard, see the above requirement)
- terminal based package management as easy as brew (maybe Nix?)
- custom keyboard layout (I am not a native english speaker, so i mapped all non-english characters to my option keys with the english layout as the base)
- Option to use 2 keyboards at once (come by default when using Karabiner Elements) as i combined 2 small keyboards to one to a fake split keyboard ;)
My current stack on macos is Hammerspoon for heavy customization, Karabiner Elements, yabai, kitty (and alacritty, for ssh, as kitty is bad with ssh in my personal experience), sketchybar. firefox (customized for privacy)
Any good recommendations or dotfiles? Anything i should look out for as a MacOs User?
Thanks in advance!
Could this have happened if
users.mutableUsers
was set tofalse
? I see a warning in the manual saying in that case users and groups will be replaced on system activation.It might have. I’ve tried nixos on a mini PC meant as a home server, so most configuration is done via SSH and users don’t change (much), I might have accidently activate it while trying nixos out.
Making users unable to login is a bit of an odd (side?) Effect, but maybe I’m not understanding the purpose of this option correctly. I’ll stay away from it for now :D
The NixOS ideal is that every detail of the system is configured through Nix expressions so that the system is completely reproducible. But in practice there are some details you might want to configure directly.
With
users.mutableUsers = false
you are in the “ideal” declarative mode where users and groups are supposed to be fully represented inconfiguration.nix
including passwords (or hashed passwords). In this mode the Nix config overrides everything in/etc/passwd
. If the Nix config doesn’t specify passwords I think the default is to leave the account without a password, disabling login for that account.With
users.mutableUsers = true
NixOS respects changes to user and group accounts made outside ofconfiguration.nix
. Accounts configured through Nix will be added to/etc/password
if they aren’t already there. But NixOS won’t remove accounts, and won’t modify or unset passwords. In this mode the default of leaving the password unset makes sense because you’re expected to set a password by runningpasswd
. This is the typical choice because there are security problems with putting passwords inconfiguration.nix
.You can set passwords in the Nix config using the
password
,passwordFile
,hashedPassword
, orinitialPassword
options. IfmutableUsers
istrue
these options only set the password the first time the user account is created. I checked to see if there are any options that implicitly disable mutable users, but I didn’t find any.