From 028a5584a97537619a819eb47834b024bd11f812 Mon Sep 17 00:00:00 2001 From: Isshi0417 Date: Thu, 11 Jul 2024 14:51:17 +0900 Subject: [PATCH] Improve modularity --- hosts/default/configuration.nix | 101 ++---------------- modules/gaming/lutris/default.nix | 1 + modules/gnome/default.nix | 30 ------ modules/home-manager/default.nix | 1 + .../home-manager/gnome-extensions/default.nix | 25 +++++ modules/system/audio/default.nix | 19 ++++ modules/system/bluetooth/default.nix | 7 ++ modules/system/boot/default.nix | 16 +++ modules/system/default.nix | 38 +++++++ modules/system/desktop/default.nix | 7 ++ modules/system/desktop/gnome-de.nix | 34 ++++++ modules/system/experimental/default.nix | 5 + modules/system/network/default.nix | 5 + modules/system/printing/default.nix | 6 ++ 14 files changed, 174 insertions(+), 121 deletions(-) delete mode 100644 modules/gnome/default.nix create mode 100644 modules/home-manager/gnome-extensions/default.nix create mode 100644 modules/system/audio/default.nix create mode 100644 modules/system/bluetooth/default.nix create mode 100644 modules/system/boot/default.nix create mode 100644 modules/system/default.nix create mode 100644 modules/system/desktop/default.nix create mode 100644 modules/system/desktop/gnome-de.nix create mode 100644 modules/system/experimental/default.nix create mode 100644 modules/system/network/default.nix create mode 100644 modules/system/printing/default.nix diff --git a/hosts/default/configuration.nix b/hosts/default/configuration.nix index e4cf42b..563bc17 100644 --- a/hosts/default/configuration.nix +++ b/hosts/default/configuration.nix @@ -10,15 +10,15 @@ ./hardware-configuration.nix ../../modules/hardware + # System + ../../modules/system + # NH ../../modules/nh # Gaming ../../modules/gaming - # Gnome customization - ../../modules/gnome - # Catppuccin ../../modules/ricing/catppuccin @@ -26,28 +26,18 @@ inputs.home-manager.nixosModules.default ]; - # Bootloader. - boot.loader = { - efi = { - canTouchEfiVariables = true; - efiSysMountPoint = "/boot"; - }; - grub = { - efiSupport = true; - device = "nodev"; - useOSProber = true; - }; - }; - + # Swap swapDevices = [{ device = "/var/lib/swapfile"; size = 20*1024; }]; + # Hardware update hardware = { enableRedistributableFirmware = lib.mkDefault true; }; + # Temp control services = { fwupd = { enable = lib.mkDefault true; @@ -57,18 +47,12 @@ }; }; - nix.settings.experimental-features = [ "nix-command" "flakes" ]; - networking.hostName = "alienware"; # 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; - + # Enable mullvad + services.mullvad-vpn.enable = true; + # Set your time zone. time.timeZone = "Asia/Seoul"; @@ -87,57 +71,19 @@ LC_TIME = "en_US.UTF-8"; }; - # Enable the X11 windowing system. - services.xserver.enable = true; - services.displayManager.sddm = { enable = true; package = pkgs.kdePackages.sddm; wayland.enable = true; }; - # Enable the GNOME Desktop Environment. - services.xserver.desktopManager.gnome.enable = true; - - # Configure keymap in X11 - services.xserver = { - layout = "us"; - xkbVariant = ""; - }; - - # Enable CUPS to print documents. - services.printing.enable = true; - - # Enable bluetooth - hardware.bluetooth.enable = true; - hardware.bluetooth.powerOnBoot = true; - - # Enable sound with pipewire. - 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; - programs.zsh.enable = true; # Define a user account. Don't forget to set a password with ‘passwd’. users.users.shoi = { isNormalUser = true; description = "Sho Ishida"; - extraGroups = [ "networkmanager" "wheel" ]; + extraGroups = [ "networkmanager" "wheel" "inputs" ]; shell = pkgs.zsh; }; @@ -151,44 +97,17 @@ home-manager.backupFileExtension = "hm-backup"; - # Allow unfree packages - nixpkgs.config.allowUnfree = true; - environment.sessionVariables = { FLAKE = "/home/shoi/etc/nixos"; }; - # Enable Mullvad - services.mullvad-vpn.enable = 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 - gparted - nh - dxvk_2 lm_sensors ]; - fonts = { - enableDefaultPackages = true; - packages = with pkgs; [ - noto-fonts - nerdfonts - font-awesome - ]; - - fontconfig = { - defaultFonts = { - serif = [ "Hack Nerd Font" ]; - sansSerif = [ "DejaVuSansM Nerd Font" ]; - monospace = [ "JetBrainsMono Nerd Font" ]; - }; - }; - }; - # Some programs need SUID wrappers, can be configured further or are # started in user sessions. # programs.mtr.enable = true; diff --git a/modules/gaming/lutris/default.nix b/modules/gaming/lutris/default.nix index 6c75dd3..a1c70ea 100644 --- a/modules/gaming/lutris/default.nix +++ b/modules/gaming/lutris/default.nix @@ -7,5 +7,6 @@ wineWowPackages.staging winetricks lutris + dxvk_2 ]; } \ No newline at end of file diff --git a/modules/gnome/default.nix b/modules/gnome/default.nix deleted file mode 100644 index 934c9c9..0000000 --- a/modules/gnome/default.nix +++ /dev/null @@ -1,30 +0,0 @@ -{ pkgs, ... }: - -{ - environment.systemPackages = with pkgs.gnomeExtensions; [ - caffeine - dash-to-dock - gnome-40-ui-improvements - media-controls - search-light - ]; - - environment.gnome.excludePackages = with pkgs; [ - gnome-tour - gedit - - gnome.baobab - gnome.cheese - gnome.eog - gnome.epiphany - gnome.simple-scan - gnome.totem - gnome.yelp - gnome.evince - gnome.geary - gnome.seahorse - gnome.gnome-contacts - gnome.gnome-maps - gnome.gnome-music - ]; -} \ No newline at end of file diff --git a/modules/home-manager/default.nix b/modules/home-manager/default.nix index 94b8893..c89b54a 100644 --- a/modules/home-manager/default.nix +++ b/modules/home-manager/default.nix @@ -6,6 +6,7 @@ ./ricing/catppuccin ./vscode ./terminal + ./gnome-extensions ]; # Allow Unfree diff --git a/modules/home-manager/gnome-extensions/default.nix b/modules/home-manager/gnome-extensions/default.nix new file mode 100644 index 0000000..0442bdb --- /dev/null +++ b/modules/home-manager/gnome-extensions/default.nix @@ -0,0 +1,25 @@ +{ pkgs, ... }: + +{ + home.packages = with pkgs.gnomeExtensions; [ + caffeine + dash-to-dock + gnome-40-ui-improvements + media-controls + search-light + ]; + + dconf = { + enable = true; + settings."org/gnome/shell" = { + disable-user-extensions = false; + enabled-extensions = with pkgs.gnomeExtensions; [ + caffeine.extensionUuid + dash-to-dock.extensionUuid + gnome-40-ui-improvements.extensionUuid + media-controls.extensionUuid + search-light.extensionUuid + ]; + }; + }; +} \ No newline at end of file diff --git a/modules/system/audio/default.nix b/modules/system/audio/default.nix new file mode 100644 index 0000000..f2bd2ab --- /dev/null +++ b/modules/system/audio/default.nix @@ -0,0 +1,19 @@ +{ ... }: + +{ + # Enable sound with pipewire. + 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; + }; +} \ No newline at end of file diff --git a/modules/system/bluetooth/default.nix b/modules/system/bluetooth/default.nix new file mode 100644 index 0000000..b297d0f --- /dev/null +++ b/modules/system/bluetooth/default.nix @@ -0,0 +1,7 @@ +{ ... }: + +{ + # Enable bluetooth + hardware.bluetooth.enable = true; + hardware.bluetooth.powerOnBoot = true; +} \ No newline at end of file diff --git a/modules/system/boot/default.nix b/modules/system/boot/default.nix new file mode 100644 index 0000000..7d93803 --- /dev/null +++ b/modules/system/boot/default.nix @@ -0,0 +1,16 @@ +{ ... }: + +{ + # Bootloader. + boot.loader = { + efi = { + canTouchEfiVariables = true; + efiSysMountPoint = "/boot"; + }; + grub = { + efiSupport = true; + device = "nodev"; + useOSProber = true; + }; + }; +} \ No newline at end of file diff --git a/modules/system/default.nix b/modules/system/default.nix new file mode 100644 index 0000000..68b2d1e --- /dev/null +++ b/modules/system/default.nix @@ -0,0 +1,38 @@ +{ pkgs, ... }: + +{ + imports = [ + ./boot + ./experimental + ./network + ./desktop + ./printing + ./bluetooth + ./audio + ]; + + nixpkgs.config.allowUnfree = true; + + environment.systemPackages = with pkgs; [ + wget + gparted + nh + ]; + + fonts = { + enableDefaultPackages = true; + packages = with pkgs; [ + noto-fonts + nerdfonts + font-awesome + ]; + + fontconfig = { + defaultFonts = { + serif = [ "Hack Nerd Font" ]; + sansSerif = [ "DejaVuSansM Nerd Font" ]; + monospace = [ "JetBrainsMono Nerd Font" ]; + }; + }; + }; +} \ No newline at end of file diff --git a/modules/system/desktop/default.nix b/modules/system/desktop/default.nix new file mode 100644 index 0000000..273bc58 --- /dev/null +++ b/modules/system/desktop/default.nix @@ -0,0 +1,7 @@ +{ ... }: + +{ + imports = [ + ./gnome-de.nix + ]; +} \ No newline at end of file diff --git a/modules/system/desktop/gnome-de.nix b/modules/system/desktop/gnome-de.nix new file mode 100644 index 0000000..b4daed4 --- /dev/null +++ b/modules/system/desktop/gnome-de.nix @@ -0,0 +1,34 @@ +{ pkgs, ... }: + +{ + services.xserver = { + enable = true; + desktopManager.gnome.enable = true; + }; + + environment.gnome.excludePackages = (with pkgs; [ + gnome-photos + gnome-tour + gedit + ]) ++ (with pkgs.gnome; [ + baobab + cheese + eog + epiphany + simple-scan + totem + yelp + evince + geary + seahorse + gnome-contacts + gnome-maps + gnome-music + ]); + + # Configure keymap in X11 + services.xserver = { + layout = "us"; + xkbVariant = ""; + }; +} \ No newline at end of file diff --git a/modules/system/experimental/default.nix b/modules/system/experimental/default.nix new file mode 100644 index 0000000..920bac5 --- /dev/null +++ b/modules/system/experimental/default.nix @@ -0,0 +1,5 @@ +{ ... }: + +{ + nix.settings.experimental-features = [ "nix-command" "flakes" ]; +} \ No newline at end of file diff --git a/modules/system/network/default.nix b/modules/system/network/default.nix new file mode 100644 index 0000000..58b0eff --- /dev/null +++ b/modules/system/network/default.nix @@ -0,0 +1,5 @@ +{ ... }: + +{ + networking.networkmanager.enable = true; +} \ No newline at end of file diff --git a/modules/system/printing/default.nix b/modules/system/printing/default.nix new file mode 100644 index 0000000..a4d6c43 --- /dev/null +++ b/modules/system/printing/default.nix @@ -0,0 +1,6 @@ +{ ... }: + +{ + # Enable CUPS to print documents. + services.printing.enable = true; +} \ No newline at end of file