dotfiles

My PC Dotfiles & Website

modules/desktop/gnome/_main.nix (4540B)


  1{
  2  util ? null,
  3  files ? null,
  4  ...
  5}: {
  6  nixos = {pkgs, ...}: {
  7    # Desktop Integration
  8    gui.qt = {
  9      theme = "KvLibadwaitaDark";
 10      package = pkgs.custom.kvlibadwaita;
 11    };
 12
 13    # Color Scheme
 14    stylix = {
 15      base16Scheme = files.colors.adwaita;
 16      targets.gnome.enable = false;
 17    };
 18
 19    # Essential Utilities
 20    services = {
 21      udev.packages = [pkgs.gnome-settings-daemon];
 22      telepathy.enable = true;
 23      switcherooControl.enable = true;
 24      gnome = {
 25        core-developer-tools.enable = true;
 26        gnome-remote-desktop.enable = true;
 27        sushi.enable = true;
 28      };
 29    };
 30
 31    programs = {
 32      gnupg.agent.pinentryPackage = pkgs.lib.mkForce pkgs.pinentry-gnome3;
 33      kdeconnect = {
 34        enable = true;
 35        package = pkgs.gnomeExtensions.gsconnect;
 36      };
 37    };
 38
 39    # Screen Brightness
 40    hardware.i2c.enable = true;
 41
 42    ## Package List
 43    environment.systemPackages = with pkgs; [
 44      ghostty
 45      gnome-boxes
 46      gnome-sound-recorder
 47      gnome-tweaks
 48      papers
 49
 50      # Games
 51      gnome-chess
 52      gnome-mines
 53      quadrapassel
 54
 55      # Circle
 56      apostrophe
 57      curtail
 58      deja-dup
 59      dialect
 60      fractal
 61      fragments
 62      gnome-decoder
 63      gnome-secrets
 64      gthumb
 65      lollypop
 66      resources
 67      upscaler
 68      video-trimmer
 69      wike
 70      wordbook
 71
 72      # Utilities
 73      celluloid
 74      ddcutil
 75      gnuchess
 76    ];
 77  };
 78
 79  home = {pkgs, ...}: {
 80    config = {
 81      # Default Applications
 82      xdg.mimeApps.defaultApplications = util.build.mime {
 83        archive = ["org.gnome.FileRoller.desktop"];
 84        audio = ["org.gnome.Lollypop.desktop"];
 85        calendar = ["org.gnome.Calendar.desktop"];
 86        document = ["org.gnome.Papers.desktop"];
 87        directory = ["org.gnome.Nautilus.desktop"];
 88        image = ["org.gnome.Loupe.desktop"];
 89        magnet = ["de.haeckerfelix.Fragments.desktop"];
 90        markdown = ["org.gnome.gitlab.somas.Apostrophe.desktop"];
 91        password = ["org.gnome.World.Secrets.desktop"];
 92        pdf = ["org.gnome.Papers.desktop"];
 93        text = ["org.gnome.TextEditor.desktop"];
 94        video = ["io.github.celluloid_player.Celluloid.desktop"];
 95        virtualization = ["org.gnome.Boxes.desktop"];
 96      };
 97
 98      # Persisted Files
 99      home.persist.directories = [
100        ".config/evolution"
101        ".config/ghostty"
102        ".config/gnome-boxes"
103        ".config/gnome-builder"
104        ".local/share/epiphany"
105        ".local/share/evolution"
106        ".local/share/gnome-boxes"
107        ".local/share/gnome-builder"
108        ".local/share/lollypop"
109        ".local/share/nautilus"
110        ".local/share/sounds"
111        ".local/share/telepathy"
112        ".local/share/webkitgtk"
113        ".cache/evolution"
114        ".cache/fractal"
115        ".cache/gnome-builder"
116      ];
117
118      programs = {
119        # Terminal
120        ghostty = {
121          enable = true;
122          settings = {
123            clipboard-paste-protection = true;
124            clipboard-trim-trailing-spaces = true;
125            copy-on-select = false;
126            mouse-hide-while-typing = true;
127            quit-after-last-window-closed = true;
128            scrollback-limit = 4200;
129            shell-integration-features = true;
130            window-vsync = true;
131            keybind = [
132              "ctrl+h=goto_split:left"
133              "ctrl+j=goto_split:bottom"
134              "ctrl+k=goto_split:top"
135              "ctrl+l=goto_split:right"
136              "ctrl+shift+h=new_split:left"
137              "ctrl+shift+j=new_split:down"
138              "ctrl+shift+k=new_split:up"
139              "ctrl+shift+l=new_split:right"
140              "ctrl+shift+enter=new_split:auto"
141              "ctrl+shift+i=inspector:toggle"
142              "ctrl+shift+r=reload_config"
143              "ctrl+t=new_tab"
144            ];
145          };
146        };
147
148        # Browser
149        firefox = {
150          nativeMessagingHosts = [pkgs.gnome-browser-connector];
151          policies.ExtensionSettings = {
152            name = "gnome-shell-integration";
153            value = {
154              installation_mode = "normal_installed";
155              install_url = "https://addons.mozilla.org/en-US/firefox/downloads/latest/chrome-gnome-shell@gnome.org/latest.xpi";
156            };
157          };
158        };
159      };
160
161      stylix.targets = {
162        gnome.enable = true;
163        ghostty.enable = true;
164        firefox = {
165          enable = true;
166          profileNames = ["default"];
167          firefoxGnomeTheme.enable = true;
168        };
169      };
170    };
171  };
172}