about summary refs log tree commit diff stats
path: root/modules/common
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--modules/common/abstract-nord.png.license9
-rw-r--r--modules/common/default.nix99
-rw-r--r--modules/common/hooks/default.nix17
-rwxr-xr-xmodules/common/hooks/scripts/sync-git-repo.sh23
-rw-r--r--modules/common/projects.json69
-rw-r--r--modules/common/projects.json.license9
6 files changed, 202 insertions, 24 deletions
diff --git a/modules/common/abstract-nord.png.license b/modules/common/abstract-nord.png.license
new file mode 100644
index 00000000..eae6a84c
--- /dev/null
+++ b/modules/common/abstract-nord.png.license
@@ -0,0 +1,9 @@
+nixos-config - My current NixOS configuration
+
+Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+SPDX-License-Identifier: GPL-3.0-or-later
+
+This file is part of my nixos-config.
+
+You should have received a copy of the License along with this program.
+If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
diff --git a/modules/common/default.nix b/modules/common/default.nix
index 232c329d..40c08378 100644
--- a/modules/common/default.nix
+++ b/modules/common/default.nix
@@ -1,3 +1,12 @@
+# nixos-config - My current NixOS configuration
+#
+# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+# SPDX-License-Identifier: GPL-3.0-or-later
+#
+# This file is part of my nixos-config.
+#
+# You should have received a copy of the License along with this program.
+# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
 # This file contains common configuration applied to every host.
 # It should only `enable` options defined in the `modules/by-name` directory.
 {
@@ -6,7 +15,10 @@
   lib,
   ...
 }: {
+  # TODO(@bpeetz): Move this file to default options in their respective modules. <2025-05-31>
+
   soispha = {
+    age.enable = true;
     boot.enable = true;
     cleanup.enable = true;
     documentation.enable = true;
@@ -16,26 +28,39 @@
       enableEmoji = true;
     };
 
+    hardware = {
+      enable = lib.mkDefault true;
+    };
     home-manager.enable = true;
     impermanence = {
       enable = true;
 
       directories = [
         "/etc/nixos"
-        "/var/log"
         "/var/lib/systemd"
-        "/var/lib/nixos"
       ];
     };
+
     polkit.enable = true;
     power.enable = true;
+    xdg.enable = true;
 
     services = {
       adb = {
         enable = true;
         user = "soispha";
       };
+      backup = {
+        storagebox = {
+          enable = lib.mkDefault true;
+          user = "u459143-sub1";
+        };
+        local = {
+          enable = lib.mkDefault true;
+        };
+      };
       fwupd.enable = true;
+      mako.enable = true;
       mpd = {
         enable = true;
         directories = let
@@ -56,10 +81,10 @@
       printing.enable = true;
       scanning.enable = true;
       snapper.enable = true;
-      steam.enable = false;
+      water-reminder.enable = true;
       systemDiff.enable = true;
       unison = {
-        enable = true;
+        enable = lib.mkDefault true;
 
         foreign.userName = "soispha";
         dataDir = "${config.home-manager.users.soispha.xdg.dataHome}/unison";
@@ -72,14 +97,21 @@
               config.home-manager.users.soispha.home.file);
         in
           [
-            # already synchronized by the taskserver
+            # TODO(@bpeetz): Move these to their respective modules <2025-05-09>
+            # Already synchronized by TaskChampion sync server
             "~/.local/share/task"
+            # Already synchronized by atuin sync server
+            "~/.local/share/atuin"
+            # Already synchronized by mbsync
+            "~/.local/share/maildir"
 
             # Should not be synchronized
             "~/.local/share/unison"
 
-            # Is just to big to be synchronized (# TODO: Work around that <2024-08-31> )
-            "~/media/music"
+            # These are just to big to be synchronized (# TODO: Work around that <2024-08-31> )
+            "~/media/music/beets.old"
+            "~/media/music/deerix"
+            "~/.local/share/Steam"
           ]
           ++ homeManagerSymlinks;
 
@@ -89,28 +121,38 @@
           "~/.local/share"
           "~/.local/.Trash-1000"
 
-          "~/.mozilla/firefox"
-
           "~/media"
-          "~/school"
+          "~/documents"
           "~/repos"
         ];
       };
     };
 
     programs = {
+      i3bar-river.enable = true;
+      i3status-rust.enable = true;
+
+      qutebrowser = {
+        enable = true;
+      };
+
       nvim = {
         enable = true;
         shell = pkgs.zsh;
       };
-      atuin.enable = true;
+      atuin = {
+        enable = true;
+        enableAge = lib.mkDefault true;
+      };
       direnv.enable = true;
       git.enable = true;
       imv.enable = true;
       less.enable = true;
       lf.enable = true;
+      ly.enable = lib.mkDefault true;
+      gpg.enable = true;
       river = {
-        enable = true;
+        enable = lib.mkDefault true;
         init = {
           rules = [
             {
@@ -144,12 +186,12 @@
               title = "*";
               action = "ssd";
             }
-            # This remove the focus border around Firefox (which is useful because the Firefox is nearly always in its own tag.)
-            {
-              app-id = "firefox";
-              title = "*";
-              action = "csd";
-            }
+            # # This remove the focus border around Firefox (which is useful because the Firefox is nearly always in its own tag.)
+            # {
+            #   app-id = "firefox";
+            #   title = "*";
+            #   action = "csd";
+            # }
           ];
           generalSettings = {
             # background
@@ -172,10 +214,8 @@
             pointer-12951-6505-ZSA_Technology_Labs_Moonlander_Mark_I = [["pointer-accel" "0"] ["accel-profile" "none"]];
           };
           backgroundStart = [
-            pkgs.gammastep
-            pkgs.yambar
+            # TODO(@bpeetz): Move these to systemd units/their own modules <2025-05-18>
 
-            pkgs.mako
             ["${lib.getExe pkgs.swaybg}" "--image" "${./abstract-nord.png}"]
             pkgs.swayidle
             pkgs.alacritty
@@ -183,15 +223,26 @@
         };
       };
       mpv.enable = true;
+      steam.enable = false;
+      ssh.enable = true;
       swaylock.enable = true;
-      taskwarrior.enable = true;
-      yambar.enable = true;
+      timewarrior.enable = true;
+      taskwarrior = {
+        enable = true;
+        enableAge = lib.mkDefault true;
+
+        hooks = import ./hooks {inherit pkgs lib config;};
+      };
+      tskm = {
+        enable = true;
+        projects = builtins.fromJSON (builtins.readFile ./projects.json);
+      };
+      nix-index.enable = true;
       yt.enable = true;
       zathura.enable = true;
       zsh.enable = true;
     };
 
-    sound.enable = true;
     version.enable = true;
   };
 }
diff --git a/modules/common/hooks/default.nix b/modules/common/hooks/default.nix
new file mode 100644
index 00000000..5b694039
--- /dev/null
+++ b/modules/common/hooks/default.nix
@@ -0,0 +1,17 @@
+# nixos-config - My current NixOS configuration
+#
+# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+# SPDX-License-Identifier: GPL-3.0-or-later
+#
+# This file is part of my nixos-config.
+#
+# You should have received a copy of the License along with this program.
+# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
+{
+  pkgs,
+  lib,
+  config,
+}: {
+  sync-git-repos = config.lib.taskwarrior.mkHook "on-add" [pkgs.git] ./scripts/sync-git-repo.sh;
+  sync-git-repos-mod = config.lib.taskwarrior.mkHook "on-modify" [pkgs.git] ./scripts/sync-git-repo.sh;
+}
diff --git a/modules/common/hooks/scripts/sync-git-repo.sh b/modules/common/hooks/scripts/sync-git-repo.sh
new file mode 100755
index 00000000..fe0d0085
--- /dev/null
+++ b/modules/common/hooks/scripts/sync-git-repo.sh
@@ -0,0 +1,23 @@
+#!/usr/bin/env sh
+
+# nixos-config - My current NixOS configuration
+#
+# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+# SPDX-License-Identifier: GPL-3.0-or-later
+#
+# This file is part of my nixos-config.
+#
+# You should have received a copy of the License along with this program.
+# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
+
+task_data="$(task _get rc.data.location)"
+[ "$task_data" ] || die "Taskwarrior should have a location set"
+
+cd "$task_data" || die "(BUG?): Your data.location path is not accessable"
+
+[ -d ./.git/ ] || git init
+
+git add .
+git commit --message="chore: Update" --no-gpg-sign
+
+# vim: ft=sh
diff --git a/modules/common/projects.json b/modules/common/projects.json
new file mode 100644
index 00000000..e8e9bc39
--- /dev/null
+++ b/modules/common/projects.json
@@ -0,0 +1,69 @@
+{
+  "aoc": {
+    "prefix": "programming/advent_of_code"
+  },
+  "book": {
+    "prefix": "book"
+  },
+  "buy": {
+    "prefix": "buy",
+    "subprojects": {
+      "books": {},
+      "pc": {}
+    }
+  },
+  "esc": {},
+  "latex": {
+    "prefix": "programming/latex"
+  },
+  "me": {
+    "subprojects": {
+      "bank": {},
+      "google": {},
+      "health": {},
+      "job": {},
+      "sweden": {}
+    }
+  },
+  "server": {
+    "prefix": "config",
+    "subprojects": {
+      "b-peetz": {},
+      "blog": {},
+      "ci": {},
+      "email": {},
+      "nix-sync": {},
+      "sudo-less": {}
+    }
+  },
+  "smartphone": {
+    "prefix": "hardware"
+  },
+  "system": {
+    "prefix": "config",
+    "subprojects": {
+      "backup": {},
+      "bar": {},
+      "email": {},
+      "firefox": {},
+      "gpg": {},
+      "keyboard": {},
+      "laptop": {},
+      "music": {},
+      "nvim": {},
+      "rss": {},
+      "shell": {},
+      "task": {},
+      "wm": {},
+      "youtube": {}
+    }
+  },
+  "timesinks": {
+    "subprojects": {
+      "games": {},
+      "music": {},
+      "netflix": {},
+      "youtube": {}
+    }
+  }
+}
diff --git a/modules/common/projects.json.license b/modules/common/projects.json.license
new file mode 100644
index 00000000..eae6a84c
--- /dev/null
+++ b/modules/common/projects.json.license
@@ -0,0 +1,9 @@
+nixos-config - My current NixOS configuration
+
+Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+SPDX-License-Identifier: GPL-3.0-or-later
+
+This file is part of my nixos-config.
+
+You should have received a copy of the License along with this program.
+If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.