5 files changed, 401 insertions(+), 0 deletions(-)
configuration.nix created+198| ... | ... | @@ -0,0 +1,198 @@ |
| 1 | #<BS> Edit this configuration file to define what should be installed on | |
| 2 | # your system. Help is available in the configuration.nix(5) man page | |
| 3 | # and in the NixOS manual (accessible by running ‘nixos-help’). | |
| 4 | ||
| 5 | { config, pkgs, ... }: | |
| 6 | ||
| 7 | { | |
| 8 | nix.settings.experimental-features = [ "nix-command" "flakes" ]; | |
| 9 | programs.hyprland.enable = true; | |
| 10 | programs.zsh = { | |
| 11 | 	enable = true; | |
| 12 | 	ohMyZsh = { | |
| 13 | 		enable = true; | |
| 14 | 		plugins = ["git" "zsh-autosuggestions" "zsh-autocomplete" "sudo"]; | |
| 15 | 		theme = "powerlevel10k"; | |
| 16 | }; | |
| 17 | }; | |
| 18 | ||
| 19 | imports = | |
| 20 | [ # Include the results of the hardware scan. | |
| 21 | ./hardware-configuration.nix | |
| 22 | ]; | |
| 23 | ||
| 24 | # Enable OpenGL | |
| 25 | hardware.opengl = { | |
| 26 | enable = true; | |
| 27 | driSupport = true; | |
| 28 | driSupport32Bit = true; | |
| 29 | }; | |
| 30 | services.xserver.videoDrivers = ["nvidia"]; | |
| 31 | ||
| 32 | hardware.nvidia = { | |
| 33 | ||
| 34 | # Modesetting is required. | |
| 35 | modesetting.enable = true; | |
| 36 | ||
| 37 | # Nvidia power management. Experimental, and can cause sleep/suspend to fail. | |
| 38 | powerManagement.enable = false; | |
| 39 | # Fine-grained power management. Turns off GPU when not in use. | |
| 40 | # Experimental and only works on modern Nvidia GPUs (Turing or newer). | |
| 41 | powerManagement.finegrained = false; | |
| 42 | ||
| 43 | # Use the NVidia open source kernel module (not to be confused with the | |
| 44 | # independent third-party "nouveau" open source driver). | |
| 45 | # Support is limited to the Turing and later architectures. Full list of | |
| 46 | # supported GPUs is at: | |
| 47 | # https://github.com/NVIDIA/open-gpu-kernel-modules#compatible-gpus | |
| 48 | # Only available from driver 515.43.04+ | |
| 49 | # Currently alpha-quality/buggy, so false is currently the recommended setting. | |
| 50 | open = false; | |
| 51 | ||
| 52 | # Enable the Nvidia settings menu, | |
| 53 | 	# accessible via `nvidia-settings`. | |
| 54 | nvidiaSettings = true; | |
| 55 | ||
| 56 | # Optionally, you may need to select the appropriate driver version for your specific GPU. | |
| 57 | package = config.boot.kernelPackages.nvidiaPackages.stable; | |
| 58 | }; | |
| 59 | # Bootloader. | |
| 60 | #boot.loader.systemd-boot.enable = true; | |
| 61 | #boot.loader.efi.canTouchEfiVariables = true; | |
| 62 | ||
| 63 | boot.loader = { | |
| 64 | 	efi = { | |
| 65 | 	 canTouchEfiVariables = true; | |
| 66 | # assuming /boot is the mount point of the EFI partition in NixOS (as the installation section recommends). | |
| 67 | efiSysMountPoint = "/boot"; | |
| 68 | 	}; | |
| 69 | 	grub = { | |
| 70 | 	enable = true; | |
| 71 | 	devices = [ "nodev" ]; | |
| 72 | 	useOSProber = true; | |
| 73 | 	}; | |
| 74 | }; | |
| 75 | networking.hostName = "nixos"; # Define your hostname. | |
| 76 | # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. | |
| 77 | ||
| 78 | # Configure network proxy if necessary | |
| 79 | # networking.proxy.default = "http://user:password@proxy:port/"; | |
| 80 | # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain"; | |
| 81 | ||
| 82 | # Enable networking | |
| 83 | networking.networkmanager.enable = true; | |
| 84 | ||
| 85 | # Set your time zone. | |
| 86 | time.timeZone = "America/Los_Angeles"; | |
| 87 | ||
| 88 | # Select internationalisation properties. | |
| 89 | i18n.defaultLocale = "en_US.UTF-8"; | |
| 90 | ||
| 91 | i18n.extraLocaleSettings = { | |
| 92 | LC_ADDRESS = "en_US.UTF-8"; | |
| 93 | LC_IDENTIFICATION = "en_US.UTF-8"; | |
| 94 | LC_MEASUREMENT = "en_US.UTF-8"; | |
| 95 | LC_MONETARY = "en_US.UTF-8"; | |
| 96 | LC_NAME = "en_US.UTF-8"; | |
| 97 | LC_NUMERIC = "en_US.UTF-8"; | |
| 98 | LC_PAPER = "en_US.UTF-8"; | |
| 99 | LC_TELEPHONE = "en_US.UTF-8"; | |
| 100 | LC_TIME = "en_US.UTF-8"; | |
| 101 | }; | |
| 102 | ||
| 103 | # Enable the X11 windowing system. | |
| 104 | services.xserver.enable = true; | |
| 105 | ||
| 106 | # Enable the KDE Plasma Desktop Environment. | |
| 107 | services.xserver.displayManager.sddm.enable = true; | |
| 108 | services.xserver.desktopManager.plasma5.enable = true; | |
| 109 | ||
| 110 | # Configure keymap in X11 | |
| 111 | services.xserver = { | |
| 112 | layout = "us"; | |
| 113 | xkbVariant = ""; | |
| 114 | }; | |
| 115 | ||
| 116 | # Enable CUPS to print documents. | |
| 117 | services.printing.enable = true; | |
| 118 | ||
| 119 | # Enable sound with pipewire. | |
| 120 | sound.enable = true; | |
| 121 | hardware.pulseaudio.enable = false; | |
| 122 | security.rtkit.enable = true; | |
| 123 | services.pipewire = { | |
| 124 | enable = true; | |
| 125 | alsa.enable = true; | |
| 126 | alsa.support32Bit = true; | |
| 127 | pulse.enable = true; | |
| 128 | # If you want to use JACK applications, uncomment this | |
| 129 | #jack.enable = true; | |
| 130 | ||
| 131 | # use the example session manager (no others are packaged yet so this is enabled by default, | |
| 132 | # no need to redefine it in your config for now) | |
| 133 | #media-session.enable = true; | |
| 134 | }; | |
| 135 | ||
| 136 | # Enable touchpad support (enabled default in most desktopManager). | |
| 137 | # services.xserver.libinput.enable = true; | |
| 138 | ||
| 139 | # Define a user account. Don't forget to set a password with ‘passwd’. | |
| 140 | users.users.nmarks = { | |
| 141 | isNormalUser = true; | |
| 142 | description = "Natalie Marks"; | |
| 143 | extraGroups = [ "networkmanager" "wheel" ]; | |
| 144 | packages = with pkgs; [ | |
| 145 | firefox | |
| 146 | kate | |
| 147 | vim | |
| 148 | discord | |
| 149 | kitty | |
| 150 | ||
| 151 | # thunderbird | |
| 152 | ]; | |
| 153 | }; | |
| 154 | programs.neovim = { | |
| 155 | 	enable = true; | |
| 156 | 	defaultEditor = true; | |
| 157 | }; | |
| 158 | environment.variables.EDITOR = "nvim"; | |
| 159 | ||
| 160 | # Allow unfree packages | |
| 161 | nixpkgs.config.allowUnfree = true; | |
| 162 | ||
| 163 | # List packages installed in system profile. To search, run: | |
| 164 | # $ nix search wget | |
| 165 | environment.systemPackages = with pkgs; [ | |
| 166 | vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default. | |
| 167 | wget | |
| 168 | git | |
| 169 | ]; | |
| 170 | ||
| 171 | # Some programs need SUID wrappers, can be configured further or are | |
| 172 | # started in user sessions. | |
| 173 | programs.mtr.enable = true; | |
| 174 | programs.gnupg.agent = { | |
| 175 | enable = true; | |
| 176 | enableSSHSupport = true; | |
| 177 | }; | |
| 178 | ||
| 179 | # List services that you want to enable: | |
| 180 | ||
| 181 | # Enable the OpenSSH daemon. | |
| 182 | services.openssh.enable = true; | |
| 183 | ||
| 184 | # Open ports in the firewall. | |
| 185 | # networking.firewall.allowedTCPPorts = [ ... ]; | |
| 186 | # networking.firewall.allowedUDPPorts = [ ... ]; | |
| 187 | # Or disable the firewall altogether. | |
| 188 | # networking.firewall.enable = false; | |
| 189 | ||
| 190 | # This value determines the NixOS release from which the default | |
| 191 | # settings for stateful data, like file locations and database versions | |
| 192 | # on your system were taken. It‘s perfectly fine and recommended to leave | |
| 193 | # this value at the release version of the first install of this system. | |
| 194 | # Before changing this value read the documentation for this option | |
| 195 | # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). | |
| 196 | system.stateVersion = "23.05"; # Did you read the comment? | |
| 197 | ||
| 198 | } |
flake.lock created+48| ... | ... | @@ -0,0 +1,48 @@ |
| 1 | { | |
| 2 | "nodes": { | |
| 3 | "home-manager": { | |
| 4 | "inputs": { | |
| 5 | "nixpkgs": [ | |
| 6 | "nixpkgs" | |
| 7 | ] | |
| 8 | }, | |
| 9 | "locked": { | |
| 10 | "lastModified": 1703367386, | |
| 11 | "narHash": "sha256-FMbm48UGrBfOWGt8+opuS+uLBLQlRfhiYXhHNcYMS5k=", | |
| 12 | "owner": "nix-community", | |
| 13 | "repo": "home-manager", | |
| 14 | "rev": "d5824a76bc6bb93d1dce9ebbbcb09a9b6abcc224", | |
| 15 | "type": "github" | |
| 16 | }, | |
| 17 | "original": { | |
| 18 | "owner": "nix-community", | |
| 19 | "ref": "release-23.11", | |
| 20 | "repo": "home-manager", | |
| 21 | "type": "github" | |
| 22 | } | |
| 23 | }, | |
| 24 | "nixpkgs": { | |
| 25 | "locked": { | |
| 26 | "lastModified": 1703467016, | |
| 27 | "narHash": "sha256-/5A/dNPhbQx/Oa2d+Get174eNI3LERQ7u6WTWOlR1eQ=", | |
| 28 | "owner": "NixOS", | |
| 29 | "repo": "nixpkgs", | |
| 30 | "rev": "d02d818f22c777aa4e854efc3242ec451e5d462a", | |
| 31 | "type": "github" | |
| 32 | }, | |
| 33 | "original": { | |
| 34 | "id": "nixpkgs", | |
| 35 | "ref": "nixos-23.11", | |
| 36 | "type": "indirect" | |
| 37 | } | |
| 38 | }, | |
| 39 | "root": { | |
| 40 | "inputs": { | |
| 41 | "home-manager": "home-manager", | |
| 42 | "nixpkgs": "nixpkgs" | |
| 43 | } | |
| 44 | } | |
| 45 | }, | |
| 46 | "root": "root", | |
| 47 | "version": 7 | |
| 48 | } |
flake.nix created+37| ... | ... | @@ -0,0 +1,37 @@ |
| 1 | { | |
| 2 | description = "My first flake!"; | |
| 3 | ||
| 4 | inputs = { | |
| 5 | nixpkgs.url = "nixpkgs/nixos-23.11"; | |
| 6 | home-manager = { | |
| 7 | url = "github:nix-community/home-manager/release-23.11"; | |
| 8 | inputs.nixpkgs.follows = "nixpkgs"; | |
| 9 | }; | |
| 10 | ||
| 11 | # use the following for unstable: | |
| 12 | # nixpkgs.url = "nixpkgs/nixos-unstable"; | |
| 13 | ||
| 14 | # or any branch you want: | |
| 15 | # nixpkgs.url = "nixpkgs/{BRANCH-NAME}" | |
| 16 | }; | |
| 17 | ||
| 18 | outputs = { self, home-manager, nixpkgs, ... }: | |
| 19 | let | |
| 20 | system = "x86_64-linux"; | |
| 21 | lib = nixpkgs.lib; | |
| 22 | pkgs = nixpkgs.legacyPackages.${system}; | |
| 23 | in { | |
| 24 | nixosConfigurations = { | |
| 25 | nmarks = lib.nixosSystem { | |
| 26 | 	 inherit system; | |
| 27 | modules = [ ./configuration.nix ]; | |
| 28 | }; | |
| 29 | }; | |
| 30 | homeConfigurations = { | |
| 31 | nmarks = home-manager.lib.homeManagerConfiguration { | |
| 32 | inherit pkgs; | |
| 33 | modules = [ ./home.nix ]; | |
| 34 | }; | |
| 35 | }; | |
| 36 | }; | |
| 37 | } |
hardware-configuration.nix created+40| ... | ... | @@ -0,0 +1,40 @@ |
| 1 | # Do not modify this file! It was generated by ‘nixos-generate-config’ | |
| 2 | # and may be overwritten by future invocations. Please make changes | |
| 3 | # to /etc/nixos/configuration.nix instead. | |
| 4 | { config, lib, pkgs, modulesPath, ... }: | |
| 5 | ||
| 6 | { | |
| 7 | imports = | |
| 8 | [ (modulesPath + "/installer/scan/not-detected.nix") | |
| 9 | ]; | |
| 10 | ||
| 11 | boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "ahci" "usbhid" "sd_mod" ]; | |
| 12 | boot.initrd.kernelModules = [ ]; | |
| 13 | boot.kernelModules = [ "kvm-amd" "wl" ]; | |
| 14 | boot.extraModulePackages = [ config.boot.kernelPackages.broadcom_sta ]; | |
| 15 | ||
| 16 | fileSystems."/" = | |
| 17 | { device = "/dev/disk/by-uuid/5838d50d-e6e8-4ad2-a25e-524f4c46da35"; | |
| 18 | fsType = "ext4"; | |
| 19 | }; | |
| 20 | ||
| 21 | fileSystems."/boot" = | |
| 22 | { device = "/dev/disk/by-uuid/2319-EE79"; | |
| 23 | fsType = "vfat"; | |
| 24 | }; | |
| 25 | ||
| 26 | swapDevices = | |
| 27 | [ { device = "/dev/disk/by-uuid/a4128bb9-239c-4aa9-9777-5067feb77b28"; } | |
| 28 | ]; | |
| 29 | ||
| 30 | # Enables DHCP on each ethernet and wireless interface. In case of scripted networking | |
| 31 | # (the default) this is the recommended approach. When using systemd-networkd it's | |
| 32 | # still possible to use this option, but it's recommended to use it in conjunction | |
| 33 | # with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`. | |
| 34 | networking.useDHCP = lib.mkDefault true; | |
| 35 | # networking.interfaces.enp34s0.useDHCP = lib.mkDefault true; | |
| 36 | # networking.interfaces.wlo1.useDHCP = lib.mkDefault true; | |
| 37 | ||
| 38 | nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; | |
| 39 | hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; | |
| 40 | } |
home.nix created+78| ... | ... | @@ -0,0 +1,78 @@ |
| 1 | { config, pkgs, ... }: | |
| 2 | ||
| 3 | { | |
| 4 | # Home Manager needs a bit of information about you and the paths it should | |
| 5 | # manage. | |
| 6 | home.username = "nmarks"; | |
| 7 | home.homeDirectory = "/home/nmarks"; | |
| 8 | ||
| 9 | # This value determines the Home Manager release that your configuration is | |
| 10 | # compatible with. This helps avoid breakage when a new Home Manager release | |
| 11 | # introduces backwards incompatible changes. | |
| 12 | # | |
| 13 | # You should not change this value, even if you update Home Manager. If you do | |
| 14 | # want to update the value, then make sure to first check the Home Manager | |
| 15 | # release notes. | |
| 16 | home.stateVersion = "23.05"; # Please read the comment before changing. | |
| 17 | ||
| 18 | # The home.packages option allows you to install Nix packages into your | |
| 19 | # environment. | |
| 20 | home.packages = with pkgs; [ | |
| 21 | # # Adds the 'hello' command to your environment. It prints a friendly | |
| 22 | # # "Hello, world!" when run. | |
| 23 | # pkgs.hello | |
| 24 | ||
| 25 | # # It is sometimes useful to fine-tune packages, for example, by applying | |
| 26 | # # overrides. You can do that directly here, just don't forget the | |
| 27 | # # parentheses. Maybe you want to install Nerd Fonts with a limited number of | |
| 28 | # # fonts? | |
| 29 | # (pkgs.nerdfonts.override { fonts = [ "FantasqueSansMono" ]; }) | |
| 30 | ||
| 31 | # # You can also create simple shell scripts directly inside your | |
| 32 | # # configuration. For example, this adds a command 'my-hello' to your | |
| 33 | # # environment: | |
| 34 | # (pkgs.writeShellScriptBin "my-hello" '' | |
| 35 | # echo "Hello, ${config.home.username}!" | |
| 36 | # '') | |
| 37 | ]; | |
| 38 | programs.neovim = { | |
| 39 | 	viAlias = true; | |
| 40 | 	vimAlias = true; | |
| 41 | }; | |
| 42 | #Link neovim config into nix | |
| 43 | xdg.configFile.nvim.source = ./nvim; | |
| 44 | ||
| 45 | ||
| 46 | ||
| 47 | # Home Manager is pretty good at managing dotfiles. The primary way to manage | |
| 48 | # plain files is through 'home.file'. | |
| 49 | home.file = { | |
| 50 | # # Building this configuration will create a copy of 'dotfiles/screenrc' in | |
| 51 | # # the Nix store. Activating the configuration will then make '~/.screenrc' a | |
| 52 | # # symlink to the Nix store copy. | |
| 53 | # ".screenrc".source = dotfiles/screenrc; | |
| 54 | ||
| 55 | # # You can also set the file content immediately. | |
| 56 | # ".gradle/gradle.properties".text = '' | |
| 57 | # org.gradle.console=verbose | |
| 58 | # org.gradle.daemon.idletimeout=3600000 | |
| 59 | # ''; | |
| 60 | }; | |
| 61 | ||
| 62 | # You can also manage environment variables but you will have to manually | |
| 63 | # source | |
| 64 | # | |
| 65 | # ~/.nix-profile/etc/profile.d/hm-session-vars.sh | |
| 66 | # | |
| 67 | # or | |
| 68 | # | |
| 69 | # /etc/profiles/per-user/nmarks/etc/profile.d/hm-session-vars.sh | |
| 70 | # | |
| 71 | # if you don't want to manage your shell through Home Manager. | |
| 72 | home.sessionVariables = { | |
| 73 | # EDITOR = "emacs"; | |
| 74 | }; | |
| 75 | ||
| 76 | # Let Home Manager install and manage itself. | |
| 77 | programs.home-manager.enable = true; | |
| 78 | } |