Compare commits
4 Commits
2c5a115bf9
...
ae48d799af
| Author | SHA1 | Date | |
|---|---|---|---|
| ae48d799af | |||
| 859512599d | |||
| 8d10b38d0d | |||
| 5f5e5f8d4d |
29
dots/.local/share/task/hooks/on-add.limit.py
Executable file
29
dots/.local/share/task/hooks/on-add.limit.py
Executable file
@@ -0,0 +1,29 @@
|
||||
#!/usr/bin/env python3
|
||||
import sys
|
||||
import json
|
||||
|
||||
SLOTS_FILE = "/home/h/.local/share/task/add_slots"
|
||||
|
||||
def get_slots():
|
||||
try:
|
||||
with open(SLOTS_FILE, "r") as f:
|
||||
return int(f.read().strip())
|
||||
except:
|
||||
return 0
|
||||
|
||||
slots = get_slots()
|
||||
|
||||
if slots <= 0:
|
||||
print(f"Cannot add task: No slots available (0/{slots}).")
|
||||
print("Delete or complete a task first to earn an add slot.")
|
||||
sys.exit(1)
|
||||
|
||||
with open(SLOTS_FILE, "w") as f:
|
||||
f.write(str(slots - 1))
|
||||
|
||||
print(f"Task added. Slots remaining: {slots - 1}")
|
||||
|
||||
for line in sys.stdin:
|
||||
task = json.loads(line)
|
||||
print(json.dumps(task))
|
||||
sys.exit(0)
|
||||
34
dots/.local/share/task/hooks/on-modify.limit.py
Executable file
34
dots/.local/share/task/hooks/on-modify.limit.py
Executable file
@@ -0,0 +1,34 @@
|
||||
#!/usr/bin/env python3
|
||||
import sys
|
||||
import json
|
||||
|
||||
SLOTS_FILE = "/home/h/.local/share/task/add_slots"
|
||||
|
||||
def get_slots():
|
||||
try:
|
||||
with open(SLOTS_FILE, "r") as f:
|
||||
return int(f.read().strip())
|
||||
except:
|
||||
return 0
|
||||
|
||||
data = sys.stdin.read().strip().split("\n")
|
||||
if len(data) < 2:
|
||||
for line in data:
|
||||
if line:
|
||||
print(line)
|
||||
sys.exit(0)
|
||||
|
||||
old_task = json.loads(data[0])
|
||||
new_task = json.loads(data[1])
|
||||
|
||||
was_pending = old_task.get("status") == "pending"
|
||||
is_not_pending = new_task.get("status") in ("completed", "deleted")
|
||||
|
||||
if was_pending and is_not_pending:
|
||||
slots = get_slots() + 1
|
||||
with open(SLOTS_FILE, "w") as f:
|
||||
f.write(str(slots))
|
||||
print(f"Slot earned! Total slots: {slots}")
|
||||
|
||||
print(json.dumps(new_task))
|
||||
sys.exit(0)
|
||||
@@ -61,6 +61,7 @@
|
||||
nix-on-droid,
|
||||
nixgl,
|
||||
git-hooks,
|
||||
colmena,
|
||||
...
|
||||
}@inputs:
|
||||
let
|
||||
@@ -134,6 +135,7 @@
|
||||
};
|
||||
};
|
||||
|
||||
apps.${system}.colmena = inputs.colmena.apps.${system}.default;
|
||||
colmenaHive = import ./deploy/colmena.nix {
|
||||
inherit
|
||||
self
|
||||
|
||||
@@ -1,10 +1,5 @@
|
||||
{ lib, ... }:
|
||||
|
||||
{
|
||||
services.mako = {
|
||||
enable = true;
|
||||
settings = {
|
||||
border-color = lib.mkForce "#bbbbbb";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
@@ -32,6 +32,10 @@
|
||||
profileNames = [ "default" ];
|
||||
colorTheme.enable = true;
|
||||
};
|
||||
librewolf = {
|
||||
profileNames = [ "default" ];
|
||||
colorTheme.enable = true;
|
||||
};
|
||||
gnome.enable = false;
|
||||
gtk.enable = false;
|
||||
kitty = {
|
||||
|
||||
@@ -39,6 +39,14 @@ in
|
||||
".local/share/task/hooks/on-exit.sync.py" = {
|
||||
source = dotsPath + "/.local/share/task/hooks/on-exit.sync.py";
|
||||
};
|
||||
".local/share/task/hooks/on-add.limit.py" = {
|
||||
source = dotsPath + "/.local/share/task/hooks/on-add.limit.py";
|
||||
executable = true;
|
||||
};
|
||||
".local/share/task/hooks/on-modify.limit.py" = {
|
||||
source = dotsPath + "/.local/share/task/hooks/on-modify.limit.py";
|
||||
executable = true;
|
||||
};
|
||||
".local/share/task/scripts/sync-and-notify.sh" = {
|
||||
source = dotsPath + "/.local/share/task/scripts/sync-and-notify.sh";
|
||||
executable = true;
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
let
|
||||
flakePath = "/home/h/nix";
|
||||
in
|
||||
{
|
||||
inputs,
|
||||
outputs,
|
||||
@@ -8,6 +11,7 @@
|
||||
{
|
||||
imports = [
|
||||
inputs.home-manager.nixosModules.default
|
||||
../stylix.nix
|
||||
];
|
||||
|
||||
system.stateVersion = "25.05";
|
||||
@@ -41,12 +45,12 @@
|
||||
|
||||
system.autoUpgrade = {
|
||||
enable = true;
|
||||
flake = inputs.self.outPath;
|
||||
operation = "switch";
|
||||
flake = flakePath;
|
||||
flags = [
|
||||
"--recreate-lock-file"
|
||||
"--commit-lock-file"
|
||||
"--print-build-logs"
|
||||
"--refresh"
|
||||
];
|
||||
dates = "05:00";
|
||||
randomizedDelaySec = "45min";
|
||||
|
||||
35
modules/stylix.nix
Normal file
35
modules/stylix.nix
Normal file
@@ -0,0 +1,35 @@
|
||||
{
|
||||
config,
|
||||
inputs,
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
{
|
||||
imports = [ inputs.stylix.nixosModules.stylix ];
|
||||
|
||||
stylix = {
|
||||
enable = true;
|
||||
polarity = "dark";
|
||||
base16Scheme = ../stylix/zenwritten-dark.yaml;
|
||||
image = config.lib.stylix.pixel "base00";
|
||||
fonts = {
|
||||
monospace = {
|
||||
package = pkgs.iosevka-bin.override { variant = "SS08"; };
|
||||
name = "Iosevka Term SS08";
|
||||
};
|
||||
};
|
||||
autoEnable = true;
|
||||
};
|
||||
|
||||
home-manager.sharedModules = [
|
||||
{
|
||||
stylix.targets = {
|
||||
firefox.profileNames = [ "default" ];
|
||||
librewolf.profileNames = [ "default" ];
|
||||
kitty.enable = false;
|
||||
waybar.enable = false;
|
||||
};
|
||||
}
|
||||
];
|
||||
}
|
||||
18
stylix/zenwritten-dark.yaml
Normal file
18
stylix/zenwritten-dark.yaml
Normal file
@@ -0,0 +1,18 @@
|
||||
scheme: "zenwritten-dark"
|
||||
author: "derived from zenbones.nvim zenwritten_dark"
|
||||
base00: "191919" # background
|
||||
base01: "303030" # inactive tab bg
|
||||
base02: "404040" # selection bg
|
||||
base03: "8E8E8E" # bright white (comments)
|
||||
base04: "3D3839" # bright black
|
||||
base05: "BBBBBB" # foreground
|
||||
base06: "C9C9C9" # cursor
|
||||
base07: "EEEEEE" # light foreground
|
||||
base08: "DE6E7C" # red
|
||||
base09: "B77E64" # yellow (orange)
|
||||
base0A: "D68C67" # bright yellow
|
||||
base0B: "819B69" # green
|
||||
base0C: "66A5AD" # cyan
|
||||
base0D: "6099C0" # blue
|
||||
base0E: "B279A7" # magenta
|
||||
base0F: "65435E" # active tab bg (brown)
|
||||
Reference in New Issue
Block a user