nixos/devices/macbook/configuration.nix
Charles Sirois 721ed0653f gc
2025-06-26 11:45:17 -04:00

138 lines
2.6 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;
}