refactor(nix): Seperate home manager stuff from nix-darwin

This commit is contained in:
Ahmad Ansori Palembani 2024-10-16 14:43:06 +07:00
parent 0f33f4e2de
commit 6444b67a4e
Signed by: null2264
GPG key ID: BA64F8B60AF3EFB6
9 changed files with 110 additions and 134 deletions

View file

@ -4,7 +4,6 @@
outputs = inputs@{ self, nix-darwin, nixpkgs, home-manager, system-manager }:
let
vars = {
user = "ziro"; # TODO: Make it possible to setup multi-user
rev = self.rev or self.dirtyRev or null;
};
in
@ -23,6 +22,13 @@
inherit inputs nixpkgs system-manager home-manager vars;
}
);
homeConfigurations = (
import ./users {
inherit (nixpkgs) lib;
inherit inputs nixpkgs home-manager vars;
}
);
};
inputs = {

View file

@ -3,5 +3,6 @@
{
packages = [
pkgs.zsh
pkgs.home-manager
];
}

View file

@ -0,0 +1,27 @@
system: nixpkgs: # e.g. x86_64-linux
let
disablePyChecks = pkg: pkg.overridePythonAttrs (old: {
doCheck = false;
doInstallCheck = false;
dontCheck = true;
});
in {
system = system;
pkgs = import nixpkgs {
inherit system;
overlays = [(final: prev: {
pythonPackagesExtensions = prev.pythonPackagesExtensions ++ [(pyfinal: pyprev: {
dnspython = (disablePyChecks pyprev.dnspython).overridePythonAttrs (old: {
disabledTests = [
# This test is unreliable when my internet is throttled by Indonesian ISP, timeout everywhere... lovely...
"test_resolver"
] ++ old.disabledTests;
});
pillow = disablePyChecks pyprev.pillow;
cherrypy = disablePyChecks pyprev.cherrypy;
})];
})];
config.allowUnfree = true;
};
}

View file

@ -97,33 +97,4 @@
done
'';
};
users.users.ziro = {
name = vars.user;
home = "/Users/${vars.user}";
};
home-manager.users.ziro = {
home.stateVersion = "22.05";
programs = {
browserpass = {
enable = true;
browsers = [ "brave" "chrome" ]; # Arc and Chrome share the same `Application Support` dir, not sure why tbh.
};
};
# Swap CapsLock with Esc for better vi-mode experience.
launchd.agents.CapsEscSwap = {
enable = true;
config = {
ProgramArguments = [
"/usr/bin/hidutil"
"property"
"--set"
"{\"UserKeyMapping\":[{\"HIDKeyboardModifierMappingSrc\":0x700000039,\"HIDKeyboardModifierMappingDst\":0x700000029},{\"HIDKeyboardModifierMappingSrc\":0x700000029,\"HIDKeyboardModifierMappingDst\":0x700000039}]}"
];
RunAtLoad = true;
};
};
};
}

View file

@ -1,32 +1,8 @@
{ inputs, nixpkgs, nix-darwin, home-manager, vars, ... }:
{ inputs, nixpkgs, nix-darwin, vars, ... }:
let
mkCommon = import ../mkCommon.nix;
disablePyChecks = pkg: pkg.overridePythonAttrs (old: {
doCheck = false;
doInstallCheck = false;
dontCheck = true;
});
systemConfig = system: {
system = system;
pkgs = import nixpkgs {
inherit system;
overlays = [(final: prev: {
pythonPackagesExtensions = prev.pythonPackagesExtensions ++ [(pyfinal: pyprev: {
dnspython = (disablePyChecks pyprev.dnspython).overridePythonAttrs (old: {
disabledTests = [
# This test is unreliable when my internet is throttled by Indonesian ISP, timeout everywhere... lovely...
"test_resolver"
] ++ old.disabledTests;
});
pillow = disablePyChecks pyprev.pillow;
cherrypy = disablePyChecks pyprev.cherrypy;
})];
})];
config.allowUnfree = true;
};
};
mkCommon = import ../../lib/mkCommon.nix;
mkSystem = import ../../lib/mkSystem.nix;
in
{
# Host list
@ -37,38 +13,28 @@ in
# Lenovo ThinkPad L460; Intel Core i5-6300U
"ThiccBook-Pro" =
let
inherit (systemConfig "x86_64-darwin") system pkgs;
inherit (mkSystem "x86_64-darwin" nixpkgs) system pkgs;
common = (mkCommon pkgs);
in
nix-darwin.lib.darwinSystem {
inherit system;
specialArgs = { inherit inputs pkgs home-manager vars common; };
specialArgs = { inherit inputs pkgs vars common; };
modules = [
./configuration.nix
home-manager.darwinModules.home-manager
{
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
}
];
};
# Imaginary M1, just for reference
MacBookProM1 =
let
inherit (systemConfig "aarch64-darwin") system pkgs;
inherit (mkSystem "aarch64-darwin" nixpkgs) system pkgs;
common = (mkCommon pkgs);
in
nix-darwin.lib.darwinSystem {
inherit system;
specialArgs = { inherit inputs pkgs home-manager vars common; };
specialArgs = { inherit inputs pkgs vars common; };
modules = [
./configuration.nix
home-manager.darwinModules.home-manager
{
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
}
];
};
}

View file

@ -56,33 +56,4 @@
system = {
stateVersion = 4;
};
# users.users.ziro = {
# name = vars.user;
# home = "/Users/${vars.user}";
# };
# home-manager.users.ziro = {
# home.stateVersion = "22.05";
# programs = {
# browserpass = {
# enable = true;
# browsers = [ "brave" "chrome" ]; # Arc and Chrome share the same `Application Support` dir, not sure why tbh.
# };
# };
# # Swap CapsLock with Esc for better vi-mode experience.
# launchd.agents.CapsEscSwap = {
# enable = true;
# config = {
# ProgramArguments = [
# "/usr/bin/hidutil"
# "property"
# "--set"
# "{\"UserKeyMapping\":[{\"HIDKeyboardModifierMappingSrc\":0x700000039,\"HIDKeyboardModifierMappingDst\":0x700000029},{\"HIDKeyboardModifierMappingSrc\":0x700000029,\"HIDKeyboardModifierMappingDst\":0x700000039}]}"
# ];
# RunAtLoad = true;
# };
# };
# };
}

View file

@ -1,49 +1,20 @@
{ inputs, nixpkgs, system-manager, home-manager, vars, ... }:
{ inputs, nixpkgs, system-manager, vars, ... }:
let
mkCommon = import ../mkCommon.nix;
disablePyChecks = pkg: pkg.overridePythonAttrs (old: {
doCheck = false;
doInstallCheck = false;
dontCheck = true;
});
systemConfig = system: {
system = system;
pkgs = import nixpkgs {
inherit system;
overlays = [(final: prev: {
pythonPackagesExtensions = prev.pythonPackagesExtensions ++ [(pyfinal: pyprev: {
dnspython = (disablePyChecks pyprev.dnspython).overridePythonAttrs (old: {
disabledTests = [
# This test is unreliable when my internet is throttled by Indonesian ISP, timeout everywhere... lovely...
"test_resolver"
] ++ old.disabledTests;
});
pillow = disablePyChecks pyprev.pillow;
cherrypy = disablePyChecks pyprev.cherrypy;
})];
})];
config.allowUnfree = true;
};
};
mkCommon = import ../../lib/mkCommon.nix;
mkSystem = import ../../lib/mkSystem.nix;
in
{
"potato" =
let
inherit (systemConfig "x86_64-linux") system pkgs;
inherit (mkSystem "x86_64-linux" nixpkgs) system pkgs;
common = (mkCommon pkgs);
in
system-manager.lib.makeSystemConfig {
inherit system;
specialArgs = { inherit inputs pkgs home-manager vars common; };
specialArgs = { inherit inputs pkgs vars common; };
modules = [
./configuration.nix
# home-manager.darwinModules.home-manager
# {
# home-manager.useGlobalPkgs = true;
# home-manager.useUserPackages = true;
# }
];
};
}

View file

@ -0,0 +1,30 @@
{ inputs, nixpkgs, home-manager, vars, ... }:
let
mkSystem = import ../lib/mkSystem.nix;
in
{
# Host list
# Build with: `home-manager build --flake .#<user>@<host>`
# e.g. `home-manager build --flake .#"ziro@ThiccBook-Pro"`
# Switch to current build: `home-manager switch --flake .#<user>@<host>`
#
# If you're feeling lucky `home-manager build --flake .` or
# `home-manager switch --flake .` should be enough, since home-manager will
# search the correct <user>@<host> on its own.
#
# You may need to run `scutil --set HostName <host>` if home-manager can't
# find your <user>@<host>.
"ziro@ThiccBook-Pro" =
let
inherit (mkSystem "x86_64-darwin" nixpkgs) system pkgs;
in
home-manager.lib.homeManagerConfiguration {
inherit pkgs;
extraSpecialArgs = { inherit inputs pkgs home-manager vars; };
modules = [
./ziro.nix
];
};
}

View file

@ -0,0 +1,33 @@
{ pkgs, config, vars, ... }:
let
dirPrefix = if pkgs.stdenv.isDarwin then "/Users/" else "/home/";
in {
home = {
username = "ziro";
homeDirectory = dirPrefix + "ziro";
};
programs = {
browserpass = {
enable = true;
browsers = [ "brave" "chrome" ]; # Arc and Chrome share the same `Application Support` dir, not sure why tbh.
};
};
# Swap CapsLock with Esc for better vi-mode experience.
launchd.agents.CapsEscSwap = {
enable = true;
config = {
ProgramArguments = [
"/usr/bin/hidutil"
"property"
"--set"
"{\"UserKeyMapping\":[{\"HIDKeyboardModifierMappingSrc\":0x700000039,\"HIDKeyboardModifierMappingDst\":0x700000029},{\"HIDKeyboardModifierMappingSrc\":0x700000029,\"HIDKeyboardModifierMappingDst\":0x700000039}]}"
];
RunAtLoad = true;
};
};
home.stateVersion = "24.05";
}