From 2d255153fc9efebcc0a43b95c2cb6d2209546a29 Mon Sep 17 00:00:00 2001 From: Lukas Wurzinger Date: Wed, 28 May 2025 02:10:21 +0200 Subject: [PATCH] cleanup --- flake.lock | 6 +- flake.nix | 16 +---- nixos/musicomp/default.nix => module.nix | 72 +++++++++++--------- packages/musicomp/package.nix => package.nix | 2 +- src/musicomp/cli.py | 3 + 5 files changed, 48 insertions(+), 51 deletions(-) rename nixos/musicomp/default.nix => module.nix (59%) rename packages/musicomp/package.nix => package.nix (95%) diff --git a/flake.lock b/flake.lock index 8927bec..b7f15d7 100644 --- a/flake.lock +++ b/flake.lock @@ -20,11 +20,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1743964447, - "narHash": "sha256-nEo1t3Q0F+0jQ36HJfbJtiRU4OI+/0jX/iITURKe3EE=", + "lastModified": 1748190013, + "narHash": "sha256-R5HJFflOfsP5FBtk+zE8FpL8uqE7n62jqOsADvVshhE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "063dece00c5a77e4a0ea24e5e5a5bd75232806f8", + "rev": "62b852f6c6742134ade1abdd2a21685fd617a291", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index fdfb1c2..bb013e0 100644 --- a/flake.nix +++ b/flake.nix @@ -15,12 +15,7 @@ flake-parts.lib.mkFlake {inherit inputs;} { systems = ["x86_64-linux" "aarch64-linux"]; - flake.nixosModules = let - musicomp = import ./nixos/musicomp self; - in { - inherit musicomp; - default = musicomp; - }; + flake.nixosModules.default = import ./module.nix self; perSystem = { pkgs, @@ -35,14 +30,7 @@ ]; }; - packages = let - packages = lib.packagesFromDirectoryRecursive { - inherit (pkgs) callPackage; - directory = ./packages; - }; - in packages // { - default = packages.musicomp; - }; + packages.default = pkgs.callPackage ./package.nix {}; }; }; } diff --git a/nixos/musicomp/default.nix b/module.nix similarity index 59% rename from nixos/musicomp/default.nix rename to module.nix index e0e3062..090873a 100644 --- a/nixos/musicomp/default.nix +++ b/module.nix @@ -5,6 +5,7 @@ self: { config, ... }: let + cfg = config.services.musicomp; inherit (lib) types; inherit (utils.systemdUtils.unitOptions) unitOption; in { @@ -73,43 +74,48 @@ in { }; config = { - systemd.services = - lib.mapAttrs' - ( - name: job: - lib.nameValuePair "musicomp-jobs-${name}" { - wantedBy = ["multi-user.target"]; - restartIfChanged = false; + systemd = lib.mkMerge ( + lib.mapAttrsToList ( + jobName: job: + let + systemdName = "musicomp-job-${jobName}"; + description = "musicomp job ${jobName}"; + in + { + timers.${systemdName} = { + wantedBy = [ "timers.target" ]; + inherit description; + inherit (job) timerConfig; + }; + + services.${systemdName} = { + inherit description; + + serviceConfig = { + Type = "oneshot"; + User = "root"; + Group = "root"; + }; script = '' - ${lib.optionalString job.inhibitsSleep '' - ${lib.getExe' pkgs.systemd "systemd-inhibit"} \ - --mode block \ - --who musicomp \ - --what sleep \ - --why ${lib.escapeShellArg "Scheduled musicomp ${name}"} - ''} + ${lib.optionalString job.inhibitsSleep '' + ${lib.getExe' config.systemd.package "systemd-inhibit"} \ + --mode block \ + --who ${lib.escapeShellArg systemdName} \ + --what sleep \ + --why ${lib.escapeShellArg "Scheduled musicomp job ${jobName}"} + ''} - ${lib.getExe job.package} \ - ${lib.optionalString (job.workers > 0) "--workers ${job.workers}"} \ - --verbose \ - -- ${job.music} ${job.comp} - ''; + ${lib.getExe job.package} \ + ${lib.optionalString (job.workers > 0) "--workers ${lib.escapeShellArg job.workers}"} \ + --verbose \ + -- ${lib.escapeShellArg job.music} ${lib.escapeShellArg job.comp} + ''; postStart = job.post; - - serviceConfig.Type = "oneshot"; - } - ) - config.services.musicomp.jobs; - - systemd.timers = - lib.mapAttrs' - (name: job: - lib.nameValuePair "musicomp-jobs-${name}" { - wantedBy = ["timers.target"]; - inherit (job) timerConfig; - }) - (lib.filterAttrs (_: job: job.timerConfig != null) config.services.musicomp.jobs); + }; + } + ) cfg.jobs + ); }; } diff --git a/packages/musicomp/package.nix b/package.nix similarity index 95% rename from packages/musicomp/package.nix rename to package.nix index a740116..28f7348 100644 --- a/packages/musicomp/package.nix +++ b/package.nix @@ -7,7 +7,7 @@ python3Packages.buildPythonApplication { pname = "musicomp"; version = "0.1.0"; - src = ../../.; + src = ./.; pyproject = true; diff --git a/src/musicomp/cli.py b/src/musicomp/cli.py index c9fc7aa..cb9f499 100644 --- a/src/musicomp/cli.py +++ b/src/musicomp/cli.py @@ -90,6 +90,9 @@ def main(): src_dir = args.music[0] # pyright: ignore[reportUnknownMemberType] dst_dir = args.comp[0] # pyright: ignore[reportUnknownMemberType] + if args.verbose >= 1 or args.interactive: + print("Planning...", file=sys.stderr) + plan = list( Todo.plan( src_dir,