nixos/devices/macbook/configuration.nix
2026-02-18 11:07:01 -05:00

129 lines
2.5 KiB
Nix

{ pkgs, inputs, system, config, ... }:
let my-emacs = pkgs.emacsNativeComp;
in {
nixpkgs.config.allowUnfree = true;
environment.systemPackages = with pkgs; [
# terminal
ranger
(inputs.vimix.packages.${system}.default)
# nix
home-manager
nix-output-monitor
# work tool
doppler
docker
colima
git
gnupg
(pass.withExtensions (exts: [ exts.pass-otp ]))
# emacs
my-emacs
fd
ripgrep
(writeShellScriptBin "drs" ''
sudo darwin-rebuild switch --flake ~/.config/nixos
'')
];
system.primaryUser = "charles";
homebrew = {
enable = true;
onActivation = {
autoUpdate = true;
cleanup = "zap";
};
brews = [
# doom emacs
"fontconfig"
];
casks = [
# internet
"spotify"
"brave-browser"
"qutebrowser"
"stremio"
# work
"slack"
"tunnelblick"
"dbeaver-community"
"claude"
# doom emacs
"font-symbols-only-nerd-font"
];
};
nix = {
# Necessary for using flakes on this system.
settings.experimental-features = "nix-command flakes";
extraOptions = ''
extra-platforms = x86_64-darwin aarm64-darwin
'';
gc = {
automatic = true;
interval = {
Weekday = 0;
Hour = 0;
Minute = 0;
};
options = "--delete-older-than 15d";
};
};
# Create /etc/zshrc that loads the nix-darwin environment.
programs.zsh.enable = true; # default shell on catalina
programs.direnv.enable = true;
programs.gnupg.agent.enable = true;
services.yabai = { enable = true; };
services.skhd.enable = true;
services.emacs = {
enable = true;
package = my-emacs;
};
# Used for backwards compatibility, please read the changelog before changing.
# $ darwin-rebuild changelog
system.stateVersion = 4;
ids.gids.nixbld = 350;
system.defaults.dock = {
autohide = true;
persistent-apps = [ ];
show-recents = false;
static-only = true;
tilesize = 32;
};
system.defaults.menuExtraClock = { Show24Hour = true; };
launchd.user.agents.remap-keys = {
serviceConfig = {
ProgramArguments = [
"/usr/bin/hidutil"
"property"
"--set"
''
{
"UserKeyMapping":[
{"HIDKeyboardModifierMappingSrc":0x700000039,"HIDKeyboardModifierMappingDst":0x7000000E7}
]
}''
];
RunAtLoad = true;
};
};
# The platform the configuration will be used on.
nixpkgs.hostPlatform = system;
}