about summary refs log tree commit diff
path: root/modules/darwin
diff options
context:
space:
mode:
authorAzat Bahawi <azat@bahawi.net>2022-12-17 16:39:09 +0300
committerAzat Bahawi <azat@bahawi.net>2022-12-17 16:39:09 +0300
commit8f137c28230623259a964484adcf31fe00756594 (patch)
tree82bce6a13fda125087cf6d9dc80aa91d9230d6c4 /modules/darwin
parent2022-11-20 (diff)
2022-12-17
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";}
+    ];
+  };
+}

Consider giving Nix/NixOS a try! <3