initial
This commit is contained in:
		
							
								
								
									
										146
									
								
								configuration.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										146
									
								
								configuration.nix
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,146 @@ | ||||
| # Edit this configuration file to define what should be installed on | ||||
| # your system.  Help is available in the configuration.nix(5) man page | ||||
| # and in the NixOS manual (accessible by running ‘nixos-help’). | ||||
|  | ||||
| { config, pkgs, ... }: | ||||
|  | ||||
| { | ||||
|   imports = | ||||
|     [ # Include the results of the hardware scan. | ||||
|       ./hardware-configuration.nix | ||||
|     ]; | ||||
|  | ||||
|   # Bootloader. | ||||
|   boot.loader.systemd-boot.enable = true; | ||||
|   boot.loader.efi.canTouchEfiVariables = true; | ||||
|  | ||||
|   networking.hostName = "MaxNixosLaptop"; # Define your hostname. | ||||
|   # networking.wireless.enable = true;  # Enables wireless support via wpa_supplicant. | ||||
|  | ||||
|   # Configure network proxy if necessary | ||||
|   # networking.proxy.default = "http://user:password@proxy:port/"; | ||||
|   # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain"; | ||||
|  | ||||
|   # Enable networking | ||||
|   networking.networkmanager.enable = true; | ||||
|  | ||||
|   # Set your time zone. | ||||
|   time.timeZone = "Europe/Berlin"; | ||||
|  | ||||
|   # NIXOS | ||||
|   nix.settings.experimental-features = [ "nix-command" "flakes" ]; | ||||
|  | ||||
|   # Select internationalisation properties. | ||||
|   i18n.defaultLocale = "en_US.UTF-8"; | ||||
|  | ||||
|   i18n.extraLocaleSettings = { | ||||
|     LC_ADDRESS = "de_DE.UTF-8"; | ||||
|     LC_IDENTIFICATION = "de_DE.UTF-8"; | ||||
|     LC_MEASUREMENT = "de_DE.UTF-8"; | ||||
|     LC_MONETARY = "de_DE.UTF-8"; | ||||
|     LC_NAME = "de_DE.UTF-8"; | ||||
|     LC_NUMERIC = "de_DE.UTF-8"; | ||||
|     LC_PAPER = "de_DE.UTF-8"; | ||||
|     LC_TELEPHONE = "de_DE.UTF-8"; | ||||
|     LC_TIME = "de_DE.UTF-8"; | ||||
|   }; | ||||
|  | ||||
|   # Enable the X11 windowing system. | ||||
|   services.xserver.enable = true; | ||||
|  | ||||
|   # Enable the GNOME Desktop Environment. | ||||
|   services.xserver.displayManager.gdm.enable = true; | ||||
|   services.xserver.desktopManager.gnome.enable = true; | ||||
|  | ||||
|   # Configure keymap in X11 | ||||
|   services.xserver = { | ||||
|     layout = "de"; | ||||
|     xkbVariant = ""; | ||||
|   }; | ||||
|  | ||||
|   # Configure console keymap | ||||
|   console.keyMap = "de"; | ||||
|  | ||||
|   # Enable CUPS to print documents. | ||||
|   services.printing.enable = true; | ||||
|  | ||||
|   # Enable sound with pipewire. | ||||
|   sound.enable = true; | ||||
|   hardware.pulseaudio.enable = false; | ||||
|   security.rtkit.enable = true; | ||||
|   services.pipewire = { | ||||
|     enable = true; | ||||
|     alsa.enable = true; | ||||
|     alsa.support32Bit = true; | ||||
|     pulse.enable = true; | ||||
|     # If you want to use JACK applications, uncomment this | ||||
|     #jack.enable = true; | ||||
|  | ||||
|     # use the example session manager (no others are packaged yet so this is enabled by default, | ||||
|     # no need to redefine it in your config for now) | ||||
|     #media-session.enable = true; | ||||
|   }; | ||||
|  | ||||
|   # Enable touchpad support (enabled default in most desktopManager). | ||||
|   # services.xserver.libinput.enable = true; | ||||
|  | ||||
|   # Define a user account. Don't forget to set a password with ‘passwd’. | ||||
|   users.users.max = { | ||||
|     isNormalUser = true; | ||||
|     description = "Max Känner"; | ||||
|     extraGroups = [ "networkmanager" "wheel" ]; | ||||
|     packages = with pkgs; [ | ||||
|       firefox | ||||
|     #  thunderbird | ||||
|     ]; | ||||
|   }; | ||||
|  | ||||
|   # Allow unfree packages | ||||
|   nixpkgs.config.allowUnfree = true; | ||||
|  | ||||
|   # List packages installed in system profile. To search, run: | ||||
|   # $ nix search wget | ||||
|   environment.systemPackages = with pkgs; [ | ||||
|   #  vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default. | ||||
|   #  wget | ||||
|      neovim | ||||
|      wget | ||||
|      fprintd | ||||
|      usbutils | ||||
|      pciutils | ||||
|      home-manager | ||||
|      git | ||||
|   ]; | ||||
|  | ||||
|   # Some programs need SUID wrappers, can be configured further or are | ||||
|   # started in user sessions. | ||||
|   # programs.mtr.enable = true; | ||||
|   # programs.gnupg.agent = { | ||||
|   #   enable = true; | ||||
|   #   enableSSHSupport = true; | ||||
|   # }; | ||||
|  | ||||
|   # List services that you want to enable: | ||||
|  | ||||
|   # fingerprint unlock | ||||
|   services.fprintd.enable = true; | ||||
|  | ||||
|   # Enable the OpenSSH daemon. | ||||
|   # services.openssh.enable = true; | ||||
|  | ||||
|   # Open ports in the firewall. | ||||
|   # networking.firewall.allowedTCPPorts = [ ... ]; | ||||
|   # networking.firewall.allowedUDPPorts = [ ... ]; | ||||
|   # Or disable the firewall altogether. | ||||
|   # networking.firewall.enable = false; | ||||
|  | ||||
|   # This value determines the NixOS release from which the default | ||||
|   # settings for stateful data, like file locations and database versions | ||||
|   # on your system were taken. It‘s perfectly fine and recommended to leave | ||||
|   # this value at the release version of the first install of this system. | ||||
|   # Before changing this value read the documentation for this option | ||||
|   # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). | ||||
|   system.stateVersion = "23.11"; # Did you read the comment? | ||||
|  | ||||
| } | ||||
|  | ||||
							
								
								
									
										27
									
								
								flake.lock
									
									
									
										generated
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								flake.lock
									
									
									
										generated
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,27 @@ | ||||
| { | ||||
|   "nodes": { | ||||
|     "nixpkgs": { | ||||
|       "locked": { | ||||
|         "lastModified": 1709218635, | ||||
|         "narHash": "sha256-nytX/MkfqeTD4z7bMq4QRXcHxO9B3vRo9tM6fMtPFA8=", | ||||
|         "owner": "nixos", | ||||
|         "repo": "nixpkgs", | ||||
|         "rev": "068d4db604958d05d0b46c47f79b507d84dbc069", | ||||
|         "type": "github" | ||||
|       }, | ||||
|       "original": { | ||||
|         "owner": "nixos", | ||||
|         "ref": "nixos-23.11", | ||||
|         "repo": "nixpkgs", | ||||
|         "type": "github" | ||||
|       } | ||||
|     }, | ||||
|     "root": { | ||||
|       "inputs": { | ||||
|         "nixpkgs": "nixpkgs" | ||||
|       } | ||||
|     } | ||||
|   }, | ||||
|   "root": "root", | ||||
|   "version": 7 | ||||
| } | ||||
							
								
								
									
										29
									
								
								flake.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								flake.nix
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,29 @@ | ||||
| { | ||||
|   description = "Nixos config flake"; | ||||
|  | ||||
|   inputs = { | ||||
|     nixpkgs.url = "github:nixos/nixpkgs/nixos-23.11"; | ||||
|  | ||||
|     # home-manager = { | ||||
|     #   url = "github:nix-community/home-manager"; | ||||
|     #   inputs.nixpkgs.follows = "nixpkgs"; | ||||
|     # }; | ||||
|   }; | ||||
|  | ||||
|   outputs = { self, nixpkgs, ... }@inputs: | ||||
|     let | ||||
|       system = "x86_64-linux"; | ||||
|       pkgs = nixpkgs.legacyPackages.${system}; | ||||
|     in | ||||
|     { | ||||
|      | ||||
|       nixosConfigurations."MaxNixosLaptop" = nixpkgs.lib.nixosSystem { | ||||
|           specialArgs = {inherit inputs;}; | ||||
|           modules = [  | ||||
|             ./configuration.nix | ||||
|             # inputs.home-manager.nixosModules.default | ||||
|           ]; | ||||
|         }; | ||||
|  | ||||
|     }; | ||||
| } | ||||
							
								
								
									
										39
									
								
								hardware-configuration.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								hardware-configuration.nix
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,39 @@ | ||||
| # 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 = [ "nvme" "xhci_pci" "usb_storage" "sd_mod" "rtsx_pci_sdmmc" ]; | ||||
|   boot.initrd.kernelModules = [ ]; | ||||
|   boot.kernelModules = [ "kvm-amd" ]; | ||||
|   boot.extraModulePackages = [ ]; | ||||
|  | ||||
|   fileSystems."/" = | ||||
|     { device = "/dev/disk/by-uuid/34201865-cb0f-443d-9fa6-fc8b879f10d7"; | ||||
|       fsType = "f2fs"; | ||||
|     }; | ||||
|  | ||||
|   fileSystems."/boot" = | ||||
|     { device = "/dev/disk/by-uuid/D497-E78F"; | ||||
|       fsType = "vfat"; | ||||
|     }; | ||||
|  | ||||
|   swapDevices = | ||||
|     [ { device = "/dev/disk/by-uuid/067162ef-42f5-4f01-8e4d-7d3550a87b73"; } | ||||
|     ]; | ||||
|  | ||||
|   # Enables DHCP on each ethernet and wireless interface. In case of scripted networking | ||||
|   # (the default) this is the recommended approach. When using systemd-networkd it's | ||||
|   # still possible to use this option, but it's recommended to use it in conjunction | ||||
|   # with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`. | ||||
|   networking.useDHCP = lib.mkDefault true; | ||||
|   # networking.interfaces.wlp1s0.useDHCP = lib.mkDefault true; | ||||
|  | ||||
|   nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; | ||||
|   hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; | ||||
| } | ||||
							
								
								
									
										33
									
								
								rebuild.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										33
									
								
								rebuild.sh
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,33 @@ | ||||
| #!/usr/bin/env bash | ||||
|  | ||||
| # A rebuild script that commits on a successful build | ||||
| set -e | ||||
|  | ||||
| # cd to your config dir | ||||
| pushd ~/dotfiles/nixos/ | ||||
|  | ||||
| # Edit your config | ||||
| $EDITOR configuration.nix | ||||
|  | ||||
| # Autoformat your nix files | ||||
| alejandra . &>/dev/null | ||||
|  | ||||
| # Shows your changes | ||||
| git diff -U0 *.nix | ||||
|  | ||||
| echo "NixOS Rebuilding..." | ||||
|  | ||||
| # Rebuild, output simplified errors, log trackebacks | ||||
| sudo nixos-rebuild switch &>nixos-switch.log || (cat nixos-switch.log | grep --color error && false) | ||||
|  | ||||
| # Get current generation metadata | ||||
| current=$(nixos-rebuild list-generations | grep current) | ||||
|  | ||||
| # Commit all changes with the gereation metadata | ||||
| git commit -am "$current" | ||||
|  | ||||
| # Back to where you were | ||||
| popd | ||||
|  | ||||
| # Notify all OK! | ||||
| notify-send -e "NixOS Rebuilt OK!" --icon=software-update-available | ||||
		Reference in New Issue
	
	Block a user