flake-update-20260201
  1{ pkgs, ... }:
  2let
  3  # Wrapper for jira-cli that injects API token from passage
  4  jira-wrapped = pkgs.writeShellScriptBin "jira" ''
  5    export JIRA_API_TOKEN=$(${pkgs.passage}/bin/passage show redhat/issues/token/kyushu)
  6    exec ${pkgs.jira-cli-go}/bin/jira "$@"
  7  '';
  8in
  9{
 10  imports = [
 11    ../../home/common/dev/containers.nix
 12    ../../home/common/dev/gh-news.nix
 13    ../../home/common/dev/lazyworktree.nix
 14    ../../home/common/dev/neovim.nix
 15    ../../home/common/dev/tektoncd.nix
 16    ../../home/common/services/color-scheme-timer.nix
 17    ../../home/common/services/gcal-to-org.nix
 18    ../../home/common/services/goimapnotify.nix
 19    ../../home/common/services/mail-monitor.nix
 20    ../../home/common/services/redhat.nix
 21    ../../home/common/shell/gh.nix
 22  ];
 23
 24  home.file.".gmailctl/config.jsonnet".source = ./config.jsonnet;
 25  home.file.".gmailctl/gmailctl.libsonnet".source = ./gmailctl.libsonnet;
 26  home.packages = with pkgs; [
 27    spotify
 28    # easyeffects # Not using it really
 29
 30    thunderbird
 31    nautilus
 32
 33    slack
 34
 35    gmailctl
 36    gcalcli
 37    nextmeeting
 38
 39    calibre
 40
 41    ntfy-sh
 42    libnotify
 43
 44    monolith
 45
 46    did
 47
 48    feishin # navidrome - uses mpv-unwrapped via overlay
 49
 50    gops
 51    lazygit
 52
 53    # Keyboard
 54    qmk
 55    qmk_hid
 56
 57    startpaac
 58    abs-tui
 59
 60    batzconverter # TODO I need to fix it or package it upstream
 61
 62    simple-scan
 63    keybase
 64
 65    # transmission_4-gtk # Using remote one for now
 66
 67    # forgejo-cli
 68    jira-wrapped
 69
 70    # lisp
 71    # roswell # Disabled: broken in nixpkgs-unstable (register_runtime_options error)
 72    # sbcl # Not using
 73
 74    go-org-readwise
 75    gh-pr
 76    lazypr
 77    nixpkgs-pr-watch
 78    arr
 79    claude-hooks
 80    toggle-color-scheme
 81    shpool-remote
 82    cliphist-cleanup
 83
 84    slackdump
 85  ];
 86
 87  # Automatic color scheme switching
 88  services.color-scheme-timer = {
 89    enable = true;
 90    latitude = "48.87"; # Paris coordinates
 91    longitude = "2.33";
 92    lightTime = "07:00"; # Switch to light mode at 7am
 93    darkTime = "19:00"; # Switch to dark mode at 7pm
 94  };
 95
 96  # Google Calendar sync to org-mode
 97  services.gcal-to-org = {
 98    enable = true;
 99    interval = "hourly";
100  };
101
102  # ntfy notification subscriber
103  systemd.user.services.ntfy-subscriber = {
104    Unit = {
105      Description = "ntfy notification subscriber";
106      Documentation = "https://ntfy.sh";
107      After = [
108        "graphical-session.target"
109        "network-online.target"
110      ];
111      Wants = [ "network-online.target" ];
112    };
113
114    Service = {
115      Type = "simple";
116      ExecStart = "${pkgs.ntfy-sh}/bin/ntfy subscribe --from-config";
117      Restart = "on-failure";
118      RestartSec = 10;
119      Environment = [
120        "PATH=${pkgs.bash}/bin:${pkgs.coreutils}/bin:${pkgs.libnotify}/bin:${pkgs.ntfy-sh}/bin:${pkgs.xdg-utils}/bin:${pkgs.curl}/bin:${pkgs.passage}/bin"
121        "PASSAGE_DIR=/home/vincent/.local/share/passage"
122        "PASSAGE_IDENTITIES_FILE=/home/vincent/.local/share/passage/identities"
123      ];
124    };
125
126    Install = {
127      WantedBy = [ "graphical-session.target" ];
128    };
129  };
130
131}