178 lines
5.2 KiB
Nix
178 lines
5.2 KiB
Nix
{
|
|
description = "nix system flake";
|
|
|
|
inputs = {
|
|
# Not manager by home manager, to update: nix flake lock --update-input <input>
|
|
nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
|
|
nix-darwin.url = "github:LnL7/nix-darwin";
|
|
nix-darwin.inputs.nixpkgs.follows = "nixpkgs";
|
|
home-manager.url = "github:nix-community/home-manager";
|
|
home-manager.inputs.nixpkgs.follows = "nixpkgs";
|
|
mac-app-util.url = "github:hraban/mac-app-util";
|
|
mac-app-util.inputs.nixpkgs.follows = "nixpkgs";
|
|
nixgl.url = "github:nix-community/nixGL";
|
|
nixgl.inputs.nixpkgs.follows = "nixpkgs";
|
|
};
|
|
|
|
outputs = inputs@{
|
|
self,
|
|
home-manager,
|
|
mac-app-util,
|
|
nix-darwin,
|
|
nixgl,
|
|
nixpkgs,
|
|
}:
|
|
let
|
|
darwin-common = { pkgs, ... }:
|
|
let
|
|
custom-key-mapping = {
|
|
# AI Instructions
|
|
# I need a mapping that switches my keyboard keys in the following way:
|
|
# the key above TAB and left of number 1 (lets call this key NEWTILDE has a code 30064771172)
|
|
# the key between left shift and Z (lets call this key NEWPIPE has a code 30064771125)
|
|
# the key above right shift and left of the big enter key (lets call this key NEWPLUSMINUS has a code 30064771121)
|
|
#
|
|
# Write the mapping in such a way that:
|
|
# NEWTILDE switches with NEWPIPE
|
|
# NEWPIPE overrides NEWPLUSMINUS
|
|
UserKeyMapping = [
|
|
{
|
|
HIDKeyboardModifierMappingSrc = 30064771125;
|
|
HIDKeyboardModifierMappingDst = 30064771172;
|
|
}
|
|
{
|
|
HIDKeyboardModifierMappingSrc = 30064771172;
|
|
HIDKeyboardModifierMappingDst = 30064771121;
|
|
}
|
|
];
|
|
};
|
|
in
|
|
{
|
|
# List packages installed in system profile. To search by name, run:
|
|
# $ nix-env -qaP | grep wget
|
|
environment.systemPackages = with pkgs; [
|
|
git
|
|
vim
|
|
];
|
|
|
|
launchd.user.agents = {
|
|
"custom-key-mapping" = {
|
|
script = ''
|
|
/usr/bin/hidutil property --set '${builtins.toJSON custom-key-mapping}' > /dev/null
|
|
'';
|
|
serviceConfig = {
|
|
RunAtLoad = true;
|
|
};
|
|
};
|
|
};
|
|
|
|
# The platform the configuration will be used on.
|
|
nixpkgs.hostPlatform = "aarch64-darwin";
|
|
|
|
# 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 = 5;
|
|
|
|
system.defaults = {
|
|
finder = {
|
|
_FXShowPosixPathInTitle = true; # show full path in finder title
|
|
AppleShowAllExtensions = true; # show all file extensions
|
|
FXEnableExtensionChangeWarning = false; # disable warning when changing file extension
|
|
QuitMenuItem = true; # enable quit menu item
|
|
ShowPathbar = true; # show path bar
|
|
ShowStatusBar = true; # show status bar
|
|
};
|
|
};
|
|
|
|
# Auto upgrade nix package and the daemon service.
|
|
services.nix-daemon.enable = true;
|
|
|
|
nix = {
|
|
configureBuildUsers = true;
|
|
distributedBuilds = true;
|
|
|
|
gc = {
|
|
automatic = true;
|
|
options = "--delete-older-than 7d";
|
|
};
|
|
settings = {
|
|
experimental-features = "nix-command flakes";
|
|
};
|
|
};
|
|
|
|
homebrew = {
|
|
enable = true;
|
|
onActivation = {
|
|
autoUpdate = true;
|
|
# 'zap': uninstalls all formulae(and related files) not listed here.
|
|
cleanup = "zap";
|
|
upgrade = true;
|
|
};
|
|
};
|
|
};
|
|
in
|
|
{
|
|
homeConfigurations = let
|
|
pkgs = import nixpkgs {
|
|
system = "x86_64-linux";
|
|
overlays = [
|
|
nixgl.overlay
|
|
];
|
|
config = {
|
|
allowUnfree = true;
|
|
};
|
|
};
|
|
in {
|
|
# init with
|
|
# nix run home-manager/master -- switch --flake ~/.config/nix
|
|
# update with
|
|
# home-manager switch --flake ~/.config/nix
|
|
"becky@dingleberry" = home-manager.lib.homeManagerConfiguration {
|
|
# pkgs = nixpkgs.legacyPackages.x86_64-linux;
|
|
inherit pkgs;
|
|
|
|
modules = [
|
|
./devices/becky-dingleberry.nix
|
|
];
|
|
};
|
|
};
|
|
|
|
darwinConfigurations = {
|
|
# init with
|
|
# nix run nix-darwin -- switch --flake ~/.config/nix
|
|
# update with
|
|
# darwin-rebuild switch --flake ~/.config/nix
|
|
lcech-mac = nix-darwin.lib.darwinSystem {
|
|
system = "aarch64-darwin";
|
|
modules = [
|
|
mac-app-util.darwinModules.default
|
|
darwin-common
|
|
{
|
|
# brew install --cask
|
|
# these need to be updated manually
|
|
homebrew.casks = [
|
|
"ghostty"
|
|
"spotify"
|
|
];
|
|
}
|
|
home-manager.darwinModules.home-manager
|
|
{
|
|
home-manager = {
|
|
useGlobalPkgs = true;
|
|
useUserPackages = true;
|
|
users.lcech.imports = [
|
|
mac-app-util.homeManagerModules.default
|
|
./devices/lcech-mac-veracode.nix
|
|
];
|
|
};
|
|
users.users.lcech.home = "/Users/lcech";
|
|
}
|
|
];
|
|
};
|
|
};
|
|
};
|
|
}
|