initial work to support multiple home configs

This commit is contained in:
John Bowdre 2023-07-23 17:32:36 -05:00
parent 013112f692
commit 5a05fa411c
3 changed files with 84 additions and 11 deletions

View file

@ -36,10 +36,27 @@
"type": "github"
}
},
"nixpkgs-23_05": {
"locked": {
"lastModified": 1689956312,
"narHash": "sha256-NV9yamMhE5jgz+ZSM2IgXeYqOvmGIbIIJ+AFIhfD7Ek=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "6da4bc6cb07cba1b8e53d139cbf1d2fb8061d967",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-23.05",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"home-manager": "home-manager",
"nixpkgs": "nixpkgs"
"nixpkgs": "nixpkgs",
"nixpkgs-23_05": "nixpkgs-23_05"
}
}
},

View file

@ -3,26 +3,80 @@
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixpkgs-unstable";
nixpkgs-23_05.url = "github:nixos/nixpkgs/nixos-23.05";
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = {nixpkgs, home-manager, ...}:
outputs = {nixpkgs, home-manager, ...} @inputs:
let
system = "x86_64-linux";
# Overlays enable you to customize the Nixpkgs attribute set
overlays = [
(self: super:
let
system = self.stdenv.system;
in {
defaultPackage.${system} = home-manager.defaultPackage.${system};
pkgs_2305 = inputs.nixpkgs-23_05.legacyPackages.${system};
pkgs_aarch64 = import nixpkgs {
system = "aarch64-${builtins.head (builtins.match ".+-([[:lower:]]+)" system)}";
};
pkgs_x86_64 = nixpkgs.legacyPackages.${"x86_64-${builtins.head (builtins.match ".+-([[:lower:]]+)" system)}"};
})
];
# Systems supported
allSystems = [
"aarch64-linux"
"x86_64-linux"
];
importPkgs = (system: import nixpkgs {
inherit overlays system;
config.allowUnfree = true;
});
# Helper to provide system-specific attributes
forAllSystems = f: nixpkgs.lib.genAttrs allSystems (system: f {
inherit system;
pkgs = (importPkgs system);
});
in
rec {
inherit allSystems importPkgs forAllSystems home-manager;
overlays = { };
packages = forAllSystems
({ pkgs, system }: rec {
home-penguin = homeConfigurations."john@penguin".activationPackage;
home-pixnix = homeConfigurations."john@pixnix".activationPackage;
all = pkgs.symlinkJoin {
name = "all";
paths = [
home-penguin
home-pixnix
];
};
default = all;
});
homeConfigurations = {
"john@penguin" = home-manager.lib.homeManagerConfiguration {
pkgs = import nixpkgs {
system = "${system}";
config.allowUnfree = true;
};
pkgs = importPkgs "x86_64-linux";
modules = [ ./nix/machines/penguin/home.nix ];
modules = [
./nix/machines/penguin/home.nix
];
};
"john@pixnix" = home-manager.lib.homeManagerConfiguration {
pkgs = importPkgs "x86_64-linux";
modules = [
./nix/common/home.nix
];
};
};
};

View file

@ -70,6 +70,8 @@
programs.git = {
enable = true;
delta.enable = true;
userEmail = "john@bowdre.net";
userName = "John Bowdre";
extraConfig = {
init.defaultBranch = "main";
pull.ff = "only";