Files
machine_setup/nix/nix-darwin/flake.nix
2026-08-12 18:16:10 -04:00

129 lines
3.8 KiB
Nix

# Initial install:
# Install nix: https://github.com/nixOS/nix-installer
# sudo nix run nix-darwin -- switch --flake .#garak
#
# Update after that:
# sudo darwin-rebuild switch --flake .#garak
#
# Manual:
# Install rosetta to run x86_64 programs:
# softwareupdate --install-rosetta --agree-to-license
#
# Install homebrew for installing graphical apps:
# /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
{
description = "nix-darwin system flake";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
nix-darwin.url = "github:nix-darwin/nix-darwin/master";
nix-darwin.inputs.nixpkgs.follows = "nixpkgs";
};
outputs = inputs@{ self, nix-darwin, nixpkgs }:
let
configuration = { pkgs, ... }: {
# List packages installed in system profile. To search by name, run:
# $ nix-env -qaP | grep wget
environment.systemPackages =
[
pkgs.tmux
pkgs.htop
pkgs.git
];
# Necessary for using flakes on this system.
nix.settings.experimental-features = "nix-command flakes";
# Enable alternative shell support in nix-darwin.
# programs.fish.enable = true;
# Set Git commit hash for darwin-version.
system.configurationRevision = self.rev or self.dirtyRev or null;
# Used for backwards compatibility, please read the changelog before changing.
# $ darwin-rebuild changelog
system.stateVersion = 6;
# The platform the configuration will be used on.
nixpkgs.hostPlatform = "aarch64-darwin";
# Identifies which user some settings apply to.
system.primaryUser = "talexander";
# Enable Linux VM for building Linux binaries.
#
# Test with:
# nix build --impure --expr '(with import <nixpkgs> { system = "aarch64-linux"; }; runCommand "foo" {} "uname -a > $out")'
nix.linux-builder.enable = true;
# system.defaults.CustomUserPreferences = {
# "com.apple.desktopservices" = {
# # Do not write .DS_Store files to external volumes
# DSDontWriteNetworkStores = true;
# DSDontWriteUSBStores = true;
# };
# "com.apple.screensaver" = {
# # Ask for password when returning from screensaver
# askForPassword = 1;
# askForPasswordDelay = 0;
# };
# "com.apple.SoftwareUpdate" = {
# AutomaticCheckEnabled = true;
# # Download updates in the background
# AutomaticDownload = 1;
# };
# };
# Use homebrew to install graphical apps from casks.
# homebrew = {
# enable = false;
# casks = [
# "firefox"
# ];
# };
# system.defaults = {
# dock = {
# autohide = true;
# };
# };
environment.variables = {
TERMINFO_DIRS = ["${pkgs.alacritty.terminfo.outPath}/share/terminfo"];
};
power = {
sleep = {
# sudo pmset -a displaysleep 10 sleep 0 disksleep 10
# Other options to consider: lowpowermode 0 standby 0 hibernatemode 0 powernap 0
#
# Defaults:
# standby 0
# Sleep On Power Button 1
# autorestartatconnect 0
# autorestart 0
# powernap 1
# networkoversleep 0
# disksleep 10
# sleep 1
# ttyskeepawake 1
# displaysleep 10
# tcpkeepalive 1
# womp 1
#
computer = "never";
display = 10;
harddisk = 10;
};
};
};
in
{
darwinConfigurations."garak" = nix-darwin.lib.darwinSystem {
modules = [ configuration ];
};
};
}