From af85f0f7fbd85a94d08048df6cc1e420e5a26387 Mon Sep 17 00:00:00 2001 From: "Reid \"reidlab" Date: Tue, 27 Aug 2024 17:52:02 -0700 Subject: [PATCH] untested home-manager module --- README.md | 52 +++++++++++++++++++++++++++++++++++----------------- flake.nix | 34 +++++++++++++++++++++++++++++++++- 2 files changed, 68 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index 4b36542..4e325d4 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,8 @@ a rust application to scrobble your currently playing song on last.fm with mpris unfortunately, because of how most mpris players work, the [Track_Id](https://specifications.freedesktop.org/mpris-spec/latest/Player_Interface.html#Simple-Type:Track_Id) (unique identifier for every song in the tracklist) object is very rarely supported, or, if supported, implemented incorrectly (looking at you, [Cider](https://cider.sh/)) meaning it is impossible to tell if the track has been played twice in a row. this means you cannot have succssive scrobbles of the same song, sorry! besides this, i'd say the program is feature complete. +also you can't configure the program through nix yet because i'm lazy, i'll do that sometime!! + ## configuration either run the program once and navigate to `.config/lastmpris/config.ini` or create the file and copy it from the `config.example.ini` file provided in this directory. once you do that, configure your authentication methods. the api keys are available [here](https://www.last.fm/login?next=/api/account/create) @@ -14,26 +16,42 @@ you also have the option to define your mpris bus name, which will instead wait ## how to install -*if you're on a setup that uses nix, you can just use `nix build` or the provided devshell to build the application.* +you have two methods of installation -first, clone repository: +1. install with cargo + your package manager of choice + + 1. obtain dependencies (this will vary on your package manager) + ```sh + sudo apk add install pkgconf openssl dbus + ``` + 2. run/build + ```sh + cargo build --release + ``` +2. install using nix -```sh -git clone https://git.reidlab.pink/reidlab/lastfmpris && cd lastfmpris -``` + simply run it with nix: -second, obtain dependencies (this will vary on your package manager, here, alpine is used) + ```sh + nix run git+https://git.reidlab.pink/reidlab/lastfmpris + ``` -```sh -sudo apk add install pkgconf openssl dbus -``` + or put it into your flake as such: -finally, run/build + ```nix + # add this into your flake inputs: + lastfmpris.url = "git+https://git.reidlab.pink/reidlab/lastfmpris"; + # add this to your `homeConfiguration`: + imports = [ + inputs.lastfmpris.nixosModules.lastfmpris + ]; + ``` -```sh -cargo run -``` - -```sh -cargo build --release -``` \ No newline at end of file + and then just add this to use it as a home-manager option: + + ```nix + # add this to your home-manager configuration: + services.lastfmpris = { + enable = true; + }; + ``` \ No newline at end of file diff --git a/flake.nix b/flake.nix index 3f14fd1..d940c95 100644 --- a/flake.nix +++ b/flake.nix @@ -54,5 +54,37 @@ RUST_SRC_PATH = "${toolchain}/lib/rustlib/src/rust/library"; }; - }); + }) // { + homeManagerModules = { + lastfmpris = { config, lib, pkgs, ... }: + with lib; + let + cfg = config.services.lastfmpris; + in { + options.services.lastfmpris = { + enable = mkEnableOption "enables the lastmpris scrobbler"; + + package = mkOption { + type = types.package; + default = pkgs.lastfmpris; + }; + }; + + config = mkIf cfg.enable { + home.packages = [ cfg.package ]; + systemd.user.services.lastfmpris = { + Unit = { + Description = "Lastfmpris scrobbling daemon"; + After = [ "graphical-session-pre.target" ]; + }; + Service = { + Type = "Simple"; + ExecStart = "${lib.getExe cfg.package}"; + Restart = "on-failure"; + }; + }; + }; + }; + }; + }; }