diff options
| -rw-r--r-- | flake.nix | 146 | ||||
| -rw-r--r-- | home-manager/home.nix | 18 | ||||
| -rw-r--r-- | machines/khad/configuration.nix | 133 | ||||
| -rw-r--r-- | machines/khad/hardware-configuration.nix | 50 | ||||
| -rw-r--r-- | machines/zenbook/configuration.nix | 2 | ||||
| -rw-r--r-- | modules/environment.nix | 2 | ||||
| -rw-r--r-- | modules/system-packages.nix | 1 |
7 files changed, 342 insertions, 10 deletions
@@ -6,15 +6,128 @@ nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable"; home-manager = { - url = "github:nix-community/home-manager/release-23.05"; + url = "github:nix-community/home-manager/release-23.05"; + # The `follows` keyword in inputs is used for inheritance. + # Here, `inputs.nixpkgs` of home-manager isn't kept consistent with the `inputs.nixpkgs` of the current flake, + # to not avoid problems caused by different versions of nixpkgs dependencies. inputs.nixpkgs.follows = "nixpkgs-unstable"; }; - # hyprland.url = "github:hyprwm/Hyprland"; + # modern window compositor + hyprland.url = "github:hyprwm/Hyprland"; + + #community wayland nixpkgs + # nixpkgs-wayland.url = "github:nix-community/nixpkgs-wayland"; + # anyrun - a wayland launcher + # anyrun = { + # url = "github:Kirottu/anyrun"; + # inputs.nixpkgs.follows = "nixpkgs-unstable"; + # }; + + # # generate iso/qcow2/docker/... image from nixos configuration + # nixos-generators = { + # url = "github:nix-community/nixos-generators"; + # inputs.nixpkgs.follows = "nixpkgs"; + # }; + + #secrets management, lock with git commit at 20xx/x/xx + #......... + + ##################### Some non-flake repositories ######################################### + + # # AstroNvim is an aesthetic and feature-ruch neovim config. + # astronvim = { + # url = "github:AstroNvim/AstroVnim/v3.36.0"; + # flake = false; + # }; + + # # useful nushell scripts, such as auto_completion + # nushell-scripts = { + # url = "github:nushell/nu_scripts" + # flake = false; + # }; + + # ryan4yin wallpapers + wallpapers = { + url = "github:ryan4yin/wallpapers"; + flake = false; + }; + + # # nur-ryan4yin = { + # url = "github:ryan4yin/nur-packages"; + # # inputs.nixpkgs.follows "nixpkgs"; + # }; + + # # riscv64 SBCs + # nixos-licheepi4a.url = "github:ryan4yin/nixos-licheepi4a"; + # # nixos-jh7110.url = "github:ryan4yin/nixos-jh7110"; + + # aarch64 SBCs + # nixos-rk3588.url = "github:ryan4yin/nixos-rk3588"; + + ############# Personal repositories ######################################## + + # # my private secrets, it's a private repository, you need to replace it with your own. + # # use ssh protocol to authenticate via ssh-agent/ssh-key, and shallow clone to save time + # mysecrets = { + # url = ""; + # flake = false; + # }; + + ##################### Color Schemes ####################################### + + #color scheme -catppuccin + catppuccin-btop = { + url = "github:catppuccin/btop"; + flake = false; + }; + catppuccin-bat = { + url = "github:catppuccin/bat"; + flake = false; + }; + catppuccin-alacritty = { + url = "github:catppuccing/alacritty"; + flake = false; + }; + catppuccin-helix = { + url = "github:catppuccin/helix"; + flake = false; + }; + catppuccin-starship = { + url = "github:catppuccin/starship"; + flake = false; + }; + catppuccin-hyprland = { + url = "github:catppuccin/hyprland"; + flake = false; + }; + + + # # the nixConfig here only affects the flake inself, not the system configuration! + # nixConfig = { + # experimental-features = ["nix-command" "flakes"]; + + # substituters = [ + # #my own cache server + # "url-here" + # "https://cache.nixos.org" + # "https://hyprland.cachix.org" + # ]; + + # # nix community's cache server + # extra-substituters = [ + # "https://nix-community.cachix.org" + # "https://nixpkgs-wayland.cachix.org" + # ]; + # extra-trusted-public-keys = [ + # "keys here" + # ]; + # }; + }; # outputs = inputs@{ self, nixpkgs, nixpkgs-unstable, home-manager, hyprland, ... }: { - outputs = inputs@{ self, nixpkgs, nixpkgs-unstable, home-manager, ... }: { + outputs = inputs@{ self, nixpkgs, nixpkgs-unstable, home-manager, wallpapers, catppuccin-btop, catppuccin-bat, catppuccin-alacritty, catppuccin-starship, catppuccin-hyprland, ... }: { nixosConfigurations = { @@ -27,6 +140,7 @@ # Default users ./modules/user-profiles/defin.nix + ./modules/user-profiles/root.nix home-manager.nixosModules.home-manager { @@ -57,6 +171,32 @@ # nix.registry.nixpkgs.flake = nixpkgs; ]; }; + + khad = nixpkgs.lib.nixosSystem { + modules = [ + ./machines/khad/configuration.nix + + ./machines/khad/hardware-configuration.nix + + ./modules/user-profiles/defin.nix + + home-manager.nixosModules.home-manager { + home-manager.useGlobalPkgs = true; + home-manager.useUserPackages = true; + home-manager.users.defin = import ./home-manager/home.nix; + } + ./modules/hyprland.nix + + ./modules/bluetooth.nix + ./modules/environment.nix + ./modules/kde-connect.nix + ./modules/nix-common.nix + ./modules/services.nix + ./modules/steam.nix + ./modules/sway.nix + ./modules/system-packages.nix + ]; + }; }; }; } diff --git a/home-manager/home.nix b/home-manager/home.nix index 2e40074..8ce8d5e 100644 --- a/home-manager/home.nix +++ b/home-manager/home.nix @@ -45,14 +45,19 @@ yakuake pass btop + helvum mpv + lutris + wine # unstable.yt-dlp yt-dlp telegram-desktop obsidian - zettlr + zettlr + element-desktop discord - steam-tui + lutris + heroic # texlive-combined-full # nushell starship @@ -128,10 +133,11 @@ }; }; - # helix = { - # enable = true; - # # defaultEditor = true; - # }; + helix = { + enable = true; + # defaultEditor = true; + settings.theme = "base16_transparent"; + }; # Let Home Manager install and manage itself. # home-manager.enable = true; }; diff --git a/machines/khad/configuration.nix b/machines/khad/configuration.nix new file mode 100644 index 0000000..7a754cf --- /dev/null +++ b/machines/khad/configuration.nix @@ -0,0 +1,133 @@ +# 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 + ]; + + # Use the systemd-boot EFI boot loader. + # boot.loader.grub.enable = true; + # boot.loader.grub.efiSupport = true; + # boot.loader.grub.devices = [ + # "/dev/sda" + # ]; + # boot.loader.grub.theme = pkgs.nixos-grub2-theme; + boot.loader.systemd-boot.enable = true; + # boot.loader.efi.canTouchEfiVariables = true; + boot.loader.systemd-boot.graceful = true; + + networking.hostName = "khad"; # Define your hostname. + # Pick only one of the below networking options. + # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. + networking.networkmanager.enable = true; # Easiest to use and most distros use this by default. + + nixpkgs = { + # texlive.combined.scheme-medium; + system = "x84_64-linux"; + config.allowUnfree = true; + }; + + services.xserver.videoDrivers = [ "nvidia" ]; + hardware.opengl.driSupport32Bit = true; + environment.shellInit = ''export NIXPATH="/nix/var/nix/profiles/per-user/$USER/channels:nixos-config=/etc/nixos/machines/khad/configuration.nix"''; + + # Set your time zone. + time.timeZone = "US/Mountain"; + + # 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 xkbOptions in tty. + # }; + + # # Enable the X11 windowing system. + # services.xserver.enable = true; + + + # # Enable the Plasma 5 Desktop Environment. + # services.xserver.displayManager.sddm.enable = true; + # services.xserver.desktopManager.plasma5.enable = true; + + + # Configure keymap in X11 + # services.xserver.layout = "us"; + # services.xserver.xkbOptions = "eurosign:e,caps:escape"; + + # Enable CUPS to print documents. + # services.printing.enable = true; + + # Enable sound. + sound.enable = true; + # hardware.pulseaudio.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.defin= { + # isNormalUser = true; + # description = "Devin finlinson"; + # extraGroups = [ "wheel" "builders" "video" "input"]; # Enable ‘sudo’ for the user. + # shell = pkgs.nushell; + # hashedPassword = "$6$UljPNAdxZ22lP3Bc$8VaEAacZxtXM3Zji2IA7Jf5fXs9pFnAVQff1d8IbfFOKCvjibceyopOAjRXa8lXtpOSJgPW1OO1dzOspqhWnz0"; + # packages = with pkgs; [ + # firefox + # nushell + # tree + # ]; + # }; + + # 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. + # helix + # wget + # ]; + + # Some programs need SUID wrappers, can be configured further or are + # started in user sessions. + programs.light.enable = true; + programs.mtr.enable = true; + programs.gnupg.agent = { + enable = true; + enableSSHSupport = true; + }; + + # List services that you want to enable: + + # 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; + + # Copy the NixOS configuration file and link it from the resulting system + # (/run/current-system/configuration.nix). This is useful in case you + # accidentally delete configuration.nix. + # system.copySystemConfiguration = true; + + # 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.05"; # Did you read the comment? + +} + diff --git a/machines/khad/hardware-configuration.nix b/machines/khad/hardware-configuration.nix new file mode 100644 index 0000000..dc32bab --- /dev/null +++ b/machines/khad/hardware-configuration.nix @@ -0,0 +1,50 @@ +# 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" "ehci_pci" "ahci" "usbhid" "sd_mod" "sr_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/d7025289-0e65-4ff8-a774-1a8a7b104858"; + fsType = "ext4"; + }; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/B741-9318"; + fsType = "vfat"; + }; + + fileSystems."/home" = + { device = "/dev/disk/by-uuid/9aa90dd0-4123-4caf-ac6e-8a299dda3ad4"; + fsType = "ext4"; + }; + + fileSystems."/home/defin/Drives" = + { device = "/dev/disk/by-uuid/ba4e233d-d31a-4e5a-9054-0241bd58ba8e"; + fsType = "ext4"; + }; + + swapDevices = + [ { device = "/dev/disk/by-uuid/e75daaf1-d6c6-43c3-8a61-ff26b4304f71"; } + ]; + + # 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.eno1.useDHCP = lib.mkDefault true; + # networking.interfaces.enp0s20u4.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/machines/zenbook/configuration.nix b/machines/zenbook/configuration.nix index cf55eed..77e7fe6 100644 --- a/machines/zenbook/configuration.nix +++ b/machines/zenbook/configuration.nix @@ -17,6 +17,8 @@ config.allowUnfree = true; }; + environment.shellInit = ''export NIXPATH="/nix/var/nix/profiles/per-user/$USER/channels:nixos-config=/etc/nixos/machines/zenbook/configuration.nix"''; + networking = { firewall = { # Open ports in the firewall. diff --git a/modules/environment.nix b/modules/environment.nix index 07bef00..6842a8c 100644 --- a/modules/environment.nix +++ b/modules/environment.nix @@ -1,7 +1,7 @@ { config, lib, ... }: { environment = { # include user channels in NIX_PATH - shellInit = ''export NIXPATH="/nix/var/nix/profiles/per-user/$USER/channels:nixos-config=/etc/nixos/machines/zenbook/configuration.nix"''; + # shellInit = ''export NIXPATH="/nix/var/nix/profiles/per-user/$USER/channels:nixos-config=/etc/nixos/machines/zenbook/configuration.nix"''; # List packages installed in system profile. To search, run: # $ nix search wget variables = { diff --git a/modules/system-packages.nix b/modules/system-packages.nix index 2c640ba..1ffa540 100644 --- a/modules/system-packages.nix +++ b/modules/system-packages.nix @@ -52,6 +52,7 @@ in unzip git wl-clipboard + pciutils #For hyprland waybar #For sway |
