diff --git a/.tangled/workflows/checks.yml b/.tangled/workflows/checks.yml index f39603d..713e2ce 100644 --- a/.tangled/workflows/checks.yml +++ b/.tangled/workflows/checks.yml @@ -11,4 +11,4 @@ steps: - name: "Run checks" command: | set -euo pipefail - nix flake check + nix --extra-experimental-features pipe-operators flake check diff --git a/LICENSE b/LICENSE index be3f7b2..616962f 100644 --- a/LICENSE +++ b/LICENSE @@ -630,11 +630,11 @@ state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. - Copyright (C) + Copyright (C) 2026 Adam0 This program is free software: you can redistribute it and/or modify - it under the terms of the GNU Affero General Public License as published by - the Free Software Foundation, either version 3 of the License, or + it under the terms of the GNU Affero General Public License as published + by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, diff --git a/flake.lock b/flake.lock index d2b90b8..bfb5edc 100644 --- a/flake.lock +++ b/flake.lock @@ -48,11 +48,11 @@ "uv2nix": "uv2nix" }, "locked": { - "lastModified": 1782385544, - "narHash": "sha256-b9k01gZV57mbfd2unu3hU9uROeG/9MdHZX7CGJpYHUs=", + "lastModified": 1783089004, + "narHash": "sha256-DQFZGbgeHSKkztG9Sy72mfrBxHq87XOysLgGT95a8As=", "owner": "nix-community", "repo": "authentik-nix", - "rev": "c2144eb8a943341da3f7982e663b060b3b39e657", + "rev": "d08d2c853ee68752b225ede0fa770b8fe131d7ec", "type": "github" }, "original": { @@ -165,11 +165,11 @@ "cachyos-kernel": { "flake": false, "locked": { - "lastModified": 1781883168, - "narHash": "sha256-raAojJGk0aWdscfFn/9ikZ6V5oUuAZcAz5kjAZ2QN3E=", + "lastModified": 1782811891, + "narHash": "sha256-xLfMSeSKKHmYCESe9Ca24eSXUsEV5z1oC59Cqfb7s8U=", "owner": "CachyOS", "repo": "linux-cachyos", - "rev": "daed450e9b1a4fadfef68fb4fa5e2f3391fedb34", + "rev": "dc2bfb6686ce41d04185d1a3a11b2b6fc24aeca6", "type": "github" }, "original": { @@ -181,11 +181,11 @@ "cachyos-kernel-patches": { "flake": false, "locked": { - "lastModified": 1782242233, - "narHash": "sha256-AUwTZq++PBq0qjDVFKqD0AZNNwa0b1RK41bM9XMbkW8=", + "lastModified": 1782814529, + "narHash": "sha256-YGYe7cy8vUFguQzdCt6FP1B/viF53cJdFZhNJ8Rpp5Y=", "owner": "CachyOS", "repo": "kernel-patches", - "rev": "19250dcc39862169961756c733b8a6ba77754c22", + "rev": "f98908d8b5cacc4c24a6039ffd9f41f6a0de4ba2", "type": "github" }, "original": { @@ -503,11 +503,11 @@ ] }, "locked": { - "lastModified": 1778716662, - "narHash": "sha256-m1Yf0wZ8j1OHjTc2UwHwyQRSnNeSgLJOd7q5Y45hzi4=", + "lastModified": 1782949081, + "narHash": "sha256-vp6Y/Grm98ESt6ceOkWiHWyZRDV3J1RID4w+6NWK9yA=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "f7c1a2d347e4c52d5fb8d10cb4d94b5884e546fb", + "rev": "17c9d6cdfc60c64f4ee8d306f9bc0b4ccb51481e", "type": "github" }, "original": { @@ -521,11 +521,11 @@ "nixpkgs-lib": "nixpkgs-lib" }, "locked": { - "lastModified": 1778716662, - "narHash": "sha256-m1Yf0wZ8j1OHjTc2UwHwyQRSnNeSgLJOd7q5Y45hzi4=", + "lastModified": 1782949081, + "narHash": "sha256-vp6Y/Grm98ESt6ceOkWiHWyZRDV3J1RID4w+6NWK9yA=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "f7c1a2d347e4c52d5fb8d10cb4d94b5884e546fb", + "rev": "17c9d6cdfc60c64f4ee8d306f9bc0b4ccb51481e", "type": "github" }, "original": { @@ -665,11 +665,11 @@ ] }, "locked": { - "lastModified": 1782839684, - "narHash": "sha256-vzs4SBgPsK4aNzlJR2PpFwtARazXMOxZonQnDz0YHxk=", + "lastModified": 1783099620, + "narHash": "sha256-prQSM9PGnrfSaqknJOZ3DCQKbpMiXAWLVC5SHbjLcJ4=", "owner": "nix-community", "repo": "home-manager", - "rev": "2a37d71bbe69e1522ddabf03a4cea0374958bdbe", + "rev": "b2e4390ff35319c52935d6a700b615da4c0f204d", "type": "github" }, "original": { @@ -695,17 +695,17 @@ ] }, "locked": { - "lastModified": 1780858356, - "narHash": "sha256-3imyFQXBp08TMWMVljPsYXjBFCdtLI5qwmHh7tHxQQg=", - "owner": "adam01110", - "repo": "hylix", - "rev": "86af0f084df78612981136a7389f033b3bb3b9a6", - "type": "github" + "lastModified": 1783119574, + "narHash": "sha256-jV2wdadHsBH4wNRSmxj0/KIXsmOhWzB6n+aVMRDjLeU=", + "ref": "refs/heads/main", + "rev": "ba06fe85d5708340d5bbbc6eeaca5da50f7e64e2", + "revCount": 14, + "type": "git", + "url": "https://tangled.org/adam0.dev/hylix" }, "original": { - "owner": "adam01110", - "repo": "hylix", - "type": "github" + "type": "git", + "url": "https://tangled.org/adam0.dev/hylix" } }, "hyprcursor": { @@ -1145,11 +1145,11 @@ "nixpkgs": "nixpkgs_5" }, "locked": { - "lastModified": 1782415778, - "narHash": "sha256-Qts73QQA+lADfxWjonL3Q1JcZssVZPsQI38L3qZyS0o=", + "lastModified": 1783018940, + "narHash": "sha256-fQ4+88WbgRkQYCMF37GYNuthHojlYhvfIAKJpSynVyk=", "owner": "xddxdd", "repo": "nix-cachyos-kernel", - "rev": "1740ec90e7b07730c212a3a1ff5e71af08a5270b", + "rev": "3a4f4055db5f96ce696b5704c996d5bffbcda58d", "type": "github" }, "original": { @@ -1203,11 +1203,11 @@ ] }, "locked": { - "lastModified": 1782636943, - "narHash": "sha256-ripjZa7BBLwL1uS5VJF3s/VpZpWt5ZIQEvkJ/FJNpQw=", + "lastModified": 1783023993, + "narHash": "sha256-gaOvvY/lL1eWoSmSRO17pWry8R49AuPMrF4nzu47K5o=", "owner": "nix-community", "repo": "nix-index-database", - "rev": "058b1f9381fa79fcda49982370a750ff92dbba43", + "rev": "f8ed6cdcb1fd28a6ab7b61f4467a4f67fe2d9074", "type": "github" }, "original": { @@ -1237,11 +1237,11 @@ ] }, "locked": { - "lastModified": 1783101455, - "narHash": "sha256-4E+DNHGPLuLU0gq4fiFNqj0p+IdIrCzL1tH5F12iFpc=", + "lastModified": 1783109830, + "narHash": "sha256-eAMJWngshgYl9PKfJus6R/HsKH8dVMgXUgUEuKqPoDA=", "ref": "refs/heads/main", - "rev": "a3c2693d9f5244f6ecd32e74602a2363bb76f01c", - "revCount": 80, + "rev": "9981ffb572c82154e244003cbf5766bbb3f17b06", + "revCount": 86, "type": "git", "url": "https://tangled.org/adam0.dev/nix-userstyles" }, @@ -1260,11 +1260,11 @@ "nixpkgs-nixcord": "nixpkgs-nixcord" }, "locked": { - "lastModified": 1782838476, - "narHash": "sha256-SLsFaWwN/5qJNgq4F87yK64KU+jXRUHqSUHRau38AWw=", + "lastModified": 1783074296, + "narHash": "sha256-PhKjyxSpIEf1kNvySyoDx4XNYWghi69KwqH+AnTxO7Y=", "owner": "kaylorben", "repo": "nixcord", - "rev": "e055aaffc81400b8b59495ed8ddb4cd6401d3850", + "rev": "5f428154cf5d148f15c602f3afd04983e68ef364", "type": "github" }, "original": { @@ -1275,11 +1275,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1781577229, - "narHash": "sha256-lrp67w8AulE9Ks53n27I45ADSzbOCn4H+CNW1Ck8B+8=", + "lastModified": 1782467914, + "narHash": "sha256-pGvFkM8N0xEkIIXDe5YYfbEAvHrk4IxBrjB/x8OomhE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "567a49d1913ce81ac6e9582e3553dd90a955875f", + "rev": "e73de5be04e0eff4190a1432b946d469c794e7b4", "type": "github" }, "original": { @@ -1339,11 +1339,11 @@ }, "nixpkgs-lib": { "locked": { - "lastModified": 1777168982, - "narHash": "sha256-GOkGPcboWE9BmGCRMLX3worL4EMnsnG8MyKmXNeYuhQ=", + "lastModified": 1782614948, + "narHash": "sha256-ePjCwr1sNm9NYUqywL7QfK3JnlS015msC+eBu2zKlp8=", "owner": "nix-community", "repo": "nixpkgs.lib", - "rev": "f5901329dade4a6ea039af1433fb087bd9c1fe14", + "rev": "db3f255737b94216eb71cce308e2912cf6bc2d7c", "type": "github" }, "original": { @@ -1430,11 +1430,11 @@ }, "nixpkgs_5": { "locked": { - "lastModified": 1782378976, - "narHash": "sha256-UqQgBlQATXM3aBvzTRE/1wxHrCdKg5/ePlXfG/7Eqd8=", + "lastModified": 1783003425, + "narHash": "sha256-CLVsEepcFedoiIwXVlAYam9bbTt3mmTJXgGrvoLDDFM=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "5df71f3d167f0aad71658608361c1301147b9eb6", + "rev": "6147971a7160e60cf691651d97cc8411395f5d90", "type": "github" }, "original": { @@ -1462,11 +1462,11 @@ }, "nixpkgs_7": { "locked": { - "lastModified": 1782760764, - "narHash": "sha256-L3gmggVc+GxfmG8b6bWL0wkiniDNppQRsfaKc0IfyRA=", - "rev": "7a1a64774a5fd0b0cd39ac95d0e170ace8b266a0", + "lastModified": 1782918843, + "narHash": "sha256-mFP086y1bNA1g9AsY/pCue3H3W2R7ayroHyRbZrcMf0=", + "rev": "e8273b29fe1390ec8d4603f2477357555291432e", "type": "tarball", - "url": "https://releases.nixos.org/nixpkgs/nixpkgs-26.11pre1024597.7a1a64774a5f/nixexprs.tar.xz" + "url": "https://releases.nixos.org/nixpkgs/nixpkgs-26.11pre1025900.e8273b29fe13/nixexprs.tar.xz" }, "original": { "type": "tarball", @@ -1483,11 +1483,11 @@ ] }, "locked": { - "lastModified": 1780949817, - "narHash": "sha256-2oJuPyt+4dd+ZzO7TFqpmkSAAYpRg9SF4eV8kJGl6Tk=", + "lastModified": 1783017890, + "narHash": "sha256-bAzrtN0GDMH0dOZkgeI3zSxfFs2rdD3pMuzOxvTF0bs=", "owner": "noctalia-dev", "repo": "noctalia", - "rev": "f816591afc2f2f606d1f0cf70b51e95c04a7a8aa", + "rev": "a48885b9fec485c903c955749a7da6e30147cd38", "type": "github" }, "original": { @@ -1529,11 +1529,11 @@ ] }, "locked": { - "lastModified": 1782861039, - "narHash": "sha256-4Lo1FCtYCpSfpbY5xznypLyQ7MqpZto3AjK21oecgqA=", + "lastModified": 1783116538, + "narHash": "sha256-/utah2I8EyJiZg0PWbXtT3cNoYhiu90jJktnOLRO5Sc=", "owner": "nix-community", "repo": "NUR", - "rev": "7e683e9f863048d51e8edb19199d5e01c6373e13", + "rev": "d91274fa07b67388f77900181514ea567e0bec8a", "type": "github" }, "original": { @@ -1757,11 +1757,11 @@ ] }, "locked": { - "lastModified": 1782165805, - "narHash": "sha256-478kKQBvK6SYTOdN2h9jhKJv94nbXRbFMfuL1WshErg=", + "lastModified": 1783104586, + "narHash": "sha256-vSLKc7m34/g5xH4dwmNZSqxc5OcHeE3qiG3EIz6bJKs=", "owner": "Mic92", "repo": "sops-nix", - "rev": "56b24064fdcaedca53553b1a6d607fd23b613a24", + "rev": "1ebd41717762d837d5115f7108522c29cdb00fbb", "type": "github" }, "original": { @@ -1778,11 +1778,11 @@ "systems": "systems_8" }, "locked": { - "lastModified": 1782633406, - "narHash": "sha256-JOSMk12GgnTLVlUSCuKkqyUF6cw82wl7t7e1WuFfg5s=", + "lastModified": 1782898510, + "narHash": "sha256-7QVN7ijsXbIBRrI9LdXfeoFktTS0I6HZya9tu6+STrs=", "owner": "Gerg-L", "repo": "spicetify-nix", - "rev": "5ff9a6ca9dcbad7cccea2c97d30237468b16feda", + "rev": "9cabea6f5973ec01f60080ea50f54f8f6d74dc95", "type": "github" }, "original": { @@ -1815,11 +1815,11 @@ "tinted-zed": "tinted-zed" }, "locked": { - "lastModified": 1782771270, - "narHash": "sha256-1W5Oga37XF1fzjpUut98j32NS9XcLQ5HmZDuOqSSrrY=", + "lastModified": 1783101802, + "narHash": "sha256-/Ti+wDco0f3C9s94RxyBKJyc0BklwYh0a/jFWKeHNYw=", "owner": "danth", "repo": "stylix", - "rev": "47571deb317bb1e53fbbe9c3cbf2a941cd94f794", + "rev": "718c14e8ecba215a65ff955c187fadb9732ddd01", "type": "github" }, "original": { @@ -2182,11 +2182,11 @@ ] }, "locked": { - "lastModified": 1782554936, - "narHash": "sha256-tH3MNTu/o2xzYXnRYsl9/Q5k6mjIrcqWZ+qbqzdN2L8=", + "lastModified": 1783033669, + "narHash": "sha256-9FuBZ4xiu0z/3s2+GKH98WV5Pu5z1gDNdhSXu5leQYE=", "owner": "0xc000022070", "repo": "zen-browser-flake", - "rev": "b3df24cd84ddecf5f13c48be9bdd99cf3bc7e1dc", + "rev": "0cd53b6953919cb6858db24fd7dc95714dcab2e7", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 025bfc1..5d979f6 100644 --- a/flake.nix +++ b/flake.nix @@ -1,7 +1,7 @@ # DO-NOT-EDIT. This file was auto-generated using github:vic/flake-file. # Use `nix run .#write-flake` to regenerate it. { - outputs = inputs: inputs.flake-parts.lib.mkFlake { inherit inputs; } (inputs.import-tree ./modules); + outputs = inputs: inputs.flake-parts.lib.mkFlake {inherit inputs;} (inputs.import-tree ./modules); inputs = { authentik-nix = { @@ -23,7 +23,7 @@ inputs.nixpkgs.follows = "nixpkgs"; }; hylix = { - url = "github:adam01110/hylix"; + url = "git+https://tangled.org/adam0.dev/hylix"; inputs = { flake-parts.follows = "flake-parts"; import-tree.follows = "import-tree"; diff --git a/lib/starship.nix b/lib/starship.nix index 89d1275..6ff6e99 100644 --- a/lib/starship.nix +++ b/lib/starship.nix @@ -1,6 +1,46 @@ {lib}: let - inherit (lib) genAttrs; + inherit (lib) genAttrs hasPrefix; in { + # Convert hex colors to starship-jj TrueColor values. + starshipJjTrueColor = value: let + hexDigits = { + "0" = 0; + "1" = 1; + "2" = 2; + "3" = 3; + "4" = 4; + "5" = 5; + "6" = 6; + "7" = 7; + "8" = 8; + "9" = 9; + A = 10; + B = 11; + C = 12; + D = 13; + E = 14; + F = 15; + a = 10; + b = 11; + c = 12; + d = 13; + e = 14; + f = 15; + }; + hex = + if hasPrefix "#" value + then builtins.substring 1 6 value + else value; + hexByte = offset: hexDigits.${builtins.substring offset 1 hex} * 16 + hexDigits.${builtins.substring (offset + 1) 1 hex}; + in { + TrueColor = { + r = hexByte 0; + g = hexByte 2; + b = hexByte 4; + }; + }; + + # keep-sorted start block=yes newline_separated=yes # Build a wrapped Starship segment that uses the shared `base01` background. starshipBase01Segment = body: fg: { format = "[ ](#00000000)[ ](bg:base01)[${body}]($style)[ ](bg:base01)"; @@ -12,4 +52,5 @@ in { # Disable Starship modules by name. starshipDisabledModules = modules: genAttrs modules (_: {disabled = true;}); + # keep-sorted end } diff --git a/modules/desktop/hyprland/default.nix b/modules/desktop/hyprland/default.nix index d615b8d..f39a242 100644 --- a/modules/desktop/hyprland/default.nix +++ b/modules/desktop/hyprland/default.nix @@ -3,7 +3,7 @@ hyprland.url = "github:hyprwm/Hyprland?ref=v0.55.4"; hylix = { - url = "github:adam01110/hylix"; + url = "git+https://tangled.org/adam0.dev/hylix"; inputs = { # keep-sorted start flake-parts.follows = "flake-parts"; diff --git a/modules/desktop/hyprland/keybinds/screenshots-and-color.nix b/modules/desktop/hyprland/keybinds/screenshots-and-color.nix index 43bafc5..7e81b73 100644 --- a/modules/desktop/hyprland/keybinds/screenshots-and-color.nix +++ b/modules/desktop/hyprland/keybinds/screenshots-and-color.nix @@ -13,7 +13,7 @@ # keep-sorted start hyprpicker = getExe pkgs.hyprpicker; hyprshot = getExe config.programs.hyprshot.package; - screenshotDir = "${config.xdg.userDirs.pictures}/Screenshots"; + screenshotDir = "${config.xdg.userDirs.pictures}/screenshots"; # keep-sorted end in { config.programs.hylix.bindGroups = [ diff --git a/modules/pkgs/default.nix b/modules/pkgs/default.nix index 10bd574..89bf765 100644 --- a/modules/pkgs/default.nix +++ b/modules/pkgs/default.nix @@ -16,6 +16,7 @@ performant-mode pptx2md-adapter proton-port-forward + rclone-bisync-runner systemd-status-preview telescope-all-recent-nvim text-preview diff --git a/modules/pkgs/preview/text.nix b/modules/pkgs/preview/text.nix index 9438ee7..03bc9db 100644 --- a/modules/pkgs/preview/text.nix +++ b/modules/pkgs/preview/text.nix @@ -3,8 +3,10 @@ packages.text-preview = pkgs.writeShellApplication { name = "text-preview"; runtimeInputs = with pkgs; [ - file + # keep-sorted start bat + file + # keep-sorted end ]; text = '' path="''${1-}" diff --git a/modules/pkgs/rclone-bisync-runner.nix b/modules/pkgs/rclone-bisync-runner.nix new file mode 100644 index 0000000..fdb39bb --- /dev/null +++ b/modules/pkgs/rclone-bisync-runner.nix @@ -0,0 +1,50 @@ +{ + perSystem = {pkgs, ...}: let + inherit (pkgs) writeShellApplication; + in { + packages.rclone-bisync-runner = writeShellApplication { + name = "rclone-bisync-runner"; + + runtimeInputs = with pkgs; [ + # keep-sorted start + coreutils + rclone + # keep-sorted end + ]; + + text = '' + set -eu + + : "''${LOCAL_PATH:?LOCAL_PATH is required}" + : "''${REMOTE_PATH:?REMOTE_PATH is required}" + : "''${WORK_DIR:?WORK_DIR is required}" + + initialized_marker="$WORK_DIR/initialized" + + mkdir -p "$LOCAL_PATH" "$WORK_DIR" + + rclone_args=( + bisync + "$LOCAL_PATH" + "$REMOTE_PATH" + --workdir "$WORK_DIR" + --create-empty-src-dirs + --resilient + --recover + --max-lock 2m + --conflict-resolve newer + --verbose + ) + + rclone mkdir "$REMOTE_PATH" + + if [ -e "$initialized_marker" ]; then + rclone "''${rclone_args[@]}" + else + rclone "''${rclone_args[@]}" --resync-mode newer + touch "$initialized_marker" + fi + ''; + }; + }; +} diff --git a/modules/profiles/base.nix b/modules/profiles/base.nix index 0f96a11..fd9c768 100644 --- a/modules/profiles/base.nix +++ b/modules/profiles/base.nix @@ -70,10 +70,14 @@ # keep-sorted end # Programs + # keep-sorted start + delta git + jujutsu nur sops shellAbbreviations + # keep-sorted end # CLI # keep-sorted start diff --git a/modules/profiles/personal.nix b/modules/profiles/personal.nix index 1482319..9767832 100644 --- a/modules/profiles/personal.nix +++ b/modules/profiles/personal.nix @@ -85,6 +85,7 @@ cpond diffnav direnv + gen-license gitfetch onefetch pipes @@ -117,13 +118,17 @@ seahorse showtime spotify + tangled zaread zathura zen # keep-sorted end # Services + # keep-sorted start flatpak + rclone + # keep-sorted end ]; }; } diff --git a/modules/profiles/stylix/server.nix b/modules/profiles/stylix/server.nix index 4aad4b8..9984466 100644 --- a/modules/profiles/stylix/server.nix +++ b/modules/profiles/stylix/server.nix @@ -4,6 +4,15 @@ stylix = { fonts = { + # keep-sorted start block=yes + emoji = { + name = "Noto Color Emoji"; + package = pkgs.noto-fonts-color-emoji; + }; + monospace = { + name = "DejaVu Sans Mono"; + package = pkgs.dejavu_fonts; + }; sansSerif = { name = "DejaVu Sans"; package = pkgs.dejavu_fonts; @@ -12,14 +21,7 @@ name = "DejaVu Serif"; package = pkgs.dejavu_fonts; }; - monospace = { - name = "DejaVu Sans Mono"; - package = pkgs.dejavu_fonts; - }; - emoji = { - name = "Noto Color Emoji"; - package = pkgs.noto-fonts-color-emoji; - }; + # keep-sorted end }; targets.console.enable = true; diff --git a/modules/programs/cli/gen-license.nix b/modules/programs/cli/gen-license.nix new file mode 100644 index 0000000..1cdc94a --- /dev/null +++ b/modules/programs/cli/gen-license.nix @@ -0,0 +1,5 @@ +{ + flake.modules.homeManager.gen-license = {pkgs, ...}: { + home.packages = [pkgs.gen-license]; + }; +} diff --git a/modules/programs/cli/gh.nix b/modules/programs/cli/gh.nix index d167ed3..19e1a88 100644 --- a/modules/programs/cli/gh.nix +++ b/modules/programs/cli/gh.nix @@ -14,8 +14,17 @@ ghWrapper = writeShellApplication { name = "gh"; - runtimeInputs = [pkgs.coreutils]; + runtimeInputs = with pkgs; [ + # keep-sorted start + coreutils + jujutsu + # keep-sorted end + ]; text = '' + if [ -z "''${GIT_DIR:-}" ] && git_dir="$(jj git root 2>/dev/null)"; then + export GIT_DIR="$git_dir" + fi + GH_TOKEN="$(cat "${config.sops.secrets.github_token.path}")" export GH_TOKEN exec "${getExe pkgs.gh}" "$@" diff --git a/modules/programs/cli/starship/format.nix b/modules/programs/cli/starship/format.nix index c88da86..77e22f5 100644 --- a/modules/programs/cli/starship/format.nix +++ b/modules/programs/cli/starship/format.nix @@ -28,14 +28,7 @@ "$jobs" "$fossil_branch" - "[ ](#00000000)" - "[ ](bg:base01)" - "$git_branch" - "[ ](bg:base01)" - "$git_commit" - "$git_state" - "$git_status" - "[ ](bg:base01)" + "\${custom.jj}" "$package" diff --git a/modules/programs/cli/starship/git.nix b/modules/programs/cli/starship/git.nix deleted file mode 100644 index e269212..0000000 --- a/modules/programs/cli/starship/git.nix +++ /dev/null @@ -1,47 +0,0 @@ -{ - flake.modules.homeManager.starship = { - programs.starship.settings = { - # keep-sorted start block=yes newline_separated=yes - fossil_branch = { - format = "[$symbol$branch]($style) "; - symbol = " "; - style = "fg:magenta bold"; - }; - - git_branch = { - format = "[$symbol$branch(:$remote_branch)]($style)"; - symbol = " "; - style = "bg:base01 fg:magenta bold"; - }; - - git_commit = { - format = "[\\($hash$tag\\)]($style)"; - style = "bg:base01 fg:green bold"; - tag_disabled = false; - only_detached = false; - tag_symbol = "  "; - }; - - git_state = { - format = "[ $state( $progress_current/$progress_total)]($style)"; - style = "bg:base01 fg:yellow bold"; - # keep-sorted start - am = "am"; - am_or_rebase = "am/rebase"; - bisect = "bisecting"; - cherry_pick = "cherry-picking"; - merge = "merging"; - rebase = "rebasing"; - revert = "reverting"; - # keep-sorted end - }; - - git_status = { - format = "([ \\[$all_status$ahead_behind\\]]($style))"; - style = "bg:base01 fg:base08 bold"; - deleted = ""; - }; - # keep-sorted end - }; - }; -} diff --git a/modules/programs/cli/starship/jujutsu.nix b/modules/programs/cli/starship/jujutsu.nix new file mode 100644 index 0000000..2d5909c --- /dev/null +++ b/modules/programs/cli/starship/jujutsu.nix @@ -0,0 +1,168 @@ +{ + flake.modules.homeManager.starship = { + # keep-sorted start + config, + lib, + pkgs, + # keep-sorted end + ... + }: let + inherit (lib) getExe; + inherit (lib.self) starshipJjTrueColor; + inherit + (builtins.mapAttrs (_: starshipJjTrueColor) config.lib.stylix.colors.withHashtag) + # keep-sorted start + base01 + base08 + base0A + base0B + base0E + # keep-sorted end + ; + + starshipJjConfig = (pkgs.formats.toml {}).generate "starship-jj.toml" { + bookmarks = { + exclude = []; + search_depth = 100; + }; + + module_separator = " "; + reset_color = false; + + module = [ + { + type = "Symbol"; + symbol = " "; + color = base0E; + bg_color = base01; + bold = true; + } + + { + type = "Bookmarks"; + separator = " "; + color = base0E; + bg_color = base01; + bold = true; + behind_symbol = "⇡"; + ignore_empty_commits = "None"; + max_bookmarks = 1; + surround_with_quotes = false; + } + + { + type = "Commit"; + color = base0B; + bg_color = base01; + bold = true; + + change = { + color = base0B; + bg_color = base01; + bold = true; + }; + + commit = { + color = base0B; + bg_color = base01; + bold = true; + }; + + empty_text = "(no description set)"; + max_length = 24; + previous_message_symbol = "⇣"; + show_previous_if_empty = false; + surround_with_quotes = false; + } + + { + type = "State"; + separator = " "; + + conflict = { + text = "conflict"; + color = base0A; + bg_color = base01; + bold = true; + }; + + divergent = { + text = "divergent"; + color = base0A; + bg_color = base01; + bold = true; + }; + + empty = { + text = "empty"; + color = base0A; + bg_color = base01; + bold = true; + }; + + hidden = { + text = "hidden"; + color = base0A; + bg_color = base01; + bold = true; + }; + + immutable = { + text = "immutable"; + color = base0A; + bg_color = base01; + bold = true; + }; + } + + { + type = "Metrics"; + color = base08; + bg_color = base01; + bold = true; + hide_if_empty = true; + template = "[{changed} {added}{removed}]"; + + changed_files = { + color = base08; + bg_color = base01; + bold = true; + }; + + added_lines = { + prefix = "+"; + color = base08; + bg_color = base01; + bold = true; + }; + + removed_lines = { + prefix = "-"; + color = base08; + bg_color = base01; + bold = true; + }; + } + ]; + }; + in { + programs.starship.settings = { + # keep-sorted start block=yes newline_separated=yes + custom.jj = { + command = "${getExe pkgs.starship-jj} --ignore-working-copy starship prompt --starship-config ${starshipJjConfig}"; + format = "[ ](#00000000)[ ](bg:base01)[$output]($style)[ ](bg:base01)"; + ignore_timeout = true; + style = "bg:base01 fg:base0E bold"; + use_stdin = false; + when = "${getExe pkgs.starship-jj} root --quiet"; + }; + + fossil_branch = { + format = "[$symbol$branch]($style) "; + symbol = " "; + style = "fg:base0E bold"; + }; + # keep-sorted end + }; + }; +} diff --git a/modules/programs/delta.nix b/modules/programs/delta.nix new file mode 100644 index 0000000..9ae329c --- /dev/null +++ b/modules/programs/delta.nix @@ -0,0 +1,51 @@ +{ + flake.modules.homeManager.delta = { + # keep-sorted start + lib, + osConfig, + # keep-sorted end + ... + }: let + inherit (lib.self) blendHex; + + colors = osConfig.lib.stylix.colors.withHashtag; + in { + programs.delta = { + enable = true; + enableGitIntegration = true; + + options = with colors; { + true-color = "always"; + line-numbers = true; + side-by-side = true; + syntax-theme = "base16-stylix"; + + # Let the desktop MIME handler open linked files. + hyperlinks = true; + hyperlinks-file-link-format = "file://{path}#{line}"; + + # keep-sorted start + blame-palette = "${base00} ${base01} ${base02}"; + file-style = "${base0D} bold"; + hunk-header-decoration-style = "${base0D} ul"; + hunk-header-file-style = "${base0D} ul bold"; + hunk-header-line-number-style = "${base0A} box bold"; + line-numbers-left-style = base0D; + line-numbers-minus-style = base08; + line-numbers-plus-style = base0B; + line-numbers-right-style = base0D; + line-numbers-zero-style = base03; + merge-conflict-ours-diff-header-decoration-style = "${base0D} box"; + merge-conflict-ours-diff-header-style = "${base0A} bold"; + merge-conflict-theirs-diff-header-decoration-style = "${base0D} box"; + merge-conflict-theirs-diff-header-style = "${base0A} bold"; + minus-emph-style = "${base00} ${blendHex 34 base00 base08}"; + minus-style = "syntax ${blendHex 22 base00 base08}"; + plus-emph-style = "${base00} ${blendHex 34 base00 base0B}"; + plus-style = "syntax ${blendHex 22 base00 base0B}"; + whitespace-error-style = "${base00} bold"; + # keep-sorted end + }; + }; + }; +} diff --git a/modules/programs/git.nix b/modules/programs/git.nix index 2778749..5917f2e 100644 --- a/modules/programs/git.nix +++ b/modules/programs/git.nix @@ -2,14 +2,11 @@ flake.modules.homeManager.git = { # keep-sorted start config, - lib, - osConfig, pkgs, vars, # keep-sorted end ... }: let - inherit (lib.self) blendHex; inherit (vars) # keep-sorted start @@ -19,8 +16,6 @@ username # keep-sorted end ; - - colors = osConfig.lib.stylix.colors.withHashtag; in { sops = { secrets = { @@ -43,14 +38,8 @@ home.file.".ssh/git.pub".text = gitPublicSshkey; programs = { - git = let - # Use git full so the libsecret credential helper is available. - gitPackage = pkgs.gitFull; - in { + git = { enable = true; - lfs.enable = true; - - package = gitPackage; settings = { user = { @@ -66,50 +55,12 @@ # keep-sorted end # Store https credentials via the desktop keyring (libsecret). - credential.helper = "${gitPackage}/libexec/git-core/git-credential-libsecret"; + credential.helper = "${pkgs.git}/libexec/git-core/git-credential-libsecret"; }; # Include the sops-generated snippet to set the email. includes = [{inherit (config.sops.templates."git-config") path;}]; }; - - delta = { - enable = true; - enableGitIntegration = true; - - options = with colors; { - true-color = "always"; - line-numbers = true; - side-by-side = true; - syntax-theme = "base16-stylix"; - - # Let the desktop MIME handler open linked files. - hyperlinks = true; - hyperlinks-file-link-format = "file://{path}#{line}"; - - # keep-sorted start - blame-palette = "${base00} ${base01} ${base02}"; - file-style = "${base0D} bold"; - hunk-header-decoration-style = "${base0D} ul"; - hunk-header-file-style = "${base0D} ul bold"; - hunk-header-line-number-style = "${base0A} box bold"; - line-numbers-left-style = base0D; - line-numbers-minus-style = base08; - line-numbers-plus-style = base0B; - line-numbers-right-style = base0D; - line-numbers-zero-style = base03; - merge-conflict-ours-diff-header-decoration-style = "${base0D} box"; - merge-conflict-ours-diff-header-style = "${base0A} bold"; - merge-conflict-theirs-diff-header-decoration-style = "${base0D} box"; - merge-conflict-theirs-diff-header-style = "${base0A} bold"; - minus-emph-style = "${base00} ${blendHex 34 base00 base08}"; - minus-style = "syntax ${blendHex 22 base00 base08}"; - plus-emph-style = "${base00} ${blendHex 34 base00 base0B}"; - plus-style = "syntax ${blendHex 22 base00 base0B}"; - whitespace-error-style = "${base00} bold"; - # keep-sorted end - }; - }; }; # keep-sorted end }; diff --git a/modules/programs/gui/ghostty/settings.nix b/modules/programs/gui/ghostty/settings.nix index 70ec881..d57482e 100644 --- a/modules/programs/gui/ghostty/settings.nix +++ b/modules/programs/gui/ghostty/settings.nix @@ -5,33 +5,43 @@ font-feature = "-calt, -liga, -dlig"; # Cursor settings. + # keep-sorted start cursor-style = "block"; cursor-style-blink = true; shell-integration-features = "no-cursor,ssh-terminfo,ssh-env"; + # keep-sorted end # Appearance settings. - window-theme = "system"; - window-decoration = "none"; + # keep-sorted start gtk-titlebar = false; + resize-overlay = "never"; + window-decoration = "none"; window-padding-x = 2; window-padding-y = 2; - resize-overlay = "never"; + window-theme = "system"; + # keep-sorted end # Misc settings. - copy-on-select = false; + # keep-sorted start auto-update = "off"; confirm-close-surface = false; + copy-on-select = false; right-click-action = "ignore"; + # keep-sorted end # Improve startup time. - quit-after-last-window-closed = false; + # keep-sorted start gtk-single-instance = true; + quit-after-last-window-closed = false; + # keep-sorted end # Disable directory inherit. - working-directory = "home"; - window-inherit-working-directory = false; - tab-inherit-working-directory = false; + # keep-sorted start split-inherit-working-directory = false; + tab-inherit-working-directory = false; + window-inherit-working-directory = false; + working-directory = "home"; + # keep-sorted end }; }; } diff --git a/modules/programs/gui/tangled.nix b/modules/programs/gui/tangled.nix new file mode 100644 index 0000000..d6b32fa --- /dev/null +++ b/modules/programs/gui/tangled.nix @@ -0,0 +1,33 @@ +{ + flake.modules.homeManager.tangled = {pkgs, ...}: let + inherit + (pkgs) + # keep-sorted start + installShellFiles + runCommand + # keep-sorted end + ; + + tang = pkgs.nur.repos.adam0.tang; + tang-completions = runCommand "tang-completions" {nativeBuildInputs = [installShellFiles tang];} '' + installShellCompletion --cmd tang \ + --bash <(tang completion bash) \ + --fish <(tang completion fish) \ + --zsh <(tang completion zsh) + ''; + in { + home.packages = [tang]; + + programs.bash.initExtra = '' + source ${tang-completions}/share/bash-completion/completions/tang + ''; + + programs.fish.interactiveShellInit = '' + source ${tang-completions}/share/fish/vendor_completions.d/tang.fish + ''; + + programs.zsh.initContent = '' + source ${tang-completions}/share/zsh/site-functions/_tang + ''; + }; +} diff --git a/modules/programs/gui/zen/search.nix b/modules/programs/gui/zen/search.nix index 2318601..b9383cc 100644 --- a/modules/programs/gui/zen/search.nix +++ b/modules/programs/gui/zen/search.nix @@ -60,16 +60,19 @@ }; # Disabled (hidden). + # keep-sorted start bing.metaData.hidden = true; ddg.metaData.hidden = true; - qwant.metaData.hidden = true; ecosia.metaData.hidden = true; + qwant.metaData.hidden = true; + # keep-sorted end # Nix related search engines. - nix = { + # keep-sorted start block=yes + "home-manager" = { urls = [ { - template = "https://searchix.ovh/"; + template = "https://searchix.ovh/options/home-manager/search"; params = [ { name = "query"; @@ -79,12 +82,12 @@ } ]; icon = nixIcon; - definedAliases = ["@n"]; + definedAliases = ["@hm"]; }; - nixos = { + "nix-packages" = { urls = [ { - template = "https://searchix.ovh/options/nixos/search"; + template = "https://searchix.ovh/packages/nixpkgs/search"; params = [ { name = "query"; @@ -94,12 +97,12 @@ } ]; icon = nixIcon; - definedAliases = ["@no"]; + definedAliases = ["@np"]; }; - "home-manager" = { + nix = { urls = [ { - template = "https://searchix.ovh/options/home-manager/search"; + template = "https://searchix.ovh/"; params = [ { name = "query"; @@ -109,12 +112,12 @@ } ]; icon = nixIcon; - definedAliases = ["@hm"]; + definedAliases = ["@n"]; }; - "nix-packages" = { + nixos = { urls = [ { - template = "https://searchix.ovh/packages/nixpkgs/search"; + template = "https://searchix.ovh/options/nixos/search"; params = [ { name = "query"; @@ -124,7 +127,7 @@ } ]; icon = nixIcon; - definedAliases = ["@np"]; + definedAliases = ["@no"]; }; nur = { urls = [ @@ -141,12 +144,14 @@ icon = nixIcon; definedAliases = ["@nu"]; }; + # keep-sorted end # Wiki. - "nixos-wiki" = { + # keep-sorted start block=yes + "arch-wiki" = { urls = [ { - template = "https://wiki.nixos.org/w/index.php"; + template = "https://wiki.archlinux.org/index.php"; params = [ { name = "search"; @@ -156,12 +161,12 @@ } ]; icon = nixIcon; - definedAliases = ["@nw"]; + definedAliases = ["@aw"]; }; - "arch-wiki" = { + "minecraft-wiki" = { urls = [ { - template = "https://wiki.archlinux.org/index.php"; + template = "https://minecraft.wiki/"; params = [ { name = "search"; @@ -170,13 +175,13 @@ ]; } ]; - icon = nixIcon; - definedAliases = ["@aw"]; + iconMapObj."16" = "https://minecraft.wiki/favicon.ico"; + definedAliases = ["@mw"]; }; - "minecraft-wiki" = { + "nixos-wiki" = { urls = [ { - template = "https://minecraft.wiki/"; + template = "https://wiki.nixos.org/w/index.php"; params = [ { name = "search"; @@ -185,11 +190,13 @@ ]; } ]; - iconMapObj."16" = "https://minecraft.wiki/favicon.ico"; - definedAliases = ["@mw"]; + icon = nixIcon; + definedAliases = ["@nw"]; }; + # keep-sorted end # Development resources. + # keep-sorted start block=yes crates = { urls = [ { @@ -239,6 +246,7 @@ iconMapObj."16" = "https://github.com/favicon.ico"; definedAliases = ["@gh"]; }; + # keep-sorted end }; }; }; diff --git a/modules/programs/jujutsu.nix b/modules/programs/jujutsu.nix new file mode 100644 index 0000000..3d9ef76 --- /dev/null +++ b/modules/programs/jujutsu.nix @@ -0,0 +1,53 @@ +{ + flake.modules.homeManager.jujutsu = { + # keep-sorted start + config, + vars, + # keep-sorted end + ... + }: let + inherit + (vars) + # keep-sorted start + fullName + gitPublicSshkey + gitSigningKey + username + # keep-sorted end + ; + in { + sops = { + secrets = { + # Per-user git email address stored in sops. + "git/email" = {}; + + # Place the decrypted private key at a stable path used by ssh. + "git/private_ssh_key".path = "/home/${username}/.ssh/git"; + }; + + templates."jj-user-config" = { + content = '' + [user] + email = "${config.sops.placeholder."git/email"}" + name = "${fullName}" + ''; + path = "${config.xdg.configHome}/jj/conf.d/10-user.toml"; + }; + }; + + # keep-sorted start block=yes newline_separated=yes + # Publish the public key alongside the private key path. + home.file.".ssh/git.pub".text = gitPublicSshkey; + + programs.jujutsu = { + enable = true; + + settings.signing = { + backend = "gpg"; + behavior = "own"; + key = gitSigningKey; + }; + }; + # keep-sorted end + }; +} diff --git a/modules/programs/tui/neovim/components/dashboard.nix b/modules/programs/tui/neovim/components/dashboard.nix index 2e02251..def6455 100644 --- a/modules/programs/tui/neovim/components/dashboard.nix +++ b/modules/programs/tui/neovim/components/dashboard.nix @@ -317,16 +317,22 @@ { pane = 2; icon = ""; - title = "Git Status"; + title = "VCS Status"; section = "terminal"; cmd = getExe (pkgs.writeShellApplication { - name = "dashboard-git-status"; + name = "dashboard-vcs-status"; runtimeInputs = with pkgs; [ + # keep-sorted start gawk git + jujutsu + # keep-sorted end ]; text = '' - if git rev-parse --is-inside-work-tree >/dev/null 2>&1; then + if jj root >/dev/null 2>&1; then + jj --color always status \ + | awk 'NR <= 6 { print; seen = 1 } END { if (!seen) print "No jj changes" }' + elif git rev-parse --is-inside-work-tree >/dev/null 2>&1; then git -c color.status=always status --short --branch --renames \ | awk 'NR <= 6 { print; seen = 1 } END { if (!seen) print "No git changes" }' else diff --git a/modules/services/btrfs-autoscrub.nix b/modules/services/data/btrfs-autoscrub.nix similarity index 100% rename from modules/services/btrfs-autoscrub.nix rename to modules/services/data/btrfs-autoscrub.nix diff --git a/modules/services/mysql.nix b/modules/services/data/mysql.nix similarity index 100% rename from modules/services/mysql.nix rename to modules/services/data/mysql.nix diff --git a/modules/services/postgres.nix b/modules/services/data/postgres.nix similarity index 100% rename from modules/services/postgres.nix rename to modules/services/data/postgres.nix diff --git a/modules/services/data/rclone.nix b/modules/services/data/rclone.nix new file mode 100644 index 0000000..6469326 --- /dev/null +++ b/modules/services/data/rclone.nix @@ -0,0 +1,130 @@ +{ + flake.modules.homeManager.rclone = { + # keep-sorted start + config, + lib, + pkgs, + vars, + # keep-sorted end + ... + }: let + inherit + (lib) + # keep-sorted start + getExe + mapAttrs' + nameValuePair + # keep-sorted end + ; + + inherit + (vars) + # keep-sorted start + groundDomain + username + # keep-sorted end + ; + + syncs = { + # keep-sorted start block=yes newline_separated=yes + screenshots = { + localPath = "${config.home.homeDirectory}/Pictures/screenshots"; + remotePath = "copyparty:/u/${username}/Pictures/screenshots"; + }; + + wallpapers = { + localPath = "${config.home.homeDirectory}/Pictures/wallpapers"; + remotePath = "copyparty:/u/${username}/Pictures/wallpapers"; + }; + # keep-sorted end + }; + + mkBisyncService = name: sync: { + Unit = { + After = ["rclone-config.service"]; + Description = "Bidirectional sync for copyparty ${name}"; + Requires = ["rclone-config.service"]; + }; + + Service = { + Environment = [ + "LOCAL_PATH=${sync.localPath}" + "REMOTE_PATH=${sync.remotePath}" + "WORK_DIR=${config.xdg.stateHome}/rclone/bisync/copyparty-${name}" + ]; + ExecStart = getExe pkgs.rclone-bisync-runner; + Type = "oneshot"; + }; + }; + + mkBisyncTimer = name: _: { + Unit.Description = "Bidirectional sync for copyparty ${name}"; + + Timer = { + OnBootSec = "5m"; + OnUnitActiveSec = "15m"; + Persistent = true; + }; + + Install.WantedBy = ["timers.target"]; + }; + in { + sops.secrets = { + # keep-sorted start + "rclone/copyparty/basic_auth_header" = {}; + "rclone/google/token" = {}; + # keep-sorted end + }; + + programs.rclone = { + enable = true; + + remotes = { + copyparty = { + config = { + type = "webdav"; + url = "https://copyparty.${groundDomain}"; + vendor = "other"; + }; + + mounts."/u/${username}" = { + enable = true; + mountPoint = "${config.home.homeDirectory}/Remote/copyparty"; + options.vfs-cache-mode = "writes"; + }; + + secrets.headers = config.sops.secrets."rclone/copyparty/basic_auth_header".path; + }; + + google = { + config = { + scope = "drive"; + type = "drive"; + }; + + mounts."" = { + enable = true; + mountPoint = "${config.home.homeDirectory}/Remote/google"; + options.vfs-cache-mode = "writes"; + }; + + secrets.token = config.sops.secrets."rclone/google/token".path; + }; + }; + }; + + systemd.user = { + services = + mapAttrs' ( + name: sync: nameValuePair "copyparty-${name}-bisync" (mkBisyncService name sync) + ) + syncs; + + timers = + mapAttrs' ( + name: sync: nameValuePair "copyparty-${name}-bisync" (mkBisyncTimer name sync) + ) + syncs; + }; + }; +} diff --git a/modules/services/envfs.nix b/modules/services/desktop/envfs.nix similarity index 100% rename from modules/services/envfs.nix rename to modules/services/desktop/envfs.nix diff --git a/modules/services/evolution-data-server.nix b/modules/services/desktop/evolution-data-server.nix similarity index 100% rename from modules/services/evolution-data-server.nix rename to modules/services/desktop/evolution-data-server.nix diff --git a/modules/services/flatpak.nix b/modules/services/desktop/flatpak.nix similarity index 100% rename from modules/services/flatpak.nix rename to modules/services/desktop/flatpak.nix diff --git a/modules/services/geoclue.nix b/modules/services/desktop/geoclue.nix similarity index 100% rename from modules/services/geoclue.nix rename to modules/services/desktop/geoclue.nix diff --git a/modules/services/gnome-keyring.nix b/modules/services/desktop/gnome-keyring.nix similarity index 100% rename from modules/services/gnome-keyring.nix rename to modules/services/desktop/gnome-keyring.nix diff --git a/modules/services/gvfs.nix b/modules/services/desktop/gvfs.nix similarity index 100% rename from modules/services/gvfs.nix rename to modules/services/desktop/gvfs.nix diff --git a/modules/services/locate.nix b/modules/services/desktop/locate.nix similarity index 100% rename from modules/services/locate.nix rename to modules/services/desktop/locate.nix diff --git a/modules/services/tmp.nix b/modules/services/desktop/tmp.nix similarity index 100% rename from modules/services/tmp.nix rename to modules/services/desktop/tmp.nix diff --git a/modules/services/udisks2.nix b/modules/services/desktop/udisks2.nix similarity index 100% rename from modules/services/udisks2.nix rename to modules/services/desktop/udisks2.nix diff --git a/modules/services/bluetooth.nix b/modules/services/hardware/bluetooth.nix similarity index 100% rename from modules/services/bluetooth.nix rename to modules/services/hardware/bluetooth.nix diff --git a/modules/services/libinput.nix b/modules/services/hardware/libinput.nix similarity index 100% rename from modules/services/libinput.nix rename to modules/services/hardware/libinput.nix diff --git a/modules/services/pipewire.nix b/modules/services/hardware/pipewire.nix similarity index 100% rename from modules/services/pipewire.nix rename to modules/services/hardware/pipewire.nix diff --git a/modules/services/power-profiles-daemon.nix b/modules/services/hardware/power-profiles-daemon.nix similarity index 100% rename from modules/services/power-profiles-daemon.nix rename to modules/services/hardware/power-profiles-daemon.nix diff --git a/modules/services/printing.nix b/modules/services/hardware/printing.nix similarity index 100% rename from modules/services/printing.nix rename to modules/services/hardware/printing.nix diff --git a/modules/services/tlp.nix b/modules/services/hardware/tlp.nix similarity index 100% rename from modules/services/tlp.nix rename to modules/services/hardware/tlp.nix diff --git a/modules/services/upower.nix b/modules/services/hardware/upower.nix similarity index 100% rename from modules/services/upower.nix rename to modules/services/hardware/upower.nix diff --git a/modules/services/avahi.nix b/modules/services/network/avahi.nix similarity index 100% rename from modules/services/avahi.nix rename to modules/services/network/avahi.nix diff --git a/modules/services/godns.nix b/modules/services/network/godns.nix similarity index 100% rename from modules/services/godns.nix rename to modules/services/network/godns.nix diff --git a/modules/services/network.nix b/modules/services/network/network.nix similarity index 100% rename from modules/services/network.nix rename to modules/services/network/network.nix diff --git a/modules/services/proton-wireguard.nix b/modules/services/network/proton-wireguard.nix similarity index 100% rename from modules/services/proton-wireguard.nix rename to modules/services/network/proton-wireguard.nix diff --git a/modules/services/ssh-stunnel.nix b/modules/services/network/ssh-stunnel.nix similarity index 100% rename from modules/services/ssh-stunnel.nix rename to modules/services/network/ssh-stunnel.nix diff --git a/modules/services/ssh.nix b/modules/services/network/ssh.nix similarity index 100% rename from modules/services/ssh.nix rename to modules/services/network/ssh.nix diff --git a/modules/services/timesyncd.nix b/modules/services/network/timesyncd.nix similarity index 100% rename from modules/services/timesyncd.nix rename to modules/services/network/timesyncd.nix diff --git a/modules/services/wifi.nix b/modules/services/network/wifi.nix similarity index 100% rename from modules/services/wifi.nix rename to modules/services/network/wifi.nix diff --git a/modules/services/wireguard.nix b/modules/services/network/wireguard.nix similarity index 100% rename from modules/services/wireguard.nix rename to modules/services/network/wireguard.nix diff --git a/modules/services/ananicy.nix b/modules/services/performance/ananicy.nix similarity index 100% rename from modules/services/ananicy.nix rename to modules/services/performance/ananicy.nix diff --git a/modules/services/bpftune.nix b/modules/services/performance/bpftune.nix similarity index 100% rename from modules/services/bpftune.nix rename to modules/services/performance/bpftune.nix diff --git a/modules/services/scx-loader.nix b/modules/services/performance/scx-loader.nix similarity index 100% rename from modules/services/scx-loader.nix rename to modules/services/performance/scx-loader.nix diff --git a/modules/services/zram.nix b/modules/services/performance/zram.nix similarity index 100% rename from modules/services/zram.nix rename to modules/services/performance/zram.nix diff --git a/modules/services/authentik.nix b/modules/services/security/authentik.nix similarity index 100% rename from modules/services/authentik.nix rename to modules/services/security/authentik.nix diff --git a/modules/services/crowdsec.nix b/modules/services/security/crowdsec.nix similarity index 100% rename from modules/services/crowdsec.nix rename to modules/services/security/crowdsec.nix diff --git a/modules/services/firewall.nix b/modules/services/security/firewall.nix similarity index 100% rename from modules/services/firewall.nix rename to modules/services/security/firewall.nix diff --git a/modules/services/apprise.nix b/modules/services/server/apprise.nix similarity index 100% rename from modules/services/apprise.nix rename to modules/services/server/apprise.nix diff --git a/modules/services/cloudbeaver.nix b/modules/services/server/cloudbeaver.nix similarity index 100% rename from modules/services/cloudbeaver.nix rename to modules/services/server/cloudbeaver.nix diff --git a/modules/services/dockhand.nix b/modules/services/server/dockhand.nix similarity index 100% rename from modules/services/dockhand.nix rename to modules/services/server/dockhand.nix diff --git a/modules/services/flaresolverr.nix b/modules/services/server/flaresolverr.nix similarity index 100% rename from modules/services/flaresolverr.nix rename to modules/services/server/flaresolverr.nix diff --git a/modules/services/gotify.nix b/modules/services/server/gotify.nix similarity index 100% rename from modules/services/gotify.nix rename to modules/services/server/gotify.nix diff --git a/modules/services/hawser.nix b/modules/services/server/hawser.nix similarity index 100% rename from modules/services/hawser.nix rename to modules/services/server/hawser.nix diff --git a/modules/services/podman.nix b/modules/services/server/podman.nix similarity index 100% rename from modules/services/podman.nix rename to modules/services/server/podman.nix diff --git a/modules/services/traefik.nix b/modules/services/server/traefik.nix similarity index 100% rename from modules/services/traefik.nix rename to modules/services/server/traefik.nix diff --git a/secrets.yaml b/secrets.yaml index 0780e27..59cde18 100644 --- a/secrets.yaml +++ b/secrets.yaml @@ -81,6 +81,11 @@ gotify: client_secret: ENC[AES256_GCM,data:6PhFHPRcrUD1tPySDiB4tAtTng4/lYfNZ7XGYvIxxkbDobH9q3pjtuvXkz4MvGyjtC+M4sxc8qH1or7AYFtb/u71aptIwt+u821jz9XiFrQJiM7RC9yTZt0RQLtpPkTejRg4jfBXhDt+xOVkOZG7Z7cMrsMIS6eYDUJhpOXUO/c=,iv:6IseU28YQFyTmTh3dEUeK2pfvVq5CFIpXXYDkuY4HVY=,tag:NRZIDm07RhgDsEXT8IGl4Q==,type:str] desktop_token: ENC[AES256_GCM,data:LsEQ+gXlyXpl7BF6d+S1okv9t4OlMCk=,iv:Gq+Z5OiQR4cKy7+hM5JswAVtol+WX7nb9a7pNgmW5ZA=,tag:wz64fqoNyKmpGnIrjHt1mA==,type:str] qbittorrent_proxy_path: ENC[AES256_GCM,data:FGSBt2MQZ8Flq0y1VG0OYlrlKzweSaaiB+xKSWFObJXX2q/oNODo/7dPL8r29Fb79GKV7n5hXpQDLzSYOwd0A0EPijj/SAk=,iv:yJqKvC2L2O0eOTKvO/cAX1ldEx8z8GTvG6cbjdiXN+Q=,tag:cpFgkJoVXgfiTrLVS/KTdA==,type:str] +rclone: + copyparty: + basic_auth_header: ENC[AES256_GCM,data:LuCkGzj9LxVuJKT5lS7cXCJlmeqCrZGsP1ojlk17mHpesyqQEc/3s8pwGvNLNciTA2dGlYYcECyJKly40tclKYTRrM+1vYInAlz/usA9H4OCTY+HsQB/QTrNON2hkvn2daqI679jRZS7MpyC,iv:c1i+qaSh5z8Sse2TixyWKv19aAuwdq3zw/MvQwO2+es=,tag:CnuKAWn12/dpv28WtF0SMQ==,type:str] + google: + token: ENC[AES256_GCM,data:y9fZmPYszm6B0ucuKdEA3aWx33B3VuXYj9ajglUoqVXUIxbOiprEFKNGjl6yR7SxV0MVU3e81/3Q856otA3TkQhsboDteiJOE3hHrn/iJwqCiKzX2yKzkzann0VA2ArPWjnRVTp+CZOQZu868Qwm5yHWFPpnNtVm1ST12hQe6p1DB6HjLZVj66mtZmzqKdcRwL0hTLw35Zys/l7BHb/JrDbe87K7Z/lDwGKXZruL8xgIKfc51mgO69+MPCsA8zGdH74Xv+CzHhp4lT305bGEKGjrHJICExL2i3mzRnWWBv0NJVKIQUsLylEaDLxbpZkXWqqOyO9NtmMhACobQJFCxGFChjvFLzNivF6T3tjiUiH+Ka4VkndaOAB/BbYgUCPHFNhOJ5i+9Js2tPQE/CB+20SlFPm2jSIcJmS0iSSkypJiJVSZFSftOf4PIL0wRdmI6UkQzal89e07ebMUZTqi0F38qkZDAA8swyL21n+85N2/Myjg+cvsKzPnph0GSinZUqPb9sfkANYuYBQZc7fKjgHDwYJL4h+izgCfL0hTFNKPxteHYo2hirWs984FfSnDBO4luA7kkHNbcV1QZpapFxP0DMsEMtO27ciUHX7xjItKVkQIjP+c0rjSm2l56hfYjkw=,iv:u1efJOuHXZ9OS7cD4dTV7FjqZFlr+EahfxSfN8hzUns=,tag:sU499A/nucn3hoi8e37kKw==,type:str] sops: age: - enc: | @@ -119,8 +124,8 @@ sops: w2ToACYVigKMSlqPNG9bKcK75XI/iAONG48DQm1Nse3yB9/q3jwd+Q== -----END AGE ENCRYPTED FILE----- recipient: age1yl52c6aemw9anmfuqayamvsnkvlu6fmy0kk3gzvrraexxd9pr90qvs8pe5 - lastmodified: "2026-06-30T23:06:57Z" - mac: ENC[AES256_GCM,data:aFDS7t6yZw9USgypvUkJFQXmdEGzTtoCVN0+Cnz0D9FVhi+CNNSCAtIMenf86hG4bUzVyCrTHgevpydS6dCs3vMwZZYXbyo2zz1jP2Ud0egwF7EqcOYWo8tK6lUp02M6YIj598sLAWy+EEcUfcO6OOkimgfFtSvblivIt/JltRk=,iv:/ZkWY20AyJQVWHkQpDurBx1SYrBUfCIa0AiBxG7D6tA=,tag:tPlR7QzCbEE2qeDPtWRmrw==,type:str] + lastmodified: "2026-07-04T20:18:11Z" + mac: ENC[AES256_GCM,data:ZQ1MZUGTXGyqLZ1DLy/pkVYugu0B4WUk8S9B/opv6RYtIHyjtBzOIj5r/slix5xX6f2hzk91DvjNy64UiYJAY550ZKanXu0kgp6nEwGl/KCY8porx/0TFbMQiMF/dYl17vBQFj6wvNldVzTER48Lqc/12gNf69Rn0JRBj4uAVm0=,iv:pjxwDK8O1lgf8oNRrZFvQXESdS04e6dEmNIMkNBye+0=,tag:8PmHx2UJ/ESBMJuIBuSQdw==,type:str] pgp: - created_at: "2026-06-02T01:50:38Z" enc: |-