diff --git a/configuration.nix b/configuration.nix index 4c482ca..338c1e0 100644 --- a/configuration.nix +++ b/configuration.nix @@ -1,25 +1,24 @@ # 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, ... }: - { - nix.settings.experimental-features = [ "nix-command" "flakes" ]; + config, + pkgs, + ... +}: { + nix.settings.experimental-features = ["nix-command" "flakes"]; programs.hyprland.enable = true; - programs.zsh = { - enable = true; - ohMyZsh = { - enable = true; - plugins = ["git" "zsh-autosuggestions" "zsh-autocomplete" "sudo"]; - theme = "powerlevel10k"; -}; -}; - imports = - [ # Include the results of the hardware scan. - ./hardware-configuration.nix - ]; + programs.fish.enable = true; + + fonts.packages = with pkgs; [ + (nerdfonts.override {fonts = ["FiraCode" "Iosevka"];}) + ]; + + imports = [ + # Include the results of the hardware scan. + ./hardware-configuration.nix + ]; # Enable OpenGL hardware.opengl = { @@ -30,7 +29,6 @@ services.xserver.videoDrivers = ["nvidia"]; hardware.nvidia = { - # Modesetting is required. modesetting.enable = true; @@ -42,15 +40,15 @@ # Use the NVidia open source kernel module (not to be confused with the # independent third-party "nouveau" open source driver). - # Support is limited to the Turing and later architectures. Full list of - # supported GPUs is at: - # https://github.com/NVIDIA/open-gpu-kernel-modules#compatible-gpus + # Support is limited to the Turing and later architectures. Full list of + # supported GPUs is at: + # https://github.com/NVIDIA/open-gpu-kernel-modules#compatible-gpus # Only available from driver 515.43.04+ # Currently alpha-quality/buggy, so false is currently the recommended setting. open = false; # Enable the Nvidia settings menu, - # accessible via `nvidia-settings`. + # accessible via `nvidia-settings`. nvidiaSettings = true; # Optionally, you may need to select the appropriate driver version for your specific GPU. @@ -61,16 +59,16 @@ #boot.loader.efi.canTouchEfiVariables = true; boot.loader = { - efi = { - canTouchEfiVariables = true; + efi = { + canTouchEfiVariables = true; # assuming /boot is the mount point of the EFI partition in NixOS (as the installation section recommends). efiSysMountPoint = "/boot"; - }; - grub = { - enable = true; - devices = [ "nodev" ]; - useOSProber = true; - }; + }; + grub = { + enable = true; + devices = ["nodev"]; + useOSProber = true; + }; }; networking.hostName = "nixos"; # Define your hostname. # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. @@ -137,24 +135,26 @@ # services.xserver.libinput.enable = true; # Define a user account. Don't forget to set a password with ‘passwd’. + users.defaultUserShell = pkgs.fish; users.users.nmarks = { isNormalUser = true; description = "Natalie Marks"; - extraGroups = [ "networkmanager" "wheel" ]; + extraGroups = ["networkmanager" "wheel"]; packages = with pkgs; [ firefox kate vim discord kitty - - # thunderbird + lua-language-server + # thunderbird ]; }; + programs.neovim = { - enable = true; - defaultEditor = true; -}; + enable = true; + defaultEditor = true; + }; environment.variables.EDITOR = "nvim"; # Allow unfree packages @@ -163,18 +163,33 @@ # List packages installed in system profile. To search, run: # $ nix search wget environment.systemPackages = with pkgs; [ + fish vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default. wget git + unzip + ripgrep + clang + fd + cargo + python3 + python311Packages.pynvim + python311Packages.pip + steam + ruby + julia + xclip + nodePackages.npm + go ]; # 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; - }; + programs.mtr.enable = true; + programs.gnupg.agent = { + enable = true; + enableSSHSupport = true; + }; # List services that you want to enable: @@ -194,5 +209,4 @@ # 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.05"; # Did you read the comment? - } diff --git a/home.nix b/home.nix index baf7783..78104d1 100644 --- a/home.nix +++ b/home.nix @@ -1,6 +1,8 @@ -{ config, pkgs, ... }: - { + config, + pkgs, + ... +}: { # Home Manager needs a bit of information about you and the paths it should # manage. home.username = "nmarks"; @@ -18,6 +20,14 @@ # The home.packages option allows you to install Nix packages into your # environment. home.packages = with pkgs; [ + stylua + alejandra + webcord + btop + neofetch + #zsh-autosuggestions + #zsh-autocomplete + #zsh-powerlevel10k # # Adds the 'hello' command to your environment. It prints a friendly # # "Hello, world!" when run. # pkgs.hello @@ -35,14 +45,54 @@ # echo "Hello, ${config.home.username}!" # '') ]; + programs.neovim = { - viAlias = true; - vimAlias = true; + viAlias = true; + vimAlias = true; + extraPackages = with pkgs; [ + lua-language-server + nil + alejandra + ]; }; #Link neovim config into nix - xdg.configFile.nvim.source = ./nvim; + #xdg.configFile.nvim.source = ./nvim; + programs.kitty = { + enable = true; + theme = "Catppuccin-Mocha"; + extraConfig = "font_family Iosevka NF + italic_font auto + bold_italic_font auto + bold_font auto"; + }; + programs.fish = { + enable = true; + + plugins = [ + { + name = "tide"; + src = pkgs.fishPlugins.tide.src; + } + ]; + }; + + /* + programs.zsh = { + oh-my-zsh = { + enable = true; + plugins = [ "git" "extract"]; + }; + enableAutosuggestions = true; + enableCompletion = true; + syntaxHighlighting.enable = true; + + plugins = [ + {name = "powerlevel10k";src = pkgs.zsh-powerlevel10k;file = "share/zsh-powerlevel10k/powerlevel10k.zsh-theme";} + ]; + }; + */ # Home Manager is pretty good at managing dotfiles. The primary way to manage # plain files is through 'home.file'. @@ -70,7 +120,9 @@ # # if you don't want to manage your shell through Home Manager. home.sessionVariables = { - # EDITOR = "emacs"; + EDITOR = "nvim"; + TERMINAL = "kitty"; + BROWSER = "firefox"; }; # Let Home Manager install and manage itself.