summaryrefslogtreecommitdiff
path: root/modules/darwin
diff options
context:
space:
mode:
Diffstat (limited to 'modules/darwin')
-rw-r--r--modules/darwin/common/default.nix10
-rw-r--r--modules/darwin/common/home-manager.nix3
-rw-r--r--modules/darwin/common/locale.nix7
-rw-r--r--modules/darwin/common/networking.nix10
-rw-r--r--modules/darwin/common/nix.nix21
-rw-r--r--modules/darwin/common/shell.nix3
-rw-r--r--modules/darwin/common/users.nix11
-rw-r--r--modules/darwin/default.nix10
-rw-r--r--modules/darwin/emacs.nix15
-rw-r--r--modules/darwin/fonts.nix12
-rw-r--r--modules/darwin/gnupg.nix15
-rw-r--r--modules/darwin/homebrew.nix23
-rw-r--r--modules/darwin/profiles/default.nix93
-rw-r--r--modules/darwin/profiles/headful.nix19
14 files changed, 252 insertions, 0 deletions
diff --git a/modules/darwin/common/default.nix b/modules/darwin/common/default.nix
new file mode 100644
index 0000000..149b2d6
--- /dev/null
+++ b/modules/darwin/common/default.nix
@@ -0,0 +1,10 @@
+_: {
+ imports = [
+ ./home-manager.nix
+ ./locale.nix
+ ./networking.nix
+ ./nix.nix
+ ./shell.nix
+ ./users.nix
+ ];
+}
diff --git a/modules/darwin/common/home-manager.nix b/modules/darwin/common/home-manager.nix
new file mode 100644
index 0000000..4fc6cbe
--- /dev/null
+++ b/modules/darwin/common/home-manager.nix
@@ -0,0 +1,3 @@
+{inputs, ...}: {
+ imports = [inputs.home-manager.darwinModule];
+}
diff --git a/modules/darwin/common/locale.nix b/modules/darwin/common/locale.nix
new file mode 100644
index 0000000..1ecf6fe
--- /dev/null
+++ b/modules/darwin/common/locale.nix
@@ -0,0 +1,7 @@
+{lib, ...}:
+with lib; {
+ environment.variables.LANG = "en_GB.UTF-8";
+
+ # TODO https://daiderd.com/nix-darwin/manual/index.html#opt-system.keyboard.enableKeyMapping
+ system.keyboard = {};
+}
diff --git a/modules/darwin/common/networking.nix b/modules/darwin/common/networking.nix
new file mode 100644
index 0000000..6c503bc
--- /dev/null
+++ b/modules/darwin/common/networking.nix
@@ -0,0 +1,10 @@
+{
+ this,
+ localHostname ? this.hostname,
+ ...
+}: {
+ networking = {
+ computerName = localHostname;
+ hostName = localHostname;
+ };
+}
diff --git a/modules/darwin/common/nix.nix b/modules/darwin/common/nix.nix
new file mode 100644
index 0000000..a522cb0
--- /dev/null
+++ b/modules/darwin/common/nix.nix
@@ -0,0 +1,21 @@
+{
+ lib,
+ this,
+ ...
+}:
+with lib; {
+ nix = {
+ daemonIOLowPriority = false;
+ daemonProcessType = "Standard";
+
+ extraOptions = optionalString (this.system == "aarch64-darwin") ''
+ extra-platforms = x86_64-darwin aarch64-darwin
+ '';
+
+ settings.trusted-users = ["@admin"];
+ };
+
+ services.nix-daemon.enable = true;
+
+ system.stateVersion = 4;
+}
diff --git a/modules/darwin/common/shell.nix b/modules/darwin/common/shell.nix
new file mode 100644
index 0000000..5985f50
--- /dev/null
+++ b/modules/darwin/common/shell.nix
@@ -0,0 +1,3 @@
+{pkgs, ...}: {
+ environment.shells = with pkgs; [bashInteractive];
+}
diff --git a/modules/darwin/common/users.nix b/modules/darwin/common/users.nix
new file mode 100644
index 0000000..957e50c
--- /dev/null
+++ b/modules/darwin/common/users.nix
@@ -0,0 +1,11 @@
+{
+ lib,
+ localUsername ? lib.my.username,
+ ...
+}:
+with lib; {
+ # The only MacOS machine I'm currently using has a pre-configured domain user
+ # account that I have to login as. I may accidentally break something if I
+ # change options here so this section is left practically untouched.
+ users.users.${localUsername}.home = "/Users/${localUsername}";
+}
diff --git a/modules/darwin/default.nix b/modules/darwin/default.nix
new file mode 100644
index 0000000..153c857
--- /dev/null
+++ b/modules/darwin/default.nix
@@ -0,0 +1,10 @@
+_: {
+ imports = [
+ ./common
+ ./emacs.nix
+ ./fonts.nix
+ ./gnupg.nix
+ ./homebrew.nix
+ ./profiles
+ ];
+}
diff --git a/modules/darwin/emacs.nix b/modules/darwin/emacs.nix
new file mode 100644
index 0000000..02bfb83
--- /dev/null
+++ b/modules/darwin/emacs.nix
@@ -0,0 +1,15 @@
+{
+ config,
+ lib,
+ ...
+}:
+with lib; let
+ cfg = config.nixfiles.modules.emacs;
+in {
+ config = mkIf cfg.enable {
+ # services.emacs = {
+ # enable = true;
+ # package = config.hm.programs.doom-emacs.package;
+ # };
+ };
+}
diff --git a/modules/darwin/fonts.nix b/modules/darwin/fonts.nix
new file mode 100644
index 0000000..741fdc8
--- /dev/null
+++ b/modules/darwin/fonts.nix
@@ -0,0 +1,12 @@
+{
+ config,
+ lib,
+ ...
+}:
+with lib; let
+ cfg = config.nixfiles.modules.fonts;
+in {
+ config = mkIf cfg.enable {
+ fonts.fontDir.enable = true;
+ };
+}
diff --git a/modules/darwin/gnupg.nix b/modules/darwin/gnupg.nix
new file mode 100644
index 0000000..073d3b1
--- /dev/null
+++ b/modules/darwin/gnupg.nix
@@ -0,0 +1,15 @@
+{
+ config,
+ lib,
+ ...
+}:
+with lib; let
+ cfg = config.nixfiles.modules.gnupg;
+in {
+ config = mkIf cfg.enable {
+ programs.gnupg.agent = {
+ enable = true;
+ enableSSHSupport = true;
+ };
+ };
+}
diff --git a/modules/darwin/homebrew.nix b/modules/darwin/homebrew.nix
new file mode 100644
index 0000000..35e8e77
--- /dev/null
+++ b/modules/darwin/homebrew.nix
@@ -0,0 +1,23 @@
+{
+ config,
+ inputs,
+ lib,
+ pkgs,
+ ...
+}:
+with lib; let
+ cfg = config.nixfiles.modules.homebrew;
+in {
+ options.nixfiles.modules.homebrew.enable = mkEnableOption "Homebrew";
+
+ config = mkIf cfg.enable {
+ # This option requires an installed Homebrew[1].
+ #
+ # [1]: https://daiderd.com/nix-darwin/manual/index.html#opt-homebrew.enable
+ # [1]: https://brew.sh
+ homebrew = {
+ enable = true;
+ taps = [];
+ };
+ };
+}
diff --git a/modules/darwin/profiles/default.nix b/modules/darwin/profiles/default.nix
new file mode 100644
index 0000000..f42647a
--- /dev/null
+++ b/modules/darwin/profiles/default.nix
@@ -0,0 +1,93 @@
+{
+ config,
+ lib,
+ pkgs,
+ this,
+ ...
+}:
+with lib; let
+ cfg = config.nixfiles.modules.profiles.default;
+in {
+ imports = [
+ ./headful.nix
+ ];
+
+ config = mkIf cfg.enable {
+ hm.home.packages = with pkgs; [m-cli];
+
+ system = {
+ defaults = {
+ CustomUserPreferences = {};
+
+ ActivityMonitor = {};
+
+ NSGlobalDomain = {
+ AppleEnableMouseSwipeNavigateWithScrolls = true;
+ AppleEnableSwipeNavigateWithScrolls = true;
+
+ AppleInterfaceStyle = "Dark";
+
+ AppleShowAllExtensions = true;
+ AppleShowAllFiles = true;
+
+ InitialKeyRepeat = 15;
+ KeyRepeat = 2;
+
+ NSAutomaticCapitalizationEnabled = false;
+ NSAutomaticDashSubstitutionEnabled = false;
+ NSAutomaticPeriodSubstitutionEnabled = false;
+ NSAutomaticQuoteSubstitutionEnabled = false;
+ NSAutomaticSpellingCorrectionEnabled = false;
+
+ # Make function keys to work as they should.
+ "com.apple.keyboard.fnState" = true;
+
+ # Disable the absolutely retarded "natural" scrolling.
+ "com.apple.swipescrolldirection" = false;
+ };
+
+ dock = {
+ orientation = "bottom";
+ tilesize = 18;
+
+ show-recents = false;
+ static-only = false;
+
+ # Disable hot corners.
+ wvous-bl-corner = 1;
+ wvous-br-corner = 1;
+ wvous-tl-corner = 1;
+ wvous-tr-corner = 1;
+ };
+
+ finder = {
+ AppleShowAllExtensions = true;
+ AppleShowAllFiles = true;
+
+ CreateDesktop = true;
+
+ FXDefaultSearchScope = "SCcf";
+ FXEnableExtensionChangeWarning = false;
+ FXPreferredViewStyle = "clmv";
+
+ ShowStatusBar = false;
+ ShowPathbar = true;
+ _FXShowPosixPathInTitle = true;
+ };
+
+ trackpad = {
+ Clicking = true;
+ Dragging = false;
+ };
+ };
+
+ keyboard = {
+ enableKeyMapping = true;
+ nonUS.remapTilde = true;
+ remapCapsLockToControl = false;
+ remapCapsLockToEscape = true;
+ swapLeftCommandAndLeftAlt = false;
+ };
+ };
+ };
+}
diff --git a/modules/darwin/profiles/headful.nix b/modules/darwin/profiles/headful.nix
new file mode 100644
index 0000000..44695f6
--- /dev/null
+++ b/modules/darwin/profiles/headful.nix
@@ -0,0 +1,19 @@
+{
+ config,
+ lib,
+ pkgs,
+ this,
+ ...
+}:
+with lib; let
+ cfg = config.nixfiles.modules.profiles.headful;
+in {
+ config = mkIf cfg.enable {
+ nixfiles.modules.homebrew.enable = true;
+
+ homebrew.casks = [
+ {name = "firefox";}
+ {name = "telegram-desktop";}
+ ];
+ };
+}