diff --git a/flake.nix b/flake.nix index 63d5964..3afbb10 100644 --- a/flake.nix +++ b/flake.nix @@ -15,17 +15,29 @@ }; outputs = { self, nixpkgs, home-manager, jovian, plasma-manager, ...}: let + # Different Devices + host-computer = "computer-mo"; + host-server = "server"; + host-konsole = "konsole"; + host-steamdeck = "steamdeck"; + + user-computer = "mo"; + user-server = "administrator"; + user-konsole = "deck"; + user-steamdeck = "deck"; + + lib = nixpkgs.lib; - host = "computer-mo"; - user = "mo"; system = "x86_64-linux"; pkgs = import nixpkgs {inherit system;}; in { + nixosConfigurations = { - ${host} = lib.nixosSystem { - specialArgs = {inherit user host;}; + ${host-computer} = lib.nixosSystem { + specialArgs = {inherit user-computer host-computer;}; modules = [ - ./hosts/${host}/system-imports.nix + ./hosts/${host-computer}/system-imports.nix + ./global/system-imports.nix jovian.nixosModules.jovian home-manager.nixosModules.home-manager { @@ -33,11 +45,94 @@ home-manager.useUserPackages = true; home-manager.backupFileExtension = "backup"; home-manager.extraSpecialArgs = {inherit pkgs;}; - home-manager.users.${user}.imports = [./hosts/${host}/user-imports.nix]; + home-manager.users.${user-computer}.imports = [ + ./hosts/${host-computer}/user-imports.nix + ./global/user-imports.nix + ]; home-manager.sharedModules = [ plasma-manager.homeManagerModules.plasma-manager]; } ]; }; }; + + + nixosConfigurations = { + ${host-server} = lib.nixosSystem { + specialArgs = {inherit user-server host-server;}; + modules = [ + ./hosts/${host-server}/system-imports.nix + ./global/system-imports.nix + 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-server}.imports = [ + ./hosts/${user-server}/user-imports.nix + ./global/user-imports.nix + ]; + } + ]; + }; + }; + + nixosConfigurations = { + ${host-konsole} = lib.nixosSystem { + specialArgs = {inherit user-konsole host-konsole;}; + modules = [ + ./hosts/${host-konsole}/system-imports.nix + ./global/system-imports.nix + 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-konsole}.imports = [ + ./hosts/${user-konsole}/user-imports.nix + ./global/user-imports.nix + ]; + home-manager.sharedModules = [ plasma-manager.homeManagerModules.plasma-manager]; + } + ]; + }; + }; + + nixosConfigurations = { + ${host-steamdeck} = lib.nixosSystem { + specialArgs = {inherit user-steamdeck host-steamdeck;}; + modules = [ + ./hosts/${host-steamdeck}/system-imports.nix + ./global/system-imports.nix + 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-steamdeck}.imports = [ + ./hosts/${user-steamdeck}/user-imports.nix + ./global/user-imports.nix + ]; + home-manager.sharedModules = [ plasma-manager.homeManagerModules.plasma-manager]; + } + ]; + }; + }; + + + + + + + + + + + + }; } diff --git a/global/system-imports.nix b/global/system-imports.nix new file mode 100644 index 0000000..107ba10 --- /dev/null +++ b/global/system-imports.nix @@ -0,0 +1,15 @@ +{ ... }: +{ + imports = + [ + # Packages + ./system-packages/sys.pkg-dev.nix + # Settings + ./system-settings/sys.set-boot.nix + ./system-settings/sys.set-dev.nix + ./system-settings/sys.set-locale.nix + ./system-settings/sys.set-networking.nix + ./system-settings/sys.set-system.nix + ./system-settings/sys.set-updates.nix + ]; +} diff --git a/global/system-packages/sys.pkg-dev.nix b/global/system-packages/sys.pkg-dev.nix new file mode 100644 index 0000000..c6b1132 --- /dev/null +++ b/global/system-packages/sys.pkg-dev.nix @@ -0,0 +1,4 @@ +{ ... }: +{ + programs.zsh.enable = true; +} diff --git a/global/system-settings/sys.set-boot.nix b/global/system-settings/sys.set-boot.nix new file mode 100644 index 0000000..26f9b4f --- /dev/null +++ b/global/system-settings/sys.set-boot.nix @@ -0,0 +1,10 @@ +{ ... }: +{ + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + boot.plymouth.enable = true; + boot.plymouth.theme = "bgrt"; + boot.consoleLogLevel = 0; + boot.kernelParams = [ "quiet" "udev.log_level=0" ]; + boot.initrd.verbose = false; +} diff --git a/hosts/computer-mo/system-settings/sys.set-dev.nix b/global/system-settings/sys.set-dev.nix similarity index 100% rename from hosts/computer-mo/system-settings/sys.set-dev.nix rename to global/system-settings/sys.set-dev.nix diff --git a/hosts/computer-mo/system-settings/sys.set-locale.nix b/global/system-settings/sys.set-locale.nix similarity index 100% rename from hosts/computer-mo/system-settings/sys.set-locale.nix rename to global/system-settings/sys.set-locale.nix diff --git a/hosts/computer-mo/system-settings/sys.set-networking.nix b/global/system-settings/sys.set-networking.nix similarity index 78% rename from hosts/computer-mo/system-settings/sys.set-networking.nix rename to global/system-settings/sys.set-networking.nix index 0bd2437..6810034 100644 --- a/hosts/computer-mo/system-settings/sys.set-networking.nix +++ b/global/system-settings/sys.set-networking.nix @@ -1,6 +1,5 @@ { lib, host, ... }: { networking.useDHCP = lib.mkDefault true; - networking.hostName = host; networking.networkmanager.enable = true; } diff --git a/hosts/computer-mo/system-settings/sys.set-system.nix b/global/system-settings/sys.set-system.nix similarity index 100% rename from hosts/computer-mo/system-settings/sys.set-system.nix rename to global/system-settings/sys.set-system.nix diff --git a/hosts/computer-mo/system-settings/sys.set-updates.nix b/global/system-settings/sys.set-updates.nix similarity index 100% rename from hosts/computer-mo/system-settings/sys.set-updates.nix rename to global/system-settings/sys.set-updates.nix diff --git a/global/user-imports.nix b/global/user-imports.nix new file mode 100644 index 0000000..03b7a08 --- /dev/null +++ b/global/user-imports.nix @@ -0,0 +1,11 @@ +{ ... }: + +{ + imports = [ + # Home-Manager Packages + ./user-packages/usr.pkg-dev.nix + # Home-Manager Settings + ./user-settings/usr.set-dev.nix + ./user-settings/usr.set-system.nix + ]; +} diff --git a/hosts/computer-mo/user-packages/usr.pkg-dev.nix b/global/user-packages/usr.pkg-dev.nix similarity index 100% rename from hosts/computer-mo/user-packages/usr.pkg-dev.nix rename to global/user-packages/usr.pkg-dev.nix diff --git a/hosts/computer-mo/user-settings/usr.set-dev.nix b/global/user-settings/usr.set-dev.nix similarity index 100% rename from hosts/computer-mo/user-settings/usr.set-dev.nix rename to global/user-settings/usr.set-dev.nix diff --git a/hosts/computer-mo/user-settings/usr.set-system.nix b/global/user-settings/usr.set-system.nix similarity index 100% rename from hosts/computer-mo/user-settings/usr.set-system.nix rename to global/user-settings/usr.set-system.nix diff --git a/hosts/computer-mo/system-imports.nix b/hosts/computer-mo/system-imports.nix index 4feb818..1bd9e0e 100644 --- a/hosts/computer-mo/system-imports.nix +++ b/hosts/computer-mo/system-imports.nix @@ -17,15 +17,11 @@ ./system-settings/sys.set-boot.nix ./system-settings/sys.set-controller.nix ./system-settings/sys.set-desktop.nix - ./system-settings/sys.set-dev.nix ./system-settings/sys.set-filesystems.nix ./system-settings/sys.set-hardware.nix - ./system-settings/sys.set-locale.nix - ./system-settings/sys.set-networking.nix + ./system-settings/sys.set-hostname.nix ./system-settings/sys.set-steam.nix - ./system-settings/sys.set-system.nix ./system-settings/sys.set-systemd.nix - ./system-settings/sys.set-updates.nix ./system-settings/sys.set-users.nix ]; } diff --git a/hosts/computer-mo/system-packages/sys.pkg-desktop.nix b/hosts/computer-mo/system-packages/sys.pkg-desktop.nix index 449b9cb..c6dbb10 100644 --- a/hosts/computer-mo/system-packages/sys.pkg-desktop.nix +++ b/hosts/computer-mo/system-packages/sys.pkg-desktop.nix @@ -1,6 +1,5 @@ { ... }: { - services.xserver.enable = false; services.desktopManager.plasma6.enable = true; services.displayManager.sddm.wayland.enable = true; services.displayManager.sddm.enable = true; diff --git a/hosts/computer-mo/system-packages/sys.pkg-dev.nix b/hosts/computer-mo/system-packages/sys.pkg-dev.nix index 1cae7c5..545262b 100644 --- a/hosts/computer-mo/system-packages/sys.pkg-dev.nix +++ b/hosts/computer-mo/system-packages/sys.pkg-dev.nix @@ -1,7 +1,5 @@ { pkgs, ... }: { - programs.zsh.enable = true; - environment.systemPackages = (with pkgs; [ kdePackages.kate diff --git a/hosts/computer-mo/system-settings/sys.set-boot.nix b/hosts/computer-mo/system-settings/sys.set-boot.nix index cb8fbc6..254d37d 100644 --- a/hosts/computer-mo/system-settings/sys.set-boot.nix +++ b/hosts/computer-mo/system-settings/sys.set-boot.nix @@ -2,15 +2,8 @@ { boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ]; boot.initrd.kernelModules = [ ]; - boot.initrd.verbose = false; boot.kernelModules = [ "kvm-amd" ]; boot.extraModulePackages = [ ]; - boot.loader.systemd-boot.enable = true; - boot.loader.efi.canTouchEfiVariables = true; - boot.plymouth.enable = true; - boot.plymouth.theme = "bgrt"; - boot.consoleLogLevel = 0; - boot.kernelParams = [ "quiet" "udev.log_level=0" "amd_pstate=guided" ]; boot.extraModprobeConfig = '' options amdgpu ppfeaturemask=0xFFF7FFFF ''; diff --git a/hosts/computer-mo/system-settings/sys.set-desktop.nix b/hosts/computer-mo/system-settings/sys.set-desktop.nix index 0815327..4f0895a 100644 --- a/hosts/computer-mo/system-settings/sys.set-desktop.nix +++ b/hosts/computer-mo/system-settings/sys.set-desktop.nix @@ -1,5 +1,6 @@ { user, ... }: { + services.xserver.enable = false; services.displayManager.autoLogin.enable = true; services.displayManager.autoLogin.user = user; } diff --git a/hosts/computer-mo/system-settings/sys.set-hostname.nix b/hosts/computer-mo/system-settings/sys.set-hostname.nix new file mode 100644 index 0000000..4a2ddef --- /dev/null +++ b/hosts/computer-mo/system-settings/sys.set-hostname.nix @@ -0,0 +1,4 @@ +{ host-computer, ... }: +{ + networking.hostName = host-computer; +} diff --git a/hosts/computer-mo/system-settings/sys.set-steam.nix b/hosts/computer-mo/system-settings/sys.set-steam.nix index 86d6b2f..48df2a9 100644 --- a/hosts/computer-mo/system-settings/sys.set-steam.nix +++ b/hosts/computer-mo/system-settings/sys.set-steam.nix @@ -1,8 +1,8 @@ -{ user, ... }: +{ user-computer, ... }: { jovian.steam = { autoStart = false; - user = user; + user = user-computer; desktopSession = "plasma"; }; diff --git a/hosts/computer-mo/system-settings/sys.set-users.nix b/hosts/computer-mo/system-settings/sys.set-users.nix index 71da534..0e574ce 100644 --- a/hosts/computer-mo/system-settings/sys.set-users.nix +++ b/hosts/computer-mo/system-settings/sys.set-users.nix @@ -1,6 +1,6 @@ -{ user, ... }: +{ user-computer, ... }: { - users.users.${user} = { + users.users.${user-computer} = { isNormalUser = true; description = "Mohamed Chrayed"; extraGroups = [ "networkmanager" "wheel" ]; diff --git a/hosts/computer-mo/user-imports.nix b/hosts/computer-mo/user-imports.nix index 8579a10..f2aec4a 100644 --- a/hosts/computer-mo/user-imports.nix +++ b/hosts/computer-mo/user-imports.nix @@ -3,13 +3,10 @@ { imports = [ # Home-Manager Packages - ./user-packages/usr.pkg-dev.nix ./user-packages/usr.pkg-desktop.nix # Home-Manager Settings - ./user-settings/usr.set-dotfiles.nix ./user-settings/usr.set-customization.nix - ./user-settings/usr.set-dev.nix + ./user-settings/usr.set-dotfiles.nix ./user-settings/usr.set-desktop.nix - ./user-settings/usr.set-system.nix ]; }