From 87be0d3dd54e71f33b9d8a757273ae4f2170e3f0 Mon Sep 17 00:00:00 2001 From: Christian Date: Sun, 18 Jan 2026 21:17:14 -0600 Subject: Multiple configs --- configuration.nix | 119 ------------------------------- flake.nix | 30 +++----- hardware-configuration.nix | 31 -------- home.nix | 15 ---- hosts/desktop/configuration.nix | 10 +++ hosts/hyper-v/configuration.nix | 34 +++++++++ hosts/hyper-v/hardware-configuration.nix | 31 ++++++++ modules/common.nix | 66 +++++++++++++++++ modules/home.nix | 15 ++++ modules/xmonad.hs | 29 ++++++++ xmonad.hs | 29 -------- 11 files changed, 196 insertions(+), 213 deletions(-) delete mode 100644 configuration.nix delete mode 100644 hardware-configuration.nix delete mode 100644 home.nix create mode 100644 hosts/desktop/configuration.nix create mode 100644 hosts/hyper-v/configuration.nix create mode 100644 hosts/hyper-v/hardware-configuration.nix create mode 100644 modules/common.nix create mode 100644 modules/home.nix create mode 100644 modules/xmonad.hs delete mode 100644 xmonad.hs diff --git a/configuration.nix b/configuration.nix deleted file mode 100644 index 7457d3b..0000000 --- a/configuration.nix +++ /dev/null @@ -1,119 +0,0 @@ -{ config, lib, pkgs, inputs, ... }: - -{ - imports = - [ # Include the results of the hardware scan. - ./hardware-configuration.nix - ]; - - # Experimental features - nix.settings.experimental-features = [ "nix-command" "flakes" ]; - - # Use the systemd-boot EFI boot loader. - boot.loader.systemd-boot.enable = true; - boot.loader.efi.canTouchEfiVariables = true; - - # networking.hostName = "nixos"; # Define your hostname. - - # Configure network connections interactively with nmcli or nmtui. - networking.networkmanager.enable = true; - - # Set your time zone. - # time.timeZone = "Europe/Amsterdam"; - time.timeZone = "America/Chicago"; - - # Configure network proxy if necessary - # networking.proxy.default = "http://user:password@proxy:port/"; - # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain"; - - # Select internationalisation properties. - # i18n.defaultLocale = "en_US.UTF-8"; - # console = { - # font = "Lat2-Terminus16"; - # keyMap = "us"; - # useXkbConfig = true; # use xkb.options in tty. - # }; - - # Enable the X11 windowing system. - services.xserver.enable = true; - services.xserver.windowManager.xmonad = { - enable = true; - enableContribAndExtras = true; - config = builtins.readFile ./xmonad.hs; - }; - - services.xserver.displayManager.lightdm.enable = false; - - services.xserver.xkb.layout = "us"; - - - # Hyper-V setup - virtualisation.hypervGuest.enable = true; - services.xrdp.enable = true; - services.xrdp.defaultWindowManager = "xmonad"; - - systemd.services.xrdp.serviceConfig = { - # Remove the --port in the invokation of xrdp (it overwrites the option in the config) - ExecStart = lib.mkForce "${pkgs.xrdp}/bin/xrdp --nodaemon --config ${config.services.xrdp.confDir}/xrdp.ini"; - }; - - services.xrdp.extraConfDirCommands = '' - substituteInPlace $out/xrdp.ini \ - --replace-fail "port=3389" "port=vsock://-1:3389" \ - --replace-fail "#vmconnect=true" "vmconnect=true" \ - --replace-fail "security_layer=negotiate" "security_layer=rdp" \ - --replace-fail "crypt_level=high" "crypt_level=none" \ - ''; - - - # User - users.users.christian = { - isNormalUser = true; - extraGroups = [ "wheel" ]; - }; - - - environment.systemPackages = with pkgs; [ - git - wget - alacritty - ]; - - programs.firefox.enable = true; - - programs.neovim = { - enable = true; - vimAlias = true; - viAlias = true; - defaultEditor = true; - }; - - programs.bash.shellAliases = { - rebuild = "sudo nixos-rebuild switch --flake /etc/nixos"; - }; - - programs.nix-index.enable = true; - programs.nix-index-database.comma.enable = true; - programs.command-not-found.enable = false; - - # This option defines the first version of NixOS you have installed on this particular machine, - # and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions. - # - # Most users should NEVER change this value after the initial install, for any reason, - # even if you've upgraded your system to a new NixOS release. - # - # This value does NOT affect the Nixpkgs version your packages and OS are pulled from, - # so changing it will NOT upgrade your system - see https://nixos.org/manual/nixos/stable/#sec-upgrading for how - # to actually do that. - # - # This value being lower than the current NixOS release does NOT mean your system is - # out of date, out of support, or vulnerable. - # - # Do NOT change this value unless you have manually inspected all the changes it would make to your configuration, - # and migrated your data accordingly. - # - # For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion . - system.stateVersion = "25.11"; # Did you read the comment? - -} - diff --git a/flake.nix b/flake.nix index c7d4742..478fc63 100644 --- a/flake.nix +++ b/flake.nix @@ -15,25 +15,17 @@ }; outputs = { self, nixpkgs, home-manager, nix-index-database, ... }@inputs: { - nixosConfigurations.nixos = nixpkgs.lib.nixosSystem { - system = "x86_64-linux"; - specialArgs = { inherit inputs; }; - - modules = [ - ./configuration.nix - - nix-index-database.nixosModules.nix-index - - home-manager.nixosModules.home-manager - { - home-manager.useGlobalPkgs = true; - home-manager.useUserPackages = true; - - home-manager.users.christian = import ./home.nix; - - home-manager.extraSpecialArgs = { inherit inputs; }; - } - ]; + nixosConfigurations = { + hyper-v = nixpkgs.lib.nixosSystem { + system = "x86_64-linux"; + specialArgs = { inherit inputs; }; + modules = [ ./hosts/hyper-v/configuration.nix ]; + }; + desktop = nixpkgs.lib.nixosSystem { + system = "x86_64-linux"; + specialArgs = { inherit inputs; }; + modules = [ ./hosts/desktop/configuration.nix ]; + }; }; }; } diff --git a/hardware-configuration.nix b/hardware-configuration.nix deleted file mode 100644 index 0417079..0000000 --- a/hardware-configuration.nix +++ /dev/null @@ -1,31 +0,0 @@ -# Do not modify this file! It was generated by ‘nixos-generate-config’ -# and may be overwritten by future invocations. Please make changes -# to /etc/nixos/configuration.nix instead. -{ config, lib, pkgs, modulesPath, ... }: - -{ - imports = [ ]; - - boot.initrd.availableKernelModules = [ "sd_mod" "sr_mod" ]; - boot.initrd.kernelModules = [ ]; - boot.kernelModules = [ ]; - boot.extraModulePackages = [ ]; - - fileSystems."/" = - { device = "/dev/disk/by-uuid/11857814-2a7a-4aaa-82bd-7ecea40117d3"; - fsType = "ext4"; - }; - - fileSystems."/boot" = - { device = "/dev/disk/by-uuid/1FB1-AF5C"; - fsType = "vfat"; - options = [ "fmask=0077" "dmask=0077" ]; - }; - - swapDevices = - [ { device = "/dev/disk/by-uuid/5cfd31ff-439c-4829-b575-92ea76bec3c4"; } - ]; - - nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; - virtualisation.hypervGuest.enable = true; -} diff --git a/home.nix b/home.nix deleted file mode 100644 index 93cbeed..0000000 --- a/home.nix +++ /dev/null @@ -1,15 +0,0 @@ -{ config, pkgs, inputs, ... }: -{ - - home.stateVersion = "25.11"; - - home.packages = with pkgs; [ ]; - - programs.git = { - enable = true; - settings.user.name = "Christian"; - settings.user.email = "thechristiansoltermann@gmail.com"; - }; - - programs.home-manager.enable = true; -} diff --git a/hosts/desktop/configuration.nix b/hosts/desktop/configuration.nix new file mode 100644 index 0000000..dca3df1 --- /dev/null +++ b/hosts/desktop/configuration.nix @@ -0,0 +1,10 @@ +{ config, lib, pkgs, inputs, ... }: + +{ + imports = + [ # Include the results of the hardware scan. + ./hardware-configuration.nix + ]; + + networking.hostName = "desktop"; +} diff --git a/hosts/hyper-v/configuration.nix b/hosts/hyper-v/configuration.nix new file mode 100644 index 0000000..f7bc699 --- /dev/null +++ b/hosts/hyper-v/configuration.nix @@ -0,0 +1,34 @@ +{config, lib, pkgs, inputs, ...}: + +{ + imports = + [ # Include the results of the hardware scan. + ./hardware-configuration.nix + ../../modules/common.nix + ]; + + networking.hostName = "hyper-v"; + + + # Hyper-V setup + virtualisation.hypervGuest.enable = true; + services.xrdp.enable = true; + services.xrdp.defaultWindowManager = "xmonad"; + + systemd.services.xrdp.serviceConfig = { + # Remove the --port in the invokation of xrdp (it overwrites the option in the config) + ExecStart = lib.mkForce "${pkgs.xrdp}/bin/xrdp --nodaemon --config ${config.services.xrdp.confDir}/xrdp.ini"; + }; + + services.xrdp.extraConfDirCommands = '' + substituteInPlace $out/xrdp.ini \ + --replace-fail "port=3389" "port=vsock://-1:3389" \ + --replace-fail "#vmconnect=true" "vmconnect=true" \ + --replace-fail "security_layer=negotiate" "security_layer=rdp" \ + --replace-fail "crypt_level=high" "crypt_level=none" \ + ''; + + services.xserver.displayManager.lightdm.enable = false; + + system.stateVersion = "25.11"; +} diff --git a/hosts/hyper-v/hardware-configuration.nix b/hosts/hyper-v/hardware-configuration.nix new file mode 100644 index 0000000..0417079 --- /dev/null +++ b/hosts/hyper-v/hardware-configuration.nix @@ -0,0 +1,31 @@ +# Do not modify this file! It was generated by ‘nixos-generate-config’ +# and may be overwritten by future invocations. Please make changes +# to /etc/nixos/configuration.nix instead. +{ config, lib, pkgs, modulesPath, ... }: + +{ + imports = [ ]; + + boot.initrd.availableKernelModules = [ "sd_mod" "sr_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/11857814-2a7a-4aaa-82bd-7ecea40117d3"; + fsType = "ext4"; + }; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/1FB1-AF5C"; + fsType = "vfat"; + options = [ "fmask=0077" "dmask=0077" ]; + }; + + swapDevices = + [ { device = "/dev/disk/by-uuid/5cfd31ff-439c-4829-b575-92ea76bec3c4"; } + ]; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + virtualisation.hypervGuest.enable = true; +} diff --git a/modules/common.nix b/modules/common.nix new file mode 100644 index 0000000..73dc435 --- /dev/null +++ b/modules/common.nix @@ -0,0 +1,66 @@ +{ config, lib, pkgs, inputs, ... }: + +{ + imports = [ + inputs.nix-index-database.nixosModules.nix-index + inputs.home-manager.nixosModules.home-manager + ]; + # Experimental features + nix.settings.experimental-features = [ "nix-command" "flakes" ]; + + # Use the systemd-boot EFI boot loader. + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + + # Configure network connections interactively with nmcli or nmtui. + networking.networkmanager.enable = true; + + # Set your time zone. + # time.timeZone = "Europe/Amsterdam"; + time.timeZone = "America/Chicago"; + + # Enable the X11 windowing system. + services.xserver.enable = true; + services.xserver.windowManager.xmonad = { + enable = true; + enableContribAndExtras = true; + config = builtins.readFile ./xmonad.hs; + }; + + services.xserver.xkb.layout = "us"; + + # User + users.users.christian = { + isNormalUser = true; + extraGroups = [ "wheel" ]; + }; + + home-manager.useGlobalPkgs = true; + home-manager.useUserPackages = true; + home-manager.users.christian = import ./home.nix; + home-manager.extraSpecialArgs = { inherit inputs; }; + + environment.systemPackages = with pkgs; [ + git + wget + alacritty + ]; + + programs.firefox.enable = true; + + programs.neovim = { + enable = true; + vimAlias = true; + viAlias = true; + defaultEditor = true; + }; + + programs.bash.shellAliases = { + rebuild = "sudo nixos-rebuild switch --flake /etc/nixos"; + }; + + programs.nix-index.enable = true; + programs.nix-index-database.comma.enable = true; + programs.command-not-found.enable = false; +} + diff --git a/modules/home.nix b/modules/home.nix new file mode 100644 index 0000000..93cbeed --- /dev/null +++ b/modules/home.nix @@ -0,0 +1,15 @@ +{ config, pkgs, inputs, ... }: +{ + + home.stateVersion = "25.11"; + + home.packages = with pkgs; [ ]; + + programs.git = { + enable = true; + settings.user.name = "Christian"; + settings.user.email = "thechristiansoltermann@gmail.com"; + }; + + programs.home-manager.enable = true; +} diff --git a/modules/xmonad.hs b/modules/xmonad.hs new file mode 100644 index 0000000..1df21b5 --- /dev/null +++ b/modules/xmonad.hs @@ -0,0 +1,29 @@ +import XMonad +import XMonad.Util.EZConfig (additionalKeys) +import Control.Monad (when) +import Text.Printf (printf) +import System.Posix.Process (executeFile) +import System.Info (arch,os) +import System.Environment (getArgs) +import System.FilePath (()) + +compiledConfig = printf "xmonad-%s-%s" arch os + +myConfig = defaultConfig + { modMask = mod1Mask + , terminal = "alacritty" } + `additionalKeys` + [ ( (mod1Mask, xK_r), compileRestart True) + , ( (mod1Mask, xK_q), restart "xmonad" True ) ] + +compileRestart resume = do + dirs <- asks directories + whenX (recompile dirs True) $ do + when resume writeStateToFile + catchIO + ( do + args <- getArgs + executeFile (cacheDir dirs compiledConfig) False args Nothing + ) + +main = getDirectories >>= launch myConfig diff --git a/xmonad.hs b/xmonad.hs deleted file mode 100644 index 1df21b5..0000000 --- a/xmonad.hs +++ /dev/null @@ -1,29 +0,0 @@ -import XMonad -import XMonad.Util.EZConfig (additionalKeys) -import Control.Monad (when) -import Text.Printf (printf) -import System.Posix.Process (executeFile) -import System.Info (arch,os) -import System.Environment (getArgs) -import System.FilePath (()) - -compiledConfig = printf "xmonad-%s-%s" arch os - -myConfig = defaultConfig - { modMask = mod1Mask - , terminal = "alacritty" } - `additionalKeys` - [ ( (mod1Mask, xK_r), compileRestart True) - , ( (mod1Mask, xK_q), restart "xmonad" True ) ] - -compileRestart resume = do - dirs <- asks directories - whenX (recompile dirs True) $ do - when resume writeStateToFile - catchIO - ( do - args <- getArgs - executeFile (cacheDir dirs compiledConfig) False args Nothing - ) - -main = getDirectories >>= launch myConfig -- cgit v1.2.3