diff --git a/modules/desktop/gnome.nix b/modules/desktop/gnome.nix new file mode 100755 index 0000000..004ade1 --- /dev/null +++ b/modules/desktop/gnome.nix @@ -0,0 +1,35 @@ +# Edit this configuration file to define what should be installed on +# your system. Help is available in the configuration.nix(5) man page, on +# https://search.nixos.org/options and in the NixOS manual (`nixos-help`). + +{ config, lib, pkgs, ... }: + +{ +# imports = +# [ +# ]; + + # Enable the X11 windowing system. + services.xserver.enable = true; + services.displayManager.gdm.enable = true; + services.desktopManager.gnome.enable = true; + + # Configure keymap in X11 + services.xserver.xkb.layout = "de"; + # services.xserver.xkb.options = "eurosign:e,caps:escape"; + + programs.dconf.enable = true; + programs.bash.enable = true; + + # Enable gnome-settings-daemon udev rules + services.udev.packages = with pkgs; [ + gnome-settings-daemon + ]; + + + environment.gnome.excludePackages = with pkgs; [ + gnome-tour + gnome-music + epiphany + ]; +} diff --git a/modules/shell/aliases.nix b/modules/shell/aliases.nix new file mode 100644 index 0000000..eca7e4f --- /dev/null +++ b/modules/shell/aliases.nix @@ -0,0 +1,16 @@ +{ pkgs, ... }: { + + home.shellAliases = { + # System Updates + update = "sudo nixos-rebuild switch --flake /home/martin/.config/nixos-config#dukebook"; + upgrade = "nix flake update && upgrade"; + + # Navigation & Komfort + ll = "ls -la"; + ".." = "cd .."; + g = "git"; + + # GNOME spezifisch (dconf dumpen) + gconfig = "dconf dump / | dconf2nix > gnome-settings.nix"; + }; +} diff --git a/modules/user/gnome-home.nix b/modules/user/gnome-home.nix new file mode 100755 index 0000000..cdcfa19 --- /dev/null +++ b/modules/user/gnome-home.nix @@ -0,0 +1,127 @@ +{ config, pkgs, ... }: + +{ + imports = [ + ../shell/alacritty.nix + ../shell/aliases.nix + ]; + + # Home Manager needs a bit of information about you and the paths it should + # manage. + home.username = "martin"; + home.homeDirectory = "/home/martin"; + + # 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 = "25.11"; # Please read the comment before changing. + + # The home.packages option allows you to install Nix packages into your + # environment. + + home.packages = with pkgs; [ + htop + noto-fonts + fira-code + nerd-fonts.fira-code + gnomeExtensions.blur-my-shell + gnomeExtensions.dash-to-dock + gnomeExtensions.appindicator + unzip + zip + yazi + p7zip + inetutils + signal-desktop + ]; + + dconf.settings = { + "org/gnome/desktop/interface" = { + color-scheme = "prefer-dark"; + enable-hot-corners = false; + }; + + "org/gnome/shell" = { + # This activates the extensions you installed above + enabled-extensions = [ + "blur-my-shell@aunetx" + "dash-to-dock@micxgx.gmail.com" + "appindicatorsupport@rgcjonas.gmail.com" + ]; + }; + + "org/gnome/shell/extensions/dash-to-dock" = { + dash-max-icon-size = 32; + extend-height = false; + dock-position = "BOTTOM"; + transparency-mode = "FIXED"; + }; + }; + # 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 + # ''; + }; + gtk = { + enable = true; + + iconTheme = { + name = "Papirus-Dark"; + package = pkgs.papirus-icon-theme; + }; + + theme = { + name = "palenight"; + package = pkgs.palenight-theme; + }; + + cursorTheme = { + name = "Numix-Cursor"; + package = pkgs.numix-cursor-theme; + }; + + gtk3.extraConfig = { + Settings = '' + gtk-application-prefer-dark-theme=1 + ''; + }; + + gtk4.extraConfig = { + Settings = '' + gtk-application-prefer-dark-theme=1 + ''; + }; + }; + # 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 + # + # /etc/profiles/per-user/martin/etc/profile.d/hm-session-vars.sh + # +# home.sessionVariables = { +# # EDITOR = "emacs"; +# GTK_THEME = "palenight"; +# }; + + # Let Home Manager install and manage itself. +# fonts.fontconfig.enable = true; +# programs.home-manager.enable = true; +}