Use homeConfigurations
in nixos configs #18
4 changed files with 56 additions and 51 deletions
92
flake.nix
92
flake.nix
|
@ -11,59 +11,59 @@
|
||||||
nixos-hardware.url = github:NixOS/nixos-hardware;
|
nixos-hardware.url = github:NixOS/nixos-hardware;
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = args@{ home-manager, nixpkgs, agenix, nixos-hardware, ... }: with nixpkgs; {
|
outputs = args@{ self, home-manager, nixpkgs, agenix, nixos-hardware, ... }: with nixpkgs; {
|
||||||
|
|
||||||
# Configurations for NixOS machines.
|
# Configurations for NixOS machines.
|
||||||
nixosConfigurations =
|
nixosConfigurations = let
|
||||||
let mkUserConfig = path: {
|
# Generate a user configuration for the given user, based on the given home manager
|
||||||
imports = [ home-manager.nixosModules.home-manager ];
|
# configuration.
|
||||||
config = {
|
userConfig = user: home: [
|
||||||
home-manager.users."riley" = (import "${path}/home.nix");
|
home-manager.nixosModules.home-manager
|
||||||
|
({ config, ... }: {
|
||||||
|
home-manager.users."${user}" = (home // {
|
||||||
|
config.home = {
|
||||||
|
inherit (config.system) stateVersion;
|
||||||
|
username = user;
|
||||||
};
|
};
|
||||||
};
|
}).config;
|
||||||
in {
|
})
|
||||||
|
];
|
||||||
# Desktop system
|
in {
|
||||||
"strawberry" = lib.nixosSystem {
|
# Desktop system
|
||||||
system = "x86_64-linux";
|
"strawberry" = lib.nixosSystem {
|
||||||
modules = [
|
system = "x86_64-linux";
|
||||||
(mkUserConfig ./system/strawberry)
|
|
||||||
agenix.nixosModules.default
|
|
||||||
./system/strawberry/core.nix
|
|
||||||
./shared/core
|
|
||||||
./shared/secrets.nix
|
|
||||||
];
|
|
||||||
specialArgs = args;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Thinkpad
|
|
||||||
"lime" = lib.nixosSystem {
|
|
||||||
system = "x86_64-linux";
|
|
||||||
modules = [
|
|
||||||
(mkUserConfig ./system/lime)
|
|
||||||
agenix.nixosModules.default
|
|
||||||
nixos-hardware.nixosModules.lenovo-thinkpad-x390
|
|
||||||
nixos-hardware.nixosModules.common-gpu-nvidia-disable
|
|
||||||
./system/lime/core.nix
|
|
||||||
./shared/core
|
|
||||||
./shared/secrets.nix
|
|
||||||
];
|
|
||||||
specialArgs = args;
|
|
||||||
};
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
# Configurations for non-NixOS machines.
|
|
||||||
homeConfigurations = with home-manager.lib; {
|
|
||||||
"dev-lt-63" = homeManagerConfiguration {
|
|
||||||
pkgs = nixpkgs.legacyPackages."x86_64-linux";
|
|
||||||
modules = [
|
modules = [
|
||||||
./system/dev-lt-63/home.nix
|
./system/strawberry/core.nix
|
||||||
./shared/home
|
./shared/core
|
||||||
];
|
] ++ (userConfig "riley" self.homeConfigurations."strawberry");
|
||||||
|
specialArgs = args;
|
||||||
|
};
|
||||||
|
# Thinkpad
|
||||||
|
"lime" = lib.nixosSystem {
|
||||||
|
system = "x86_64-linux";
|
||||||
|
modules = [
|
||||||
|
./system/lime/core.nix
|
||||||
|
./shared/core
|
||||||
|
] ++ (userConfig "riley" self.homeConfigurations."lime");
|
||||||
|
specialArgs = args;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
# Configurations for home-manager.
|
||||||
|
homeConfigurations = with home-manager.lib; let
|
||||||
|
forEachHost = lib.genAttrs [ "dev-lt-63" "strawberry" "lime" ];
|
||||||
|
pkgs = import nixpkgs {
|
||||||
|
system = "x86_64-linux";
|
||||||
|
overlays = [ self.overlays.default ];
|
||||||
|
};
|
||||||
|
in forEachHost (host: homeManagerConfiguration {
|
||||||
|
inherit pkgs;
|
||||||
|
modules = [
|
||||||
|
./system/${host}/home.nix
|
||||||
|
./shared/home
|
||||||
|
];
|
||||||
|
});
|
||||||
|
|
||||||
overlays = {
|
overlays = {
|
||||||
default = (import ./shared/overlay.nix);
|
default = (import ./shared/overlay.nix);
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,8 +1,10 @@
|
||||||
{ pkgs, ... }:
|
{ pkgs, agenix, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|
||||||
imports = [
|
imports = [
|
||||||
|
agenix.nixosModules.default
|
||||||
|
../secrets.nix
|
||||||
./services.nix
|
./services.nix
|
||||||
./backups.nix
|
./backups.nix
|
||||||
./users.nix
|
./users.nix
|
||||||
|
|
|
@ -1,6 +1,10 @@
|
||||||
{ lib, modulesPath, ... }: {
|
{ lib, modulesPath, nixos-hardware, ... }: {
|
||||||
|
|
||||||
imports = [./hardware-configuration.nix];
|
imports = [
|
||||||
|
./hardware-configuration.nix
|
||||||
|
nixos-hardware.nixosModules.lenovo-thinkpad-x390
|
||||||
|
nixos-hardware.nixosModules.common-gpu-nvidia-disable
|
||||||
|
];
|
||||||
|
|
||||||
custom = {
|
custom = {
|
||||||
gui.enable = true;
|
gui.enable = true;
|
||||||
|
@ -15,7 +19,5 @@
|
||||||
system.stateVersion = "22.11";
|
system.stateVersion = "22.11";
|
||||||
services.xserver.libinput.enable = true;
|
services.xserver.libinput.enable = true;
|
||||||
|
|
||||||
home-manager.users."riley".home.stateVersion = "22.11";
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -9,4 +9,5 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
programs.iamb.enable = true;
|
programs.iamb.enable = true;
|
||||||
|
home.stateVersion = "22.11";
|
||||||
}
|
}
|
Loading…
Reference in a new issue