Setup nix flake to work with darwin, wsl and linux system configuration. This has ONLY been tested on Darwin so far.
This commit is contained in:
parent
5322764881
commit
f0f8aeb7b8
15 changed files with 468 additions and 144 deletions
190
flake.nix
190
flake.nix
|
|
@ -1,79 +1,149 @@
|
|||
{
|
||||
description = "LarssonMartin1998's dotfiles configured with Home Manager";
|
||||
description = "LarssonMartin1998's dotfiles configured with Home Manager";
|
||||
|
||||
inputs = {
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||
inputs = {
|
||||
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
|
||||
|
||||
home-manager = {
|
||||
url = "github:nix-community/home-manager";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
nix-darwin.url = "github:LnL7/nix-darwin/master";
|
||||
nix-darwin.inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
neovim = {
|
||||
url = "github:LarssonMartin1998/neovim-flake";
|
||||
};
|
||||
home-manager = {
|
||||
url = "github:nix-community/home-manager";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
outputs =
|
||||
nix-darwin = {
|
||||
url = "github:LnL7/nix-darwin/master";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
nixos-wsl.url = "github:nix-community/NixOS-WSL/main";
|
||||
neovim.url = "github:LarssonMartin1998/neovim-flake";
|
||||
nix-homebrew.url = "github:zhaofengli-wip/nix-homebrew";
|
||||
};
|
||||
|
||||
outputs =
|
||||
{
|
||||
nixpkgs,
|
||||
home-manager,
|
||||
neovim,
|
||||
...
|
||||
self,
|
||||
nixpkgs,
|
||||
home-manager,
|
||||
nix-darwin,
|
||||
nixos-wsl,
|
||||
neovim,
|
||||
nix-homebrew,
|
||||
...
|
||||
}:
|
||||
let
|
||||
lib = nixpkgs.lib;
|
||||
lib = nixpkgs.lib;
|
||||
|
||||
makeHomeConfig =
|
||||
makeSystemConfig =
|
||||
{
|
||||
name,
|
||||
system,
|
||||
extraModules ? [ ],
|
||||
name,
|
||||
system,
|
||||
builder,
|
||||
extraModules ? [ ],
|
||||
specialArgs ? { },
|
||||
}:
|
||||
builder {
|
||||
inherit system;
|
||||
pkgs = import nixpkgs { inherit system; };
|
||||
modules = [
|
||||
{
|
||||
nix.settings.experimental-features = "nix-command flakes";
|
||||
}
|
||||
./nix/local_system.nix
|
||||
] ++ extraModules;
|
||||
|
||||
specialArgs = specialArgs;
|
||||
};
|
||||
|
||||
makeHomeConfig =
|
||||
{
|
||||
name,
|
||||
system,
|
||||
extraModules ? [ ],
|
||||
}:
|
||||
home-manager.lib.homeManagerConfiguration {
|
||||
pkgs = import nixpkgs { inherit system; };
|
||||
modules =
|
||||
[
|
||||
./nix/home.nix
|
||||
./nix/local_machine.nix
|
||||
]
|
||||
++ extraModules
|
||||
++ lib.optional (builtins.match ".*-darwin$" system != null) ./nix/darwin.nix
|
||||
++ lib.optional (builtins.match ".*-linux$" system != null) ./nix/linux.nix;
|
||||
pkgs = import nixpkgs { inherit system; };
|
||||
modules = [
|
||||
./nix/pkgs/home.nix
|
||||
./nix/local_home.nix
|
||||
] ++ extraModules;
|
||||
|
||||
# Pass neovim-flake to all modules
|
||||
extraSpecialArgs = {
|
||||
neovim-flake = neovim;
|
||||
};
|
||||
# Pass neovim-flake to all modules
|
||||
extraSpecialArgs = {
|
||||
neovim-flake = neovim;
|
||||
};
|
||||
};
|
||||
in
|
||||
{
|
||||
homeConfigurations = {
|
||||
"wsl" = makeHomeConfig {
|
||||
name = "wsl";
|
||||
system = "x86_64-linux";
|
||||
extraModules = [ ./nix/wsl.nix ];
|
||||
};
|
||||
|
||||
"linux-x86" = makeHomeConfig {
|
||||
name = "linux-x86";
|
||||
system = "x86_64-linux";
|
||||
extraModules = [];
|
||||
};
|
||||
|
||||
"linux-aarch64" = makeHomeConfig {
|
||||
name = "linux-aarch64";
|
||||
system = "aarch64-linux";
|
||||
extraModules = [];
|
||||
};
|
||||
|
||||
"darwin-aarch64" = makeHomeConfig {
|
||||
name = "darwin-aarch64";
|
||||
system = "aarch64-darwin";
|
||||
extraModules = [];
|
||||
};
|
||||
nixosConfigurations = {
|
||||
"wsl" = makeSystemConfig {
|
||||
name = "wsl";
|
||||
system = "x86_64-linux";
|
||||
builder = lib.nixosSystem;
|
||||
extraModules = [ ./nix/system/wsl.nix ];
|
||||
specialArgs = {
|
||||
nixos-wsl = nixos-wsl;
|
||||
};
|
||||
};
|
||||
|
||||
"linux-x86" = makeSystemConfig {
|
||||
name = "linux-x86";
|
||||
system = "x86_64-linux";
|
||||
builder = lib.nixosSystem;
|
||||
extraModules = [ ./nix/system/linux.nix ];
|
||||
};
|
||||
|
||||
"linux-aarch" = makeSystemConfig {
|
||||
name = "linux-aarch";
|
||||
system = "aarch64-linux";
|
||||
builder = lib.nixosSystem;
|
||||
extraModules = [ ./nix/system/linux.nix ];
|
||||
};
|
||||
};
|
||||
|
||||
darwinConfigurations."darwin" = makeSystemConfig {
|
||||
name = "darwin";
|
||||
system = "aarch64-darwin";
|
||||
builder = nix-darwin.lib.darwinSystem;
|
||||
extraModules = [
|
||||
./nix/system/darwin.nix
|
||||
nix-homebrew.darwinModules.nix-homebrew
|
||||
{
|
||||
nix-homebrew = {
|
||||
enable = true;
|
||||
enableRosetta = true;
|
||||
};
|
||||
}
|
||||
];
|
||||
specialArgs = {
|
||||
self = self;
|
||||
nix-homebrew = nix-homebrew;
|
||||
};
|
||||
};
|
||||
|
||||
homeConfigurations = {
|
||||
"wsl" = makeHomeConfig {
|
||||
name = "wsl";
|
||||
system = "x86_64-linux";
|
||||
extraModules = [ ./nix/pkgs/wsl.nix ];
|
||||
};
|
||||
|
||||
"linux-x86" = makeHomeConfig {
|
||||
name = "linux-x86";
|
||||
system = "x86_64-linux";
|
||||
extraModules = [ ./nix/pkgs/linux.nix ];
|
||||
};
|
||||
|
||||
"linux-aarch" = makeHomeConfig {
|
||||
name = "linux-aarch";
|
||||
system = "aarch64-linux";
|
||||
extraModules = [ ./nix/pkgs/linux.nix ];
|
||||
};
|
||||
|
||||
"darwin" = makeHomeConfig {
|
||||
name = "darwin";
|
||||
system = "aarch64-darwin";
|
||||
extraModules = [ ./nix/pkgs/darwin.nix ];
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue