From cb13c0a084b6f046adebce0ed993163b76e8413d Mon Sep 17 00:00:00 2001 From: himkt Date: Fri, 6 Dec 2024 20:20:27 +0900 Subject: [PATCH] misc(nix): make nix files more modularized --- nix/config.d/darwin.nix | 93 +++---------------- .../darwin/environment/systemPackages.nix | 8 ++ nix/config.d/darwin/font.nix | 7 ++ nix/config.d/darwin/homebrew.nix | 20 ++++ nix/config.d/darwin/security/pam.nix | 7 ++ .../darwin/system/defaults/NSGlobalDomain.nix | 8 ++ .../darwin/system/defaults/controlcenter.nix | 26 ++++++ nix/config.d/darwin/system/defaults/dock.nix | 9 ++ .../darwin/system/defaults/finder.nix | 9 ++ .../darwin/system/defaults/loginwindow.nix | 7 ++ nix/config.d/darwin/system/keyboard.nix | 8 ++ nix/config.d/home.nix | 61 ++---------- nix/config.d/home/packages.nix | 30 ++++++ nix/config.d/home/shell.nix | 29 ++++++ 14 files changed, 188 insertions(+), 134 deletions(-) create mode 100644 nix/config.d/darwin/environment/systemPackages.nix create mode 100644 nix/config.d/darwin/font.nix create mode 100644 nix/config.d/darwin/homebrew.nix create mode 100644 nix/config.d/darwin/security/pam.nix create mode 100644 nix/config.d/darwin/system/defaults/NSGlobalDomain.nix create mode 100644 nix/config.d/darwin/system/defaults/controlcenter.nix create mode 100644 nix/config.d/darwin/system/defaults/dock.nix create mode 100644 nix/config.d/darwin/system/defaults/finder.nix create mode 100644 nix/config.d/darwin/system/defaults/loginwindow.nix create mode 100644 nix/config.d/darwin/system/keyboard.nix create mode 100644 nix/config.d/home/packages.nix create mode 100644 nix/config.d/home/shell.nix diff --git a/nix/config.d/darwin.nix b/nix/config.d/darwin.nix index 42401323..bb93ff53 100644 --- a/nix/config.d/darwin.nix +++ b/nix/config.d/darwin.nix @@ -1,92 +1,27 @@ -{ pkgs, ... }: { - # List packages installed in system profile. To search by name, run: - # $ nix-env -qaP | grep wget - environment.systemPackages = [ - ]; - - fonts.packages = [ - pkgs.jetbrains-mono - ]; +{ ... }: +{ # Necessary for using flakes on this system. nix.settings.experimental-features = "nix-command flakes"; nix.settings.trusted-users = [ "root" "himkt" ]; - # Enable alternative shell support in nix-darwin. - # programs.fish.enable = true; + imports = [ + ./darwin/system/defaults/controlcenter.nix + ./darwin/system/defaults/dock.nix + ./darwin/system/defaults/finder.nix + ./darwin/system/defaults/NSGlobalDomain.nix + ./darwin/system/defaults/loginwindow.nix + ./darwin/system/keyboard.nix + ./darwin/security/pam.nix + ./darwin/homebrew.nix + ./darwin/font.nix + ./darwin/environment/systemPackages.nix + ]; # Used for backwards compatibility, please read the changelog before changing. # $ darwin-rebuild changelog system.stateVersion = 5; - system.defaults.finder = { - AppleShowAllExtensions = true; - AppleShowAllFiles = false; - FXPreferredViewStyle = "clmv"; - }; - - system.defaults.dock = { - autohide = true; - show-recents = false; - orientation = "bottom"; - }; - - system.defaults.controlcenter = { - AirDrop = false; - BatteryShowPercentage = false; - Bluetooth = false; - Display = false; - FocusModes = false; - NowPlaying = false; - Sound = false; - }; - - # TODO(himkt); other items visibility settings (e.g. Wi-Fi). - # It modifies the almost same entries as the following command: - # `defaults -currentHost write com.apple.controlcenter WiFi -int 18` - # (18: show, 24: hide) - # - # However, it didn't change macOS UI actually even if I explicitly ran `killall SystemUIServer`. - # https://superuser.com/questions/398071/how-can-i-hide-show-the-wi-fi-menu-item-from-the-terminal-in-os-x - # - # system.defaults.CustomUserPreferences."com.apple.controlcenter" = { - # "NSStatusItem Preferred Position WiFi" = 18; - # "NSStatusItem Visible WiFi" = 1; - # }; - - system.keyboard = { - enableKeyMapping = true; - remapCapsLockToControl = true; - }; - - system.defaults.NSGlobalDomain = { - InitialKeyRepeat = 15; - KeyRepeat = 2; - }; - - system.defaults.loginwindow = { - GuestEnabled = false; - }; - - security.pam.enableSudoTouchIdAuth = true; - - homebrew = { - enable = true; - casks = [ - "arc" - "font-jetbrains-mono" - "docker" - # "notion" - "ngrok" - "insomnia" - "slack" - "visual-studio-code" - "wezterm" - "1password" - ]; - onActivation.cleanup = "uninstall"; - }; - # The platform the configuration will be used on. nixpkgs.hostPlatform = "aarch64-darwin"; } diff --git a/nix/config.d/darwin/environment/systemPackages.nix b/nix/config.d/darwin/environment/systemPackages.nix new file mode 100644 index 00000000..1b0d3ade --- /dev/null +++ b/nix/config.d/darwin/environment/systemPackages.nix @@ -0,0 +1,8 @@ +{ ... }: + +{ + # List packages installed in system profile. To search by name, run: + # $ nix-env -qaP | grep wget + environment.systemPackages = [ + ]; +} diff --git a/nix/config.d/darwin/font.nix b/nix/config.d/darwin/font.nix new file mode 100644 index 00000000..bb80f734 --- /dev/null +++ b/nix/config.d/darwin/font.nix @@ -0,0 +1,7 @@ +{ pkgs, ... }: + +{ + fonts.packages = [ + pkgs.jetbrains-mono + ]; +} diff --git a/nix/config.d/darwin/homebrew.nix b/nix/config.d/darwin/homebrew.nix new file mode 100644 index 00000000..e39d4d2b --- /dev/null +++ b/nix/config.d/darwin/homebrew.nix @@ -0,0 +1,20 @@ +{ ... }: + +{ + homebrew = { + enable = true; + casks = [ + "arc" + "font-jetbrains-mono" + "docker" + # "notion" + "ngrok" + "insomnia" + "slack" + "visual-studio-code" + "wezterm" + "1password" + ]; + onActivation.cleanup = "uninstall"; + }; +} diff --git a/nix/config.d/darwin/security/pam.nix b/nix/config.d/darwin/security/pam.nix new file mode 100644 index 00000000..570cb20b --- /dev/null +++ b/nix/config.d/darwin/security/pam.nix @@ -0,0 +1,7 @@ +{ ... }: + +{ + security.pam = { + enableSudoTouchIdAuth = true; + }; +} diff --git a/nix/config.d/darwin/system/defaults/NSGlobalDomain.nix b/nix/config.d/darwin/system/defaults/NSGlobalDomain.nix new file mode 100644 index 00000000..c97dfcc6 --- /dev/null +++ b/nix/config.d/darwin/system/defaults/NSGlobalDomain.nix @@ -0,0 +1,8 @@ +{ ... }: + +{ + system.defaults.NSGlobalDomain = { + InitialKeyRepeat = 15; + KeyRepeat = 2; + }; +} diff --git a/nix/config.d/darwin/system/defaults/controlcenter.nix b/nix/config.d/darwin/system/defaults/controlcenter.nix new file mode 100644 index 00000000..6e977eef --- /dev/null +++ b/nix/config.d/darwin/system/defaults/controlcenter.nix @@ -0,0 +1,26 @@ +{ ... }: + +{ + # TODO(himkt); other items visibility settings (e.g. Wi-Fi). + # It modifies the almost same entries as the following command: + # `defaults -currentHost write com.apple.controlcenter WiFi -int 18` + # (18: show, 24: hide) + # + # However, it didn't change macOS UI actually even if I explicitly ran `killall SystemUIServer`. + # https://superuser.com/questions/398071/how-can-i-hide-show-the-wi-fi-menu-item-from-the-terminal-in-os-x + # + # system.defaults.CustomUserPreferences."com.apple.controlcenter" = { + # "NSStatusItem Preferred Position WiFi" = 18; + # "NSStatusItem Visible WiFi" = 1; + # }; + + system.defaults.controlcenter = { + AirDrop = false; + BatteryShowPercentage = false; + Bluetooth = false; + Display = false; + FocusModes = false; + NowPlaying = false; + Sound = false; + }; +} diff --git a/nix/config.d/darwin/system/defaults/dock.nix b/nix/config.d/darwin/system/defaults/dock.nix new file mode 100644 index 00000000..45664234 --- /dev/null +++ b/nix/config.d/darwin/system/defaults/dock.nix @@ -0,0 +1,9 @@ +{ ... }: + +{ + system.defaults.dock = { + autohide = true; + show-recents = false; + orientation = "bottom"; + }; +} diff --git a/nix/config.d/darwin/system/defaults/finder.nix b/nix/config.d/darwin/system/defaults/finder.nix new file mode 100644 index 00000000..595d9e10 --- /dev/null +++ b/nix/config.d/darwin/system/defaults/finder.nix @@ -0,0 +1,9 @@ +{ ... }: + +{ + system.defaults.finder = { + AppleShowAllExtensions = true; + AppleShowAllFiles = false; + FXPreferredViewStyle = "clmv"; + }; +} diff --git a/nix/config.d/darwin/system/defaults/loginwindow.nix b/nix/config.d/darwin/system/defaults/loginwindow.nix new file mode 100644 index 00000000..5b28b378 --- /dev/null +++ b/nix/config.d/darwin/system/defaults/loginwindow.nix @@ -0,0 +1,7 @@ +{ ... }: + +{ + system.defaults.loginwindow = { + GuestEnabled = false; + }; +} diff --git a/nix/config.d/darwin/system/keyboard.nix b/nix/config.d/darwin/system/keyboard.nix new file mode 100644 index 00000000..49e61825 --- /dev/null +++ b/nix/config.d/darwin/system/keyboard.nix @@ -0,0 +1,8 @@ +{ ... }: + +{ + system.keyboard = { + enableKeyMapping = true; + remapCapsLockToControl = true; + }; +} diff --git a/nix/config.d/home.nix b/nix/config.d/home.nix index 195a9d7a..2ecfd7a4 100644 --- a/nix/config.d/home.nix +++ b/nix/config.d/home.nix @@ -1,7 +1,6 @@ -{ pkgs, config, ... }: -{ - home.username = "himkt"; +{ ... }: +{ # This value determines the Home Manager release that your # configuration is compatible with. This helps avoid breakage # when a new Home Manager release introduces backwards @@ -11,60 +10,12 @@ # the Home Manager release notes for a list of state version # changes in each release. home.stateVersion = "24.11"; + home.username = "himkt"; - home.packages = [ - pkgs.atuin - pkgs.coreutils - pkgs.difftastic - pkgs.fzf - pkgs.jq - pkgs.tree - - pkgs.git - pkgs.git-lfs - pkgs.gh - pkgs.ghq - - pkgs.zsh - pkgs.zsh-autocomplete - pkgs.zsh-syntax-highlighting - pkgs.zoxide - - pkgs.kubectl - pkgs.krew - pkgs.k9s - - pkgs.neovim - - pkgs.nixd + imports = [ + ./home/shell.nix + ./home/packages.nix ]; - # NOTE(himkt); https://github.com/nix-community/home-manager/blob/master/modules/programs/zsh.nix - # (different from https://github.com/NixOS/nixpkgs/blob/nixos-24.11/nixos/modules/programs/zsh/zsh.nix) - programs.zsh = { - enable = true; - enableCompletion = true; - autosuggestion.enable = true; - syntaxHighlighting.enable = true; - - history = { - size = 100000; - }; - - shellAliases = { - git-home = "cd `git rev-parse --show-toplevel`"; - t = "tips"; - vim = "nvim"; - cd = "z"; - ls = "ls --color"; - retcode = "echo $?"; - }; - - - initExtra = '' - source ${config.home.homeDirectory}/dotfiles/zsh/config.d/zshrc - ''; - }; - programs.home-manager.enable = true; } diff --git a/nix/config.d/home/packages.nix b/nix/config.d/home/packages.nix new file mode 100644 index 00000000..a77fa558 --- /dev/null +++ b/nix/config.d/home/packages.nix @@ -0,0 +1,30 @@ +{ pkgs, ... }: + +{ + home.packages = [ + pkgs.atuin + pkgs.coreutils + pkgs.difftastic + pkgs.fzf + pkgs.jq + pkgs.tree + + pkgs.git + pkgs.git-lfs + pkgs.gh + pkgs.ghq + + pkgs.zsh + pkgs.zsh-autocomplete + pkgs.zsh-syntax-highlighting + pkgs.zoxide + + pkgs.kubectl + pkgs.krew + pkgs.k9s + + pkgs.neovim + + pkgs.nixd + ]; +} diff --git a/nix/config.d/home/shell.nix b/nix/config.d/home/shell.nix new file mode 100644 index 00000000..0abb78e7 --- /dev/null +++ b/nix/config.d/home/shell.nix @@ -0,0 +1,29 @@ +{ config, ... }: + +{ + # NOTE(himkt); https://github.com/nix-community/home-manager/blob/master/modules/programs/zsh.nix + # (different from https://github.com/NixOS/nixpkgs/blob/nixos-24.11/nixos/modules/programs/zsh/zsh.nix) + programs.zsh = { + enable = true; + enableCompletion = true; + autosuggestion.enable = true; + syntaxHighlighting.enable = true; + + history = { + size = 100000; + }; + + shellAliases = { + git-home = "cd `git rev-parse --show-toplevel`"; + t = "tips"; + vim = "nvim"; + cd = "z"; + ls = "ls --color"; + retcode = "echo $?"; + }; + + initExtra = '' + source ${config.home.homeDirectory}/dotfiles/zsh/config.d/zshrc + ''; + }; +}