From 4c55bc97f6d516850eaedcac280e9ea1a463526b Mon Sep 17 00:00:00 2001 From: Noa Aarts Date: Mon, 11 Nov 2024 11:16:27 +0100 Subject: [PATCH] biggg refactor, holy shit --- {hosts/lambdaos => common}/home.nix | 114 ++++++++------- hosts/lambdaos/configuration.nix | 26 +++- hosts/lambdaos/root.nix | 4 +- hosts/muos/configuration.nix | 17 ++- hosts/muos/home.nix | 211 ---------------------------- hosts/muos/root.nix | 2 +- hosts/nuos/configuration.nix | 4 +- hosts/nuos/home.nix | 110 --------------- modules/applications/default.nix | 14 -- modules/applications/zsh.nix | 3 +- 10 files changed, 111 insertions(+), 394 deletions(-) rename {hosts/lambdaos => common}/home.nix (72%) delete mode 100644 hosts/muos/home.nix delete mode 100644 hosts/nuos/home.nix diff --git a/hosts/lambdaos/home.nix b/common/home.nix similarity index 72% rename from hosts/lambdaos/home.nix rename to common/home.nix index 3ceabf2..d49413b 100644 --- a/hosts/lambdaos/home.nix +++ b/common/home.nix @@ -1,3 +1,9 @@ +{ + enableGraphical ? false, + enableFlut ? false, + enableGames ? false, + displays ? [ ], +}: { config, pkgs, @@ -21,12 +27,12 @@ let in { imports = [ - ../../modules/hyprland.nix - ../../modules/games - ../../modules/applications - ../../common/nvim/nvim.nix - ../../common/discord/discord.nix - ../../common/spotify.nix + ../modules/hyprland.nix + ../modules/games + ../modules/applications + ./nvim/nvim.nix + ./discord/discord.nix + ./spotify.nix ]; home = { @@ -35,31 +41,35 @@ in "programming".source = config.lib.file.mkOutOfStoreSymlink "${config.home.homeDirectory}/Documents/programming/"; }; homeDirectory = "/home/${me.nickname}"; - packages = with pkgs; [ - file - unzip - zip + packages = + with pkgs; + [ + file + unzip + zip - dig - mtr + dig + mtr + ] + ++ lib.optionals enableFlut [ + inputs.flurry.packages.${system}.flurry + inputs.tsunami.packages.${system}.tsunami + ] + ++ lib.optionals enableGraphical [ + signal-desktop - signal-desktop + dconf + pipewire - dconf - pipewire + localsend + blueberry + qbittorrent + keepassxc + yubico-piv-tool - localsend - blueberry - qbittorrent - keepassxc - yubico-piv-tool - - libreoffice-qt6 - - inputs.flurry.packages.${system}.flurry - inputs.tsunami.packages.${system}.tsunami - ]; - pointerCursor = { + libreoffice-qt6 + ]; + pointerCursor = lib.mkIf enableGraphical { gtk.enable = true; name = cursor_name; size = 32; @@ -69,17 +79,20 @@ in ''; }; preferXdgDirectories = true; - sessionVariables = { - EDITOR = "nvim"; - TERM = "kitty"; - GDK_BACKEND = "wayland,x11"; - QT_QPA_PLATFORM = "wayland;xcb"; - CLUTTER_BACKEND = "wayland"; - XDG_CURRENT_DESKTOP = "Hyprland"; - XDG_SESSION_TYPE = "wayland"; - XDG_SESSION_DESKTOP = "Hyprland"; - WLR_NO_HARDWARE_CURSORS = "1"; - }; + sessionVariables = + { + EDITOR = "nvim"; + TERM = "kitty"; + } + // lib.mkIf enableGraphical { + GDK_BACKEND = "wayland,x11"; + QT_QPA_PLATFORM = "wayland;xcb"; + CLUTTER_BACKEND = "wayland"; + XDG_CURRENT_DESKTOP = "Hyprland"; + XDG_SESSION_TYPE = "wayland"; + XDG_SESSION_DESKTOP = "Hyprland"; + WLR_NO_HARDWARE_CURSORS = "1"; + }; stateVersion = "23.11"; # Do not change :3 username = me.nickname; }; @@ -88,7 +101,7 @@ in modules = { hyprland = { - enable = true; + enable = enableGraphical; displays = [ { name = "DP-3"; @@ -110,17 +123,17 @@ in } ]; }; - games.enable = true; + games.enable = enableGraphical && enableGames; apps = { - enable = true; + firefox.enable = enableGraphical; + kitty.enable = enableGraphical; git = { + enable = true; name = me.fullName; email = me.email; do_sign = true; }; - thunderbird = { - enable = true; - }; + thunderbird.enable = enableGraphical; neovim.enableLanguages = true; }; }; @@ -134,7 +147,7 @@ in }; dconf = { - enable = true; + enable = enableGraphical; settings = { "org/gnome/desktop/interface" = { color-scheme = "prefer-dark"; @@ -143,7 +156,7 @@ in }; gtk = { - enable = true; + enable = enableGraphical; gtk2.extraConfig = '' gtk-enable-animations=1 gtk-primary-button-warps-slider=1 @@ -184,7 +197,7 @@ in # Let Home Manager install and manage itself. home-manager.enable = true; # add `play funny video` as alias because why not - zsh.shellAliases.bzzt = ''nix-shell -p mpv --command "mpv ~/Videos/BZZZM.mp4"''; + zsh.shellAliases.bzzt = lib.mkIf enableGraphical ''nix-shell -p mpv --command "mpv ~/Videos/BZZZM.mp4"''; # lsd makes files look better lsd = { enable = true; @@ -192,7 +205,7 @@ in }; # manpages can be quite useful man.enable = true; - obs-studio.enable = true; + obs-studio.enable = enableGraphical; ssh = { enable = true; compression = true; @@ -228,7 +241,7 @@ in }; qt = { - enable = true; + enable = enableGraphical; platformTheme.name = "adwaita"; style.name = "adwaita-dark"; }; @@ -236,13 +249,12 @@ in services = { syncthing = { enable = true; - tray.enable = true; }; gpg-agent = { enable = true; enableZshIntegration = true; enableSshSupport = true; - pinentryPackage = pkgs.pinentry-qt; + pinentryPackage = lib.mkIf enableGraphical pkgs.pinentry-qt; }; }; diff --git a/hosts/lambdaos/configuration.nix b/hosts/lambdaos/configuration.nix index de75ab2..8c371fa 100644 --- a/hosts/lambdaos/configuration.nix +++ b/hosts/lambdaos/configuration.nix @@ -119,7 +119,31 @@ inherit nix-colors; }; users = { - "noa" = import ./home.nix; + "noa" = (import ../../common/home.nix) { + enableGraphical = true; + enableFlut = true; + enableGames = true; + displays = [ + { + name = "DP-3"; + horizontal = 2560; + vertical = 1440; + horizontal-offset = 2560; + vertical-offset = 0; + refresh-rate = 360; + scale = "1"; + } + { + name = "DP-2"; + horizontal = 2560; + vertical = 1440; + horizontal-offset = 0; + vertical-offset = 0; + refresh-rate = 144; + scale = "1"; + } + ]; + }; "root" = import ./root.nix; }; }; diff --git a/hosts/lambdaos/root.nix b/hosts/lambdaos/root.nix index 84c0b19..8d00930 100644 --- a/hosts/lambdaos/root.nix +++ b/hosts/lambdaos/root.nix @@ -41,9 +41,9 @@ modules = { apps = { - enable = true; git = { - name = "Noa Aarts"; + enable = true; + name = "Noa Aarts (bot)"; email = "noa@voorwaarts.nl"; }; }; diff --git a/hosts/muos/configuration.nix b/hosts/muos/configuration.nix index 242cee7..f054789 100644 --- a/hosts/muos/configuration.nix +++ b/hosts/muos/configuration.nix @@ -79,7 +79,22 @@ inherit nix-colors; }; users = { - "noa" = import ./home.nix; + "noa" = (import ../../common/home.nix) { + enableGraphical = true; + enableFlut = false; + enableGames = true; + displays = [ + { + name = "eDP-1"; + horizontal = 2256; + vertical = 1504; + horizontal-offset = 0; + vertical-offset = 0; + refresh-rate = 60; + scale = "1"; + } + ]; + }; "root" = import ./root.nix; }; }; diff --git a/hosts/muos/home.nix b/hosts/muos/home.nix deleted file mode 100644 index d07f8a3..0000000 --- a/hosts/muos/home.nix +++ /dev/null @@ -1,211 +0,0 @@ -{ - config, - pkgs, - inputs, - lib, - ... -}: - -{ - imports = [ - ../../modules/hyprland.nix - ../../modules/games - ../../modules/applications - ../../common/nvim/nvim.nix - ../../common/discord/discord.nix - ../../common/spotify.nix - ]; - # Home Manager needs a bit of information about you and the paths it should - # manage. - home.username = "noa"; - home.homeDirectory = "/home/noa"; - - # This value determines the Home Manager release that your configuration is - # compatible with. This helps avoid breakage when a new Home Manager release - # introduces backwards incompatible changes. - # - # You should not change this value, even if you update Home Manager. If you do - # want to update the value, then make sure to first check the Home Manager - # release notes. - home.stateVersion = "23.11"; # Please read the comment before changing. - - nixpkgs.config.allowUnfree = true; - - modules = { - hyprland = { - enable = true; - displays = [ - { - name = "eDP-1"; - horizontal = 2256; - vertical = 1504; - horizontal-offset = 0; - vertical-offset = 0; - refresh-rate = 60; - scale = "1"; - } - { - name = "DP-1"; - horizontal = 1920; - vertical = 1080; - horizontal-offset = 2256; - vertical-offset = 0; - refresh-rate = 60; - scale = "1"; - } - ]; - }; - games.enable = true; - apps = { - enable = true; - git = { - name = "Noa Aarts"; - email = "noa@voorwaarts.nl"; - do_sign = true; - }; - thunderbird = { - enable = true; - }; - neovim.enableLanguages = true; - }; - }; - - # The home.packages option allows you to install Nix packages into your - # environment. - home.packages = with pkgs; [ - file - unzip - zip - - dig - mtr - - obs-studio - wayvnc - - signal-desktop - - btop - - dconf - pipewire - lsd - - localsend - blueberry - qbittorrent - keepassxc - yubikey-manager-qt - yubico-piv-tool - ]; - - # Home Manager is pretty good at managing dotfiles. The primary way to manage - # plain files is through 'home.file'. - home.file = { - # # Building this configuration will create a copy of 'dotfiles/screenrc' in - # # the Nix store. Activating the configuration will then make '~/.screenrc' a - # # symlink to the Nix store copy. - # ".screenrc".source = dotfiles/screenrc; - - # # You can also set the file content immediately. - # ".gradle/gradle.properties".text = '' - # org.gradle.console=verbose - # org.gradle.daemon.idletimeout=3600000 - # ''; - "ykcs/ykcs11.so".source = "${pkgs.yubico-piv-tool}/lib/libykcs11.so"; - }; - - # Home Manager can also manage your environment variables through - # 'home.sessionVariables'. If you don't want to manage your shell through Home - # Manager then you have to manually source 'hm-session-vars.sh' located at - # either - # - # ~/.nix-profile/etc/profile.d/hm-session-vars.sh - # - # or - # - # ~/.local/state/nix/profiles/profile/etc/profile.d/hm-session-vars.sh - # - # or - # - # /etc/profiles/per-user/noa/etc/profile.d/hm-session-vars.sh - # - - home.sessionVariables = { - EDITOR = "nvim"; - TERM = "kitty"; - GDK_BACKEND = "wayland,x11"; - QT_QPA_PLATFORM = "wayland;xcb"; - CLUTTER_BACKEND = "wayland"; - XDG_CURRENT_DESKTOP = "Hyprland"; - XDG_SESSION_TYPE = "wayland"; - XDG_SESSION_DESKTOP = "Hyprland"; - WLR_NO_HARDWARE_CURSORS = "1"; - }; - - xdg = { - enable = true; - userDirs = { - enable = true; - createDirectories = true; - }; - }; - - dconf = { - enable = true; - settings = { - "org/gnome/desktop/interface" = { - color-scheme = "prefer-dark"; - }; - }; - }; - - gtk = { - enable = true; - gtk2.extraConfig = '' - gtk-enable-animations=1 - gtk-primary-button-warps-slider=1 - gtk-toolbar-style=3 - gtk-menu-images=1 - gtk-button-images=1 - gtk-sound-theme-name="ocean" - gtk-font-name="Noto Sans, 10" - ''; - theme = { - name = "Adwaita-dark"; - package = pkgs.gnome-themes-extra; - }; - }; - - # Let Home Manager install and manage itself. - programs = { - home-manager.enable = true; - }; - - services.syncthing = { - enable = true; - }; - - home.pointerCursor = - let - getFrom = url: hash: name: { - gtk.enable = true; - x11.enable = true; - name = name; - size = 32; - package = pkgs.runCommand "moveUp" { } '' - mkdir -p $out/share/icons - ln -s ${ - pkgs.fetchzip { - url = url; - hash = hash; - } - } $out/share/icons/${name} - ''; - }; - in - getFrom - "https://github.com/ful1e5/Bibata_Cursor_Rainbow/releases/download/v1.1.2/Bibata-Rainbow-Modern.tar.gz" - "sha256-Ps+IKPwQoRwO9Mqxwc/1nHhdBT2R25IoeHLKe48uHB8=" - "Bibata-Rainbow-Modern"; -} diff --git a/hosts/muos/root.nix b/hosts/muos/root.nix index 84c0b19..d1c4336 100644 --- a/hosts/muos/root.nix +++ b/hosts/muos/root.nix @@ -41,8 +41,8 @@ modules = { apps = { - enable = true; git = { + enable = true; name = "Noa Aarts"; email = "noa@voorwaarts.nl"; }; diff --git a/hosts/nuos/configuration.nix b/hosts/nuos/configuration.nix index f83432f..4041683 100644 --- a/hosts/nuos/configuration.nix +++ b/hosts/nuos/configuration.nix @@ -88,7 +88,9 @@ inherit nix-colors; }; users = { - "noa" = import ./home.nix; + "noa" = (import ../../common/home.nix) { + enableFlut = true; + }; "root" = import ./root.nix; }; }; diff --git a/hosts/nuos/home.nix b/hosts/nuos/home.nix deleted file mode 100644 index 0666ae8..0000000 --- a/hosts/nuos/home.nix +++ /dev/null @@ -1,110 +0,0 @@ -{ - config, - pkgs, - mineflake, - inputs, - ... -}: - -{ - imports = [ - ../../modules/applications - ../../common/nvim/nvim.nix - ]; - # Home Manager needs a bit of information about you and the paths it should - # manage. - home.username = "noa"; - home.homeDirectory = "/home/noa"; - - # This value determines the Home Manager release that your configuration is - # compatible with. This helps avoid breakage when a new Home Manager release - # introduces backwards incompatible changes. - # - # You should not change this value, even if you update Home Manager. If you do - # want to update the value, then make sure to first check the Home Manager - # release notes. - home.stateVersion = "23.11"; # Please read the comment before changing. - - nixpkgs.config.allowUnfree = true; - - # The home.packages option allows you to install Nix packages into your - # environment. - home.packages = with pkgs; [ - file - unzip - zip - - dig - mtr - - btop - lsd - - lm_sensors - - # Programming langs - go - nodejs - ]; - - modules = { - apps.git = { - enable = true; - name = "Noa Aarts"; - email = "noa@voorwaarts.nl"; - }; - apps.zsh.enable = true; - apps.neovim.enableLanguages = true; - }; - - services.syncthing = { - enable = true; - }; - - # Home Manager is pretty good at managing dotfiles. The primary way to manage - # plain files is through 'home.file'. - home.file = { - # # Building this configuration will create a copy of 'dotfiles/screenrc' in - # # the Nix store. Activating the configuration will then make '~/.screenrc' a - # # symlink to the Nix store copy. - # ".screenrc".source = dotfiles/screenrc; - - # # You can also set the file content immediately. - # ".gradle/gradle.properties".text = '' - # org.gradle.console=verbose - # org.gradle.daemon.idletimeout=3600000 - # ''; - }; - - # Home Manager can also manage your environment variables through - # 'home.sessionVariables'. If you don't want to manage your shell through Home - # Manager then you have to manually source 'hm-session-vars.sh' located at - # either - # - # ~/.nix-profile/etc/profile.d/hm-session-vars.sh - # - # or - # - # ~/.local/state/nix/profiles/profile/etc/profile.d/hm-session-vars.sh - # - # or - # - # /etc/profiles/per-user/noa/etc/profile.d/hm-session-vars.sh - # - - home.sessionVariables = { - EDITOR = "nvim"; - }; - - xdg = { - enable = true; - }; - - xdg.userDirs = { - enable = true; - createDirectories = true; - }; - - # Let Home Manager install and manage itself. - programs.home-manager.enable = true; -} diff --git a/modules/applications/default.nix b/modules/applications/default.nix index 00bf28a..8d59814 100644 --- a/modules/applications/default.nix +++ b/modules/applications/default.nix @@ -8,9 +8,6 @@ let cfg = config.modules.apps; in { - options.modules.apps = { - enable = lib.mkEnableOption "enable desktop applications"; - }; imports = [ ./firefox.nix @@ -20,15 +17,4 @@ in ./thunderbird.nix ]; - config = lib.mkIf cfg.enable { - modules.apps = { - firefox.enable = true; - git.enable = true; - kitty.enable = true; - zsh = { - enable = true; - enableAliases = true; - }; - }; - }; } diff --git a/modules/applications/zsh.nix b/modules/applications/zsh.nix index 3c570fa..6c76035 100644 --- a/modules/applications/zsh.nix +++ b/modules/applications/zsh.nix @@ -10,13 +10,12 @@ in { options.modules.apps.zsh = { enable = lib.mkEnableOption "enable zsh with oh-my-zsh"; - enableAliases = lib.mkEnableOption "whether to enable shellAliases"; }; config = lib.mkIf cfg.enable { programs.zsh = { enable = true; - shellAliases = lib.mkIf cfg.enableAliases { + shellAliases = { update = "nix flake update --commit-lock-file $HOME/nixos && sudo nixos-rebuild switch --flake $HOME/nixos"; nb = "nix build -L"; ns = "nix shell -L";