From 96e7f062878560523d7eab95941aea945c9a8aef Mon Sep 17 00:00:00 2001 From: Liam Malone Date: Wed, 12 Nov 2025 17:12:55 +0000 Subject: [PATCH] move all shared config out from darp8 -> graphical --- hosts/darp8/configuration.nix | 226 +----------------------------- hosts/darp8/file.nix | 62 +------- hosts/darp8/home.nix | 5 - hosts/darp8/pkgs.nix | 134 +----------------- hosts/darp8/services.nix | 29 +--- hosts/graphical/configuration.nix | 211 ++++++++++++++++++++++++++++ hosts/graphical/file.nix | 80 +++++++++++ hosts/graphical/pkgs.nix | 140 ++++++++++++++++++ hosts/graphical/services.nix | 28 ++++ 9 files changed, 473 insertions(+), 442 deletions(-) create mode 100644 hosts/graphical/configuration.nix create mode 100644 hosts/graphical/file.nix create mode 100644 hosts/graphical/pkgs.nix create mode 100644 hosts/graphical/services.nix diff --git a/hosts/darp8/configuration.nix b/hosts/darp8/configuration.nix index a9b2b5e..25362f4 100644 --- a/hosts/darp8/configuration.nix +++ b/hosts/darp8/configuration.nix @@ -3,109 +3,16 @@ { imports = [ ./hardware-configuration.nix + ../graphical/configuration.nix inputs.home-manager.nixosModules.default ]; - - boot = { - loader.systemd-boot.enable = true; - loader.efi.canTouchEfiVariables = true; - plymouth.enable = true; - }; - - networking = { - hostName = "darp8"; - - networkmanager = { - enable = true; - # wifi.backend = "iwd"; - }; - - firewall = { - enable = true; - - # Open ports in the firewall. - allowedTCPPorts = [ 21 22 80 443 4070 5037 ]; - allowedUDPPorts = [ 4070 ]; - - allowedTCPPortRanges = [ - { from = 8000; to = 8010; } - ]; - - allowPing = true; - }; - - # wireless.iwd = { - # enable = true; - # settings = { - # driverQuirks.defaultInterface = "wlan0"; - # IPv6.Enabled = true; - # Settings.Autoconnect = true; - # General.EnableNetworkConfiguration = true; - # }; - # }; - }; + networking.hostName = "darp8"; time.timeZone = "Europe/Dublin"; # time.timeZone = "America/New_York"; - i18n= { - defaultLocale = "en_US.UTF-8"; - inputMethod = { - enable = true; - type = "fcitx5"; - fcitx5 = { - waylandFrontend = true; - addons = with pkgs; [ - fcitx5-mozc - fcitx5-gtk - qt6Packages.fcitx5-chinese-addons - ]; - }; - }; - }; - - services = { - avahi = { - enable = true; - nssmdns4 = true; - publish = { - enable = true; - userServices = true; - }; - }; - - greetd = { - enable = true; - restart = true; - settings = { - default_session = { - command = "${pkgs.tuigreet}/bin/tuigreet --cmd Hyprland"; - }; - }; - }; - - auto-cpufreq.enable = true; - libinput.enable = true; - blueman.enable = true; - gvfs.enable = true; - - thermald.enable = true; - power-profiles-daemon.enable = false; - pulseaudio.enable = false; - # tailscale.enable = true; - upower.enable = true; - }; - - security.pam.services.hyprlock = {}; - environment = { - etc = { - "greetd/environments".text = '' - Hyprland - river - ''; - }; - }; + services.tailscale.enable = false; hardware = { bluetooth.enable = true; @@ -119,87 +26,8 @@ system76.enableAll = true; }; - fonts = { - packages = with pkgs; [ - noto-fonts - noto-fonts-cjk-sans - noto-fonts-cjk-serif - noto-fonts-color-emoji - liberation_ttf - fira-code-symbols - mplus-outline-fonts.githubRelease - dina-font - nerd-fonts.fira-code - nerd-fonts.droid-sans-mono - ]; - - fontconfig = { - enable = true; - includeUserConf = true; - }; - }; - nixpkgs.config.allowUnfree = true; - nix.settings = { - substituters = ["https://hyprland.cachix.org"]; - trusted-public-keys = ["hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="]; - trusted-users = [ "root" "@wheel" ]; - allowed-users = [ "root" "@wheel" ]; - }; - - nix.gc = { - automatic = true; - dates = "weekly"; - options = "--delete-older-than 10d"; - }; - nix.optimise = { - automatic = true; - dates = [ "00:00" ]; - }; - - users.users.liamm = { - isNormalUser = true; - description = "liamm"; - extraGroups = [ "networkmanager" "wheel" "disk" "power" "video" "davfs2" "input" ]; - }; - - programs = { - steam = { - enable = true; - remotePlay.openFirewall = true; - dedicatedServer.openFirewall = true; - }; - - hyprland = { - enable = true; - package = inputs.hyprland.packages.${pkgs.system}.hyprland; - portalPackage = inputs.hyprland.packages.${pkgs.system}.xdg-desktop-portal-hyprland; - xwayland.enable = true; - withUWSM = true; - plugins = [ - # pkgs.hyprlandPlugins.hyprexpo - ]; - }; - - river-classic = { - enable = true; - xwayland.enable = true; - }; - - gnupg.agent = { - enable = true; - enableSSHSupport = true; - }; - - hyprlock.enable = true; - dconf.enable = true; - nix-ld.enable = true; - mtr.enable = true; - }; - - lib.inputMethod.fcitx5.waylandFrontend = true; - home-manager = { useGlobalPkgs = true; extraSpecialArgs = { inherit inputs; inherit cfg; }; @@ -209,54 +37,6 @@ backupFileExtension = ".bak"; }; - environment.systemPackages = with pkgs; [ - bat - discord - fd - file - ghostty - glib - gnome-keyring - libdrm - libnotify - mesa - neovim - quickshell - ripgrep - spotify - unzip - usbutils - uxplay - vim - waypipe - wget - wl-clipboard - xdg-user-dirs - zip - ]; - - zramSwap = { - enable = true; - algorithm = "zstd"; - }; - - xdg = { - mime.enable = true; - portal = { - enable = true; - wlr.enable = true; - extraPortals = with pkgs;[ - xdg-desktop-portal-gtk - xdg-desktop-portal-wlr - ]; - config = { - common = { - default = [ "gtk" ]; - }; - }; - }; - }; - # This option defines the first version of NixOS you have installed on this particular machine # Do NOT change this value unless you have manually inspected all the changes it would make to your configuration, # and migrated your data accordingly. diff --git a/hosts/darp8/file.nix b/hosts/darp8/file.nix index 46c6a5d..9da60a5 100644 --- a/hosts/darp8/file.nix +++ b/hosts/darp8/file.nix @@ -11,21 +11,12 @@ let in { + imports = [ + ../graphical/file.nix # import shared configs + ]; + # Symlink dotfiles home.file = mkSymlinkAttrs { - # Fonts - ".local/share/fonts" = { - source = ../../fonts; - outOfStoreSymlink = true; - recursive = true; - }; - - # Configs - ".config/hypr" = { - source = ../../configs/hypr; - outOfStoreSymlink = true; - recursive = true; - }; ".config/hypr/hypr-monitors.conf" = { source = ../../configs/hypr-darp8/hypr-monitors.conf; outOfStoreSymlink = true; @@ -36,55 +27,10 @@ in outOfStoreSymlink = true; recursive = false; }; - ".config/matugen" = { - source = ../../configs/matugen; - outOfStoreSymlink = true; - recursive = true; - }; ".config/DankMaterialShell" = { source = ../../configs/dms-darp8; outOfStoreSymlink = true; recursive = true; }; - ".config/river" = { - source = ../../configs/river; - outOfStoreSymlink = true; - recursive = true; - }; - ".config/waybar" = { - source = ../../configs/waybar; - outOfStoreSymlink = true; - recursive = true; - }; - ".config/ghostty" = { - source = ../../configs/ghostty; - outOfStoreSymlink = true; - recursive = true; - }; - ".config/nvim" = { - source = ../../configs/nvim; - outOfStoreSymlink = true; - recursive = true; - }; - ".config/wofi" = { - source = ../../configs/wofi; - outOfStoreSymlink = true; - recursive = true; - }; - ".config/swaync" = { - source = ../../configs/swaync; - outOfStoreSymlink = true; - recursive = true; - }; - ".config/fastfetch" = { - source = ../../configs/fastfetch; - outOfStoreSymlink = true; - recursive = true; - }; - ".config/emacs" = { - source = ../../configs/emacs; - outOfStoreSymlink = true; - recursive = true; - }; }; } diff --git a/hosts/darp8/home.nix b/hosts/darp8/home.nix index 168c370..298e5f1 100644 --- a/hosts/darp8/home.nix +++ b/hosts/darp8/home.nix @@ -64,11 +64,6 @@ # ENV SETTINGS xdg.enable = true; xdg.configFile = { - # "emacs" = { - # source = ../../configs/emacs; - # recursive = true; - # }; - "user-dirs.dirs".source = ../../configs/user-dirs.dirs; "user-dirs.locale".source = ../../configs/user-dirs.locale; }; diff --git a/hosts/darp8/pkgs.nix b/hosts/darp8/pkgs.nix index a5e5420..d4be0fc 100644 --- a/hosts/darp8/pkgs.nix +++ b/hosts/darp8/pkgs.nix @@ -4,142 +4,16 @@ }: { + imports = [ + ../graphical/pkgs.nix #import shared packages + ]; + # BEGIN PACKAGES home.packages = with pkgs; [ - # audacity - android-studio - bat - brave - brightnessctl - btop - comma - emacs-all-the-icons-fonts - emacsPackages.pdf-tools - exfatprogs - fastfetch - ffmpeg - filezilla - floorp-bin - fuzzel - fzf - genymotion - gimp - grim - gtk4 - gvfs - grimblast - htop - hyprpicker - imagemagick - kdePackages.kdenlive - kdePackages.polkit-kde-agent-1 - keepassxc - libreoffice - localsend - mpv - mupdf - nautilus - networkmanagerapplet - networkmanager_dmenu - nwg-look - openvpn - overskride - pamixer - pavucontrol - powertop - prismlauncher - protonvpn-gui - qbittorrent - signal-desktop - slurp - swaynotificationcenter - swww - teams-for-linux - texliveFull - xfce.thunar - xfce.thunar-volman - tree - waybar - wev - wlr-randr - wlsunset ]; # BEGIN PROGRAMS programs = { - bash = { - enable = true; - enableCompletion = true; - enableVteIntegration = true; - initExtra ='' - if [[ -z $ORIG_SHLVL ]]; then - export ORIG_SHLVL=$SHLVL - fi; - if [[ $SHLVL -gt $ORIG_SHLVL ]]; then - export PS1='\[\e[1;m\e[1;33m\e[1;m\] ($(($SHLVL - $ORIG_SHLVL))) \W\[\e[m\e[m\] 🐧 \[\e[1;32m\]~> \[\e[m\e[m\]' - else - export PS1='\[\e[1;m\e[1;33m\e[1;m\] \W\[\e[m\e[m\] 🐧 \[\e[1;32m\]~> \[\e[m\e[m\]' - fi; - export PATH="$HOME/.local/bin:$PATH" - set -o vi - fastfetch - ''; - shellAliases = { - build = "./build.sh"; - emacsd = "emacs --daemon"; - emacsc = "emacsclient -c -a 'emacs'"; - gap = "git add -p"; - gcp = "git commit -p"; - kpx = "keepassxc-cli open"; - ls = "ls --color=auto"; - ll = "ls -l"; - la = "ls -lA"; - fastfetch = "fastfetch -c $HOME/.config/fastfetch/config.json"; - nixrebuild = "nixos-rebuild build --flake ~/personal/nixos#darp8 && sudo nixos-rebuild switch --flake ~/personal/nixos#darp8"; - nixbuild = "sudo nixos-rebuild switch --flake"; - nixtest = "sudo nixos-rebuild test --flake"; - new = "source $HOME/.bashrc"; - newbar = "pkill waybar; waybar &disown"; - ping = "ping -c 5"; - vi = "\\vim"; - work = "nix develop --impure"; - ".." = "cd .."; - }; - }; - dankMaterialShell = { - enable = true; - }; - emacs = { - enable = true; - package = pkgs.emacs-gtk; - extraPackages = epkgs: [ - epkgs.pdf-tools - epkgs.org-pdftools - ]; - }; - feh.enable = true; - git = { - enable = true; - lfs.enable = true; - settings = { - user.email = "maloneliam@proton.me"; - user.name = "Liam Malone"; - }; - }; - neovim = { - enable = true; - package = pkgs.neovim-unwrapped; - vimAlias = true; - vimdiffAlias = true; - }; - obs-studio = { - enable = true; - }; - diff-so-fancy = { - enable = true; - enableGitIntegration = true; - }; - wofi.enable = true; }; } diff --git a/hosts/darp8/services.nix b/hosts/darp8/services.nix index 844bfd2..9214211 100644 --- a/hosts/darp8/services.nix +++ b/hosts/darp8/services.nix @@ -1,30 +1,7 @@ { pkgs, ... }: { - services = { - emacs = { - enable = true; - package = pkgs.emacs-gtk; - client = { - enable = true; - arguments = [ - "-c" - "-a emacs" - ]; - }; - startWithUserSession = "graphical"; - }; - - gpg-agent = { - enable = true; - defaultCacheTtl = 1800; - enableSshSupport = true; - }; - - gnome-keyring.enable = true; - mpris-proxy.enable = true; - network-manager-applet.enable = true; - nextcloud-client.enable = true; - swww.enable = true; - }; + imports = [ + ../graphical/services.nix # import shared services + ]; } diff --git a/hosts/graphical/configuration.nix b/hosts/graphical/configuration.nix new file mode 100644 index 0000000..6d1db7d --- /dev/null +++ b/hosts/graphical/configuration.nix @@ -0,0 +1,211 @@ +{ cfg, config, lib, pkgs, inputs, ... }: +{ + boot = { + loader.systemd-boot.enable = true; + loader.efi.canTouchEfiVariables = true; + plymouth.enable = true; + }; + + networking = { + networkmanager = { + enable = true; + }; + + firewall = { + enable = true; + + # Open ports in the firewall. + allowedTCPPorts = [ 21 22 80 443 4070 5037 ]; + allowedUDPPorts = [ 4070 ]; + + allowedTCPPortRanges = [ + { from = 8000; to = 8010; } + ]; + + allowPing = true; + }; + }; + + i18n= { + defaultLocale = "en_US.UTF-8"; + inputMethod = { + enable = true; + type = "fcitx5"; + fcitx5 = { + waylandFrontend = true; + addons = with pkgs; [ + fcitx5-mozc + fcitx5-gtk + qt6Packages.fcitx5-chinese-addons + ]; + }; + }; + }; + + services = { + avahi = { + enable = true; + nssmdns4 = true; + publish = { + enable = true; + userServices = true; + }; + }; + + greetd = { + enable = true; + restart = true; + settings = { + default_session = { + command = "${pkgs.tuigreet}/bin/tuigreet --cmd Hyprland"; + }; + }; + }; + + auto-cpufreq.enable = true; + libinput.enable = true; + blueman.enable = true; + gvfs.enable = true; + + thermald.enable = true; + power-profiles-daemon.enable = false; + pulseaudio.enable = false; + upower.enable = true; + }; + + security.pam.services.hyprlock = {}; + environment = { + etc = { + "greetd/environments".text = '' + Hyprland + river + ''; + }; + }; + + fonts = { + packages = with pkgs; [ + noto-fonts + noto-fonts-cjk-sans + noto-fonts-cjk-serif + noto-fonts-color-emoji + liberation_ttf + fira-code-symbols + mplus-outline-fonts.githubRelease + dina-font + nerd-fonts.fira-code + nerd-fonts.droid-sans-mono + ]; + + fontconfig = { + enable = true; + includeUserConf = true; + }; + }; + + nix.settings = { + substituters = ["https://hyprland.cachix.org"]; + trusted-public-keys = ["hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="]; + trusted-users = [ "root" "@wheel" ]; + allowed-users = [ "root" "@wheel" ]; + }; + + nix.gc = { + automatic = true; + dates = "weekly"; + options = "--delete-older-than 10d"; + }; + nix.optimise = { + automatic = true; + dates = [ "00:00" ]; + }; + + users.users.liamm = { + isNormalUser = true; + description = "liamm"; + extraGroups = [ "networkmanager" "wheel" "disk" "power" "video" "davfs2" "input" ]; + }; + + programs = { + steam = { + enable = true; + remotePlay.openFirewall = true; + dedicatedServer.openFirewall = true; + }; + + hyprland = { + enable = true; + package = inputs.hyprland.packages.${pkgs.system}.hyprland; + portalPackage = inputs.hyprland.packages.${pkgs.system}.xdg-desktop-portal-hyprland; + xwayland.enable = true; + withUWSM = true; + plugins = [ ]; + }; + + river-classic = { + enable = true; + xwayland.enable = true; + }; + + gnupg.agent = { + enable = true; + enableSSHSupport = true; + }; + + hyprlock.enable = true; + dconf.enable = true; + nix-ld.enable = true; + mtr.enable = true; + }; + + lib.inputMethod.fcitx5.waylandFrontend = true; + + environment.systemPackages = with pkgs; [ + bat + discord + fd + file + ghostty + glib + gnome-keyring + libdrm + libnotify + mesa + neovim + quickshell + ripgrep + spotify + unzip + usbutils + uxplay + vim + waypipe + wget + wl-clipboard + xdg-user-dirs + zip + ]; + + zramSwap = { + enable = true; + algorithm = "zstd"; + }; + + xdg = { + mime.enable = true; + portal = { + enable = true; + wlr.enable = true; + extraPortals = with pkgs;[ + xdg-desktop-portal-gtk + xdg-desktop-portal-wlr + ]; + config = { + common = { + default = [ "gtk" ]; + }; + }; + }; + }; + +} diff --git a/hosts/graphical/file.nix b/hosts/graphical/file.nix new file mode 100644 index 0000000..3c5a74b --- /dev/null +++ b/hosts/graphical/file.nix @@ -0,0 +1,80 @@ +{ cfg, config, context, pkgs, ... }: + +let + inherit (config.home) username homeDirectory; + + mkSymlinkAttrs = import ../../utils/mkSymlinkAttrs.nix { + inherit pkgs; + inherit (cfg) context runtimeRoot; + hm = config.lib; # same as: cfg.context.inputs.home-manager.lib.hm; + }; + +in +{ + # Symlink dotfiles + home.file = mkSymlinkAttrs { + # Fonts + ".local/share/fonts" = { + source = ../../fonts; + outOfStoreSymlink = true; + recursive = true; + }; + + # Configs + ".config/hypr" = { + source = ../../configs/hypr; + outOfStoreSymlink = true; + recursive = true; + }; + ".config/matugen" = { + source = ../../configs/matugen; + outOfStoreSymlink = true; + recursive = true; + }; + ".config/DankMaterialShell" = { + source = ../../configs/dms-darp8; + outOfStoreSymlink = true; + recursive = true; + }; + ".config/river" = { + source = ../../configs/river; + outOfStoreSymlink = true; + recursive = true; + }; + ".config/waybar" = { + source = ../../configs/waybar; + outOfStoreSymlink = true; + recursive = true; + }; + ".config/ghostty" = { + source = ../../configs/ghostty; + outOfStoreSymlink = true; + recursive = true; + }; + ".config/nvim" = { + source = ../../configs/nvim; + outOfStoreSymlink = true; + recursive = true; + }; + ".config/wofi" = { + source = ../../configs/wofi; + outOfStoreSymlink = true; + recursive = true; + }; + ".config/swaync" = { + source = ../../configs/swaync; + outOfStoreSymlink = true; + recursive = true; + }; + ".config/fastfetch" = { + source = ../../configs/fastfetch; + outOfStoreSymlink = true; + recursive = true; + }; + ".config/emacs" = { + source = ../../configs/emacs; + outOfStoreSymlink = true; + recursive = true; + }; + }; +} diff --git a/hosts/graphical/pkgs.nix b/hosts/graphical/pkgs.nix new file mode 100644 index 0000000..324c606 --- /dev/null +++ b/hosts/graphical/pkgs.nix @@ -0,0 +1,140 @@ +{ + pkgs, + ... +}: + +{ + # BEGIN PACKAGES + home.packages = with pkgs; [ + audacity + android-studio + bat + brave + brightnessctl + btop + comma + emacs-all-the-icons-fonts + emacsPackages.pdf-tools + exfatprogs + fastfetch + ffmpeg + filezilla + floorp-bin + fuzzel + fzf + genymotion + gimp + grim + gtk4 + gvfs + grimblast + htop + hyprpicker + imagemagick + kdePackages.kdenlive + kdePackages.polkit-kde-agent-1 + keepassxc + libreoffice + localsend + mpv + mupdf + networkmanagerapplet + nwg-look + openvpn + pamixer + pavucontrol + powertop + prismlauncher + protonvpn-gui + qbittorrent + signal-desktop + slurp + teams-for-linux + texliveFull + xfce.thunar + xfce.thunar-volman + tree + waybar + wev + wlr-randr + wlsunset + zoom-us + ]; + + # BEGIN PROGRAMS + programs = { + bash = { + enable = true; + enableCompletion = true; + enableVteIntegration = true; + initExtra ='' + if [[ -z $ORIG_SHLVL ]]; then + export ORIG_SHLVL=$SHLVL + fi; + if [[ $SHLVL -gt $ORIG_SHLVL ]]; then + export PS1='\[\e[1;m\e[1;33m\e[1;m\] ($(($SHLVL - $ORIG_SHLVL))) \W\[\e[m\e[m\] 🐧 \[\e[1;32m\]~> \[\e[m\e[m\]' + else + export PS1='\[\e[1;m\e[1;33m\e[1;m\] \W\[\e[m\e[m\] 🐧 \[\e[1;32m\]~> \[\e[m\e[m\]' + fi; + export PATH="$HOME/.local/bin:$PATH" + set -o vi + fastfetch + ''; + shellAliases = { + build = "./build.sh"; + emacsd = "emacs --daemon"; + emacsc = "emacsclient -c -a 'emacs'"; + gap = "git add -p"; + gcp = "git commit -p"; + kpx = "keepassxc-cli open"; + ls = "ls --color=auto"; + ll = "ls -l"; + la = "ls -lA"; + fastfetch = "fastfetch -c $HOME/.config/fastfetch/config.json"; + nixrebuild = "nixos-rebuild build --flake ~/personal/nixos#darp8 && sudo nixos-rebuild switch --flake ~/personal/nixos#darp8"; + nixbuild = "sudo nixos-rebuild switch --flake"; + nixtest = "sudo nixos-rebuild test --flake"; + new = "source $HOME/.bashrc"; + newbar = "pkill waybar; waybar &disown"; + ping = "ping -c 5"; + vi = "\\vim"; + work = "nix develop --impure"; + ".." = "cd .."; + }; + }; + dankMaterialShell = { + enable = true; + }; + emacs = { + enable = true; + package = pkgs.emacs-gtk; + extraPackages = epkgs: [ + epkgs.pdf-tools + epkgs.org-pdftools + ]; + }; + feh.enable = true; + git = { + enable = true; + lfs.enable = true; + settings = { + user.email = "maloneliam@proton.me"; + user.name = "Liam Malone"; + }; + }; + neovim = { + enable = true; + package = pkgs.neovim-unwrapped; + vimAlias = true; + vimdiffAlias = true; + }; + obs-studio = { + enable = true; + }; + diff-so-fancy = { + enable = true; + enableGitIntegration = true; + }; + }; +} + diff --git a/hosts/graphical/services.nix b/hosts/graphical/services.nix new file mode 100644 index 0000000..4216add --- /dev/null +++ b/hosts/graphical/services.nix @@ -0,0 +1,28 @@ +{ pkgs, ... }: + +{ + services = { + emacs = { + enable = true; + package = pkgs.emacs-gtk; + client = { + enable = true; + arguments = [ + "-c" + "-a emacs" + ]; + }; + startWithUserSession = "graphical"; + }; + + gpg-agent = { + enable = true; + defaultCacheTtl = 1800; + enableSshSupport = true; + }; + + gnome-keyring.enable = true; + mpris-proxy.enable = true; + nextcloud-client.enable = true; + }; +}