From 546bc7e2e7d27858eedb0f0f48a390e301f750f8 Mon Sep 17 00:00:00 2001 From: Paul-Henri Froidmont Date: Thu, 15 Sep 2022 23:49:33 +0200 Subject: [PATCH] Add ActivityWatch --- flake.lock | 19 +----------------- flake.nix | 2 ++ overlay.nix | 17 +++++++++++++++++ packages/activitywatch.nix | 37 ++++++++++++++++++++++++++++++++++++ users/default.nix | 35 +++++++++++++++++++++++++++++----- users/files/xmonad.hs | 2 +- users/froidmpa/alacritty.nix | 1 + 7 files changed, 89 insertions(+), 24 deletions(-) create mode 100644 overlay.nix create mode 100644 packages/activitywatch.nix diff --git a/flake.lock b/flake.lock index 3aa11bf..f3be932 100644 --- a/flake.lock +++ b/flake.lock @@ -35,22 +35,6 @@ "type": "github" } }, - "nixpkgs-stable": { - "locked": { - "lastModified": 1663067291, - "narHash": "sha256-1BTrqhLMamWf53sJobtMiUDI91PEw6xF8YEwg2VE8w4=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "d86a4619b7e80bddb6c01bc01a954f368c56d1df", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-22.05", - "repo": "nixpkgs", - "type": "github" - } - }, "nixpkgs_2": { "locked": { "lastModified": 1662996720, @@ -70,8 +54,7 @@ "root": { "inputs": { "home-manager": "home-manager", - "nixpkgs": "nixpkgs_2", - "nixpkgs-stable": "nixpkgs-stable" + "nixpkgs": "nixpkgs_2" } }, "utils": { diff --git a/flake.nix b/flake.nix index cbebfe8..4b31fd9 100644 --- a/flake.nix +++ b/flake.nix @@ -17,6 +17,7 @@ ./users ( { + nixpkgs.overlays = [ (import ./overlay.nix { }) ]; networking.hostName = "nixos-desktop"; # Allow to externally control MPD networking.firewall.allowedTCPPorts = [ 6600 ]; @@ -40,6 +41,7 @@ ./users ( { + nixpkgs.overlays = [ (import ./overlay.nix { }) ]; networking.hostName = "froidmpa-laptop"; nix.registry.nixpkgs.flake = nixpkgs; diff --git a/overlay.nix b/overlay.nix new file mode 100644 index 0000000..baf319b --- /dev/null +++ b/overlay.nix @@ -0,0 +1,17 @@ +{}: +final: prev: +{ + ncmpcpp = prev.ncmpcpp.override { visualizerSupport = true; }; + firefox = prev.firefox.override { pkcs11Modules = [ prev.eid-mw ]; }; + exodus = prev.exodus.overrideDerivation (old: { + src = prev.fetchurl { + url = "https://downloads.exodus.com/releases/${old.pname}-linux-x64-${old.version}.zip"; + sha256 = "sha256-rizVb3Yckd0ionRunT7VRq+wJvtNffkk3QzxTYQgvnY="; + }; + unpackCmd = '' + ${prev.unzip}/bin/unzip "$src" -x "Exodus*/lib*so" + ''; + }); + + activitywatch-bin = prev.callPackage ./packages/activitywatch.nix { }; +} diff --git a/packages/activitywatch.nix b/packages/activitywatch.nix new file mode 100644 index 0000000..9366d08 --- /dev/null +++ b/packages/activitywatch.nix @@ -0,0 +1,37 @@ +{ lib +, stdenv +, fetchzip +, autoPatchelfHook +, libGL +, freetype +, libdrm +, fontconfig +}: + +stdenv.mkDerivation rec { + pname = "activitywatch-bin"; + version = "0.11.0"; + + src = fetchzip { + url = + "https://github.com/ActivityWatch/activitywatch/releases/download/v${version}/activitywatch-v${version}-linux-x86_64.zip"; + sha256 = "CYLhSxlKMHuIEMmqtN8o/lhwTfcR+DInFxVjZOJ1fHc="; + }; + + nativeBuildInputs = [ autoPatchelfHook libGL freetype libdrm fontconfig ]; + installPhase = '' + mkdir -p $out/bin + cp -r * $out/ + ln -s $out/aw-qt $out/bin/aw-qt + ln -s $out/aw-server/aw-server $out/bin/aw-server + ln -s $out/aw-watcher-afk/aw-watcher-afk $out/bin/aw-watcher-afk + ln -s $out/aw-watcher-window/aw-watcher-window $out/bin/aw-watcher-window + ''; + + meta = with lib; { + homepage = "https://activitywatch.net/"; + description = "The best free and open-source automated time tracker. Cross-platform, extensible, privacy-focused."; + license = licenses.mpl20; + platforms = [ "x86_64-linux" ]; + }; +} diff --git a/users/default.nix b/users/default.nix index 9a76107..39c78de 100644 --- a/users/default.nix +++ b/users/default.nix @@ -14,11 +14,10 @@ ./froidmpa/vscode.nix ]; - nixpkgs.config = { - allowUnfree = true; - packageOverrides = pkgs: { - ncmpcpp = pkgs.ncmpcpp.override { visualizerSupport = true; }; - firefox = pkgs.firefox.override { pkcs11Modules = [ pkgs.eid-mw ]; }; + nixpkgs = { + overlays = [ (import ../overlay.nix { }) ]; + config = { + allowUnfree = true; }; }; @@ -215,5 +214,31 @@ dolphinEmu ]; }; + + + systemd.user.services.activitywatch = { + Unit.Description = "Start ActivityWatch"; + Service.Type = "simple"; + Service.ExecStart = "${pkgs.activitywatch-bin}/bin/aw-server"; + Install.WantedBy = [ "default.target" ]; + Service.Restart = "on-failure"; + Service.RestartSec = 5; + }; + systemd.user.services.activitywatch-afk = { + Unit.Description = "Start ActivityWatch AFK"; + Service.Type = "simple"; + Service.ExecStart = "${pkgs.activitywatch-bin}/bin/aw-watcher-afk"; + Install.WantedBy = [ "default.target" ]; + Service.Restart = "on-failure"; + Service.RestartSec = 5; + }; + systemd.user.services.activitywatch-window = { + Unit.Description = "Start ActivityWatch Window"; + Service.Type = "simple"; + Service.ExecStart = "${pkgs.activitywatch-bin}/bin/aw-watcher-window"; + Install.WantedBy = [ "default.target" ]; + Service.Restart = "on-failure"; + Service.RestartSec = 5; + }; }; } diff --git a/users/files/xmonad.hs b/users/files/xmonad.hs index 9eb5bc7..2866e45 100644 --- a/users/files/xmonad.hs +++ b/users/files/xmonad.hs @@ -55,7 +55,7 @@ myFocusFollowsMouse = True main = do xmproc <- spawnPipe "xmobar .xmonad/xmobarrc" - xmonad $ docks $ myConfig xmproc + xmonad $ ewmh . docks $ myConfig xmproc myConfig xmproc = azertyConfig { terminal = myTerminal, diff --git a/users/froidmpa/alacritty.nix b/users/froidmpa/alacritty.nix index 84b23bf..77ca1e1 100644 --- a/users/froidmpa/alacritty.nix +++ b/users/froidmpa/alacritty.nix @@ -31,6 +31,7 @@ }; }; window = { + title = "Alacritty"; padding = { x = 5; y = 5;