commit 5ba014c24905c16802b1469a906e134d5654440f Author: Armel van Ravels Date: Tue Jan 27 20:17:44 2026 +0100 Initial commit diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..de09cee --- /dev/null +++ b/flake.lock @@ -0,0 +1,49 @@ +{ + "nodes": { + "home-manager": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1768949235, + "narHash": "sha256-TtjKgXyg1lMfh374w5uxutd6Vx2P/hU81aEhTxrO2cg=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "75ed713570ca17427119e7e204ab3590cc3bf2a5", + "type": "github" + }, + "original": { + "owner": "nix-community", + "ref": "release-25.11", + "repo": "home-manager", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1769318308, + "narHash": "sha256-Mjx6p96Pkefks3+aA+72lu1xVehb6mv2yTUUqmSet6Q=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "1cd347bf3355fce6c64ab37d3967b4a2cb4b878c", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-25.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "home-manager": "home-manager", + "nixpkgs": "nixpkgs" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..429fbb0 --- /dev/null +++ b/flake.nix @@ -0,0 +1,20 @@ +{ + description = "Planned Disorder"; + + inputs = { + nixpkgs = { + url = "github:nixos/nixpkgs/nixos-25.11"; + }; + + home-manager = { + url = "github:nix-community/home-manager/release-25.11"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + }; + + # This strange syntax is a workaround for the intentional limitations of `flake.nix` files. + # https://discourse.nixos.org/t/outlining-the-differences-between-flakes-and-nix-configs/72996 + # + # It imports the file with the top-level options from [inputs] as arguments. + outputs = inputs: import ./outputs.nix inputs; +} diff --git a/outputs.nix b/outputs.nix new file mode 100644 index 0000000..d80eefd --- /dev/null +++ b/outputs.nix @@ -0,0 +1,13 @@ +{ nixpkgs, home-manager, ... }: + +{ + nixosConfigurations = { + "gandalf" = nixpkgs.lib.nixosSystem { + system = "x86_64-linux"; + modules = [ + home-manager.nixosModules.home-manager + ./systems/gandalf + ]; + }; + }; +} diff --git a/systems/gandalf/default.nix b/systems/gandalf/default.nix new file mode 100644 index 0000000..8717458 --- /dev/null +++ b/systems/gandalf/default.nix @@ -0,0 +1,131 @@ +{ config, pkgs, ... }: + +{ + imports = + [ + ./hardware-configuration.nix + ]; + + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + + networking.hostName = "gandalf"; # Define your hostname. + + networking.networkmanager.enable = true; + + time.timeZone = "Europe/Amsterdam"; + + i18n.defaultLocale = "en_US.UTF-8"; + i18n.extraLocaleSettings = { + LC_ADDRESS = "nl_NL.UTF-8"; + LC_IDENTIFICATION = "nl_NL.UTF-8"; + LC_MEASUREMENT = "nl_NL.UTF-8"; + LC_MONETARY = "nl_NL.UTF-8"; + LC_NAME = "nl_NL.UTF-8"; + LC_NUMERIC = "nl_NL.UTF-8"; + LC_PAPER = "nl_NL.UTF-8"; + LC_TELEPHONE = "nl_NL.UTF-8"; + LC_TIME = "nl_NL.UTF-8"; + }; + + users.defaultUserShell = pkgs.zsh; + + security.rtkit.enable = true; + users.users.avravels = { + isNormalUser = true; + description = "Armel van Ravels"; + extraGroups = [ "networkmanager" "wheel" ]; + packages = with pkgs; [ + home-manager + discord + spotify + protonvpn-gui + ]; + shell = pkgs.zsh; + }; + + nixpkgs.config.allowUnfree = true; + + environment.systemPackages = with pkgs; [ + gnumake + git + ]; + + nix.settings.experimental-features = [ "nix-command" "flakes" ]; + + services = { + openssh.enable = true; + + displayManager.gdm.enable = true; + desktopManager.gnome.enable = true; + + xserver = { + enable = true; + + videoDrivers = ["nvidia"]; + + xkb = { + layout = "us"; + variant = ""; + }; + }; + + printing.enable = true; + + pulseaudio.enable = false; + + pipewire = { + enable = true; + + alsa = { + enable = true; + support32Bit = true; + }; + + pulse.enable = true; + }; + + # Bluetooth fixes + udev.extraRules = '' + SUBSYSTEM=="usb", ENV{ID_VENDOR_ID}=="0489", ENV{ID_MODEL_ID}=="e111", ENV{UDISKS_IGNORE}="1", ENV{ID_MEDIA_PLAYER}="", ENV{ID_MTP_DEVICE}="", ENV{ID_GPHOTO2}="", ENV{ID_INPUT}="", ENV{SOLID_IGNORE}="1", TAG-="uaccess" + + SUBSYSTEM=="usb", ATTRS{idVendor}=="0489", ATTRS{idProduct}=="e111", ENV{DEVTYPE}=="usb_interface", ENV{UDISKS_IGNORE}="1", ENV{ID_MEDIA_PLAYER}="", ENV{ID_MTP_DEVICE}="", ENV{ID_GPHOTO2}="", ENV{ID_INPUT}="", ENV{SOLID_IGNORE}="1", TAG-="uaccess" + + SUBSYSTEM=="usb", KERNEL=="3-14:*", ENV{UDISKS_IGNORE}="1", ENV{ID_MEDIA_PLAYER}="", ENV{ID_MTP_DEVICE}="", ENV{ID_GPHOTO2}="", ENV{ID_INPUT}="", ENV{SOLID_IGNORE}="1", TAG-="uaccess" + + SUBSYSTEM=="usb", KERNELS=="3-14", ENV{UDISKS_IGNORE}="1", ENV{ID_MEDIA_PLAYER}="", ENV{ID_MTP_DEVICE}="", ENV{ID_GPHOTO2}="", ENV{SOLID_IGNORE}="1" + ''; + }; + + hardware = { + graphics.enable = true; + + nvidia = { + modesetting.enable = true; + open = true; + nvidiaSettings = true; + }; + }; + + programs = { + hyprland = { + enable = true; + xwayland.enable = true; + }; + + zsh.enable = true; + + gamescope = { + enable = false; + capSysNice = true; + }; + + steam = { + enable = true; + remotePlay.openFirewall = true; + localNetworkGameTransfers.openFirewall = true; + }; + }; + + system.stateVersion = "25.11"; # Did you read the comment? +} diff --git a/systems/gandalf/hardware-configuration.nix b/systems/gandalf/hardware-configuration.nix new file mode 100644 index 0000000..0632a53 --- /dev/null +++ b/systems/gandalf/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 = + [ (modulesPath + "/installer/scan/not-detected.nix") + ]; + + boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usbhid" "usb_storage" "sd_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/fbdcecb5-3a2b-4bd5-9586-4de834200363"; + fsType = "ext4"; + }; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/01E4-5DD7"; + fsType = "vfat"; + options = [ "fmask=0077" "dmask=0077" ]; + }; + + swapDevices = [ ]; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +}