home-manager separate darwin modules

This commit is contained in:
willemml 2023-03-20 14:40:10 -07:00
parent 74abfa083f
commit 32bda17076
Signed by: willemml
GPG key ID: C3DE5DF6198DACBD
11 changed files with 67 additions and 73 deletions

View file

@ -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 {

View file

@ -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;

View file

@ -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

View file

@ -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 {

View file

@ -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";
};
}

View file

@ -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"];

View file

@ -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;

View file

@ -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;

View file

@ -4,7 +4,7 @@
pkgs,
...
}: {
launchd = lib.mkIf pkgs.stdenv.isDarwin {
launchd = {
enable = true;
agents.emacs = {

View file

@ -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";
};
};
}

View file

@ -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";
};
};
}