From 109916b1942cba493cfd469698b56a3d61ac5586 Mon Sep 17 00:00:00 2001 From: "Mohamed C." Date: Sun, 11 Aug 2024 13:47:17 +0200 Subject: [PATCH] rewrite flake.nix --- flake.nix | 94 +++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 63 insertions(+), 31 deletions(-) diff --git a/flake.nix b/flake.nix index 316b75f..e65b8e2 100644 --- a/flake.nix +++ b/flake.nix @@ -1,5 +1,6 @@ { description = "Moe.OS"; + inputs = { nixpkgs.url = "nixpkgs/nixos-unstable"; jovian.url = "github:Jovian-Experiments/Jovian-NixOS/development"; @@ -8,43 +9,74 @@ inputs.nixpkgs.follows = "nixpkgs"; }; plasma-manager = { - url= "github:nix-community/plasma-manager/trunk"; + url = "github:nix-community/plasma-manager/trunk"; inputs.nixpkgs.follows = "nixpkgs"; inputs.home-manager.follows = "home-manager"; }; }; - outputs = { self, nixpkgs, home-manager, jovian, plasma-manager, ...}: - let - # Different Devices - host-computer = "computer-mo"; - user-computer = "mo"; - lib = nixpkgs.lib; - system = "x86_64-linux"; - pkgs = import nixpkgs {inherit system;}; - in { + outputs = { self, nixpkgs, home-manager, jovian, plasma-manager, ... }: + let + lib = nixpkgs.lib; + system = "x86_64-linux"; + pkgs = import nixpkgs { inherit system; }; - nixosConfigurations = { - ${host-computer} = lib.nixosSystem { - specialArgs = {}; - modules = [ - ./hosts/${host-computer}/system - ./global/system - jovian.nixosModules.jovian - home-manager.nixosModules.home-manager - { - home-manager.useGlobalPkgs = true; - home-manager.useUserPackages = true; - home-manager.backupFileExtension = "backup"; - home-manager.extraSpecialArgs = {inherit pkgs;}; - home-manager.users.${user-computer}.imports = [ - ./hosts/${host-computer}/user - ./global/user - ]; - home-manager.sharedModules = [ plasma-manager.homeManagerModules.plasma-manager]; - } - ]; + commonModules = [ + ./global/system + jovian.nixosModules.jovian + home-manager.nixosModules.home-manager + ]; + + homeManagerConfig = { + home-manager.useGlobalPkgs = true; + home-manager.useUserPackages = true; + home-manager.backupFileExtension = "backup"; + home-manager.extraSpecialArgs = { inherit pkgs; }; + home-manager.sharedModules = [ plasma-manager.homeManagerModules.plasma-manager ]; }; + + # Host-specific configurations + hosts = { + computer-mo = { + user = "mo"; + extraModules = [ ./hosts/computer-mo/system ]; + userConfig = { + isNormalUser = true; + home = "/home/mo"; + shell = pkgs.zsh; + extraGroups = [ "wheel" "networkmanager" ]; + }; + }; + + steamdeck = { + user = "deck"; + extraModules = [ ./hosts/steamdeck/system ]; + userConfig = { + isNormalUser = true; + home = "/home/deck"; + shell = pkgs.zsh; + extraGroups = [ "wheel" "networkmanager" ]; + }; + }; + }; + + in { + nixosConfigurations = lib.mapAttrs (hostName: hostConfig: + lib.nixosSystem { + specialArgs = {}; + modules = commonModules ++ hostConfig.extraModules ++ [ + # Users configuration + { users.users.${hostConfig.user} = hostConfig.userConfig; } + + # Home Manager user imports + { home-manager.users.${hostConfig.user}.imports = [ + ./hosts/${hostName}/user + ./global/user + ]; + } + homeManagerConfig + ]; + } + ) hosts; }; - }; }