diff options
Diffstat (limited to '')
29 files changed, 162 insertions, 123 deletions
diff --git a/modules/by-name/ad/adb/module.nix b/modules/by-name/ad/adb/module.nix index cf13168a..89cb1439 100644 --- a/modules/by-name/ad/adb/module.nix +++ b/modules/by-name/ad/adb/module.nix @@ -10,6 +10,7 @@ { lib, config, + pkgs, ... }: let cfg = config.soispha.services.adb; @@ -25,7 +26,9 @@ in { }; config = lib.mkIf cfg.enable { - programs.adb.enable = true; + environment.systemPackages = [ + pkgs.android-tools + ]; users = { users."${cfg.user}".extraGroups = ["adbusers"]; diff --git a/modules/by-name/bo/boot/module.nix b/modules/by-name/bo/boot/module.nix index dfcd14b7..4b95aedf 100644 --- a/modules/by-name/bo/boot/module.nix +++ b/modules/by-name/bo/boot/module.nix @@ -46,7 +46,7 @@ in { # # stay on disk forever) <2024-05-11> # copyExtraFiles = '' # echo "[systemd-boot] copying files to ${bootMountPoint}" - # empty_file=$(mktemp) + # empty_file=$(mktemp boot_empty_file_XXX) # # ${lib.concatStrings (lib.mapAttrsToList (n: v: # /* diff --git a/modules/by-name/co/constants/module.nix b/modules/by-name/co/constants/module.nix index 5711e9cf..493ead1f 100644 --- a/modules/by-name/co/constants/module.nix +++ b/modules/by-name/co/constants/module.nix @@ -22,6 +22,7 @@ ids.uids = { # Keep this sorted with `!sort --numeric-sort --key=2 --field-separator="="` + wpa_supplicant = 986; dhcpcd = 992; systemd-oom = 993; sshd = 994; @@ -37,6 +38,7 @@ # Please add your groups to the users and inherit them here. # This avoids having an user/group id mismatch. + wpa_supplicant = 986; dhcpcd = 987; lpadmin = 988; resolvconf = 989; diff --git a/modules/by-name/di/disks/module.nix b/modules/by-name/di/disks/module.nix index d5746ecf..3e9d4614 100644 --- a/modules/by-name/di/disks/module.nix +++ b/modules/by-name/di/disks/module.nix @@ -17,7 +17,7 @@ # FIXME: The iso redeploy requires a bigger efi partition <2024-05-12> cfg = config.soispha.disks; defaultMountOptions = [ - "compress-force=zstd:15" # This saves disk space, at a performance cost + "compress=zstd:3" # This saves disk space, at a performance cost "noatime" # should have some performance upsides, and I don't use it anyways "lazytime" # make time changes in memory ]; @@ -86,7 +86,10 @@ in { }; "swap" = { mountpoint = "/swap"; - mountOptions = defaultMountOptions; + mountOptions = [ + "noatime" # should have some performance upsides, and I don't use it anyways + "lazytime" # make time changes in memory + ]; }; }; }; @@ -115,12 +118,12 @@ in { fsType = "tmpfs"; mountOptions = ["defaults" "size=50%" "mode=0755"]; }; - "/nix/var/nix/builds" = { + "/nix/var/nix/b" = { fsType = "tmpfs"; mountOptions = [ "defaults" "noswap" # Otherwise, we might run into io-based slowdowns - "size=75%" + "size=80%" "mode=0755" ]; }; diff --git a/modules/by-name/lf/lf/commands/base.sh b/modules/by-name/lf/lf/commands/base.sh index 99852c3e..7003d76c 100755 --- a/modules/by-name/lf/lf/commands/base.sh +++ b/modules/by-name/lf/lf/commands/base.sh @@ -41,11 +41,11 @@ prompt() { # set -- "$@" "$file" # done < "$(echo "$fx" | tmp)" tmp() { - __base_tmp_temporary_file="$(mktemp --tmpdir="$__base_tmp_temporary_directory")" + __base_tmp_temporary_file="$(mktemp -t --tmpdir="$__base_tmp_temporary_directory" lf_commands_tmp_fun_XXXXXXXX )" cat >"$__base_tmp_temporary_file" echo "$__base_tmp_temporary_file" } -__base_tmp_temporary_directory="$(mktemp --directory)" +__base_tmp_temporary_directory="$(mktemp -t --directory lf_commands_tmp_fun_XXXXXXXXXXXX)" trap 'rm --recursive "$__base_tmp_temporary_directory"' EXIT # Run a lf command on the current lf client diff --git a/modules/by-name/lf/lf/module.nix b/modules/by-name/lf/lf/module.nix index e66c3a8a..8dfd0c52 100644 --- a/modules/by-name/lf/lf/module.nix +++ b/modules/by-name/lf/lf/module.nix @@ -100,7 +100,7 @@ in { # and keep running through `autoquit = false`. # (Otherwise, the remote command is silently dropped: https://github.com/gokcehan/lf/issues/495) &{{ - tmp="$(mktemp)" + tmp="$(mktemp -t lf_make_map_dynamic_mapping_source_XXXXX)" ${lib.getExe pkgs.lf-make-map} --depth 4 generate ~/media ~/repos ~/documents >"$tmp" lf -remote "send $id source $tmp" diff --git a/modules/by-name/lf/lf/wrappers/ll/ll.sh b/modules/by-name/lf/lf/wrappers/ll/ll.sh index e012cffa..ce29fd97 100755 --- a/modules/by-name/lf/lf/wrappers/ll/ll.sh +++ b/modules/by-name/lf/lf/wrappers/ll/ll.sh @@ -10,7 +10,7 @@ # You should have received a copy of the License along with this program. # If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>. -last_directory="$(mktemp)" +last_directory="$(mktemp -t ll_last_directory_XXXXXXX)" cleanup() { rm "$last_directory" } diff --git a/modules/by-name/lo/locale/keymaps/dvorak_modified.xkb b/modules/by-name/lo/locale/keymaps/dvorak_modified.xkb index 092e17ea..3893e605 100644 --- a/modules/by-name/lo/locale/keymaps/dvorak_modified.xkb +++ b/modules/by-name/lo/locale/keymaps/dvorak_modified.xkb @@ -2,11 +2,15 @@ partial alphanumeric_keys xkb_symbols "dvorak-modified" { name[Group1]= "Dvorak English with additional keys"; + // German + key <AC01> {[ a, A, adiaeresis, Adiaeresis]}; key <AC02> {[ o, O, odiaeresis, Odiaeresis]}; key <AC04> {[ u, U, udiaeresis, Udiaeresis]}; - key <AC01> {type[Group1]="EIGHT_LEVEL", - [ a, A, adiaeresis, Adiaeresis, aring, Aring]}; + // Missing Swedish letter (the rest is in the German ones) + key <AC07> {[ h, H, aring, Aring]}; + + // Slovenian key <AC10> {[ s, S, scaron, Scaron]}; key <AD08> {[ c, C, ccaron, Ccaron]}; key <AB10> {[ z, Z, zcaron, Zcaron]}; diff --git a/modules/by-name/lo/locale/module.nix b/modules/by-name/lo/locale/module.nix index 17096731..3c9c646c 100644 --- a/modules/by-name/lo/locale/module.nix +++ b/modules/by-name/lo/locale/module.nix @@ -37,10 +37,10 @@ in { }; i18n = { - defaultLocale = "en_CA.UTF-8"; + defaultLocale = "sv_SE.UTF-8"; extraLocaleSettings = { - LANGUAGE = "en_CA:en_US:en"; - LC_TIME = "en_DK.UTF-8"; + LANGUAGE = "sv_SE:en_CA:en_US:en"; + LC_TIME = "sv_SE.UTF-8"; LC_COLLATE = "C.UTF-8"; }; }; diff --git a/modules/by-name/mp/mpd/module.nix b/modules/by-name/mp/mpd/module.nix index b7c7ab5a..37c648c6 100644 --- a/modules/by-name/mp/mpd/module.nix +++ b/modules/by-name/mp/mpd/module.nix @@ -71,6 +71,7 @@ in { extraConfig = '' metadata_to_use "artist,album,title,track,name,genre,date,composer,performer,disc,comment" + # Updated by the beets `mpdupdate` plugin auto_update "no" @@ -82,6 +83,8 @@ in { replaygain "track" replaygain_limit "yes" + sticker_file "${cfg.directories.data}/sticker.sql" + #database { # plugin "simple" # path "~/.local/share/mpd/db diff --git a/modules/by-name/mp/mpdpopm/module.nix b/modules/by-name/mp/mpdpopm/module.nix new file mode 100644 index 00000000..3524554c --- /dev/null +++ b/modules/by-name/mp/mpdpopm/module.nix @@ -0,0 +1,65 @@ +# nixos-config - My current NixOS configuration +# +# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de> +# SPDX-License-Identifier: GPL-3.0-or-later +# +# This file is part of my nixos-config. +# +# You should have received a copy of the License along with this program. +# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>. +{ + config, + pkgs, + libraries, + lib, + ... +}: let + cfg = config.soispha.services.mpdpopm; + + settingsFormat = pkgs.formats.json {}; +in { + options.soispha.services.mpdpopm = { + enable = libraries.base.options.mkEnable "mpdpopm"; + + settings = lib.mkOption { + # Setting this type allows for correct merging behavior + inherit (settingsFormat) type; + default = {}; + description = '' + Configuration for foo, see + <link xlink:href="https://example.com/docs/foo"/> + for supported settings. + ''; + }; + }; + + config = lib.mkIf cfg.enable { + soispha.services.mpdpopm.settings = { + version = "1"; + log = "${config.home-manager.users.soispha.xdg.dataHome}/mpdpopm/log"; + + conn.Local = { + path = config.home-manager.users.soispha.home.sessionVariables.MPD_HOST; + }; + + local_music_dir = config.soispha.services.mpd.directories.music; + }; + + home-manager.users.soispha = { + systemd.user.services.mpdpopm = { + Unit = { + Description = "mpdpopm ratings and playcounts for MPD"; + Requires = ["mpd.service"]; + After = ["mpd.service"]; + }; + + Service = { + Restart = "on-failure"; + ExecStart = "${lib.getExe' pkgs.mpdpopm "mpdpopmd"} --config ${settingsFormat.generate "config.json" cfg.settings}"; + }; + + Install = {WantedBy = ["default.target"];}; + }; + }; + }; +} diff --git a/modules/by-name/ne/networking/module.nix b/modules/by-name/ne/networking/module.nix index ea080ea4..075a1a5a 100644 --- a/modules/by-name/ne/networking/module.nix +++ b/modules/by-name/ne/networking/module.nix @@ -99,12 +99,17 @@ in { soispha.impermanence.directories = [ "/etc/NetworkManager" ]; - - users.users = { - "${cfg.userName}".extraGroups = [ - "networkmanager" # allows to configure NetworkManager as this user - ]; - nm-iodine.uid = config.soispha.constants.ids.uids.nm-iodine; + users = { + users = { + "${cfg.userName}".extraGroups = [ + "networkmanager" # allows to configure NetworkManager as this user + ]; + nm-iodine.uid = config.soispha.constants.ids.uids.nm-iodine; + wpa_supplicant.uid = config.soispha.constants.ids.uids.wpa_supplicant; + }; + groups = { + wpa_supplicant.gid = config.soispha.constants.ids.gids.wpa_supplicant; + }; }; }) ]); diff --git a/modules/by-name/ni/nixos-option/module.nix b/modules/by-name/ni/nixos-option/module.nix new file mode 100644 index 00000000..0053d357 --- /dev/null +++ b/modules/by-name/ni/nixos-option/module.nix @@ -0,0 +1,18 @@ +{ + config, + lib, + libraries, + ... +}: let + cfg = config.soispha.programs.nixos-option; +in { + options.soispha.programs.nixos-option = { + enable = libraries.base.options.mkEnable "nixos-option"; + }; + + config = lib.mkIf cfg.enable { + # NOTE: We disable nixos-option here explicitly, because I never used it, and it + # depends on cppnix. <2025-12-11> + system.tools.nixos-option.enable = false; + }; +} diff --git a/modules/by-name/ni/nixos-shell/module.nix b/modules/by-name/ni/nixos-shell/module.nix index 219f080d..8dda2890 100644 --- a/modules/by-name/ni/nixos-shell/module.nix +++ b/modules/by-name/ni/nixos-shell/module.nix @@ -91,7 +91,7 @@ in { modules = [ { # TODO(@bpeetz): This should be bumped each release. <2025-05-17> - system.stateVersion = "25.05"; + system.stateVersion = "25.11"; } cfg.configuration.value diff --git a/modules/by-name/ni/nixos-shell/nixos-shell.sh b/modules/by-name/ni/nixos-shell/nixos-shell.sh index 390e60b1..3b34019a 100755 --- a/modules/by-name/ni/nixos-shell/nixos-shell.sh +++ b/modules/by-name/ni/nixos-shell/nixos-shell.sh @@ -10,7 +10,7 @@ # You should have received a copy of the License along with this program. # If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>. -SHARED_DIR="$(mktemp --directory)" +SHARED_DIR="$(mktemp -t --directory "nixos_shell_XXXXXXXXX")" cleanup() { rm --recursive "$SHARED_DIR" } diff --git a/modules/by-name/nv/nvim/plgs/femaco/default.nix b/modules/by-name/nv/nvim/plgs/femaco/default.nix index 0388844a..eac6b393 100644 --- a/modules/by-name/nv/nvim/plgs/femaco/default.nix +++ b/modules/by-name/nv/nvim/plgs/femaco/default.nix @@ -14,7 +14,8 @@ }: let cfg = config.soispha.programs.nvim; in { - home-manager.users.soispha.programs.nixvim = lib.mkIf cfg.enable { + # TODO: Re-active this plugin, when it does no longer depend on `treesitter-legacy` <2026-01-18> + home-manager.users.soispha.programs.nixvim = lib.mkIf false { plugins.femaco = { enable = true; }; diff --git a/modules/by-name/nv/nvim/plgs/neorg/default.nix b/modules/by-name/nv/nvim/plgs/neorg/default.nix index ea451d3a..5ed87f0e 100644 --- a/modules/by-name/nv/nvim/plgs/neorg/default.nix +++ b/modules/by-name/nv/nvim/plgs/neorg/default.nix @@ -14,7 +14,9 @@ }: let cfg = config.soispha.programs.nvim; in { - home-manager.users.soispha.programs.nixvim = lib.mkIf cfg.enable { + # TODO: Re-active, whence neorg actually builds with all the treesitter grammars + # activated <2026-01-18> + home-manager.users.soispha.programs.nixvim = lib.mkIf false { extraFiles = { "ftplugin/norg.lua".text = '' ${lib.strings.fileContents ./key_mappings.lua} diff --git a/modules/by-name/nv/nvim/plgs/treesitter/default.nix b/modules/by-name/nv/nvim/plgs/treesitter/default.nix index ed1499f8..1377cb8a 100644 --- a/modules/by-name/nv/nvim/plgs/treesitter/default.nix +++ b/modules/by-name/nv/nvim/plgs/treesitter/default.nix @@ -26,45 +26,23 @@ in { plugins.treesitter = { enable = true; + highlight.enable = true; + indent.enable = true; + folding.enable = false; + # inject nixvim specific highlighting (eg in extraConfigLua). nixvimInjections = true; - nixGrammars = true; - grammarPackages = - # Append the `tree-sitter-yts` grammar to all the other grammars. - # TODO: Find a better way to do this. <2024-11-08> - config.home-manager.users.soispha.programs.nixvim.plugins.treesitter.package.passthru.allGrammars - ++ [pkgs.tree-sitter-yts]; - - settings = { - auto_install = false; - ensureInstalled = "all"; - indent.enable = true; - disabledLanguages = []; + grammarPackages = pkgs.vimPlugins.nvim-treesitter.allGrammars ++ [pkgs.tree-sitter-yts]; - highlight = { - enable = true; - disable = []; + # Register the parser to filetype + languageRegister.yts = "yts"; + }; - # Setting this to true will run `:h syntax` and tree-sitter at the same time. - # Set this to `true` if you depend on 'syntax' being enabled (like for indentation). - # Using this option may slow down your editor; and you may see some duplicate highlights. - # Instead of true it can also be a list of languages - additionalVimRegexHighlighting = []; - }; + # TODO: Is that necessary? <2026-01-18> + # extraPlugins = [pkgs.tree-sitter-yts]; - incrementalSelection = { - enable = true; - keymaps = { - # TODO: include these in the which-key description - initSelection = "gnn"; # set to `false` to disable one of the mappings - nodeIncremental = "grn"; - scopeIncremental = "grc"; - nodeDecremental = "grm"; - }; - }; - }; - }; + # TODO: Remove this by moving the queries in the package to `queries/<lang>/...`' <2026-01-18> extraFiles = { "queries/yts/highlights.scm".text = '' ${lib.strings.fileContents "${pkgs.tree-sitter-yts}/queries/highlights.scm"} diff --git a/modules/by-name/nv/nvim/plgs/vim-tex/default.nix b/modules/by-name/nv/nvim/plgs/vim-tex/default.nix index 9ee657c3..71422f94 100644 --- a/modules/by-name/nv/nvim/plgs/vim-tex/default.nix +++ b/modules/by-name/nv/nvim/plgs/vim-tex/default.nix @@ -14,11 +14,12 @@ }: let cfg = config.soispha.programs.nvim; in { - home-manager.users.soispha.programs.nixvim = lib.mkIf cfg.enable { + # TODO: Do I still need this module at all? <2026-01-18> + home-manager.users.soispha.programs.nixvim = lib.mkIf false { opts.conceallevel = 0; plugins.vimtex = { - enable = false; + enable = true; settings = { view_method = "zathura"; quickfix_mode = -1; diff --git a/modules/by-name/qu/qutebrowser/include/redirects.py b/modules/by-name/qu/qutebrowser/include/redirects.py index 23456a25..63a44ecf 100644 --- a/modules/by-name/qu/qutebrowser/include/redirects.py +++ b/modules/by-name/qu/qutebrowser/include/redirects.py @@ -38,7 +38,7 @@ REDIRECT_MAP: typing.Dict[str, typing.Callable[..., typing.Optional[bool]]] = { # Source: https://libredirect.github.io/ "medium.com": partial(farside_redir, "scribe"), "stackoverflow.com": partial(farside_redir, "anonymousoverflow"), - "goodreads.com": partial(farside_redir, "biblioreads"), + # "goodreads.com": partial(farside_redir, "biblioreads"), } diff --git a/modules/by-name/ri/river/keymap.nix b/modules/by-name/ri/river/keymap.nix index ca7ab69d..9bcbf387 100644 --- a/modules/by-name/ri/river/keymap.nix +++ b/modules/by-name/ri/river/keymap.nix @@ -79,6 +79,8 @@ in { "n" = mkSpawn pkgs.mpp "next" {}; "p" = mkSpawn pkgs.mpp "prev" {}; "t" = mkSpawn pkgs.mpp "toggle" {}; + "g" = mkSpawn' pkgs.mpdpopm "mpdpopm" "rating inc" {once = true;}; + "b" = mkSpawn' pkgs.mpdpopm "mpdpopm" "rating decr" {once = true;}; }; # Select tags for view. diff --git a/modules/by-name/ri/river/module.nix b/modules/by-name/ri/river/module.nix index 75725a8d..893fdc77 100644 --- a/modules/by-name/ri/river/module.nix +++ b/modules/by-name/ri/river/module.nix @@ -212,6 +212,7 @@ in { home.packages = [ (pkgs.callPackage ./river-start/package.nix {}) + pkgs.swallow ]; xdg.configFile."river/init" = { diff --git a/modules/common/projects.json b/modules/common/projects.json index ff08ce5a..e8e9bc39 100644 --- a/modules/common/projects.json +++ b/modules/common/projects.json @@ -49,6 +49,7 @@ "gpg": {}, "keyboard": {}, "laptop": {}, + "music": {}, "nvim": {}, "rss": {}, "shell": {}, diff --git a/modules/home.legacy/conf/beets/default.nix b/modules/home.legacy/conf/beets/default.nix index 2fec6881..0879b1a5 100644 --- a/modules/home.legacy/conf/beets/default.nix +++ b/modules/home.legacy/conf/beets/default.nix @@ -105,18 +105,17 @@ in { }; mpdIntegration = { - enableStats = true; enableUpdate = true; host = config.home.sessionVariables.MPD_HOST; }; }; - # Use the json formatter instead of the YAML one, as the YAML formatter mangles the - # longer python inline strings. - # YAML is a superset of JSON. - xdg.configFile."beets/config.yaml".source = - lib.mkForce - ((pkgs.formats.json {}).generate - "beets-config" - config.programs.beets.settings); + # # Use the json formatter instead of the YAML one, as the YAML formatter mangles the + # # longer python inline strings. + # # YAML is a superset of JSON. + # xdg.configFile."beets/config.yaml".source = + # lib.mkForce + # ((pkgs.formats.json {}).generate + # "beets-config" + # config.programs.beets.settings); } diff --git a/modules/home.legacy/conf/beets/plugins.nix b/modules/home.legacy/conf/beets/plugins.nix index ed78b49e..aaeab843 100644 --- a/modules/home.legacy/conf/beets/plugins.nix +++ b/modules/home.legacy/conf/beets/plugins.nix @@ -20,6 +20,8 @@ # Extract things from the music file # "xtractor" + "musicbrainz" + # Calculate replay gain "replaygain" @@ -29,12 +31,6 @@ # Show tags on files/queries "info" - # Create playlist from `play_count`/`skip_count` (gathered by the `mpdstats` - # plugin) - # Note that this should come _before_ the `mpdupdate` plugin, to ensure that - # `mpdupgate` can propagate changed playlist to `mpd`. - "smartplaylist" - "inline" # Warn, when importing a matching item @@ -58,6 +54,5 @@ # Allow beets to understand deezer id's # "deezer" - "mpdstats" # Transfer MPD stats to beets "mpdupdate" # Update MPD database on import ] diff --git a/modules/home.legacy/conf/beets/plugins/default.nix b/modules/home.legacy/conf/beets/plugins/default.nix index d22369be..2b2bd607 100644 --- a/modules/home.legacy/conf/beets/plugins/default.nix +++ b/modules/home.legacy/conf/beets/plugins/default.nix @@ -15,7 +15,6 @@ ./inline ./lyrics ./replaygain - ./smartplaylist # ./xtractor ]; } diff --git a/modules/home.legacy/conf/beets/plugins/ihate/default.nix b/modules/home.legacy/conf/beets/plugins/ihate/default.nix index 51cb6f11..2356ec3b 100644 --- a/modules/home.legacy/conf/beets/plugins/ihate/default.nix +++ b/modules/home.legacy/conf/beets/plugins/ihate/default.nix @@ -11,6 +11,7 @@ programs.beets.settings.ihate = { warn = [ "title:commentary" + "title:live" "albumtype:live" ]; }; diff --git a/modules/home.legacy/conf/beets/plugins/inline/default.nix b/modules/home.legacy/conf/beets/plugins/inline/default.nix index 564d5b4c..bf476c9f 100644 --- a/modules/home.legacy/conf/beets/plugins/inline/default.nix +++ b/modules/home.legacy/conf/beets/plugins/inline/default.nix @@ -11,8 +11,6 @@ programs.beets.settings.item_fields = { primary_artist = # python - '' - albumartists[0] - ''; + ''albumartists[0]''; }; } diff --git a/modules/home.legacy/conf/beets/plugins/smartplaylist/default.nix b/modules/home.legacy/conf/beets/plugins/smartplaylist/default.nix deleted file mode 100644 index 9b52c1ad..00000000 --- a/modules/home.legacy/conf/beets/plugins/smartplaylist/default.nix +++ /dev/null @@ -1,42 +0,0 @@ -# nixos-config - My current NixOS configuration -# -# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de> -# SPDX-License-Identifier: GPL-3.0-or-later -# -# This file is part of my nixos-config. -# -# You should have received a copy of the License along with this program. -# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>. -{config, ...}: { - programs.beets.settings.smartplaylist = { - relative_to = config.services.mpd.musicDirectory; - playlist_dir = config.services.mpd.playlistDirectory; - forward_slash = false; - - # Show the real m3u file paths, when running `--pretend` - pretend_paths = true; - - playlists = [ - { - name = "artists-$first_artist.m3u"; - query = ""; - } - { - name = "ratings-good.m3u"; - query = "rating:0.7..1.0"; - } - { - name = "ratings-mediocre.m3u"; - query = "rating:0.4..0.7"; - } - { - name = "ratings-bad.m3u"; - query = "rating:0.0..0.4"; - } - { - name = "not_played.m3u"; - query = "-play_count: artist:"; - } - ]; - }; -} |
