From c06c55a0002bd9de8407d48b0880b1e9372fc461 Mon Sep 17 00:00:00 2001
From: Jo <johannesreckers2006@gmail.com>
Date: Thu, 25 Jul 2024 14:40:42 +0200
Subject: [PATCH] fix remaining issues, add app configs, fix gnome theme

Signed-off-by: Jo <johannesreckers2006@gmail.com>
---
 .../jo@puzzlevision/apps/fish.nix             | 17 +++++
 .../jo@puzzlevision/apps/gnome.nix            | 68 +++++++++++++++++++
 .../x86_64-linux/jo@puzzlevision/default.nix  |  8 +--
 modules/home/development/ssh/default.nix      | 36 +++++-----
 .../catppuccin/{ => global}/default.nix       |  2 +-
 .../home/themes/catppuccin/gnome/default.nix  |  7 +-
 modules/nixos/common/gnome/default.nix        | 10 +--
 resources/apps/fish/Catppuccin Frappe.theme   | 30 ++++++++
 systems/x86_64-linux/puzzlevision/default.nix | 45 +++++++-----
 .../puzzlevision/hardware-configuration.nix   | 16 -----
 10 files changed, 177 insertions(+), 62 deletions(-)
 create mode 100644 homes/x86_64-linux/jo@puzzlevision/apps/fish.nix
 create mode 100644 homes/x86_64-linux/jo@puzzlevision/apps/gnome.nix
 rename modules/home/themes/catppuccin/{ => global}/default.nix (89%)
 create mode 100644 resources/apps/fish/Catppuccin Frappe.theme

diff --git a/homes/x86_64-linux/jo@puzzlevision/apps/fish.nix b/homes/x86_64-linux/jo@puzzlevision/apps/fish.nix
new file mode 100644
index 0000000..398691e
--- /dev/null
+++ b/homes/x86_64-linux/jo@puzzlevision/apps/fish.nix
@@ -0,0 +1,17 @@
+{
+  lib,
+  pkgs,
+  inputs,
+
+  namespace, # The flake namespace, set in flake.nix. If not set, defaults to "internal".
+  home, # The home architecture for this host (eg. `x86_64-linux`).
+  target, # The Snowfall Lib target for this home (eg. `x86_64-home`).
+  format, # A normalized name for the home target (eg. `home`).
+  virtual, # A boolean to determine whether this home is a virtual target using nixos-generators.
+  host, # The host name for this home.
+
+  config,
+  ...
+}: {
+  home.file.".config/fish/themes/Catppuccin\ Frappe.theme".source = lib.snowfall.fs.get-file "resources/apps/fish/Catppuccin\ Frappe.theme";
+}
\ No newline at end of file
diff --git a/homes/x86_64-linux/jo@puzzlevision/apps/gnome.nix b/homes/x86_64-linux/jo@puzzlevision/apps/gnome.nix
new file mode 100644
index 0000000..42d78b6
--- /dev/null
+++ b/homes/x86_64-linux/jo@puzzlevision/apps/gnome.nix
@@ -0,0 +1,68 @@
+{
+  lib,
+  pkgs,
+  inputs,
+
+  namespace, # The flake namespace, set in flake.nix. If not set, defaults to "internal".
+  home, # The home architecture for this host (eg. `x86_64-linux`).
+  target, # The Snowfall Lib target for this home (eg. `x86_64-home`).
+  format, # A normalized name for the home target (eg. `home`).
+  virtual, # A boolean to determine whether this home is a virtual target using nixos-generators.
+  host, # The host name for this home.
+
+  config,
+  ...
+}: {
+  home.packages = with pkgs.gnomeExtensions; [
+    dash-to-dock
+    user-themes
+    blur-my-shell
+    appindicator
+    unite
+    color-picker
+  ];
+
+  # Use `dconf watch /` to track stateful changes you are doing, then set them here.
+  dconf.settings = {
+    "org/gnome/shell" = {
+      favorite-apps = [
+        "org.gnome.Nautilus.desktop"
+        "firefox.desktop"
+        "spotify.desktop"
+        "phpstorm.desktop"
+      ];
+
+      enabled-extensions = [
+        "user-theme@gnome-shell-extensions.gcampax.github.com"
+        "dash-to-dock@micxgx.gmail.com"
+        "blur-my-shell@aunetx"
+        "appindicatorsupport@rgcjonas.gmail.com"
+        "unite@hardpixel.eu"
+        "color-picker@tuberry"
+      ];
+    };
+
+    "org/gnome/desktop/wm/preferences" = {
+      workspace-names = [ "Main" ];
+    };
+
+    "org/gnome/shell/extensions/unite" = {
+      use-activities-text = false;
+      extend-left-box = false;
+      reduce-panel-spacing = false;
+      window-buttons-placement = "first";
+      show-legacy-tray = false;
+      show-appmenu-button = false;
+      show-desktop-name = false;
+      enable-titlebar-actions = false;
+      restrict-to-primary-screen = true;
+      hide-activities-button = "never";
+      hide-window-titlebars = "maximized";
+      show-window-title = false;
+      autofocus-windows = true;
+      show-window-buttons = "maximized";
+      notifications-position = "right";
+      window-buttons-theme = "catppuccin";
+    };
+  };
+}
\ No newline at end of file
diff --git a/homes/x86_64-linux/jo@puzzlevision/default.nix b/homes/x86_64-linux/jo@puzzlevision/default.nix
index 08e0026..3ad30a0 100644
--- a/homes/x86_64-linux/jo@puzzlevision/default.nix
+++ b/homes/x86_64-linux/jo@puzzlevision/default.nix
@@ -19,12 +19,6 @@
   config,
   ...
 }: {
-  imports = [
-    inputs.homeModules.themes.catppuccin
-    inputs.homeModules.themes.catppuccin.gnome
-    inputs.homeModules.development.ssh
-  ];
-
   # Flatpak configuration.
   services.flatpak = {
     enable = true;
@@ -67,4 +61,6 @@
     ### Backups & Synchronization
     celeste
   ];
+
+  home.stateVersion = "24.05";
 }
\ No newline at end of file
diff --git a/modules/home/development/ssh/default.nix b/modules/home/development/ssh/default.nix
index 303aa1f..a3e60d1 100644
--- a/modules/home/development/ssh/default.nix
+++ b/modules/home/development/ssh/default.nix
@@ -4,7 +4,7 @@
   inputs,
 
   namespace, # The flake namespace, set in flake.nix. If not set, defaults to "internal".
-  home, # The home architecture for this host (eg. `x86_64-linux`).
+  system, # The home architecture for this host (eg. `x86_64-linux`).
   target, # The Snowfall Lib target for this home (eg. `x86_64-home`).
   format, # A normalized name for the home target (eg. `home`).
   virtual, # A boolean to determine whether this home is a virtual target using nixos-generators.
@@ -24,25 +24,25 @@ in {
     extraConfig = ''
       AddKeysToAgent yes
     '';
-  };
 
-  matchBlocks = {
-    "github.com" = {
-      identityFile = "${sshDir}/id_ed25519";
-      identitiesOnly = true;
-      user = "git";
-    };
+    matchBlocks = {
+      "github.com" = {
+        identityFile = "${sshDir}/id_ed25519";
+        identitiesOnly = true;
+        user = "git";
+      };
 
-    "gitlab.com" = {
-      identityFile = "${sshDir}/id_ed25519";
-      identitiesOnly = true;
-      user = "git";
-    };
+      "gitlab.com" = {
+        identityFile = "${sshDir}/id_ed25519";
+        identitiesOnly = true;
+        user = "git";
+      };
 
-    "bitbucket.org" = {
-      identityFile = "${sshDir}/id_ed25519";
-      identitiesOnly = true;
-      user = "git";
-    };
+      "bitbucket.org" = {
+        identityFile = "${sshDir}/id_ed25519";
+        identitiesOnly = true;
+        user = "git";
+      };
+     };
   };
 }
\ No newline at end of file
diff --git a/modules/home/themes/catppuccin/default.nix b/modules/home/themes/catppuccin/global/default.nix
similarity index 89%
rename from modules/home/themes/catppuccin/default.nix
rename to modules/home/themes/catppuccin/global/default.nix
index 73990ad..8433cba 100644
--- a/modules/home/themes/catppuccin/default.nix
+++ b/modules/home/themes/catppuccin/global/default.nix
@@ -4,7 +4,7 @@
   inputs,
 
   namespace, # The flake namespace, set in flake.nix. If not set, defaults to "internal".
-  home, # The home architecture for this host (eg. `x86_64-linux`).
+  system,
   target, # The Snowfall Lib target for this home (eg. `x86_64-home`).
   format, # A normalized name for the home target (eg. `home`).
   virtual, # A boolean to determine whether this home is a virtual target using nixos-generators.
diff --git a/modules/home/themes/catppuccin/gnome/default.nix b/modules/home/themes/catppuccin/gnome/default.nix
index b1c2d71..f56db71 100644
--- a/modules/home/themes/catppuccin/gnome/default.nix
+++ b/modules/home/themes/catppuccin/gnome/default.nix
@@ -4,7 +4,7 @@
   inputs,
 
   namespace, # The flake namespace, set in flake.nix. If not set, defaults to "internal".
-  home, # The home architecture for this host (eg. `x86_64-linux`).
+  system,
   target, # The Snowfall Lib target for this home (eg. `x86_64-home`).
   format, # A normalized name for the home target (eg. `home`).
   virtual, # A boolean to determine whether this home is a virtual target using nixos-generators.
@@ -50,5 +50,10 @@
     "org/gnome/shell/extensions/user-theme" = {
       name = "Colloid-Dark-Catppuccin";
     };
+
+    "/org/gnome/desktop/interface" = {
+      color-scheme = "prefer-dark";
+      cursor-theme = "catppuccin-frappe-blue-cursors";
+    };
   };
 }
\ No newline at end of file
diff --git a/modules/nixos/common/gnome/default.nix b/modules/nixos/common/gnome/default.nix
index b5047d5..f9a2fb4 100644
--- a/modules/nixos/common/gnome/default.nix
+++ b/modules/nixos/common/gnome/default.nix
@@ -13,6 +13,8 @@
   config,
   ...
 }: {
+  services.xserver.enable = true;
+
   # Enable GNOME and GDM.
   services.xserver.displayManager.gdm.enable = true;
   services.xserver.desktopManager.gnome.enable = true;
@@ -22,13 +24,13 @@
     gedit
     cheese
     geary
+    yelp # Help view
+    epiphany # Gnome web
   ]) ++ (with pkgs.gnome; [
     gnome-music
-    epiphany # Gnome web
     tali # Poker game
     iagno # Go game
     hitori # Sudoku game
-    yelp # Help view
     gnome-contacts
     gnome-initial-setup
   ]);
@@ -43,6 +45,6 @@
   };
 
   environment.systemPackages = with pkgs; [
-    gnome.gnome-tweaks
+    gnome-tweaks
   ];
-}
\ No newline at end of file
+}
diff --git a/resources/apps/fish/Catppuccin Frappe.theme b/resources/apps/fish/Catppuccin Frappe.theme
new file mode 100644
index 0000000..b4c1994
--- /dev/null
+++ b/resources/apps/fish/Catppuccin Frappe.theme	
@@ -0,0 +1,30 @@
+# name: 'Catppuccin Frappé'
+# url: 'https://github.com/catppuccin/fish'
+# preferred_background: 303446
+
+fish_color_normal c6d0f5
+fish_color_command 8caaee
+fish_color_param eebebe
+fish_color_keyword e78284
+fish_color_quote a6d189
+fish_color_redirection f4b8e4
+fish_color_end ef9f76
+fish_color_comment 838ba7
+fish_color_error e78284
+fish_color_gray 737994
+fish_color_selection --background=414559
+fish_color_search_match --background=414559
+fish_color_option a6d189
+fish_color_operator f4b8e4
+fish_color_escape ea999c
+fish_color_autosuggestion 737994
+fish_color_cancel e78284
+fish_color_cwd e5c890
+fish_color_user 81c8be
+fish_color_host 8caaee
+fish_color_host_remote a6d189
+fish_color_status e78284
+fish_pager_color_progress 737994
+fish_pager_color_prefix f4b8e4
+fish_pager_color_completion c6d0f5
+fish_pager_color_description 737994
\ No newline at end of file
diff --git a/systems/x86_64-linux/puzzlevision/default.nix b/systems/x86_64-linux/puzzlevision/default.nix
index 55e73ba..bb99727 100644
--- a/systems/x86_64-linux/puzzlevision/default.nix
+++ b/systems/x86_64-linux/puzzlevision/default.nix
@@ -24,22 +24,30 @@
     inputs.hardware.nixosModules.common-pc-laptop
     inputs.hardware.nixosModules.common-cpu-intel
     inputs.hardware.nixosModules.common-pc-laptop-ssd
-    # FIXME(@jo): Remember to take a look at how module imports work in Snowfall Lib.
   ];
 
+  nixpkgs = {
+    overlays = [
+      (final: prev: {
+        linuxPackages_latest = prev.linuxPackages_latest.extend (lpfinal: lpprev: {
+          rtl8821ce = lpprev.rtl8821ce.overrideAttrs ({src, ...}: {
+            version = "${lpprev.kernel.version}-unstable-2024-03-26";
+            src = final.fetchFromGitHub {
+              inherit (src) owner repo;
+              rev = "f119398d868b1a3395f40c1df2e08b57b2c882cd";
+              hash = "sha256-EfpKa5ZRBVM5T8EVim3cVX1PP1UM9CyG6tN5Br8zYww=";
+            };
+          });
+        });
+      })
+    ];
+  };
+
   nix = {
-    # Add flake inputs as registries.
-    # Keeps nix3 commands consistent with flake.
-    registry = lib.mapAttrs (_: value: {flake = value;});
-
-    # Add inputs to system's legacy channels.
-    # Makes legacy nix commands consistent with flake as well.
-    nixPath = lib.mapAttrsToList (key: value: "${key}=${value.to.path}") config.nix.registry;
-
     settings = {
       auto-optimise-store = true;
       builders-use-substitutes = true;
-      experimental-features = [ "nix-command" "flakes" "repl-flake" ];
+      experimental-features = [ "nix-command" "flakes" ];
       keep-derivations = true;
       keep-outputs = true;
       max-jobs = "auto";
@@ -48,7 +56,7 @@
 
     # Garbage collection configuration.
     gc = {
-      automatic = true;
+      automatic = false;
       dates = "daily";
       options = "--delete-older-than 3d";
     };
@@ -150,13 +158,18 @@
   hardware.sensor.iio.enable = true;
 
   # Configure system-wide default shell.
-  environment.shells = with pkgs; [ zsh ];
-  users.defaultUserShell = pkgs.zsh;
-  programs.zsh.enable = true;
+  environment.shells = with pkgs; [ fish ];
+  users.defaultUserShell = pkgs.fish;
+  programs.fish.enable = true;
 
   # Configure users.
   snowfallorg.users.jo.admin = true;
 
+  # Configure home-manager
+  home-manager = {
+    backupFileExtension = "homeManagerBackup";
+  };
+
   # Provide users with some sane default packages.
   environment.systemPackages = with pkgs; [
     ### General
@@ -173,5 +186,5 @@
     noto-fonts-color-emoji
   ];
 
-  system.stateVersion = "24.05";
-}
\ No newline at end of file
+  system.stateVersion = "23.05";
+}
diff --git a/systems/x86_64-linux/puzzlevision/hardware-configuration.nix b/systems/x86_64-linux/puzzlevision/hardware-configuration.nix
index 322cf24..23031e0 100644
--- a/systems/x86_64-linux/puzzlevision/hardware-configuration.nix
+++ b/systems/x86_64-linux/puzzlevision/hardware-configuration.nix
@@ -21,28 +21,12 @@
 
   boot.initrd.luks.devices."luks-5fd4fc76-d5c5-46c3-b952-1a7a7ff3a1fc".device = "/dev/disk/by-uuid/5fd4fc76-d5c5-46c3-b952-1a7a7ff3a1fc";
 
-  fileSystems."/var/lib/docker/btrfs" =
-    { device = "/@/@/var/lib/docker/btrfs";
-      fsType = "none";
-      options = [ "bind" ];
-    };
-
   fileSystems."/boot" =
     { device = "/dev/disk/by-uuid/2429-4141";
       fsType = "vfat";
       options = [ "fmask=0022" "dmask=0022" ];
     };
 
-  fileSystems."/var/lib/docker/overlay2/eec00b6d746d533d213790aa0c8e5cca329148c50c0ab1b035020d27e218ed16/merged" =
-    { device = "overlay";
-      fsType = "overlay";
-    };
-
-  fileSystems."/var/lib/docker/overlay2/bc060caf80f8891cd68f21563b8ece131b24b28772c2971a703bac1f5b54e8d1/merged" =
-    { device = "overlay";
-      fsType = "overlay";
-    };
-
   swapDevices = [ ];
 
   # Enables DHCP on each ethernet and wireless interface. In case of scripted networking