From 39740c6f9a4a9ba5655fe77c0613cc86478571cb Mon Sep 17 00:00:00 2001 From: Christian Date: Thu, 1 Jan 2026 17:25:13 -0600 Subject: Initial commit --- configuration.nix | 112 +++++++++++++++++++++++++++++++++++++++++++++ flake.nix | 17 +++++++ hardware-configuration.nix | 31 +++++++++++++ xmonad.hs | 29 ++++++++++++ 4 files changed, 189 insertions(+) create mode 100644 configuration.nix create mode 100644 flake.nix create mode 100644 hardware-configuration.nix create mode 100644 xmonad.hs diff --git a/configuration.nix b/configuration.nix new file mode 100644 index 0000000..fbada29 --- /dev/null +++ b/configuration.nix @@ -0,0 +1,112 @@ +{ config, lib, pkgs, ... }: + +{ + 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" ]; + packages = with pkgs; [ ]; + }; + + + environment.systemPackages = with pkgs; [ + git + wget + alacritty + ]; + + programs.firefox.enable = true; + + programs.neovim = { + enable = true; + vimAlias = true; + viAlias = true; + defaultEditor = true; + }; + + # 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 new file mode 100644 index 0000000..0b4ace0 --- /dev/null +++ b/flake.nix @@ -0,0 +1,17 @@ +{ + description = "NixOS Flake Configuration"; + + inputs = { + nixpkgs.url = "github:nixos/nixpkgs/nixos-25.11"; + }; + + outputs = { self, nixpkgs, ... }: { + nixosConfigurations.nixos = nixpkgs.lib.nixosSystem { + system = "x86_64-linux"; + + modules = [ + ./configuration.nix + ]; + }; + }; +} diff --git a/hardware-configuration.nix b/hardware-configuration.nix new file mode 100644 index 0000000..0417079 --- /dev/null +++ b/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/xmonad.hs b/xmonad.hs new file mode 100644 index 0000000..1df21b5 --- /dev/null +++ b/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 -- cgit v1.2.3