ctucx.git: nixfiles

ctucx' nixfiles

commit 26a3e4c93d8765e4688e78c17f47a97d5d952d71
parent 7f6d6a6f0812731276822183fc90fc8c3aa14e94
Author: Katja (ctucx) <git@ctu.cx>
Date: Tue, 3 Dec 2024 19:32:37 +0100

configurations/linux/gnome: update config
1 file changed, 178 insertions(+), 57 deletions(-)
M
configurations/linux/gnome.nix
|
235
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------
diff --git a/configurations/linux/gnome.nix b/configurations/linux/gnome.nix
@@ -2,75 +2,174 @@
 
 {
 
+  nixpkgs.overlays = [(final: prev: {
+    # patch gdm to automaticly select the first user
+    gnome-shell    = prev.gnome-shell.overrideAttrs (prevAttrs: {
+      patches = prevAttrs.patches ++ [ ../../pkgs/gdm-autoselect-user.patch ];
+    });
 
-  nixpkgs.config.allowUnfree = true;
+    # use more generic name and icon
+    ptyxis    = prev.ptyxis.overrideAttrs (prevAttrs: {
+      mesonFlags = [ "-Dgeneric=terminal" ];
+    });
 
-  networking.networkmanager.wifi.backend = "iwd";
+    # deactivate some backends
+    gnome-online-accounts = prev.gnome-online-accounts.overrideAttrs( prevAttrs: {
+      mesonFlags = prevAttrs.mesonFlags ++ [ "-Dexchange=false" "-Dgoogle=false" "-Dkerberos=false" "-Downcloud=false" "-Dwindows_live=false" "-Dms_graph=false" ];
+    });
+  })];
 
-  programs = {
-    dconf.enable = true;
+  boot.plymouth.enable = true;
+
+  hardware.bluetooth.settings = {
+    General.Experimental = true;
   };
 
   users.users.katja.extraGroups = [ "dialout" "networkmanager"];
 
+  # networking.networkmanager.wifi.backend = "iwd";
+
   services = {
     nscd.enable  = true;
+    gvfs.package = (pkgs.gvfs.overrideAttrs (old: {
+      mesonFlags = (old.mesonFlags or []) ++ [
+        "-Dafp=false"
+        "-Dafc=false"
+        "-Dmtp=false"
+        "-Dgphoto2=false"
+      ];
+    })).override {
+      samba        = null;
+      gnomeSupport = false;
+    };
+
+    #required for gnome-calendar
+    gnome.evolution-data-server.enable  = true;
+    gnome.gnome-online-accounts.enable  = true;
   };
 
+  programs.evince.enable = true;
+
   home-manager.users.katja = {
     manual.html.enable = true;
-    services.gnome-keyring.enable = true;
 
     home.packages = with pkgs; [
-      gnomeExtensions.user-themes
-      gnomeExtensions.just-perfection
-      gnomeExtensions.arcmenu
-      gnomeExtensions.dash-to-panel
-      gnomeExtensions.tray-icons-reloaded
-      gnomeExtensions.airpod-battery-monitor
-      gnomeExtensions.battery-time-percentage-compact
-      gnomeExtensions.space-bar
-    ];
+      wl-clipboard-x11
+      gnome-calendar
+      gnome-text-editor
+      gnome-podcasts
+      gnome-obfuscate
+      loupe
+      errands
+      diebahn
+      xdg-utils
+      # look and feel from libadwaita ported to GTK-3
+      adw-gtk3
+    ] ++ (with pkgs.gnomeExtensions; [
+      just-perfection
+      airpod-battery-monitor
+      battery-time-percentage-compact
+      space-bar
+      dash-to-dock
+      search-light
+      pip-on-top
+    ]);
 
     gtk = {
       enable = true;
 
+      iconTheme.package = pkgs.adwaita-colors-icon-theme;
+      iconTheme.name    = "Adwaita-green";
+
       gtk3.extraConfig = {
-        Settings = ''
-          gtk-application-prefer-dark-theme=1
-        '';
-      };
-      gtk4.extraConfig = {
-        Settings = ''
-          gtk-application-prefer-dark-theme=1
-        '';
+        gtk-application-prefer-dark-theme = 1;
+        gtk-theme-name                    = "adw-gtk3-dark";
       };
+
+      gtk4.extraCss = ''
+        /* remove 'starred' in nautilus side-panel */
+        .nautilus-window .navigation-sidebar > .sidebar-row:nth-child(2) {
+          min-height:0;
+          font-size: 0;
+          -gtk-icon-size: 0;
+          margin-top: -2px;
+        }
+      '';
     };
 
     # Use `dconf watch /` to track stateful changes you are doing and store them here.
-    dconf.settings = with inputs.home-manager.lib.hm.gvariant; {
+    dconf.settings = with inputs.home-manager.lib.hm.gvariant; let
+      numWorkspaces = 7;
+      workspaces = lib.lists.reverseList( pkgs.std.list.unfold( n: if n == 0 then pkgs.std.optional.nothing else pkgs.std.optional.just( pkgs.std.tuple.tuple2 n (n - 1))) numWorkspaces);
+    in {
       "org/gnome/mutter" = {
         edge-tiling        = true;
         dynamic-workspaces = false;
       };
+
+      "org/gnome/desktop/wm/preferences" = {
+        button-layout   = "close:appmenu";
+        auto-raise      = false;
+        focus-mode      = "sloppy";
+        num-workspaces  = lib.lists.last workspaces;
+        workspace-names = [ "Main" "Mail" "Term" ];
+      };
+      "org/gnome/desktop/wm/keybindings" = builtins.listToAttrs( builtins.concatMap( v: [
+        { name = "switch-to-workspace-${toString v}"; value = [ "<Super>${toString v}" ]; }
+        { name = "move-to-workspace-${toString v}";   value = [ "<Super><Shift>${toString v}" ]; }
+      ]) workspaces) // {
+        switch-input-source          = [ "<Control><Super>space" ];
+        switch-input-source-backward = [ "<Shift><Control><Super>space" ];
+      };
+
       "org/gnome/shell" = {
-        disable-user-extensions = false;
-        # `gnome-extensions list` for a list
-        enabled-extensions = [
-          "user-theme@gnome-shell-extensions.gcampax.github.com"
-          "just-perfection-desktop@just-perfection"
-          "trayIconsReloaded@selfmade.pl"
-          "dash-to-panel@jderose9.github.com"
-          "arcmenu@arcmenu.com"
-          "Airpod-Battery-Monitor@maniacx.github.com"
-          "batterytimepercentagecompact@sagrland.de"
-          "space-bar@luchrioh"
+        disable-extension-version-validation = true;
+        disable-user-extensions              = false;
+        enabled-extensions = with pkgs.gnomeExtensions; [
+          just-perfection.extensionUuid
+          airpod-battery-monitor.extensionUuid
+          battery-time-percentage-compact.extensionUuid
+          space-bar.extensionUuid
+          dash-to-dock.extensionUuid
+          search-light.extensionUuid
+          pip-on-top.extensionUuid
+        ];
+        favorite-apps = [
+          "org.gnome.Nautilus.desktop"
+          "firefox.desktop"
+          "thunderbird.desktop"
+          "org.gnome.Fractal.desktop"
+          "app.drey.PaperPlane.desktop"
+          "dev.geopjr.Tuba.desktop"
+          "de.schmidhuberj.DieBahn.desktop"
+          "org.gnome.Calendar.desktop"
+          "io.github.mrvladus.List.desktop"
+          "org.gnome.Podcasts.desktop"
+          "org.gnome.Ptyxis.desktop"
+          "org.gnome.Settings.desktop"
         ];
-        favorite-apps = [ "firefox.desktop" "org.gnome.Terminal.desktop"  "org.gnome.Nautilus.desktop" ];
       };
+      "org/gnome/shell/keybindings" = builtins.listToAttrs( map( v: { name = "switch-to-application-${toString v}"; value = []; }) workspaces);
+      "org/gnome/settings-daemon/plugins/color" = {
+        night-light-enabled = true;
+      };
+
+      "org/gnome/settings-daemon/plugins/media-keys" = {
+        custom-keybindings = [ "/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/" ];
+      };
+      "org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0" = {
+        name    = "Start Terminal";
+        command = "ptyxis --new-window";
+        binding = "<Super>Return";
+      };
+
+      "org/gnome/desktop/a11y".always-show-universal-access-status = false;
+      "org/gnome/desktop/privacy".remember-recent-files            = false;
       "org/gnome/desktop/interface" = {
         color-scheme = "prefer-dark";
-        enable-hot-corners = false;
+        accent-color = "green";
+        enable-hot-corners      = false;
+        show-battery-percentage = true;
       };
       "org/gnome/desktop/input-sources" = {
         sources = [

@@ -79,49 +178,73 @@
           (mkTuple ["xkb" "ru+mac"])
         ];
       };
-      #ยง `gsettings get org.gnome.shell.extensionst.user-theme name`
-      "org/gnome/shell/extensions/user-theme" = {
-      };
-      "org/gnome/desktop/wm/preferences" = {
-        button-layout   = "close:appmenu";
-        auto-raise      = true;
-        focus-mode      = "sloppy";
-        num-workspaces  = 4;
-        workspace-names = [ "Main" "Mail" "Term" ];
-      };
       "org/gnome/desktop/background" = {
-        picture-uri = "file:///run/current-system/sw/share/backgrounds/gnome/vnc-l.png";
-        picture-uri-dark = "file:///run/current-system/sw/share/backgrounds/gnome/vnc-d.png";
+        picture-uri      = "file://${pkgs.nixos-artwork.wallpapers.simple-blue.gnomeFilePath}";
+        picture-uri-dark = "file://${pkgs.nixos-artwork.wallpapers.simple-dark-gray.gnomeFilePath}";
       };
       "org/gnome/desktop/screensaver" = {
-        picture-uri = "file:///run/current-system/sw/share/backgrounds/gnome/vnc-d.png";
-        primary-color = "#3465a4";
+        picture-uri     = "file://${pkgs.nixos-artwork.wallpapers.simple-dark-gray.gnomeFilePath}";
+        primary-color   = "#3465a4";
         secondary-color = "#000000";
       };
-    };
 
+      "org/gnome/nautilus/list-view" = {
+        use-tree-view      = true;
+        default-zoom-level = "small";
+      };
+      "org/gnome/nautilus/preferences" = {
+        date-time-format      = "detailed";
+        default-folder-viewer = "list-view";
+      };
 
+      "org/gnome/shell/extensions/pip-on-top".stick = true;
+      "org/gnome/shell/extensions/just-perfection" = {
+        clock-menu-position        = 1;
+        clock-menu-position-offset = 6;
+        quick-settings-dark-mode   = false;
+      };
+      "org/gnome/shell/extensions/space-bar/behavior" = {
+        show-empty-workspaces = false;
+        always-show-numbers   = true;
+      };
+      "org/gnome/shell/extensions/dash-to-dock" = {
+        multi-monitor         = true;
+        apply-custom-theme    = true;
+        custom-theme-shrink   = true;
+        show-show-apps-button = false;
+        show-mounts           = false;
+        hot-keys              = false;
+      };
+      "org/gnome/shell/extensions/search-light".shortcut-search = [ "<Super>space" ];
+    };
   };
 
   ctucxConfig = {
     configure = {
       mobileDevice = false;
       fonts        = true;
-      bluetooth    = true;
     };
 
-    wm.gnome.enable     = true;
+    wm.gnome.enable      = true;
+    wm.gnome.gdm.dconfSettings = {
+      "org/gnome/desktop/a11y" = {
+        always-show-universal-access-status = false;
+      };
+      "org/gnome/login-screen" = {
+        banner-message-enable = true;
+        banner-message-text   = "katja (fedi/mail: katja@ctu.cx)";
+      };
+    };
 
     services = {
       pipewire.enable    = true;
-      easyeffects.enable = true;
+#      easyeffects.enable = true;
 
       syncthing.enable   = true;
     };
 
     programs = {
       ddcutil.enable       = true;
-      alacritty.enable     = true;
 
       firefox.enable       = true;
       thunderbird.enable   = true;

@@ -132,8 +255,6 @@
       libreoffice.enable   = true;
       ausweisapp.enable    = true;
 
-      zathura.enable       = true;
-      imv.enable           = true;
       mpv.enable           = true;
 
       bitwarden-cli.enable = true;