diff --git a/flake.lock b/flake.lock index c3f8536..ab01838 100644 --- a/flake.lock +++ b/flake.lock @@ -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" } } }, diff --git a/flake.nix b/flake.nix index 6c88df6..b2df32f 100644 --- a/flake.nix +++ b/flake.nix @@ -3,27 +3,81 @@ 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"; - in { - defaultPackage.${system} = home-manager.defaultPackage.${system}; + # Overlays enable you to customize the Nixpkgs attribute set + overlays = [ + (self: super: + let + system = self.stdenv.system; + in { + 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 + ]; }; }; }; - } +} diff --git a/nix/common/home.nix b/nix/common/home.nix index e40ca90..fe34be8 100644 --- a/nix/common/home.nix +++ b/nix/common/home.nix @@ -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";