From 32bda17076bebb0c042fe2c33b5b3eb44cedaa44 Mon Sep 17 00:00:00 2001 From: willemml Date: Mon, 20 Mar 2023 14:40:10 -0700 Subject: [PATCH] home-manager separate darwin modules --- flake-parts/home-manager/default.nix | 2 +- flake-parts/home-manager/modules.nix | 10 +++- flake-parts/home-manager/users.nix | 52 ++++++++++++++----- flake-parts/nixos/hosts.nix | 8 +++ .../modules/profiles/user/willem/base.nix | 3 -- .../willem/darwin/{default.nix => base.nix} | 17 +++--- .../profiles/user/willem/darwin/finder.nix | 2 +- .../profiles/user/willem/darwin/iterm2.nix | 2 +- .../profiles/user/willem/darwin/launchd.nix | 2 +- home-manager/modules/services/emacs.nix | 21 -------- home-manager/modules/services/offlineimap.nix | 21 -------- 11 files changed, 67 insertions(+), 73 deletions(-) rename home-manager/modules/profiles/user/willem/darwin/{default.nix => base.nix} (86%) delete mode 100644 home-manager/modules/services/emacs.nix delete mode 100644 home-manager/modules/services/offlineimap.nix diff --git a/flake-parts/home-manager/default.nix b/flake-parts/home-manager/default.nix index 28d8c05..1c84df2 100644 --- a/flake-parts/home-manager/default.nix +++ b/flake-parts/home-manager/default.nix @@ -15,7 +15,7 @@ ; inherit (flake-parts-lib) mkSubmoduleOptions; in { - imports = [./modules.nix ./users.nix ./configurations.nix]; + imports = [./configurations.nix ./modules.nix ./users.nix]; options = { flake = mkSubmoduleOptions { diff --git a/flake-parts/home-manager/modules.nix b/flake-parts/home-manager/modules.nix index b5f8936..4077994 100644 --- a/flake-parts/home-manager/modules.nix +++ b/flake-parts/home-manager/modules.nix @@ -10,13 +10,19 @@ }: { flake.homeManagerModules = let modules = self.lib.importDirToAttrs ../../home-manager/modules; + non-darwin-modules = lib.filterAttrs (n: v: !(lib.hasInfix "darwin" n)) modules; + darwin-modules = lib.filterAttrs (n: v: (lib.hasInfix "darwin" n)) modules; in { default = { - imports = builtins.attrValues modules; + imports = builtins.attrValues non-darwin-modules; }; - nixpkgs-Config = { + darwin = { + imports = builtins.attrValues darwin-modules; + }; + + nixpkgs-config = { nixpkgs.config.allowUnfreePredicate = _: true; nixpkgs.config.allowUnsupportedSystem = true; nixpkgs.overlays = builtins.attrValues self.overlays; diff --git a/flake-parts/home-manager/users.nix b/flake-parts/home-manager/users.nix index ca2ac88..e990b82 100644 --- a/flake-parts/home-manager/users.nix +++ b/flake-parts/home-manager/users.nix @@ -4,24 +4,50 @@ lib, ... }: { + flake = { + homeManagerModules.user-willem = { + imports = [ + self.homeManagerModules.default + self.homeManagerModules.nixpkgs-useFlakeNixpkgs + self.homeManagerModules.nixpkgs-config + ]; + + home.username = "willem"; + home.stateVersion = "22.11"; + }; + + homeManagerModules.user-willem-darwin = { + imports = [ + self.homeManagerModules.darwin + self.homeManagerModules.user-willem + ]; + + home.homeDirectory = "/Users/willem"; + }; + + homeManagerModules.user-willem-linux = { + imports = [self.homeManagerModules.user-willem]; + + home.homeDirectory = "/home/willem"; + }; + }; + perSystem = { pkgs, self', + system, ... }: rec { - homeConfigurations.willem = inputs.home-manager.lib.homeManagerConfiguration { - inherit pkgs; - modules = let - nurNoPkgs = import inputs.nur { - pkgs = null; - nurpkgs = pkgs; - }; - in [ - self.homeManagerModules.nixpkgs-useFlakeNixpkgs - self.homeManagerModules.nixpkgs-Config - self.homeManagerModules.default - ]; - }; + homeConfigurations.willem = let + systemType = + if pkgs.stdenv.isDarwin + then "darwin" + else "linux"; + in + inputs.home-manager.lib.homeManagerConfiguration { + inherit pkgs; + modules = [self.homeManagerModules."user-willem-${systemType}"]; + }; packages = let activationPackages = builtins.mapAttrs (_: lib.getAttr "activationPackage") homeConfigurations; in diff --git a/flake-parts/nixos/hosts.nix b/flake-parts/nixos/hosts.nix index 0f58e0b..088df82 100644 --- a/flake-parts/nixos/hosts.nix +++ b/flake-parts/nixos/hosts.nix @@ -16,6 +16,10 @@ nixpkgs.overlays = builtins.attrValues self.overlays; nixpkgs.config.allowUnfree = true; + + home-manager = { + sharedModules = [self.homeManagerModules.user-willem-linux]; + }; }; darwinModules.base = {config, ...}: { @@ -28,6 +32,10 @@ nixpkgs.overlays = builtins.attrValues self.overlays; nixpkgs.config.allowUnfree = true; + + home-manager = { + sharedModules = [self.homeManagerModules.user-willem-darwin]; + }; }; nixosConfigurations.zeusvm = inputs.nixpkgs.lib.nixosSystem { diff --git a/home-manager/modules/profiles/user/willem/base.nix b/home-manager/modules/profiles/user/willem/base.nix index 733b921..788ede4 100644 --- a/home-manager/modules/profiles/user/willem/base.nix +++ b/home-manager/modules/profiles/user/willem/base.nix @@ -7,7 +7,6 @@ emacsCommand = "emacsclient -c -nw"; in rec { home = { - homeDirectory = "/Users/willem"; keyboard = { layout = "us"; variant = "colemak"; @@ -23,7 +22,5 @@ in rec { UBCDIR = "${ORGDIR}/ubc"; MAILDIR = "${config.home.homeDirectory}/Maildir"; }; - stateVersion = "22.11"; - username = "willem"; }; } diff --git a/home-manager/modules/profiles/user/willem/darwin/default.nix b/home-manager/modules/profiles/user/willem/darwin/base.nix similarity index 86% rename from home-manager/modules/profiles/user/willem/darwin/default.nix rename to home-manager/modules/profiles/user/willem/darwin/base.nix index 5994e54..afcd431 100644 --- a/home-manager/modules/profiles/user/willem/darwin/default.nix +++ b/home-manager/modules/profiles/user/willem/darwin/base.nix @@ -4,8 +4,6 @@ lib, ... }: let - inherit (lib) mkIf; - inherit (pkgs) stdenv; appCommands = { calibre = "Calibre"; ical = "Calendar"; @@ -17,7 +15,7 @@ zotero = "Zotero"; }; in { - home.file.".gnupg/gpg-agent.conf" = mkIf stdenv.isDarwin { + home.file.".gnupg/gpg-agent.conf" = { text = '' pinentry-program "${pkgs.pinentry-touchid}/bin/pinentry-touchid" default-cache-ttl 30 @@ -25,7 +23,7 @@ in { ''; }; - home.file.".config/zsh/am.sh" = mkIf stdenv.isDarwin { + home.file.".config/zsh/am.sh" = { executable = true; source = builtins.fetchurl { url = "https://raw.githubusercontent.com/mcthomas/Apple-Music-CLI-Player/27353ec55abac8b5d73b8a061fb87f305c663adb/src/am.sh"; @@ -33,7 +31,8 @@ in { }; }; - programs.zsh.shellAliases = mkIf stdenv.isDarwin ({ + programs.zsh.shellAliases = + { drs = "darwin-rebuild switch --flake ${config.home.homeDirectory}/.config/dotfiles.nix#"; dbs = "darwin-rebuild build --flake ${config.home.homeDirectory}/.config/dotfiles.nix#"; f = "open \"$(${config.programs.fzf.package}/bin/fzf)\""; @@ -41,12 +40,12 @@ in { oa = "open -a"; pinentry = "pinentry-mac"; } - // lib.attrsets.mapAttrs (name: value: "open -a '" + value + "'") appCommands); + // lib.attrsets.mapAttrs (name: value: "open -a '" + value + "'") appCommands; - programs.firefox.package = mkIf stdenv.isDarwin pkgs.firefox-mac; - programs.chromium.package = mkIf stdenv.isDarwin pkgs.chromium-mac; + programs.firefox.package = pkgs.firefox-mac; + programs.chromium.package = pkgs.chromium-mac; - targets.darwin = mkIf stdenv.isDarwin { + targets.darwin = { defaults = { NSGlobalDomain = { AppleLanguages = ["en-CA"]; diff --git a/home-manager/modules/profiles/user/willem/darwin/finder.nix b/home-manager/modules/profiles/user/willem/darwin/finder.nix index ab0d7b5..d29bb6e 100644 --- a/home-manager/modules/profiles/user/willem/darwin/finder.nix +++ b/home-manager/modules/profiles/user/willem/darwin/finder.nix @@ -92,7 +92,7 @@ } // default-view-settings; in { - targets.darwin.defaults."com.apple.finder" = lib.mkIf pkgs.stdenv.isDarwin { + targets.darwin.defaults."com.apple.finder" = { AppleShowAllExtensions = true; ComputerViewSettings = dvs-with-ws; diff --git a/home-manager/modules/profiles/user/willem/darwin/iterm2.nix b/home-manager/modules/profiles/user/willem/darwin/iterm2.nix index eab3e7d..abba0ef 100644 --- a/home-manager/modules/profiles/user/willem/darwin/iterm2.nix +++ b/home-manager/modules/profiles/user/willem/darwin/iterm2.nix @@ -232,7 +232,7 @@ } // dracula_plus; in { - targets.darwin.defaults."com.googlecode.iterm2" = lib.mkIf pkgs.stdenv.isDarwin { + targets.darwin.defaults."com.googlecode.iterm2" = { "AlternateMouseScroll" = true; "Default Bookmark Guid" = "30FFD0AB-B2EB-4635-9469-D089C1D9E106"; "HotkeyMigratedFromSingleToMulti" = true; diff --git a/home-manager/modules/profiles/user/willem/darwin/launchd.nix b/home-manager/modules/profiles/user/willem/darwin/launchd.nix index 10a58f5..d63cd66 100644 --- a/home-manager/modules/profiles/user/willem/darwin/launchd.nix +++ b/home-manager/modules/profiles/user/willem/darwin/launchd.nix @@ -4,7 +4,7 @@ pkgs, ... }: { - launchd = lib.mkIf pkgs.stdenv.isDarwin { + launchd = { enable = true; agents.emacs = { diff --git a/home-manager/modules/services/emacs.nix b/home-manager/modules/services/emacs.nix deleted file mode 100644 index 2a442eb..0000000 --- a/home-manager/modules/services/emacs.nix +++ /dev/null @@ -1,21 +0,0 @@ -{ - lib, - config, - pkgs, - ... -}: { - launchd.agents.emacs = lib.mkIf pkgs.stdenv.isDarwin { - enable = true; - config = { - ProgramArguments = [ - "${config.programs.emacs.finalPackage}/bin/emacs" - "--fg-daemon" - ]; - KeepAlive = true; - UserName = "${config.home.username}"; - ProcessType = "Adaptive"; - StandardOutPath = "${config.home.homeDirectory}/Library/Logs/emacs-stdout.log"; - StandardErrorPath = "${config.home.homeDirectory}/Library/Logs/emacs-stderr.log"; - }; - }; -} diff --git a/home-manager/modules/services/offlineimap.nix b/home-manager/modules/services/offlineimap.nix deleted file mode 100644 index 2a442eb..0000000 --- a/home-manager/modules/services/offlineimap.nix +++ /dev/null @@ -1,21 +0,0 @@ -{ - lib, - config, - pkgs, - ... -}: { - launchd.agents.emacs = lib.mkIf pkgs.stdenv.isDarwin { - enable = true; - config = { - ProgramArguments = [ - "${config.programs.emacs.finalPackage}/bin/emacs" - "--fg-daemon" - ]; - KeepAlive = true; - UserName = "${config.home.username}"; - ProcessType = "Adaptive"; - StandardOutPath = "${config.home.homeDirectory}/Library/Logs/emacs-stdout.log"; - StandardErrorPath = "${config.home.homeDirectory}/Library/Logs/emacs-stderr.log"; - }; - }; -}