diff --git a/default.nix b/default.nix index 1e3ff09e..545b0114 100644 --- a/default.nix +++ b/default.nix @@ -1,13 +1,10 @@ -{ pkgs ? import {} }: +{ pkgs ? import { } }: rec { - home-manager = pkgs.callPackage ./home-manager { - path = toString ./.; - }; + home-manager = pkgs.callPackage ./home-manager { path = toString ./.; }; - install = pkgs.callPackage ./home-manager/install.nix { - inherit home-manager; - }; + install = + pkgs.callPackage ./home-manager/install.nix { inherit home-manager; }; nixos = import ./nixos; } diff --git a/doc/default.nix b/doc/default.nix index 97c1914a..638027b0 100644 --- a/doc/default.nix +++ b/doc/default.nix @@ -1,8 +1,6 @@ { - # Note, this should be "the standard library" + HM extensions. - lib -, pkgs -}: +# Note, this should be "the standard library" + HM extensions. +lib, pkgs }: let @@ -19,23 +17,19 @@ let # Make sure the used package is scrubbed to avoid actually # instantiating derivations. scrubbedPkgsModule = { - imports = [ - { - _module.args = { - pkgs = lib.mkForce (nmd.scrubDerivations "pkgs" pkgs); - pkgs_i686 = lib.mkForce { }; - }; - } - ]; + imports = [{ + _module.args = { + pkgs = lib.mkForce (nmd.scrubDerivations "pkgs" pkgs); + pkgs_i686 = lib.mkForce { }; + }; + }]; }; hmModulesDocs = nmd.buildModulesDocs { - modules = - import ../modules/modules.nix { - inherit lib pkgs; - check = false; - } - ++ [ scrubbedPkgsModule ]; + modules = import ../modules/modules.nix { + inherit lib pkgs; + check = false; + } ++ [ scrubbedPkgsModule ]; moduleRootPaths = [ ./.. ]; mkModuleUrl = path: "https://github.com/rycee/home-manager/blob/master/${path}#blob-path"; @@ -58,9 +52,7 @@ let ''; }; -in - -{ +in { inherit nmdSrc; options = { @@ -71,7 +63,5 @@ in manPages = docs.manPages; - manual = { - inherit (docs) html htmlOpenTool; - }; + manual = { inherit (docs) html htmlOpenTool; }; } diff --git a/home-manager/install.nix b/home-manager/install.nix index bafb9a06..87aae504 100644 --- a/home-manager/install.nix +++ b/home-manager/install.nix @@ -1,70 +1,67 @@ { home-manager, runCommand }: -runCommand - "home-manager-install" - { - propagatedBuildInputs = [ home-manager ]; - preferLocalBuild = true; - allowSubstitutes = false; - shellHookOnly = true; - shellHook = '' - confFile="''${XDG_CONFIG_HOME:-$HOME/.config}/nixpkgs/home.nix" - - if [[ ! -e $confFile ]]; then - echo - echo "Creating initial Home Manager configuration..." - - mkdir -p "$(dirname "$confFile")" - cat > $confFile < $confFile <"]); - getSubModules = elemType.getSubModules; - substSubModules = m: dagOf (elemType.substSubModules m); - functor = (defaultFunctor name) // { wrapped = elemType; }; - }; + in mkOptionType rec { + name = "dagOf"; + description = "DAG of ${elemType.description}s"; + check = isAttrs; + merge = loc: defs: attrEquivalent.merge loc (convertAllToDags defs); + getSubOptions = prefix: elemType.getSubOptions (prefix ++ [ "" ]); + getSubModules = elemType.getSubModules; + substSubModules = m: dagOf (elemType.substSubModules m); + functor = (defaultFunctor name) // { wrapped = elemType; }; + }; # A directed acyclic graph of some inner type OR a list of that # inner type. This is a temporary hack for use by the @@ -55,42 +48,37 @@ in listOrDagOf = elemType: let paddedIndexStr = list: i: - let - padWidth = stringLength (toString (length list)); - in - fixedWidthNumber padWidth i; + let padWidth = stringLength (toString (length list)); + in fixedWidthNumber padWidth i; convertAllToDags = defs: let convertAttrValue = n: v: - if isDagEntry v then v - else dag.entryAnywhere v; + if isDagEntry v then v else dag.entryAnywhere v; convertListValue = namePrefix: vs: let pad = paddedIndexStr vs; makeEntry = i: v: nameValuePair "${namePrefix}.${pad i}" (dag.entryAnywhere v); - in - listToAttrs (imap1 makeEntry vs); + in listToAttrs (imap1 makeEntry vs); convertValue = i: value: - if isList value - then convertListValue "unnamed-${paddedIndexStr defs i}" value - else mapAttrs convertAttrValue value; - in - imap1 (i: def: def // { value = convertValue i def.value; }) defs; + if isList value then + convertListValue "unnamed-${paddedIndexStr defs i}" value + else + mapAttrs convertAttrValue value; + in imap1 (i: def: def // { value = convertValue i def.value; }) defs; attrEquivalent = types.attrsOf (dagContentType elemType); - in - mkOptionType rec { - name = "dagOf"; - description = "DAG of ${elemType.description}s"; - check = x: isAttrs x || isList x; - merge = loc: defs: attrEquivalent.merge loc (convertAllToDags defs); - getSubOptions = prefix: elemType.getSubOptions (prefix ++ [""]); - getSubModules = elemType.getSubModules; - substSubModules = m: dagOf (elemType.substSubModules m); - functor = (defaultFunctor name) // { wrapped = elemType; }; - }; + in mkOptionType rec { + name = "dagOf"; + description = "DAG of ${elemType.description}s"; + check = x: isAttrs x || isList x; + merge = loc: defs: attrEquivalent.merge loc (convertAllToDags defs); + getSubOptions = prefix: elemType.getSubOptions (prefix ++ [ "" ]); + getSubModules = elemType.getSubModules; + substSubModules = m: dagOf (elemType.substSubModules m); + functor = (defaultFunctor name) // { wrapped = elemType; }; + }; } diff --git a/modules/lib/zsh.nix b/modules/lib/zsh.nix index 1d3e96b5..c6901350 100644 --- a/modules/lib/zsh.nix +++ b/modules/lib/zsh.nix @@ -2,13 +2,15 @@ rec { # Produces a Zsh shell like value - toZshValue = v: if builtins.isBool v then - if v then "true" else "false" - else if builtins.isString v then - "\"${v}\"" - else if builtins.isList v then - "(${lib.concatStringsSep " " (map toZshValue v)})" - else "\"${toString v}\""; + toZshValue = v: + if builtins.isBool v then + if v then "true" else "false" + else if builtins.isString v then + ''"${v}"'' + else if builtins.isList v then + "(${lib.concatStringsSep " " (map toZshValue v)})" + else + ''"${toString v}"''; # Produces a Zsh shell like definition statement define = n: v: "${n}=${toZshValue v}"; diff --git a/modules/misc/fontconfig.nix b/modules/misc/fontconfig.nix index 8dbcce53..795ab3a7 100644 --- a/modules/misc/fontconfig.nix +++ b/modules/misc/fontconfig.nix @@ -8,15 +8,15 @@ let profileDirectory = config.home.profileDirectory; -in - -{ +in { meta.maintainers = [ maintainers.rycee ]; imports = [ - (mkRenamedOptionModule - [ "fonts" "fontconfig" "enableProfileFonts" ] - [ "fonts" "fontconfig" "enable" ]) + (mkRenamedOptionModule [ "fonts" "fontconfig" "enableProfileFonts" ] [ + "fonts" + "fontconfig" + "enable" + ]) ]; options = { diff --git a/modules/misc/lib.nix b/modules/misc/lib.nix index a0907545..13c00dc5 100644 --- a/modules/misc/lib.nix +++ b/modules/misc/lib.nix @@ -4,7 +4,7 @@ options = { lib = lib.mkOption { type = lib.types.attrsOf lib.types.attrs; - default = {}; + default = { }; description = '' This option allows modules to define helper functions, constants, etc. diff --git a/modules/misc/numlock.nix b/modules/misc/numlock.nix index 77149d12..199dd317 100644 --- a/modules/misc/numlock.nix +++ b/modules/misc/numlock.nix @@ -6,12 +6,8 @@ let cfg = config.xsession.numlock; -in - -{ - options = { - xsession.numlock.enable = mkEnableOption "Num Lock"; - }; +in { + options = { xsession.numlock.enable = mkEnableOption "Num Lock"; }; config = mkIf cfg.enable { systemd.user.services.numlockx = { @@ -27,9 +23,7 @@ in ExecStart = "${pkgs.numlockx}/bin/numlockx"; }; - Install = { - WantedBy = [ "graphical-session.target" ]; - }; + Install = { WantedBy = [ "graphical-session.target" ]; }; }; }; } diff --git a/modules/misc/pam.nix b/modules/misc/pam.nix index 6ace2bfd..f54f4b95 100644 --- a/modules/misc/pam.nix +++ b/modules/misc/pam.nix @@ -6,14 +6,12 @@ let vars = config.pam.sessionVariables; -in - -{ +in { meta.maintainers = [ maintainers.rycee ]; options = { pam.sessionVariables = mkOption { - default = {}; + default = { }; type = types.attrs; example = { EDITOR = "vim"; }; description = '' @@ -27,10 +25,8 @@ in }; }; - config = mkIf (vars != {}) { - home.file.".pam_environment".text = - concatStringsSep "\n" ( - mapAttrsToList (n: v: "${n} OVERRIDE=\"${toString v}\"") vars - ) + "\n"; + config = mkIf (vars != { }) { + home.file.".pam_environment".text = concatStringsSep "\n" + (mapAttrsToList (n: v: ''${n} OVERRIDE="${toString v}"'') vars) + "\n"; }; } diff --git a/modules/misc/qt.nix b/modules/misc/qt.nix index d0ba16d7..ff38f842 100644 --- a/modules/misc/qt.nix +++ b/modules/misc/qt.nix @@ -6,19 +6,13 @@ let cfg = config.qt; -in - -{ +in { meta.maintainers = [ maintainers.rycee ]; imports = [ - (mkChangedOptionModule - [ "qt" "useGtkTheme" ] - [ "qt" "platformTheme" ] + (mkChangedOptionModule [ "qt" "useGtkTheme" ] [ "qt" "platformTheme" ] (config: - if getAttrFromPath [ "qt" "useGtkTheme" ] config - then "gtk" - else null)) + if getAttrFromPath [ "qt" "useGtkTheme" ] config then "gtk" else null)) ]; options = { @@ -29,10 +23,8 @@ in type = types.nullOr (types.enum [ "gtk" "gnome" ]); default = null; example = "gnome"; - relatedPackages = [ - "qgnomeplatform" - ["libsForQt5" "qtstyleplugins"] - ]; + relatedPackages = + [ "qgnomeplatform" [ "libsForQt5" "qtstyleplugins" ] ]; description = '' Selects the platform theme to use for Qt applications. The options are @@ -59,16 +51,16 @@ in home.sessionVariables.QT_QPA_PLATFORMTHEME = if cfg.platformTheme == "gnome" then "gnome" else "gtk2"; - home.packages = - if cfg.platformTheme == "gnome" - then [ pkgs.qgnomeplatform ] - else [ pkgs.libsForQt5.qtstyleplugins ]; + home.packages = if cfg.platformTheme == "gnome" then + [ pkgs.qgnomeplatform ] + else + [ pkgs.libsForQt5.qtstyleplugins ]; xsession.importedVariables = [ "QT_QPA_PLATFORMTHEME" ]; # Enable GTK+ style for Qt4 in either case. # It doesn’t support the platform theme packages. - home.activation.useGtkThemeInQt4 = hm.dag.entryAfter ["writeBoundary"] '' + home.activation.useGtkThemeInQt4 = hm.dag.entryAfter [ "writeBoundary" ] '' $DRY_RUN_CMD ${pkgs.crudini}/bin/crudini $VERBOSE_ARG \ --set "${config.xdg.configHome}/Trolltech.conf" Qt style GTK+ ''; diff --git a/modules/misc/xdg-mime-apps.nix b/modules/misc/xdg-mime-apps.nix index 979c7ea4..7ba4083b 100644 --- a/modules/misc/xdg-mime-apps.nix +++ b/modules/misc/xdg-mime-apps.nix @@ -9,9 +9,7 @@ let strListOrSingleton = with types; coercedTo (either (listOf str) str) toList (listOf str); -in - -{ +in { meta.maintainers = with maintainers; [ pacien ]; options.xdg.mimeApps = { @@ -80,13 +78,11 @@ in config.xdg.configFile."mimeapps.list".source; xdg.configFile."mimeapps.list".text = - let - joinValues = mapAttrs (n: concatStringsSep ";"); - in - generators.toINI {} { - "Added Associations" = joinValues cfg.associations.added; - "Removed Associations" = joinValues cfg.associations.removed; - "Default Applications" = joinValues cfg.defaultApplications; - }; + let joinValues = mapAttrs (n: concatStringsSep ";"); + in generators.toINI { } { + "Added Associations" = joinValues cfg.associations.added; + "Removed Associations" = joinValues cfg.associations.removed; + "Default Applications" = joinValues cfg.defaultApplications; + }; }; } diff --git a/modules/misc/xdg-mime.nix b/modules/misc/xdg-mime.nix index 0063e43d..32006e02 100644 --- a/modules/misc/xdg-mime.nix +++ b/modules/misc/xdg-mime.nix @@ -6,9 +6,7 @@ let cfg = config.xdg.mime; -in - -{ +in { options = { xdg.mime.enable = mkOption { type = types.bool; diff --git a/modules/misc/xdg-user-dirs.nix b/modules/misc/xdg-user-dirs.nix index d45356da..da9d3c43 100644 --- a/modules/misc/xdg-user-dirs.nix +++ b/modules/misc/xdg-user-dirs.nix @@ -6,15 +6,15 @@ let cfg = config.xdg.userDirs; -in - -{ +in { meta.maintainers = with maintainers; [ pacien ]; imports = [ - (mkRenamedOptionModule - [ "xdg" "userDirs" "publishShare" ] - [ "xdg" "userDirs" "publicShare" ]) + (mkRenamedOptionModule [ "xdg" "userDirs" "publishShare" ] [ + "xdg" + "userDirs" + "publicShare" + ]) ]; options.xdg.userDirs = { @@ -89,18 +89,15 @@ in }; config = mkIf cfg.enable { - xdg.configFile."user-dirs.dirs".text = generators.toKeyValue {} ( - { - XDG_DESKTOP_DIR = cfg.desktop; - XDG_DOCUMENTS_DIR = cfg.documents; - XDG_DOWNLOAD_DIR = cfg.download; - XDG_MUSIC_DIR = cfg.music; - XDG_PICTURES_DIR = cfg.pictures; - XDG_PUBLICSHARE_DIR = cfg.publicShare; - XDG_TEMPLATES_DIR = cfg.templates; - XDG_VIDEOS_DIR = cfg.videos; - } - // cfg.extraConfig - ); + xdg.configFile."user-dirs.dirs".text = generators.toKeyValue { } ({ + XDG_DESKTOP_DIR = cfg.desktop; + XDG_DOCUMENTS_DIR = cfg.documents; + XDG_DOWNLOAD_DIR = cfg.download; + XDG_MUSIC_DIR = cfg.music; + XDG_PICTURES_DIR = cfg.pictures; + XDG_PUBLICSHARE_DIR = cfg.publicShare; + XDG_TEMPLATES_DIR = cfg.templates; + XDG_VIDEOS_DIR = cfg.videos; + } // cfg.extraConfig); }; } diff --git a/modules/programs/alacritty.nix b/modules/programs/alacritty.nix index 84675cb1..69b9ea96 100644 --- a/modules/programs/alacritty.nix +++ b/modules/programs/alacritty.nix @@ -6,16 +6,14 @@ let cfg = config.programs.alacritty; -in - -{ +in { options = { programs.alacritty = { enable = mkEnableOption "Alacritty"; settings = mkOption { type = types.attrs; - default = {}; + default = { }; example = literalExample '' { window.dimensions = { @@ -45,8 +43,9 @@ in (mkIf cfg.enable { home.packages = [ pkgs.alacritty ]; - xdg.configFile."alacritty/alacritty.yml" = mkIf (cfg.settings != {}) { - text = replaceStrings ["\\\\"] ["\\"] (builtins.toJSON cfg.settings); + xdg.configFile."alacritty/alacritty.yml" = mkIf (cfg.settings != { }) { + text = + replaceStrings [ "\\\\" ] [ "\\" ] (builtins.toJSON cfg.settings); }; }) ]; diff --git a/modules/programs/alot-accounts.nix b/modules/programs/alot-accounts.nix index 8f3ffdfb..89ae28f9 100644 --- a/modules/programs/alot-accounts.nix +++ b/modules/programs/alot-accounts.nix @@ -18,12 +18,10 @@ with lib; type = types.attrsOf types.str; default = { type = "shellcommand"; - command = "'${pkgs.notmuch}/bin/notmuch address --format=json --output=recipients date:6M..'"; - regexp = - "'\\[?{" - + ''"name": "(?P.*)", '' - + ''"address": "(?P.+)", '' - + ''"name-addr": ".*"'' + command = + "'${pkgs.notmuch}/bin/notmuch address --format=json --output=recipients date:6M..'"; + regexp = "'\\[?{" + '' + "name": "(?P.*)", "address": "(?P.+)", "name-addr": ".*"'' + "}[,\\]]?'"; shellcommand_external_filtering = "False"; }; @@ -36,9 +34,9 @@ with lib; } ''; description = '' - Contact completion configuration as expected per alot. - See alot's wiki for - explanation about possible values. + Contact completion configuration as expected per alot. + See alot's wiki for + explanation about possible values. ''; }; @@ -52,10 +50,9 @@ with lib; }; config = mkIf config.notmuch.enable { - alot.sendMailCommand = mkOptionDefault ( - if config.msmtp.enable - then "msmtpq --read-envelope-from --read-recipients" - else null - ); + alot.sendMailCommand = mkOptionDefault (if config.msmtp.enable then + "msmtpq --read-envelope-from --read-recipients" + else + null); }; } diff --git a/modules/programs/astroid-accounts.nix b/modules/programs/astroid-accounts.nix index bc94a301..17544ff7 100644 --- a/modules/programs/astroid-accounts.nix +++ b/modules/programs/astroid-accounts.nix @@ -17,7 +17,7 @@ with lib; extraConfig = mkOption { type = types.attrs; - default = {}; + default = { }; example = { select_query = ""; }; description = '' Extra settings to add to this astroid account configuration. @@ -26,8 +26,7 @@ with lib; }; config = mkIf config.notmuch.enable { - astroid.sendMailCommand = mkIf config.msmtp.enable ( - mkOptionDefault "msmtpq --read-envelope-from --read-recipients" - ); + astroid.sendMailCommand = mkIf config.msmtp.enable + (mkOptionDefault "msmtpq --read-envelope-from --read-recipients"); }; } diff --git a/modules/programs/astroid.nix b/modules/programs/astroid.nix index b4b60fe2..8b3762fa 100644 --- a/modules/programs/astroid.nix +++ b/modules/programs/astroid.nix @@ -8,35 +8,32 @@ let cfg = config.programs.astroid; astroidAccounts = - filterAttrs - (n: v: v.astroid.enable) - config.accounts.email.accounts; + filterAttrs (n: v: v.astroid.enable) config.accounts.email.accounts; boolOpt = b: if b then "true" else "false"; - accountAttr = account: with account; { - email = address; - name = realName; - sendmail = astroid.sendMailCommand; - additional_sent_tags = ""; - default = boolOpt primary; - save_drafts_to = "${maildir.absPath}/${folders.drafts}"; - save_sent = "true"; - save_sent_to = "${maildir.absPath}/${folders.sent}"; - select_query = ""; - } - // optionalAttrs (signature.showSignature != "none") { - signature_attach = boolOpt (signature.showSignature == "attach"); - signature_default_on = boolOpt (signature.showSignature != "none"); - signature_file = pkgs.writeText "signature.txt" signature.text; - signature_file_markdown = "false"; - signature_separate = "true"; # prepends '--\n' to the signature - } - // optionalAttrs (gpg != null) { - always_gpg_sign = boolOpt gpg.signByDefault; - gpgkey = gpg.key; - } - // astroid.extraConfig; + accountAttr = account: + with account; + { + email = address; + name = realName; + sendmail = astroid.sendMailCommand; + additional_sent_tags = ""; + default = boolOpt primary; + save_drafts_to = "${maildir.absPath}/${folders.drafts}"; + save_sent = "true"; + save_sent_to = "${maildir.absPath}/${folders.sent}"; + select_query = ""; + } // optionalAttrs (signature.showSignature != "none") { + signature_attach = boolOpt (signature.showSignature == "attach"); + signature_default_on = boolOpt (signature.showSignature != "none"); + signature_file = pkgs.writeText "signature.txt" signature.text; + signature_file_markdown = "false"; + signature_separate = "true"; # prepends '--\n' to the signature + } // optionalAttrs (gpg != null) { + always_gpg_sign = boolOpt gpg.signByDefault; + gpgkey = gpg.key; + } // astroid.extraConfig; # See https://github.com/astroidmail/astroid/wiki/Configuration-Reference configFile = mailAccounts: @@ -51,12 +48,9 @@ let cfg.extraConfig cfg.externalEditor ]; - in - builtins.toJSON astroidConfig; + in builtins.toJSON astroidConfig; -in - -{ +in { options = { programs.astroid = { enable = mkEnableOption "Astroid"; @@ -81,7 +75,8 @@ in "cmd" = cmd; }; }; - example = "nvim-qt -- -c 'set ft=mail' '+set fileencoding=utf-8' '+set ff=unix' '+set enc=utf-8' '+set fo+=w' %1"; + example = + "nvim-qt -- -c 'set ft=mail' '+set fileencoding=utf-8' '+set ff=unix' '+set enc=utf-8' '+set fo+=w' %1"; description = '' You can use %1, %2, and %3 to refer respectively to: @@ -96,7 +91,7 @@ in extraConfig = mkOption { type = types.attrs; - default = {}; + default = { }; example = { poll.interval = 0; }; description = '' JSON config that will override the default Astroid configuration. @@ -106,18 +101,15 @@ in }; config = mkIf cfg.enable { - home.packages = [ pkgs.astroid ]; + home.packages = [ pkgs.astroid ]; - xdg.configFile."astroid/config".source = - pkgs.runCommand "out.json" - { - json = configFile astroidAccounts; - preferLocalBuild = true; - allowSubstitutes = false; - } - '' - echo -n "$json" | ${pkgs.jq}/bin/jq . > $out - ''; + xdg.configFile."astroid/config".source = pkgs.runCommand "out.json" { + json = configFile astroidAccounts; + preferLocalBuild = true; + allowSubstitutes = false; + } '' + echo -n "$json" | ${pkgs.jq}/bin/jq . > $out + ''; xdg.configFile."astroid/poll.sh" = { executable = true; diff --git a/modules/programs/autorandr.nix b/modules/programs/autorandr.nix index 4514a5b5..02fc77c1 100644 --- a/modules/programs/autorandr.nix +++ b/modules/programs/autorandr.nix @@ -6,20 +6,21 @@ let cfg = config.programs.autorandr; - matrixOf = n: m: elemType: mkOptionType rec { - name = "matrixOf"; - description = "${toString n}×${toString m} matrix of ${elemType.description}s"; - check = xss: - let - listOfSize = l: xs: isList xs && length xs == l; - in - listOfSize n xss && all (xs: listOfSize m xs && all elemType.check xs) xss; - merge = mergeOneOption; - getSubOptions = prefix: elemType.getSubOptions (prefix ++ ["*" "*"]); - getSubModules = elemType.getSubModules; - substSubModules = mod: matrixOf n m (elemType.substSubModules mod); - functor = (defaultFunctor name) // { wrapped = elemType; }; - }; + matrixOf = n: m: elemType: + mkOptionType rec { + name = "matrixOf"; + description = + "${toString n}×${toString m} matrix of ${elemType.description}s"; + check = xss: + let listOfSize = l: xs: isList xs && length xs == l; + in listOfSize n xss + && all (xs: listOfSize m xs && all elemType.check xs) xss; + merge = mergeOneOption; + getSubOptions = prefix: elemType.getSubOptions (prefix ++ [ "*" "*" ]); + getSubModules = elemType.getSubModules; + substSubModules = mod: matrixOf n m (elemType.substSubModules mod); + functor = (defaultFunctor name) // { wrapped = elemType; }; + }; profileModule = types.submodule { options = { @@ -29,19 +30,19 @@ let Output name to EDID mapping. Use autorandr --fingerprint to get current setup values. ''; - default = {}; + default = { }; }; config = mkOption { type = types.attrsOf configModule; description = "Per output profile configuration."; - default = {}; + default = { }; }; hooks = mkOption { type = profileHooksModule; description = "Profile hook scripts."; - default = {}; + default = { }; }; }; }; @@ -89,7 +90,7 @@ let }; rotate = mkOption { - type = types.nullOr (types.enum ["normal" "left" "right" "inverted"]); + type = types.nullOr (types.enum [ "normal" "left" "right" "inverted" ]); description = "Output rotate configuration."; default = null; example = "left"; @@ -126,7 +127,7 @@ let type = types.nullOr (types.submodule { options = { method = mkOption { - type = types.enum ["factor" "pixel" ]; + type = types.enum [ "factor" "pixel" ]; description = "Output scaling method."; default = "factor"; example = "pixel"; @@ -178,19 +179,21 @@ let postswitch = mkOption { type = types.attrsOf hookType; description = "Postswitch hook executed after mode switch."; - default = {}; + default = { }; }; preswitch = mkOption { type = types.attrsOf hookType; description = "Preswitch hook executed before mode switch."; - default = {}; + default = { }; }; predetect = mkOption { type = types.attrsOf hookType; - description = "Predetect hook executed before autorandr attempts to run xrandr."; - default = {}; + description = '' + Predetect hook executed before autorandr attempts to run xrandr. + ''; + default = { }; }; }; }; @@ -211,50 +214,56 @@ let predetect = mkOption { type = hookType; - description = "Predetect hook executed before autorandr attempts to run xrandr."; + description = '' + Predetect hook executed before autorandr attempts to run xrandr. + ''; default = ""; }; }; }; hookToFile = folder: name: hook: - nameValuePair - "autorandr/${folder}/${name}" - { source = "${pkgs.writeShellScriptBin "hook" hook}/bin/hook"; }; - profileToFiles = name: profile: with profile; mkMerge ([ - { - "autorandr/${name}/setup".text = concatStringsSep "\n" (mapAttrsToList fingerprintToString fingerprint); - "autorandr/${name}/config".text = concatStringsSep "\n" (mapAttrsToList configToString profile.config); - } - (mkIf (hooks.postswitch != "") (listToAttrs [ (hookToFile name "postswitch" hooks.postswitch) ])) - (mkIf (hooks.preswitch != "") (listToAttrs [ (hookToFile name "preswitch" hooks.preswitch) ])) - (mkIf (hooks.predetect != "") (listToAttrs [ (hookToFile name "predetect" hooks.predetect) ])) - ]); + nameValuePair "autorandr/${folder}/${name}" { + source = "${pkgs.writeShellScriptBin "hook" hook}/bin/hook"; + }; + profileToFiles = name: profile: + with profile; + mkMerge ([ + { + "autorandr/${name}/setup".text = concatStringsSep "\n" + (mapAttrsToList fingerprintToString fingerprint); + "autorandr/${name}/config".text = + concatStringsSep "\n" (mapAttrsToList configToString profile.config); + } + (mkIf (hooks.postswitch != "") + (listToAttrs [ (hookToFile name "postswitch" hooks.postswitch) ])) + (mkIf (hooks.preswitch != "") + (listToAttrs [ (hookToFile name "preswitch" hooks.preswitch) ])) + (mkIf (hooks.predetect != "") + (listToAttrs [ (hookToFile name "predetect" hooks.predetect) ])) + ]); fingerprintToString = name: edid: "${name} ${edid}"; - configToString = name: config: if config.enable then '' - output ${name} - ${optionalString (config.position != "") "pos ${config.position}"} - ${optionalString config.primary "primary"} - ${optionalString (config.dpi != null) "dpi ${toString config.dpi}"} - ${optionalString (config.gamma != "") "gamma ${config.gamma}"} - ${optionalString (config.mode != "") "mode ${config.mode}"} - ${optionalString (config.rate != "") "rate ${config.rate}"} - ${optionalString (config.rotate != null) "rotate ${config.rotate}"} - ${optionalString (config.scale != null) ( - (if config.scale.method == "factor" then "scale" else "scale-from") - + " ${toString config.scale.x}x${toString config.scale.y}" - )} - ${optionalString (config.transform != null) ( - "transform " + concatMapStringsSep "," toString (flatten config.transform) - )} - '' else '' - output ${name} - off - ''; + configToString = name: config: + if config.enable then '' + output ${name} + ${optionalString (config.position != "") "pos ${config.position}"} + ${optionalString config.primary "primary"} + ${optionalString (config.dpi != null) "dpi ${toString config.dpi}"} + ${optionalString (config.gamma != "") "gamma ${config.gamma}"} + ${optionalString (config.mode != "") "mode ${config.mode}"} + ${optionalString (config.rate != "") "rate ${config.rate}"} + ${optionalString (config.rotate != null) "rotate ${config.rotate}"} + ${optionalString (config.scale != null) + ((if config.scale.method == "factor" then "scale" else "scale-from") + + " ${toString config.scale.x}x${toString config.scale.y}")} + ${optionalString (config.transform != null) ("transform " + + concatMapStringsSep "," toString (flatten config.transform))} + '' else '' + output ${name} + off + ''; -in - -{ +in { options = { programs.autorandr = { enable = mkEnableOption "Autorandr"; @@ -262,39 +271,39 @@ in hooks = mkOption { type = globalHooksModule; description = "Global hook scripts"; - default = {}; + default = { }; example = literalExample '' - { - postswitch = { - "notify-i3" = "''${pkgs.i3}/bin/i3-msg restart"; - "change-background" = readFile ./change-background.sh; - "change-dpi" = ''' - case "$AUTORANDR_CURRENT_PROFILE" in - default) - DPI=120 - ;; - home) - DPI=192 - ;; - work) - DPI=144 - ;; - *) - echo "Unknown profle: $AUTORANDR_CURRENT_PROFILE" - exit 1 - esac + { + postswitch = { + "notify-i3" = "''${pkgs.i3}/bin/i3-msg restart"; + "change-background" = readFile ./change-background.sh; + "change-dpi" = ''' + case "$AUTORANDR_CURRENT_PROFILE" in + default) + DPI=120 + ;; + home) + DPI=192 + ;; + work) + DPI=144 + ;; + *) + echo "Unknown profle: $AUTORANDR_CURRENT_PROFILE" + exit 1 + esac - echo "Xft.dpi: $DPI" | ''${pkgs.xorg.xrdb}/bin/xrdb -merge - ''' - }; - } + echo "Xft.dpi: $DPI" | ''${pkgs.xorg.xrdb}/bin/xrdb -merge + ''' + }; + } ''; }; profiles = mkOption { type = types.attrsOf profileModule; description = "Autorandr profiles specification."; - default = {}; + default = { }; example = literalExample '' { "work" = { @@ -323,24 +332,21 @@ in }; config = mkIf cfg.enable { - assertions = flatten (mapAttrsToList ( - profile: { config, ... }: mapAttrsToList ( - output: opts: { - assertion = opts.scale == null || opts.transform == null; - message = '' - Cannot use the profile output options 'scale' and 'transform' simultaneously. - Check configuration for: programs.autorandr.profiles.${profile}.config.${output} - ''; - }) - config - ) - cfg.profiles); + assertions = flatten (mapAttrsToList (profile: + { config, ... }: + mapAttrsToList (output: opts: { + assertion = opts.scale == null || opts.transform == null; + message = '' + Cannot use the profile output options 'scale' and 'transform' simultaneously. + Check configuration for: programs.autorandr.profiles.${profile}.config.${output} + ''; + }) config) cfg.profiles); home.packages = [ pkgs.autorandr ]; xdg.configFile = mkMerge ([ (mapAttrs' (hookToFile "postswitch.d") cfg.hooks.postswitch) - (mapAttrs' (hookToFile "preswitch.d") cfg.hooks.preswitch) - (mapAttrs' (hookToFile "predetect.d") cfg.hooks.predetect) + (mapAttrs' (hookToFile "preswitch.d") cfg.hooks.preswitch) + (mapAttrs' (hookToFile "predetect.d") cfg.hooks.predetect) (mkMerge (mapAttrsToList profileToFiles cfg.profiles)) ]); }; diff --git a/modules/programs/bat.nix b/modules/programs/bat.nix index 860c5e82..aa0df9ab 100644 --- a/modules/programs/bat.nix +++ b/modules/programs/bat.nix @@ -6,9 +6,7 @@ let cfg = config.programs.bat; -in - -{ +in { meta.maintainers = [ maintainers.marsam ]; options.programs.bat = { @@ -16,7 +14,7 @@ in config = mkOption { type = types.attrsOf types.str; - default = {}; + default = { }; example = { theme = "TwoDark"; pager = "less -FR"; @@ -31,10 +29,9 @@ in config = mkIf cfg.enable { home.packages = [ pkgs.bat ]; - xdg.configFile."bat/config" = mkIf (cfg.config != {}) { - text = concatStringsSep "\n" ( - mapAttrsToList (n: v: ''--${n}="${v}"'') cfg.config - ); + xdg.configFile."bat/config" = mkIf (cfg.config != { }) { + text = concatStringsSep "\n" + (mapAttrsToList (n: v: ''--${n}="${v}"'') cfg.config); }; }; } diff --git a/modules/programs/beets.nix b/modules/programs/beets.nix index efd5f8fd..1a45bbea 100644 --- a/modules/programs/beets.nix +++ b/modules/programs/beets.nix @@ -6,19 +6,17 @@ let cfg = config.programs.beets; -in - -{ +in { meta.maintainers = [ maintainers.rycee ]; options = { programs.beets = { enable = mkOption { type = types.bool; - default = - if versionAtLeast config.home.stateVersion "19.03" - then false - else cfg.settings != {}; + default = if versionAtLeast config.home.stateVersion "19.03" then + false + else + cfg.settings != { }; defaultText = "false"; description = '' Whether to enable the beets music library manager. This @@ -32,7 +30,8 @@ in type = types.package; default = pkgs.beets; defaultText = literalExample "pkgs.beets"; - example = literalExample "(pkgs.beets.override { enableCheck = true; })"; + example = + literalExample "(pkgs.beets.override { enableCheck = true; })"; description = '' The beets package to use. Can be used to specify extensions. @@ -41,7 +40,7 @@ in settings = mkOption { type = types.attrs; - default = {}; + default = { }; description = '' Configuration written to ~/.config/beets/config.yaml @@ -54,6 +53,6 @@ in home.packages = [ cfg.package ]; xdg.configFile."beets/config.yaml".text = - builtins.toJSON config.programs.beets.settings; + builtins.toJSON config.programs.beets.settings; }; } diff --git a/modules/programs/broot.nix b/modules/programs/broot.nix index f6d3cd7f..eac31b56 100644 --- a/modules/programs/broot.nix +++ b/modules/programs/broot.nix @@ -7,29 +7,23 @@ let cfg = config.programs.broot; configFile = config: - pkgs.runCommand "conf.toml" - { - buildInputs = [ pkgs.remarshal ]; - preferLocalBuild = true; - allowSubstitutes = false; - } - '' - remarshal -if json -of toml \ - < ${pkgs.writeText "verbs.json" (builtins.toJSON config)} \ - > $out - ''; + pkgs.runCommand "conf.toml" { + buildInputs = [ pkgs.remarshal ]; + preferLocalBuild = true; + allowSubstitutes = false; + } '' + remarshal -if json -of toml \ + < ${pkgs.writeText "verbs.json" (builtins.toJSON config)} \ + > $out + ''; brootConf = { verbs = - mapAttrsToList - (name: value: value // { invocation = name; }) - cfg.verbs; + mapAttrsToList (name: value: value // { invocation = name; }) cfg.verbs; skin = cfg.skin; }; -in - -{ +in { meta.maintainers = [ maintainers.aheaume ]; options.programs.broot = { @@ -63,7 +57,10 @@ in type = with types; attrsOf (attrsOf (either bool str)); default = { "p" = { execution = ":parent"; }; - "edit" = { shortcut = "e"; execution = "$EDITOR {file}" ; }; + "edit" = { + shortcut = "e"; + execution = "$EDITOR {file}"; + }; "create {subpath}" = { execution = "$EDITOR {directory}/{subpath}"; }; "view" = { execution = "less {file}"; }; }; @@ -114,7 +111,7 @@ in skin = mkOption { type = types.attrsOf types.str; - default = {}; + default = { }; example = literalExample '' { status_normal_fg = "grayscale(18)"; @@ -177,38 +174,36 @@ in # Dummy file to prevent broot from trying to reinstall itself xdg.configFile."broot/launcher/installed".text = ""; - programs.bash.initExtra = - mkIf cfg.enableBashIntegration ( - # Using mkAfter to make it more likely to appear after other - # manipulations of the prompt. - mkAfter '' - # This script was automatically generated by the broot function - # More information can be found in https://github.com/Canop/broot - # This function starts broot and executes the command - # it produces, if any. - # It's needed because some shell commands, like `cd`, - # have no useful effect if executed in a subshell. - function br { - f=$(mktemp) - ( - set +e - broot --outcmd "$f" "$@" - code=$? - if [ "$code" != 0 ]; then - rm -f "$f" - exit "$code" - fi - ) - code=$? - if [ "$code" != 0 ]; then - return "$code" - fi - d=$(cat "$f") - rm -f "$f" - eval "$d" - } - '' - ); + programs.bash.initExtra = mkIf cfg.enableBashIntegration ( + # Using mkAfter to make it more likely to appear after other + # manipulations of the prompt. + mkAfter '' + # This script was automatically generated by the broot function + # More information can be found in https://github.com/Canop/broot + # This function starts broot and executes the command + # it produces, if any. + # It's needed because some shell commands, like `cd`, + # have no useful effect if executed in a subshell. + function br { + f=$(mktemp) + ( + set +e + broot --outcmd "$f" "$@" + code=$? + if [ "$code" != 0 ]; then + rm -f "$f" + exit "$code" + fi + ) + code=$? + if [ "$code" != 0 ]; then + return "$code" + fi + d=$(cat "$f") + rm -f "$f" + eval "$d" + } + ''); programs.zsh.initExtra = mkIf cfg.enableZshIntegration '' # This script was automatically generated by the broot function diff --git a/modules/programs/browserpass.nix b/modules/programs/browserpass.nix index e65484fa..10a2883c 100644 --- a/modules/programs/browserpass.nix +++ b/modules/programs/browserpass.nix @@ -2,13 +2,7 @@ with lib; -let - browsers = [ - "chrome" - "chromium" - "firefox" - "vivaldi" - ]; +let browsers = [ "chrome" "chromium" "firefox" "vivaldi" ]; in { options = { programs.browserpass = { @@ -24,58 +18,59 @@ in { }; config = mkIf config.programs.browserpass.enable { - home.file = - foldl' (a: b: a // b) {} - (concatMap (x: with pkgs.stdenv; - if x == "chrome" then - let dir = if isDarwin - then "Library/Application Support/Google/Chrome/NativeMessagingHosts" - else ".config/google-chrome/NativeMessagingHosts"; - in [ - { - "${dir}/com.github.browserpass.native.json".source = - "${pkgs.browserpass}/lib/browserpass/hosts/chromium/com.github.browserpass.native.json"; - "${dir}/../policies/managed/com.github.browserpass.native.json".source = - "${pkgs.browserpass}/lib/browserpass/policies/chromium/com.github.browserpass.native.json"; - } - ] - else if x == "chromium" then - let dir = if isDarwin - then "Library/Application Support/Chromium/NativeMessagingHosts" - else ".config/chromium/NativeMessagingHosts"; - in [ - { - "${dir}/com.github.browserpass.native.json".source = - "${pkgs.browserpass}/lib/browserpass/hosts/chromium/com.github.browserpass.native.json"; - } - { - "${dir}/../policies/managed/com.github.browserpass.native.json".source = - "${pkgs.browserpass}/lib/browserpass/policies/chromium/com.github.browserpass.native.json"; - } - ] - else if x == "firefox" then - let dir = if isDarwin - then "Library/Application Support/Mozilla/NativeMessagingHosts" - else ".mozilla/native-messaging-hosts"; - in [ - { - "${dir}/com.github.browserpass.native.json".source = - "${pkgs.browserpass}/lib/browserpass/hosts/firefox/com.github.browserpass.native.json"; - } - ] - else if x == "vivaldi" then - let dir = if isDarwin - then "Library/Application Support/Vivaldi/NativeMessagingHosts" - else ".config/vivaldi/NativeMessagingHosts"; - in [ - { - "${dir}/com.github.browserpass.native.json".source = - "${pkgs.browserpass}/lib/browserpass/hosts/chromium/com.github.browserpass.native.json"; - "${dir}/../policies/managed/com.github.browserpass.native.json".source = - "${pkgs.browserpass}/lib/browserpass/policies/chromium/com.github.browserpass.native.json"; - } - ] - else throw "unknown browser ${x}") config.programs.browserpass.browsers - ); + home.file = foldl' (a: b: a // b) { } (concatMap (x: + with pkgs.stdenv; + if x == "chrome" then + let + dir = if isDarwin then + "Library/Application Support/Google/Chrome/NativeMessagingHosts" + else + ".config/google-chrome/NativeMessagingHosts"; + in [{ + "${dir}/com.github.browserpass.native.json".source = + "${pkgs.browserpass}/lib/browserpass/hosts/chromium/com.github.browserpass.native.json"; + "${dir}/../policies/managed/com.github.browserpass.native.json".source = + "${pkgs.browserpass}/lib/browserpass/policies/chromium/com.github.browserpass.native.json"; + }] + else if x == "chromium" then + let + dir = if isDarwin then + "Library/Application Support/Chromium/NativeMessagingHosts" + else + ".config/chromium/NativeMessagingHosts"; + in [ + { + "${dir}/com.github.browserpass.native.json".source = + "${pkgs.browserpass}/lib/browserpass/hosts/chromium/com.github.browserpass.native.json"; + } + { + "${dir}/../policies/managed/com.github.browserpass.native.json".source = + "${pkgs.browserpass}/lib/browserpass/policies/chromium/com.github.browserpass.native.json"; + } + ] + else if x == "firefox" then + let + dir = if isDarwin then + "Library/Application Support/Mozilla/NativeMessagingHosts" + else + ".mozilla/native-messaging-hosts"; + in [{ + "${dir}/com.github.browserpass.native.json".source = + "${pkgs.browserpass}/lib/browserpass/hosts/firefox/com.github.browserpass.native.json"; + }] + else if x == "vivaldi" then + let + dir = if isDarwin then + "Library/Application Support/Vivaldi/NativeMessagingHosts" + else + ".config/vivaldi/NativeMessagingHosts"; + in [{ + "${dir}/com.github.browserpass.native.json".source = + "${pkgs.browserpass}/lib/browserpass/hosts/chromium/com.github.browserpass.native.json"; + "${dir}/../policies/managed/com.github.browserpass.native.json".source = + "${pkgs.browserpass}/lib/browserpass/policies/chromium/com.github.browserpass.native.json"; + }] + else + throw "unknown browser ${x}") config.programs.browserpass.browsers); }; } diff --git a/modules/programs/chromium.nix b/modules/programs/chromium.nix index a34fef3d..4e35c07b 100644 --- a/modules/programs/chromium.nix +++ b/modules/programs/chromium.nix @@ -5,46 +5,44 @@ with lib; let browserModule = defaultPkg: name: visible: - let - browser = (builtins.parseDrvName defaultPkg.name).name; - in - { - enable = mkOption { - inherit visible; - default = false; - example = true; - description = "Whether to enable ${name}."; - type = lib.types.bool; - }; - - package = mkOption { - inherit visible; - type = types.package; - default = defaultPkg; - defaultText = literalExample "pkgs.${browser}"; - description = "The ${name} package to use."; - }; - - extensions = mkOption { - inherit visible; - type = types.listOf types.str; - default = []; - example = literalExample '' - [ - "chlffgpmiacpedhhbkiomidkjlcfhogd" # pushbullet - "mbniclmhobmnbdlbpiphghaielnnpgdp" # lightshot - "gcbommkclmclpchllfjekcdonpmejbdp" # https everywhere - "cjpalhdlnbpafiamejdnhcphjbkeiagm" # ublock origin - ] - ''; - description = '' - List of ${name} extensions to install. - To find the extension ID, check its URL on the - Chrome Web Store. - ''; - }; + let browser = (builtins.parseDrvName defaultPkg.name).name; + in { + enable = mkOption { + inherit visible; + default = false; + example = true; + description = "Whether to enable ${name}."; + type = lib.types.bool; }; + package = mkOption { + inherit visible; + type = types.package; + default = defaultPkg; + defaultText = literalExample "pkgs.${browser}"; + description = "The ${name} package to use."; + }; + + extensions = mkOption { + inherit visible; + type = types.listOf types.str; + default = [ ]; + example = literalExample '' + [ + "chlffgpmiacpedhhbkiomidkjlcfhogd" # pushbullet + "mbniclmhobmnbdlbpiphghaielnnpgdp" # lightshot + "gcbommkclmclpchllfjekcdonpmejbdp" # https everywhere + "cjpalhdlnbpafiamejdnhcphjbkeiagm" # ublock origin + ] + ''; + description = '' + List of ${name} extensions to install. + To find the extension ID, check its URL on the + Chrome Web Store. + ''; + }; + }; + browserConfig = cfg: let @@ -57,31 +55,32 @@ let google-chrome-dev = "Google/Chrome Dev"; }; - configDir = if pkgs.stdenv.isDarwin - then "Library/Application Support/${getAttr browser darwinDirs}" - else "${config.xdg.configHome}/${browser}"; + configDir = if pkgs.stdenv.isDarwin then + "Library/Application Support/${getAttr browser darwinDirs}" + else + "${config.xdg.configHome}/${browser}"; extensionJson = ext: { name = "${configDir}/External Extensions/${ext}.json"; value.text = builtins.toJSON { - external_update_url = "https://clients2.google.com/service/update2/crx"; + external_update_url = + "https://clients2.google.com/service/update2/crx"; }; }; - in - mkIf cfg.enable { - home.packages = [ cfg.package ]; - home.file = listToAttrs (map extensionJson cfg.extensions); - }; + in mkIf cfg.enable { + home.packages = [ cfg.package ]; + home.file = listToAttrs (map extensionJson cfg.extensions); + }; -in - -{ +in { options.programs = { chromium = browserModule pkgs.chromium "Chromium" true; google-chrome = browserModule pkgs.google-chrome "Google Chrome" false; - google-chrome-beta = browserModule pkgs.google-chrome-beta "Google Chrome Beta" false; - google-chrome-dev = browserModule pkgs.google-chrome-dev "Google Chrome Dev" false; + google-chrome-beta = + browserModule pkgs.google-chrome-beta "Google Chrome Beta" false; + google-chrome-dev = + browserModule pkgs.google-chrome-dev "Google Chrome Dev" false; }; config = mkMerge [ diff --git a/modules/programs/command-not-found/command-not-found.nix b/modules/programs/command-not-found/command-not-found.nix index 0053fe36..b79fde0f 100644 --- a/modules/programs/command-not-found/command-not-found.nix +++ b/modules/programs/command-not-found/command-not-found.nix @@ -13,8 +13,11 @@ let isExecutable = true; inherit (pkgs) perl; inherit (cfg) dbPath; - perlFlags = concatStrings (map (path: "-I ${path}/lib/perl5/site_perl ") - [ pkgs.perlPackages.DBI pkgs.perlPackages.DBDSQLite pkgs.perlPackages.StringShellQuote ]); + perlFlags = concatStrings (map (path: "-I ${path}/lib/perl5/site_perl ") [ + pkgs.perlPackages.DBI + pkgs.perlPackages.DBDSQLite + pkgs.perlPackages.StringShellQuote + ]); }; shInit = commandNotFoundHandlerName: '' @@ -31,14 +34,13 @@ let } ''; -in - -{ +in { options.programs.command-not-found = { enable = mkEnableOption "command-not-found hook for interactive shell"; dbPath = mkOption { - default = "/nix/var/nix/profiles/per-user/root/channels/nixos/programs.sqlite" ; + default = + "/nix/var/nix/profiles/per-user/root/channels/nixos/programs.sqlite"; description = '' Absolute path to programs.sqlite. By default this file will be provided by your channel diff --git a/modules/programs/direnv.nix b/modules/programs/direnv.nix index e4c17239..beb40a96 100644 --- a/modules/programs/direnv.nix +++ b/modules/programs/direnv.nix @@ -6,21 +6,17 @@ let cfg = config.programs.direnv; configFile = config: - pkgs.runCommand "config.toml" - { - buildInputs = [ pkgs.remarshal ]; - preferLocalBuild = true; - allowSubstitutes = false; - } - '' - remarshal -if json -of toml \ - < ${pkgs.writeText "config.json" (builtins.toJSON config)} \ - > $out - ''; + pkgs.runCommand "config.toml" { + buildInputs = [ pkgs.remarshal ]; + preferLocalBuild = true; + allowSubstitutes = false; + } '' + remarshal -if json -of toml \ + < ${pkgs.writeText "config.json" (builtins.toJSON config)} \ + > $out + ''; -in - -{ +in { meta.maintainers = [ maintainers.rycee ]; options.programs.direnv = { @@ -28,7 +24,7 @@ in config = mkOption { type = types.attrs; - default = {}; + default = { }; description = '' Configuration written to ~/.config/direnv/config.toml. @@ -79,22 +75,18 @@ in config = mkIf cfg.enable { home.packages = [ pkgs.direnv ]; - xdg.configFile."direnv/config.toml" = mkIf (cfg.config != {}) { - source = configFile cfg.config; - }; + xdg.configFile."direnv/config.toml" = + mkIf (cfg.config != { }) { source = configFile cfg.config; }; - xdg.configFile."direnv/direnvrc" = mkIf (cfg.stdlib != "") { - text = cfg.stdlib; - }; + xdg.configFile."direnv/direnvrc" = + mkIf (cfg.stdlib != "") { text = cfg.stdlib; }; - programs.bash.initExtra = - mkIf cfg.enableBashIntegration ( - # Using mkAfter to make it more likely to appear after other - # manipulations of the prompt. - mkAfter '' - eval "$(${pkgs.direnv}/bin/direnv hook bash)" - '' - ); + programs.bash.initExtra = mkIf cfg.enableBashIntegration ( + # Using mkAfter to make it more likely to appear after other + # manipulations of the prompt. + mkAfter '' + eval "$(${pkgs.direnv}/bin/direnv hook bash)" + ''); programs.zsh.initExtra = mkIf cfg.enableZshIntegration '' eval "$(${pkgs.direnv}/bin/direnv hook zsh)" diff --git a/modules/programs/eclipse.nix b/modules/programs/eclipse.nix index 4a432c9f..8ce605b1 100644 --- a/modules/programs/eclipse.nix +++ b/modules/programs/eclipse.nix @@ -6,9 +6,7 @@ let cfg = config.programs.eclipse; -in - -{ +in { meta.maintainers = [ maintainers.rycee ]; options = { @@ -27,13 +25,13 @@ in jvmArgs = mkOption { type = types.listOf types.str; - default = []; + default = [ ]; description = "JVM arguments to use for the Eclipse process."; }; plugins = mkOption { type = types.listOf types.package; - default = []; + default = [ ]; description = "Plugins that should be added to Eclipse."; }; }; @@ -43,10 +41,8 @@ in home.packages = [ (pkgs.eclipses.eclipseWithPlugins { eclipse = pkgs.eclipses.eclipse-platform; - jvmArgs = - cfg.jvmArgs - ++ optional cfg.enableLombok - "-javaagent:${pkgs.lombok}/share/java/lombok.jar"; + jvmArgs = cfg.jvmArgs ++ optional cfg.enableLombok + "-javaagent:${pkgs.lombok}/share/java/lombok.jar"; plugins = cfg.plugins; }) ]; diff --git a/modules/programs/feh.nix b/modules/programs/feh.nix index 1b14e71f..b1b33697 100644 --- a/modules/programs/feh.nix +++ b/modules/programs/feh.nix @@ -9,31 +9,35 @@ let disableBinding = func: key: func; enableBinding = func: key: "${func} ${toString key}"; -in - -{ +in { options.programs.feh = { enable = mkEnableOption "feh - a fast and light image viewer"; buttons = mkOption { - default = {}; + default = { }; type = with types; attrsOf (nullOr (either str int)); - example = { zoom_in = 4; zoom_out = "C-4"; }; + example = { + zoom_in = 4; + zoom_out = "C-4"; + }; description = '' Override feh's default mouse button mapping. If you want to disable an - action, set its value to null. + action, set its value to null. See for default bindings and available commands. ''; }; keybindings = mkOption { - default = {}; + default = { }; type = types.attrsOf (types.nullOr types.str); - example = { zoom_in = "plus"; zoom_out = "minus"; }; + example = { + zoom_in = "plus"; + zoom_out = "minus"; + }; description = '' Override feh's default keybindings. If you want to disable a keybinding - set its value to null. + set its value to null. See for default bindings and available commands. ''; @@ -41,23 +45,26 @@ in }; config = mkIf cfg.enable { - assertions = [ - { - assertion = ((filterAttrs (n: v: v == "") cfg.keybindings) == {}); - message = "To disable a keybinding, use `null` instead of an empty string."; - } - ]; + assertions = [{ + assertion = ((filterAttrs (n: v: v == "") cfg.keybindings) == { }); + message = + "To disable a keybinding, use `null` instead of an empty string."; + }]; home.packages = [ pkgs.feh ]; xdg.configFile."feh/buttons".text = '' - ${concatStringsSep "\n" (mapAttrsToList disableBinding (filterAttrs (n: v: v == null) cfg.buttons))} - ${concatStringsSep "\n" (mapAttrsToList enableBinding (filterAttrs (n: v: v != null) cfg.buttons))} + ${concatStringsSep "\n" (mapAttrsToList disableBinding + (filterAttrs (n: v: v == null) cfg.buttons))} + ${concatStringsSep "\n" (mapAttrsToList enableBinding + (filterAttrs (n: v: v != null) cfg.buttons))} ''; xdg.configFile."feh/keys".text = '' - ${concatStringsSep "\n" (mapAttrsToList disableBinding (filterAttrs (n: v: v == null) cfg.keybindings))} - ${concatStringsSep "\n" (mapAttrsToList enableBinding (filterAttrs (n: v: v != null) cfg.keybindings))} + ${concatStringsSep "\n" (mapAttrsToList disableBinding + (filterAttrs (n: v: v == null) cfg.keybindings))} + ${concatStringsSep "\n" (mapAttrsToList enableBinding + (filterAttrs (n: v: v != null) cfg.keybindings))} ''; }; } diff --git a/modules/programs/fzf.nix b/modules/programs/fzf.nix index 832c0bfa..36eb3a1c 100644 --- a/modules/programs/fzf.nix +++ b/modules/programs/fzf.nix @@ -6,9 +6,7 @@ let cfg = config.programs.fzf; -in - -{ +in { options.programs.fzf = { enable = mkEnableOption "fzf - a command-line fuzzy finder"; @@ -24,7 +22,7 @@ in defaultOptions = mkOption { type = types.listOf types.str; - default = []; + default = [ ]; example = [ "--height 40%" "--border" ]; description = '' Extra command line options given to fzf by default. @@ -43,7 +41,7 @@ in fileWidgetOptions = mkOption { type = types.listOf types.str; - default = []; + default = [ ]; example = [ "--preview 'head {}'" ]; description = '' Command line options for the CTRL-T keybinding. @@ -53,7 +51,7 @@ in changeDirWidgetCommand = mkOption { type = types.nullOr types.str; default = null; - example = "fd --type d" ; + example = "fd --type d"; description = '' The command that gets executed as the source for fzf for the ALT-C keybinding. @@ -62,7 +60,7 @@ in changeDirWidgetOptions = mkOption { type = types.listOf types.str; - default = []; + default = [ ]; example = [ "--preview 'tree -C {} | head -200'" ]; description = '' Command line options for the ALT-C keybinding. @@ -80,7 +78,7 @@ in historyWidgetOptions = mkOption { type = types.listOf types.str; - default = []; + default = [ ]; example = [ "--sort" "--exact" ]; description = '' Command line options for the CTRL-R keybinding. @@ -107,19 +105,17 @@ in config = mkIf cfg.enable { home.packages = [ pkgs.fzf ]; - home.sessionVariables = - mapAttrs (n: v: toString v) ( - filterAttrs (n: v: v != [] && v != null) { - FZF_ALT_C_COMMAND = cfg.changeDirWidgetCommand; - FZF_ALT_C_OPTS = cfg.changeDirWidgetOptions; - FZF_CTRL_R_COMMAND = cfg.historyWidgetCommand; - FZF_CTRL_R_OPTS = cfg.historyWidgetOptions; - FZF_CTRL_T_COMMAND = cfg.fileWidgetCommand; - FZF_CTRL_T_OPTS = cfg.fileWidgetOptions; - FZF_DEFAULT_COMMAND = cfg.defaultCommand; - FZF_DEFAULT_OPTS = cfg.defaultOptions; - } - ); + home.sessionVariables = mapAttrs (n: v: toString v) + (filterAttrs (n: v: v != [ ] && v != null) { + FZF_ALT_C_COMMAND = cfg.changeDirWidgetCommand; + FZF_ALT_C_OPTS = cfg.changeDirWidgetOptions; + FZF_CTRL_R_COMMAND = cfg.historyWidgetCommand; + FZF_CTRL_R_OPTS = cfg.historyWidgetOptions; + FZF_CTRL_T_COMMAND = cfg.fileWidgetCommand; + FZF_CTRL_T_OPTS = cfg.fileWidgetOptions; + FZF_DEFAULT_COMMAND = cfg.defaultCommand; + FZF_DEFAULT_OPTS = cfg.defaultOptions; + }); programs.bash.initExtra = mkIf cfg.enableBashIntegration '' if [[ :$SHELLOPTS: =~ :(vi|emacs): ]]; then diff --git a/modules/programs/getmail-accounts.nix b/modules/programs/getmail-accounts.nix index 32e1312d..24eb4fb5 100644 --- a/modules/programs/getmail-accounts.nix +++ b/modules/programs/getmail-accounts.nix @@ -17,8 +17,8 @@ with lib; mailboxes = mkOption { type = types.nonEmptyListOf types.str; - default = []; - example = ["INBOX" "INBOX.spam"]; + default = [ ]; + example = [ "INBOX" "INBOX.spam" ]; description = '' A non-empty list of mailboxes. To download all mail you can use the ALL mailbox. diff --git a/modules/programs/getmail.nix b/modules/programs/getmail.nix index 3de898ef..2c3919dc 100644 --- a/modules/programs/getmail.nix +++ b/modules/programs/getmail.nix @@ -4,27 +4,26 @@ with lib; let - accounts = filter (a: a.getmail.enable) - (attrValues config.accounts.email.accounts); + accounts = + filter (a: a.getmail.enable) (attrValues config.accounts.email.accounts); - renderAccountConfig = account: with account; + renderAccountConfig = account: + with account; let passCmd = concatMapStringsSep ", " (x: "'${x}'") passwordCommand; - renderedMailboxes = concatMapStringsSep ", " (x: "'${x}'") getmail.mailboxes; - retrieverType = if imap.tls.enable - then "SimpleIMAPSSLRetriever" - else "SimpleIMAPRetriever"; - destination = if getmail.destinationCommand != null - then - { - destinationType = "MDA_external"; - destinationPath = getmail.destinationCommand; - } - else - { - destinationType = "Maildir"; - destinationPath = "${maildir.absPath}/"; - }; + renderedMailboxes = + concatMapStringsSep ", " (x: "'${x}'") getmail.mailboxes; + retrieverType = if imap.tls.enable then + "SimpleIMAPSSLRetriever" + else + "SimpleIMAPRetriever"; + destination = if getmail.destinationCommand != null then { + destinationType = "MDA_external"; + destinationPath = getmail.destinationCommand; + } else { + destinationType = "Maildir"; + destinationPath = "${maildir.absPath}/"; + }; renderGetmailBoolean = v: if v then "true" else "false"; in '' # Generated by Home-Manager. @@ -46,15 +45,13 @@ let ''; getmailEnabled = length (filter (a: a.getmail.enable) accounts) > 0; # Watch out! This is used by the getmail.service too! - renderConfigFilepath = a: ".getmail/getmail${if a.primary then "rc" else a.name}"; + renderConfigFilepath = a: + ".getmail/getmail${if a.primary then "rc" else a.name}"; -in - -{ +in { config = mkIf getmailEnabled { - home.file = - foldl' (a: b: a // b) {} + home.file = foldl' (a: b: a // b) { } (map (a: { "${renderConfigFilepath a}".text = renderAccountConfig a; }) - accounts); + accounts); }; } diff --git a/modules/programs/git.nix b/modules/programs/git.nix index 913f86f7..a56aa10d 100644 --- a/modules/programs/git.nix +++ b/modules/programs/git.nix @@ -14,36 +14,31 @@ let section = head sections; subsections = tail sections; subsection = concatStringsSep "." subsections; - in - if containsQuote || subsections == [] - then name - else "${section} \"${subsection}\""; + in if containsQuote || subsections == [ ] then + name + else + ''${section} "${subsection}"''; # generation for multiple ini values mkKeyValue = k: v: - let - mkKeyValue = generators.mkKeyValueDefault {} "=" k; - in - concatStringsSep "\n" (map mkKeyValue (toList v)); + let mkKeyValue = generators.mkKeyValueDefault { } "=" k; + in concatStringsSep "\n" (map mkKeyValue (toList v)); # converts { a.b.c = 5; } to { "a.b".c = 5; } for toINI - gitFlattenAttrs = - let - recurse = path: value: - if isAttrs value then - mapAttrsToList (name: value: recurse ([name] ++ path) value) value - else if length path > 1 then - { ${concatStringsSep "." (reverseList (tail path))}.${head path} = value; } - else - { ${head path} = value; }; - in - attrs: foldl recursiveUpdate {} (flatten (recurse [] attrs)); + gitFlattenAttrs = let + recurse = path: value: + if isAttrs value then + mapAttrsToList (name: value: recurse ([ name ] ++ path) value) value + else if length path > 1 then { + ${concatStringsSep "." (reverseList (tail path))}.${head path} = value; + } else { + ${head path} = value; + }; + in attrs: foldl recursiveUpdate { } (flatten (recurse [ ] attrs)); gitToIni = attrs: - let - toIni = generators.toINI { inherit mkKeyValue mkSectionName; }; - in - toIni (gitFlattenAttrs attrs); + let toIni = generators.toINI { inherit mkKeyValue mkSectionName; }; + in toIni (gitFlattenAttrs attrs); gitIniType = with types; let @@ -51,8 +46,7 @@ let multipleType = either primitiveType (listOf primitiveType); sectionType = attrsOf multipleType; supersectionType = attrsOf (either multipleType sectionType); - in - attrsOf supersectionType; + in attrsOf supersectionType; signModule = types.submodule { options = { @@ -98,21 +92,18 @@ let contents = mkOption { type = types.attrs; - default = {}; + default = { }; description = '' Configuration to include. If empty then a path must be given. ''; }; }; - config.path = mkIf (config.contents != {}) ( - mkDefault (pkgs.writeText "contents" (gitToIni config.contents)) - ); + config.path = mkIf (config.contents != { }) + (mkDefault (pkgs.writeText "contents" (gitToIni config.contents))); }); -in - -{ +in { meta.maintainers = [ maintainers.rycee ]; options = { @@ -143,7 +134,7 @@ in aliases = mkOption { type = types.attrsOf types.str; - default = {}; + default = { }; example = { co = "checkout"; }; description = "Git aliases to define."; }; @@ -156,7 +147,7 @@ in extraConfig = mkOption { type = types.either types.lines gitIniType; - default = {}; + default = { }; example = { core = { whitespace = "trailing-space,space-before-tab"; }; url."ssh://git@host".insteadOf = "otherhost"; @@ -174,21 +165,21 @@ in ignores = mkOption { type = types.listOf types.str; - default = []; + default = [ ]; example = [ "*~" "*.swp" ]; description = "List of paths that should be globally ignored."; }; attributes = mkOption { type = types.listOf types.str; - default = []; + default = [ ]; example = [ "*.pdf diff=pdf" ]; description = "List of defining attributes set globally."; }; includes = mkOption { type = types.listOf includeModule; - default = []; + default = [ ]; example = literalExample '' [ { path = "~/path/to/config.inc"; } @@ -217,109 +208,96 @@ in }; }; - config = mkIf cfg.enable ( - mkMerge [ - { - home.packages = [ cfg.package ]; + config = mkIf cfg.enable (mkMerge [ + { + home.packages = [ cfg.package ]; - programs.git.iniContent.user = { - name = mkIf (cfg.userName != null) cfg.userName; - email = mkIf (cfg.userEmail != null) cfg.userEmail; + programs.git.iniContent.user = { + name = mkIf (cfg.userName != null) cfg.userName; + email = mkIf (cfg.userEmail != null) cfg.userEmail; + }; + + xdg.configFile = { + "git/config".text = gitToIni cfg.iniContent; + + "git/ignore" = mkIf (cfg.ignores != [ ]) { + text = concatStringsSep "\n" cfg.ignores + "\n"; }; - xdg.configFile = { - "git/config".text = gitToIni cfg.iniContent; + "git/attributes" = mkIf (cfg.attributes != [ ]) { + text = concatStringsSep "\n" cfg.attributes + "\n"; + }; + }; + } - "git/ignore" = mkIf (cfg.ignores != []) { - text = concatStringsSep "\n" cfg.ignores + "\n"; + { + programs.git.iniContent = let + hasSmtp = name: account: account.smtp != null; + + genIdentity = name: account: + with account; + nameValuePair "sendemail.${name}" ({ + smtpEncryption = if smtp.tls.enable then "tls" else ""; + smtpServer = smtp.host; + smtpUser = userName; + from = address; + } // optionalAttrs (smtp.port != null) { + smtpServerPort = smtp.port; + }); + in mapAttrs' genIdentity + (filterAttrs hasSmtp config.accounts.email.accounts); + } + + (mkIf (cfg.signing != null) { + programs.git.iniContent = { + user.signingKey = cfg.signing.key; + commit.gpgSign = cfg.signing.signByDefault; + gpg.program = cfg.signing.gpgPath; + }; + }) + + (mkIf (cfg.aliases != { }) { programs.git.iniContent.alias = cfg.aliases; }) + + (mkIf (lib.isAttrs cfg.extraConfig) { + programs.git.iniContent = cfg.extraConfig; + }) + + (mkIf (lib.isString cfg.extraConfig) { + warnings = ['' + Using programs.git.extraConfig as a string option is + deprecated and will be removed in the future. Please + change to using it as an attribute set instead. + '']; + + xdg.configFile."git/config".text = cfg.extraConfig; + }) + + (mkIf (cfg.includes != [ ]) { + xdg.configFile."git/config".text = let + include = i: + with i; + if condition != null then { + includeIf.${condition}.path = "${path}"; + } else { + include.path = "${path}"; }; + in mkAfter + (concatStringsSep "\n" (map gitToIni (map include cfg.includes))); + }) - "git/attributes" = mkIf (cfg.attributes != []) { - text = concatStringsSep "\n" cfg.attributes + "\n"; - }; + (mkIf cfg.lfs.enable { + home.packages = [ pkgs.git-lfs ]; + + programs.git.iniContent.filter.lfs = + let skipArg = optional cfg.lfs.skipSmudge "--skip"; + in { + clean = "git-lfs clean -- %f"; + process = + concatStringsSep " " ([ "git-lfs" "filter-process" ] ++ skipArg); + required = true; + smudge = concatStringsSep " " + ([ "git-lfs" "smudge" ] ++ skipArg ++ [ "--" "%f" ]); }; - } - - { - programs.git.iniContent = - let - hasSmtp = name: account: account.smtp != null; - - genIdentity = name: account: with account; - nameValuePair "sendemail.${name}" ({ - smtpEncryption = if smtp.tls.enable then "tls" else ""; - smtpServer = smtp.host; - smtpUser = userName; - from = address; - } - // optionalAttrs (smtp.port != null) { - smtpServerPort = smtp.port; - }); - in - mapAttrs' genIdentity - (filterAttrs hasSmtp config.accounts.email.accounts); - } - - (mkIf (cfg.signing != null) { - programs.git.iniContent = { - user.signingKey = cfg.signing.key; - commit.gpgSign = cfg.signing.signByDefault; - gpg.program = cfg.signing.gpgPath; - }; - }) - - (mkIf (cfg.aliases != {}) { - programs.git.iniContent.alias = cfg.aliases; - }) - - (mkIf (lib.isAttrs cfg.extraConfig) { - programs.git.iniContent = cfg.extraConfig; - }) - - (mkIf (lib.isString cfg.extraConfig) { - warnings = [ - '' - Using programs.git.extraConfig as a string option is - deprecated and will be removed in the future. Please - change to using it as an attribute set instead. - '' - ]; - - xdg.configFile."git/config".text = cfg.extraConfig; - }) - - (mkIf (cfg.includes != []) { - xdg.configFile."git/config".text = - let - include = i: with i; - if condition != null - then { includeIf.${condition}.path = "${path}"; } - else { include.path = "${path}"; }; - in - mkAfter - (concatStringsSep "\n" - (map gitToIni - (map include cfg.includes))); - }) - - (mkIf cfg.lfs.enable { - home.packages = [ pkgs.git-lfs ]; - - programs.git.iniContent.filter.lfs = - let - skipArg = optional cfg.lfs.skipSmudge "--skip"; - in - { - clean = "git-lfs clean -- %f"; - process = concatStringsSep " " ( - [ "git-lfs" "filter-process" ] ++ skipArg - ); - required = true; - smudge = concatStringsSep " " ( - [ "git-lfs" "smudge" ] ++ skipArg ++ [ "--" "%f" ] - ); - }; - }) - ] - ); + }) + ]); } diff --git a/modules/programs/gnome-terminal.nix b/modules/programs/gnome-terminal.nix index 9a443644..570a1fc7 100644 --- a/modules/programs/gnome-terminal.nix +++ b/modules/programs/gnome-terminal.nix @@ -11,125 +11,118 @@ let . ${pkgs.gnome3.vte}/etc/profile.d/vte.sh ''; - backForeSubModule = types.submodule ( - { ... }: { - options = { - foreground = mkOption { - type = types.str; - description = "The foreground color."; - }; - - background = mkOption { - type = types.str; - description = "The background color."; - }; + backForeSubModule = types.submodule ({ ... }: { + options = { + foreground = mkOption { + type = types.str; + description = "The foreground color."; }; - } - ); - profileColorsSubModule = types.submodule ( - { ... }: { - options = { - foregroundColor = mkOption { - type = types.str; - description = "The foreground color."; - }; - - backgroundColor = mkOption { - type = types.str; - description = "The background color."; - }; - - boldColor = mkOption { - default = null; - type = types.nullOr types.str; - description = "The bold color, null to use same as foreground."; - }; - - palette = mkOption { - type = types.listOf types.str; - description = "The terminal palette."; - }; - - cursor = mkOption { - default = null; - type = types.nullOr backForeSubModule; - description = "The color for the terminal cursor."; - }; - - highlight = mkOption { - default = null; - type = types.nullOr backForeSubModule; - description = "The colors for the terminal’s highlighted area."; - }; + background = mkOption { + type = types.str; + description = "The background color."; }; - } - ); + }; + }); - profileSubModule = types.submodule ( - { name, config, ... }: { - options = { - default = mkOption { - default = false; - type = types.bool; - description = "Whether this should be the default profile."; - }; - - visibleName = mkOption { - type = types.str; - description = "The profile name."; - }; - - colors = mkOption { - default = null; - type = types.nullOr profileColorsSubModule; - description = "The terminal colors, null to use system default."; - }; - - cursorShape = mkOption { - default = "block"; - type = types.enum [ "block" "ibeam" "underline" ]; - description = "The cursor shape."; - }; - - font = mkOption { - default = null; - type = types.nullOr types.str; - description = "The font name, null to use system default."; - }; - - allowBold = mkOption { - default = null; - type = types.nullOr types.bool; - description = '' - If true, allow applications in the - terminal to make text boldface. - ''; - }; - - scrollOnOutput = mkOption { - default = true; - type = types.bool; - description = "Whether to scroll when output is written."; - }; - - showScrollbar = mkOption { - default = true; - type = types.bool; - description = "Whether the scroll bar should be visible."; - }; - - scrollbackLines = mkOption { - default = 10000; - type = types.nullOr types.int; - description = - '' - The number of scrollback lines to keep, null for infinite. - ''; - }; + profileColorsSubModule = types.submodule ({ ... }: { + options = { + foregroundColor = mkOption { + type = types.str; + description = "The foreground color."; }; - } - ); + + backgroundColor = mkOption { + type = types.str; + description = "The background color."; + }; + + boldColor = mkOption { + default = null; + type = types.nullOr types.str; + description = "The bold color, null to use same as foreground."; + }; + + palette = mkOption { + type = types.listOf types.str; + description = "The terminal palette."; + }; + + cursor = mkOption { + default = null; + type = types.nullOr backForeSubModule; + description = "The color for the terminal cursor."; + }; + + highlight = mkOption { + default = null; + type = types.nullOr backForeSubModule; + description = "The colors for the terminal’s highlighted area."; + }; + }; + }); + + profileSubModule = types.submodule ({ name, config, ... }: { + options = { + default = mkOption { + default = false; + type = types.bool; + description = "Whether this should be the default profile."; + }; + + visibleName = mkOption { + type = types.str; + description = "The profile name."; + }; + + colors = mkOption { + default = null; + type = types.nullOr profileColorsSubModule; + description = "The terminal colors, null to use system default."; + }; + + cursorShape = mkOption { + default = "block"; + type = types.enum [ "block" "ibeam" "underline" ]; + description = "The cursor shape."; + }; + + font = mkOption { + default = null; + type = types.nullOr types.str; + description = "The font name, null to use system default."; + }; + + allowBold = mkOption { + default = null; + type = types.nullOr types.bool; + description = '' + If true, allow applications in the + terminal to make text boldface. + ''; + }; + + scrollOnOutput = mkOption { + default = true; + type = types.bool; + description = "Whether to scroll when output is written."; + }; + + showScrollbar = mkOption { + default = true; + type = types.bool; + description = "Whether the scroll bar should be visible."; + }; + + scrollbackLines = mkOption { + default = 10000; + type = types.nullOr types.int; + description = '' + The number of scrollback lines to keep, null for infinite. + ''; + }; + }; + }); buildProfileSet = pcfg: { @@ -137,56 +130,41 @@ let scrollbar-policy = if pcfg.showScrollbar then "always" else "never"; scrollback-lines = pcfg.scrollbackLines; cursor-shape = pcfg.cursorShape; - } - // ( - if (pcfg.font == null) - then { use-system-font = true; } - else { use-system-font = false; font = pcfg.font; } - ) // ( - if (pcfg.colors == null) - then { use-theme-colors = true; } - else ( - { - use-theme-colors = false; - foreground-color = pcfg.colors.foregroundColor; - background-color = pcfg.colors.backgroundColor; - palette = pcfg.colors.palette; - } - // optionalAttrs (pcfg.allowBold != null) { - allow-bold = pcfg.allowBold; - } - // ( - if (pcfg.colors.boldColor == null) - then { bold-color-same-as-fg = true; } - else { - bold-color-same-as-fg = false; - bold-color = pcfg.colors.boldColor; - } - ) - // ( - if (pcfg.colors.cursor != null) - then { - cursor-colors-set = true; - cursor-foreground-color = pcfg.colors.cursor.foreground; - cursor-background-color = pcfg.colors.cursor.background; - } - else { cursor-colors-set = false; } - ) - // ( - if (pcfg.colors.highlight != null) - then { - highlight-colors-set = true; - highlight-foreground-color = pcfg.colors.highlight.foreground; - highlight-background-color = pcfg.colors.highlight.background; - } - else { highlight-colors-set = false; } - ) - ) - ); + } // (if (pcfg.font == null) then { + use-system-font = true; + } else { + use-system-font = false; + font = pcfg.font; + }) // (if (pcfg.colors == null) then { + use-theme-colors = true; + } else + ({ + use-theme-colors = false; + foreground-color = pcfg.colors.foregroundColor; + background-color = pcfg.colors.backgroundColor; + palette = pcfg.colors.palette; + } // optionalAttrs (pcfg.allowBold != null) { + allow-bold = pcfg.allowBold; + } // (if (pcfg.colors.boldColor == null) then { + bold-color-same-as-fg = true; + } else { + bold-color-same-as-fg = false; + bold-color = pcfg.colors.boldColor; + }) // (if (pcfg.colors.cursor != null) then { + cursor-colors-set = true; + cursor-foreground-color = pcfg.colors.cursor.foreground; + cursor-background-color = pcfg.colors.cursor.background; + } else { + cursor-colors-set = false; + }) // (if (pcfg.colors.highlight != null) then { + highlight-colors-set = true; + highlight-foreground-color = pcfg.colors.highlight.foreground; + highlight-background-color = pcfg.colors.highlight.background; + } else { + highlight-colors-set = false; + }))); -in - -{ +in { meta.maintainers = [ maintainers.rycee ]; options = { @@ -206,7 +184,7 @@ in }; profile = mkOption { - default = {}; + default = { }; type = types.attrsOf profileSubModule; description = "A set of Gnome Terminal profiles."; }; @@ -216,25 +194,21 @@ in config = mkIf cfg.enable { home.packages = [ pkgs.gnome3.gnome_terminal ]; - dconf.settings = - let - dconfPath = "org/gnome/terminal/legacy"; - in - { - "${dconfPath}" = { - default-show-menubar = cfg.showMenubar; - theme-variant = cfg.themeVariant; - schema-version = 3; - }; + dconf.settings = let dconfPath = "org/gnome/terminal/legacy"; + in { + "${dconfPath}" = { + default-show-menubar = cfg.showMenubar; + theme-variant = cfg.themeVariant; + schema-version = 3; + }; - "${dconfPath}/profiles:" = { - default = head (attrNames (filterAttrs (n: v: v.default) cfg.profile)); - list = attrNames cfg.profile; - }; - } - // mapAttrs' (n: v: - nameValuePair ("${dconfPath}/profiles:/:${n}") (buildProfileSet v) - ) cfg.profile; + "${dconfPath}/profiles:" = { + default = head (attrNames (filterAttrs (n: v: v.default) cfg.profile)); + list = attrNames cfg.profile; + }; + } // mapAttrs' + (n: v: nameValuePair ("${dconfPath}/profiles:/:${n}") (buildProfileSet v)) + cfg.profile; programs.bash.initExtra = mkBefore vteInitStr; programs.zsh.initExtra = vteInitStr; diff --git a/modules/programs/go.nix b/modules/programs/go.nix index 39788e04..983769d2 100644 --- a/modules/programs/go.nix +++ b/modules/programs/go.nix @@ -6,9 +6,7 @@ let cfg = config.programs.go; -in - -{ +in { meta.maintainers = [ maintainers.rvolosatovs ]; options = { @@ -24,7 +22,7 @@ in packages = mkOption { type = with types; attrsOf path; - default = {}; + default = { }; example = literalExample '' { "golang.org/x/text" = builtins.fetchGit "https://go.googlesource.com/text"; @@ -47,18 +45,15 @@ in extraGoPaths = mkOption { type = types.listOf types.str; - default = []; + default = [ ]; example = [ "extraGoPath1" "extraGoPath2" ]; - description = - let - goPathOpt = "programs.go.goPath"; - in - '' - Extra GOPATHs relative to HOME appended - after - ${goPathOpt}, - if that option is set. - ''; + description = let goPathOpt = "programs.go.goPath"; + in '' + Extra GOPATHs relative to HOME appended + after + ${goPathOpt}, + if that option is set. + ''; }; goBin = mkOption { @@ -74,24 +69,21 @@ in { home.packages = [ cfg.package ]; - home.file = - let - goPath = if cfg.goPath != null then cfg.goPath else "go"; - mkSrc = n: v: { "${goPath}/src/${n}".source = v; }; - in - foldl' (a: b: a // b) {} (mapAttrsToList mkSrc cfg.packages); + home.file = let + goPath = if cfg.goPath != null then cfg.goPath else "go"; + mkSrc = n: v: { "${goPath}/src/${n}".source = v; }; + in foldl' (a: b: a // b) { } (mapAttrsToList mkSrc cfg.packages); } (mkIf (cfg.goPath != null) { - home.sessionVariables.GOPATH = - concatStringsSep ":" - (map builtins.toPath + home.sessionVariables.GOPATH = concatStringsSep ":" (map builtins.toPath (map (path: "${config.home.homeDirectory}/${path}") - ([cfg.goPath] ++ cfg.extraGoPaths))); + ([ cfg.goPath ] ++ cfg.extraGoPaths))); }) (mkIf (cfg.goBin != null) { - home.sessionVariables.GOBIN = builtins.toPath "${config.home.homeDirectory}/${cfg.goBin}"; + home.sessionVariables.GOBIN = + builtins.toPath "${config.home.homeDirectory}/${cfg.goBin}"; }) ]); } diff --git a/modules/programs/home-manager.nix b/modules/programs/home-manager.nix index 42e3c8a3..9039a59d 100644 --- a/modules/programs/home-manager.nix +++ b/modules/programs/home-manager.nix @@ -8,9 +8,7 @@ let dag = config.lib.dag; -in - -{ +in { meta.maintainers = [ maintainers.rycee ]; options = { @@ -33,10 +31,7 @@ in }; config = mkIf (cfg.enable && !config.submoduleSupport.enable) { - home.packages = [ - (pkgs.callPackage ../../home-manager { - inherit (cfg) path; - }) - ]; + home.packages = + [ (pkgs.callPackage ../../home-manager { inherit (cfg) path; }) ]; }; } diff --git a/modules/programs/htop.nix b/modules/programs/htop.nix index d700c485..84966040 100644 --- a/modules/programs/htop.nix +++ b/modules/programs/htop.nix @@ -3,6 +3,7 @@ with lib; let + cfg = config.programs.htop; list = xs: concatMapStrings (x: "${toString x} ") xs; @@ -81,16 +82,15 @@ let RightCPUs2 = 1; Blank = 2; CPU = 1; - "CPU(1)"= 1; + "CPU(1)" = 1; "CPU(2)" = 1; "CPU(3)" = 1; "CPU(4)" = 1; }; - singleMeterType = types.coercedTo - (types.enum (attrNames meters)) - (m: { kind = m; mode = meters.${m}; }) - (types.submodule { + singleMeterType = let + meterEnum = types.enum (attrNames meters); + meterSubmodule = types.submodule { options = { kind = mkOption { type = types.enum (attrNames meters); @@ -101,10 +101,15 @@ let mode = mkOption { type = types.enum [ 1 2 3 4 ]; example = 2; - description = "Which mode the meter should use, one of 1(Bar) 2(Text) 3(Graph) 4(LED)."; + description = + "Which mode the meter should use, one of 1(Bar) 2(Text) 3(Graph) 4(LED)."; }; }; - }); + }; + in types.coercedTo meterEnum (m: { + kind = m; + mode = meters.${m}; + }) meterSubmodule; meterType = types.submodule { options = { @@ -115,7 +120,10 @@ let "Memory" "LeftCPUs2" "RightCPUs2" - { kind = "CPU"; mode = 3; } + { + kind = "CPU"; + mode = 3; + } ]; type = types.listOf singleMeterType; }; @@ -123,7 +131,10 @@ let description = "Meters shown in the right header."; default = [ "Tasks" "LoadAverage" "Uptime" ]; example = [ - { kind = "Clock"; mode = 4; } + { + kind = "Clock"; + mode = 4; + } "Uptime" "Tasks" ]; @@ -131,15 +142,37 @@ let }; }; }; -in -{ + +in { options.programs.htop = { enable = mkEnableOption "htop"; fields = mkOption { type = types.listOf (types.enum (attrNames fields)); - default = [ "PID" "USER" "PRIORITY" "NICE" "M_SIZE" "M_RESIDENT" "M_SHARE" "STATE" "PERCENT_CPU" "PERCENT_MEM" "TIME" "COMM" ]; - example = [ "PID" "USER" "PRIORITY" "PERCENT_CPU" "M_RESIDENT" "PERCENT_MEM" "TIME" "COMM" ]; + default = [ + "PID" + "USER" + "PRIORITY" + "NICE" + "M_SIZE" + "M_RESIDENT" + "M_SHARE" + "STATE" + "PERCENT_CPU" + "PERCENT_MEM" + "TIME" + "COMM" + ]; + example = [ + "PID" + "USER" + "PRIORITY" + "PERCENT_CPU" + "M_RESIDENT" + "PERCENT_MEM" + "TIME" + "COMM" + ]; description = "Active fields shown in the table."; }; @@ -209,7 +242,7 @@ in default = true; description = "Display threads in a different color."; }; - + treeView = mkOption { type = types.bool; default = false; @@ -225,7 +258,8 @@ in detailedCpuTime = mkOption { type = types.bool; default = false; - description = "Detailed CPU time (System/IO-Wait/Hard-IRQ/Soft-IRQ/Steal/Guest)."; + description = + "Detailed CPU time (System/IO-Wait/Hard-IRQ/Soft-IRQ/Steal/Guest)."; }; cpuCountFromZero = mkOption { @@ -272,14 +306,23 @@ in "CPU" "LeftCPUs2" "RightCPUs2" - { kind = "CPU"; mode = 3; } + { + kind = "CPU"; + mode = 3; + } ]; right = [ - { kind = "Clock"; mode = 4; } + { + kind = "Clock"; + mode = 4; + } "Uptime" "Tasks" "LoadAverage" - { kind = "Battery"; mode = 1; } + { + kind = "Battery"; + mode = 1; + } ]; }; type = meterType; diff --git a/modules/programs/info.nix b/modules/programs/info.nix index 863bdcc1..9e4a5d4a 100644 --- a/modules/programs/info.nix +++ b/modules/programs/info.nix @@ -34,9 +34,7 @@ let # from this package in the activation script. infoPkg = pkgs.texinfoInteractive; -in - -{ +in { options = { programs.info = { enable = mkEnableOption "GNU Info"; @@ -55,19 +53,20 @@ in home.sessionVariables.INFOPATH = "${cfg.homeInfoDirLocation}\${INFOPATH:+:}\${INFOPATH}"; - home.activation.createHomeInfoDir = hm.dag.entryAfter ["installPackages"] '' - oPATH=$PATH - export PATH="${lib.makeBinPath [ pkgs.gzip ]}''${PATH:+:}$PATH" - $DRY_RUN_CMD mkdir -p "${cfg.homeInfoDirLocation}" - $DRY_RUN_CMD rm -f "${cfg.homeInfoDirLocation}/dir" - if [[ -d "${homeInfoPath}" ]]; then - find -L "${homeInfoPath}" \( -name '*.info' -o -name '*.info.gz' \) \ - -exec $DRY_RUN_CMD ${infoPkg}/bin/install-info '{}' \ - "${cfg.homeInfoDirLocation}/dir" \; - fi - export PATH="$oPATH" - unset oPATH - ''; + home.activation.createHomeInfoDir = + hm.dag.entryAfter [ "installPackages" ] '' + oPATH=$PATH + export PATH="${lib.makeBinPath [ pkgs.gzip ]}''${PATH:+:}$PATH" + $DRY_RUN_CMD mkdir -p "${cfg.homeInfoDirLocation}" + $DRY_RUN_CMD rm -f "${cfg.homeInfoDirLocation}/dir" + if [[ -d "${homeInfoPath}" ]]; then + find -L "${homeInfoPath}" \( -name '*.info' -o -name '*.info.gz' \) \ + -exec $DRY_RUN_CMD ${infoPkg}/bin/install-info '{}' \ + "${cfg.homeInfoDirLocation}/dir" \; + fi + export PATH="$oPATH" + unset oPATH + ''; home.packages = [ infoPkg ]; diff --git a/modules/programs/jq.nix b/modules/programs/jq.nix index 56c3adf0..6c89df0d 100644 --- a/modules/programs/jq.nix +++ b/modules/programs/jq.nix @@ -15,19 +15,17 @@ let colorsType = types.submodule { options = { - null = colorType; - false = colorType; - true = colorType; + null = colorType; + false = colorType; + true = colorType; numbers = colorType; strings = colorType; - arrays = colorType; + arrays = colorType; objects = colorType; }; }; -in - -{ +in { options = { programs.jq = { enable = mkEnableOption "the jq command-line JSON processor"; @@ -52,12 +50,12 @@ in ''; default = { - null = "1;30"; - false = "0;39"; - true = "0;39"; + null = "1;30"; + false = "0;39"; + true = "0;39"; numbers = "0;39"; strings = "0;32"; - arrays = "1;39"; + arrays = "1;39"; objects = "1;39"; }; @@ -69,8 +67,10 @@ in config = mkIf cfg.enable { home.packages = [ pkgs.jq ]; - home.sessionVariables = let c = cfg.colors; in { - JQ_COLORS = "${c.null}:${c.false}:${c.true}:${c.numbers}:${c.strings}:${c.arrays}:${c.objects}"; + home.sessionVariables = let c = cfg.colors; + in { + JQ_COLORS = + "${c.null}:${c.false}:${c.true}:${c.numbers}:${c.strings}:${c.arrays}:${c.objects}"; }; }; } diff --git a/modules/programs/kakoune.nix b/modules/programs/kakoune.nix index dbaa764a..faf2542d 100644 --- a/modules/programs/kakoune.nix +++ b/modules/programs/kakoune.nix @@ -10,16 +10,44 @@ let options = { name = mkOption { type = types.enum [ - "NormalBegin" "NormalIdle" "NormalEnd" "NormalKey" - "InsertBegin" "InsertIdle" "InsertEnd" "InsertKey" - "InsertChar" "InsertDelete" "InsertMove" "WinCreate" - "WinClose" "WinResize" "WinDisplay" "WinSetOption" - "BufSetOption" "BufNewFile" "BufOpenFile" "BufCreate" - "BufWritePre" "BufWritePost" "BufReload" "BufClose" - "BufOpenFifo" "BufReadFifo" "BufCloseFifo" "RuntimeError" - "ModeChange" "PromptIdle" "GlobalSetOption" "KakBegin" - "KakEnd" "FocusIn" "FocusOut" "RawKey" - "InsertCompletionShow" "InsertCompletionHide" + "NormalBegin" + "NormalIdle" + "NormalEnd" + "NormalKey" + "InsertBegin" + "InsertIdle" + "InsertEnd" + "InsertKey" + "InsertChar" + "InsertDelete" + "InsertMove" + "WinCreate" + "WinClose" + "WinResize" + "WinDisplay" + "WinSetOption" + "BufSetOption" + "BufNewFile" + "BufOpenFile" + "BufCreate" + "BufWritePre" + "BufWritePost" + "BufReload" + "BufClose" + "BufOpenFifo" + "BufReadFifo" + "BufCloseFifo" + "RuntimeError" + "ModeChange" + "PromptIdle" + "GlobalSetOption" + "KakBegin" + "KakEnd" + "FocusIn" + "FocusOut" + "RawKey" + "InsertCompletionShow" + "InsertCompletionHide" "InsertCompletionSelect" ]; example = "SetOption"; @@ -159,7 +187,8 @@ let }; autoInfo = mkOption { - type = types.nullOr (types.listOf (types.enum [ "command" "onkey" "normal" ])); + type = types.nullOr + (types.listOf (types.enum [ "command" "onkey" "normal" ])); default = null; example = [ "command" "normal" ]; description = '' @@ -169,7 +198,7 @@ let }; autoComplete = mkOption { - type = types.nullOr(types.listOf (types.enum [ "insert" "prompt" ])); + type = types.nullOr (types.listOf (types.enum [ "insert" "prompt" ])); default = null; description = '' Modes in which to display possible completions. @@ -450,7 +479,7 @@ let keyMappings = mkOption { type = types.listOf keyMapping; - default = []; + default = [ ]; description = '' User-defined key mappings. For documentation, see . @@ -459,7 +488,7 @@ let hooks = mkOption { type = types.listOf hook; - default = []; + default = [ ]; description = '' Global hooks. For documentation, see . @@ -468,92 +497,103 @@ let }; }; - configFile = - let - wrapOptions = with cfg.config.wrapLines; concatStrings [ + configFile = let + wrapOptions = with cfg.config.wrapLines; + concatStrings [ "${optionalString word " -word"}" "${optionalString indent " -indent"}" "${optionalString (marker != null) " -marker ${marker}"}" "${optionalString (maxWidth != null) " -width ${toString maxWidth}"}" ]; - numberLinesOptions = with cfg.config.numberLines; concatStrings [ + numberLinesOptions = with cfg.config.numberLines; + concatStrings [ "${optionalString relative " -relative "}" "${optionalString highlightCursor " -hlcursor"}" "${optionalString (separator != null) " -separator ${separator}"}" ]; - uiOptions = with cfg.config.ui; concatStringsSep " " [ + uiOptions = with cfg.config.ui; + concatStringsSep " " [ "ncurses_set_title=${if setTitle then "true" else "false"}" - "ncurses_status_on_top=${if (statusLine == "top") then "true" else "false"}" + "ncurses_status_on_top=${ + if (statusLine == "top") then "true" else "false" + }" "ncurses_assistant=${assistant}" "ncurses_enable_mouse=${if enableMouse then "true" else "false"}" "ncurses_change_colors=${if changeColors then "true" else "false"}" "${optionalString (wheelDownButton != null) - "ncurses_wheel_down_button=${wheelDownButton}"}" + "ncurses_wheel_down_button=${wheelDownButton}"}" "${optionalString (wheelUpButton != null) - "ncurses_wheel_up_button=${wheelUpButton}"}" + "ncurses_wheel_up_button=${wheelUpButton}"}" "${optionalString (shiftFunctionKeys != null) - "ncurses_shift_function_key=${toString shiftFunctionKeys}"}" - "ncurses_builtin_key_parser=${if useBuiltinKeyParser then "true" else "false"}" + "ncurses_shift_function_key=${toString shiftFunctionKeys}"}" + "ncurses_builtin_key_parser=${ + if useBuiltinKeyParser then "true" else "false" + }" ]; - keyMappingString = km: concatStringsSep " " [ + keyMappingString = km: + concatStringsSep " " [ "map global" "${km.mode} ${km.key} '${km.effect}'" - "${optionalString (km.docstring != null) "-docstring '${km.docstring}'"}" + "${optionalString (km.docstring != null) + "-docstring '${km.docstring}'"}" ]; - hookString = h: concatStringsSep " " [ - "hook" "${optionalString (h.group != null) "-group ${group}"}" - "${optionalString (h.once) "-once"}" "global" - "${h.name}" "${optionalString (h.option != null) h.option}" + hookString = h: + concatStringsSep " " [ + "hook" + "${optionalString (h.group != null) "-group ${group}"}" + "${optionalString (h.once) "-once"}" + "global" + "${h.name}" + "${optionalString (h.option != null) h.option}" "%{ ${h.commands} }" ]; - cfgStr = with cfg.config; concatStringsSep "\n" ( - [ "# Generated by home-manager" ] + cfgStr = with cfg.config; + concatStringsSep "\n" ([ "# Generated by home-manager" ] ++ optional (colorScheme != null) "colorscheme ${colorScheme}" - ++ optional (tabStop != null) "set-option global tabstop ${toString tabStop}" - ++ optional (indentWidth != null) "set-option global indentwidth ${toString indentWidth}" + ++ optional (tabStop != null) + "set-option global tabstop ${toString tabStop}" + ++ optional (indentWidth != null) + "set-option global indentwidth ${toString indentWidth}" ++ optional (!incrementalSearch) "set-option global incsearch false" ++ optional (alignWithTabs) "set-option global aligntab true" - ++ optional (autoInfo != null) "set-option global autoinfo ${concatStringsSep "|" autoInfo}" - ++ optional (autoComplete != null) "set-option global autocomplete ${concatStringsSep "|" autoComplete}" - ++ optional (autoReload != null) "set-option global/ autoreload ${autoReload}" - ++ optional (wrapLines != null && wrapLines.enable) "add-highlighter global/ wrap${wrapOptions}" + ++ optional (autoInfo != null) + "set-option global autoinfo ${concatStringsSep "|" autoInfo}" + ++ optional (autoComplete != null) + "set-option global autocomplete ${concatStringsSep "|" autoComplete}" + ++ optional (autoReload != null) + "set-option global/ autoreload ${autoReload}" + ++ optional (wrapLines != null && wrapLines.enable) + "add-highlighter global/ wrap${wrapOptions}" ++ optional (numberLines != null && numberLines.enable) - "add-highlighter global/ number-lines${numberLinesOptions}" + "add-highlighter global/ number-lines${numberLinesOptions}" ++ optional showMatching "add-highlighter global/ show-matching" ++ optional (scrollOff != null) - "set-option global scrolloff ${toString scrollOff.lines},${toString scrollOff.columns}" + "set-option global scrolloff ${toString scrollOff.lines},${ + toString scrollOff.columns + }" ++ [ "# UI options" ] ++ optional (ui != null) "set-option global ui_options ${uiOptions}" - ++ [ "# Key mappings" ] - ++ map keyMappingString keyMappings + ++ [ "# Key mappings" ] ++ map keyMappingString keyMappings - ++ [ "# Hooks" ] - ++ map hookString hooks - ); - in - pkgs.writeText "kakrc" ( - optionalString (cfg.config != null) cfgStr - + "\n" - + cfg.extraConfig - ); + ++ [ "# Hooks" ] ++ map hookString hooks); + in pkgs.writeText "kakrc" + (optionalString (cfg.config != null) cfgStr + "\n" + cfg.extraConfig); -in - -{ +in { options = { programs.kakoune = { enable = mkEnableOption "the kakoune text editor"; config = mkOption { type = types.nullOr configModule; - default = {}; + default = { }; description = "kakoune configuration options."; }; diff --git a/modules/programs/keychain.nix b/modules/programs/keychain.nix index 2231a7c2..6e26bd23 100644 --- a/modules/programs/keychain.nix +++ b/modules/programs/keychain.nix @@ -6,15 +6,16 @@ let cfg = config.programs.keychain; - flags = cfg.extraFlags - ++ optional (cfg.agents != []) "--agents ${concatStringsSep "," cfg.agents}" + flags = cfg.extraFlags ++ optional (cfg.agents != [ ]) + "--agents ${concatStringsSep "," cfg.agents}" ++ optional (cfg.inheritType != null) "--inherit ${cfg.inheritType}"; - shellCommand = "${cfg.package}/bin/keychain --eval ${concatStringsSep " " flags} ${concatStringsSep " " cfg.keys}"; + shellCommand = + "${cfg.package}/bin/keychain --eval ${concatStringsSep " " flags} ${ + concatStringsSep " " cfg.keys + }"; -in - -{ +in { meta.maintainers = [ maintainers.marsam ]; options.programs.keychain = { @@ -39,14 +40,15 @@ in agents = mkOption { type = types.listOf types.str; - default = []; + default = [ ]; description = '' Agents to add. ''; }; inheritType = mkOption { - type = types.nullOr (types.enum ["local" "any" "local-once" "any-once"]); + type = + types.nullOr (types.enum [ "local" "any" "local-once" "any-once" ]); default = null; description = '' Inherit type to attempt from agent variables from the environment. diff --git a/modules/programs/lsd.nix b/modules/programs/lsd.nix index 94934169..ab1880ff 100644 --- a/modules/programs/lsd.nix +++ b/modules/programs/lsd.nix @@ -11,12 +11,10 @@ let ll = "ls -l"; la = "ls -a"; lt = "ls --tree"; - lla ="ls -la"; + lla = "ls -la"; }; -in - -{ +in { meta.maintainers = [ maintainers.marsam ]; options.programs.lsd = { diff --git a/modules/programs/matplotlib.nix b/modules/programs/matplotlib.nix index 48ff6e60..da80c116 100644 --- a/modules/programs/matplotlib.nix +++ b/modules/programs/matplotlib.nix @@ -9,16 +9,13 @@ let formatLine = o: n: v: let formatValue = v: - if isBool v then (if v then "True" else "False") - else toString v; - in - if isAttrs v - then concatStringsSep "\n" (mapAttrsToList (formatLine "${o}${n}.") v) - else (if v == "" then "" else "${o}${n}: ${formatValue v}"); + if isBool v then (if v then "True" else "False") else toString v; + in if isAttrs v then + concatStringsSep "\n" (mapAttrsToList (formatLine "${o}${n}.") v) + else + (if v == "" then "" else "${o}${n}: ${formatValue v}"); -in - -{ +in { meta.maintainers = [ maintainers.rprospero ]; options.programs.matplotlib = { @@ -31,7 +28,7 @@ in Add terms to the matplotlibrc file to control the default matplotlib behavior. ''; - example = literalExample '' + example = literalExample '' { backend = "Qt5Agg"; axes = { @@ -55,10 +52,8 @@ in }; config = mkIf cfg.enable { - xdg.configFile."matplotlib/matplotlibrc".text = - concatStringsSep "\n" ([] - ++ mapAttrsToList (formatLine "") cfg.config - ++ optional (cfg.extraConfig != "") cfg.extraConfig - ) + "\n"; + xdg.configFile."matplotlib/matplotlibrc".text = concatStringsSep "\n" ([ ] + ++ mapAttrsToList (formatLine "") cfg.config + ++ optional (cfg.extraConfig != "") cfg.extraConfig) + "\n"; }; } diff --git a/modules/programs/mbsync-accounts.nix b/modules/programs/mbsync-accounts.nix index c586481d..4de1965f 100644 --- a/modules/programs/mbsync-accounts.nix +++ b/modules/programs/mbsync-accounts.nix @@ -6,9 +6,7 @@ let extraConfigType = with lib.types; attrsOf (either (either str int) bool); -in - -{ +in { options.mbsync = { enable = mkEnableOption "synchronization using mbsync"; @@ -62,7 +60,7 @@ in extraConfig.channel = mkOption { type = extraConfigType; - default = {}; + default = { }; example = literalExample '' { MaxMessages = 10000; @@ -76,7 +74,7 @@ in extraConfig.local = mkOption { type = extraConfigType; - default = {}; + default = { }; description = '' Local store extra configuration. ''; @@ -84,7 +82,7 @@ in extraConfig.remote = mkOption { type = extraConfigType; - default = {}; + default = { }; description = '' Remote store extra configuration. ''; @@ -92,7 +90,7 @@ in extraConfig.account = mkOption { type = extraConfigType; - default = {}; + default = { }; example = literalExample '' { PipelineDepth = 10; diff --git a/modules/programs/mbsync.nix b/modules/programs/mbsync.nix index 7537f6d5..6ade1098 100644 --- a/modules/programs/mbsync.nix +++ b/modules/programs/mbsync.nix @@ -10,14 +10,15 @@ let mbsyncAccounts = filter (a: a.mbsync.enable) (attrValues config.accounts.email.accounts); - genTlsConfig = tls: { - SSLType = - if !tls.enable then "None" - else if tls.useStartTls then "STARTTLS" - else "IMAPS"; - } - // - optionalAttrs (tls.enable && tls.certificatesFile != null) { + genTlsConfig = tls: + { + SSLType = if !tls.enable then + "None" + else if tls.useStartTls then + "STARTTLS" + else + "IMAPS"; + } // optionalAttrs (tls.enable && tls.certificatesFile != null) { CertificateFile = toString tls.certificatesFile; }; @@ -30,79 +31,61 @@ let genSection = header: entries: let - escapeValue = escape [ "\"" ]; + escapeValue = escape [ ''"'' ]; hasSpace = v: builtins.match ".* .*" v != null; genValue = n: v: - if isList v - then concatMapStringsSep " " (genValue n) v - else if isBool v then (if v then "yes" else "no") - else if isInt v then toString v - else if isString v && hasSpace v then "\"${escapeValue v}\"" - else if isString v then v + if isList v then + concatMapStringsSep " " (genValue n) v + else if isBool v then + (if v then "yes" else "no") + else if isInt v then + toString v + else if isString v && hasSpace v then + ''"${escapeValue v}"'' + else if isString v then + v else - let prettyV = lib.generators.toPretty {} v; - in throw "mbsync: unexpected value for option ${n}: '${prettyV}'"; - in - '' - ${header} - ${concatStringsSep "\n" - (mapAttrsToList (n: v: "${n} ${genValue n v}") entries)} - ''; + let prettyV = lib.generators.toPretty { } v; + in throw "mbsync: unexpected value for option ${n}: '${prettyV}'"; + in '' + ${header} + ${concatStringsSep "\n" + (mapAttrsToList (n: v: "${n} ${genValue n v}") entries)} + ''; - genAccountConfig = account: with account; - genSection "IMAPAccount ${name}" ( - { - Host = imap.host; - User = userName; - PassCmd = toString passwordCommand; - } - // genTlsConfig imap.tls - // optionalAttrs (imap.port != null) { Port = toString imap.port; } - // mbsync.extraConfig.account - ) - + "\n" - + genSection "IMAPStore ${name}-remote" ( - { - Account = name; - } - // mbsync.extraConfig.remote - ) - + "\n" - + genSection "MaildirStore ${name}-local" ( - { - Path = "${maildir.absPath}/"; - Inbox = "${maildir.absPath}/${folders.inbox}"; - SubFolders = "Verbatim"; - } - // optionalAttrs (mbsync.flatten != null) { Flatten = mbsync.flatten; } - // mbsync.extraConfig.local - ) - + "\n" - + genSection "Channel ${name}" ( - { - Master = ":${name}-remote:"; - Slave = ":${name}-local:"; - Patterns = mbsync.patterns; - Create = masterSlaveMapping.${mbsync.create}; - Remove = masterSlaveMapping.${mbsync.remove}; - Expunge = masterSlaveMapping.${mbsync.expunge}; - SyncState = "*"; - } - // mbsync.extraConfig.channel - ) - + "\n"; + genAccountConfig = account: + with account; + genSection "IMAPAccount ${name}" ({ + Host = imap.host; + User = userName; + PassCmd = toString passwordCommand; + } // genTlsConfig imap.tls + // optionalAttrs (imap.port != null) { Port = toString imap.port; } + // mbsync.extraConfig.account) + "\n" + + genSection "IMAPStore ${name}-remote" + ({ Account = name; } // mbsync.extraConfig.remote) + "\n" + + genSection "MaildirStore ${name}-local" ({ + Path = "${maildir.absPath}/"; + Inbox = "${maildir.absPath}/${folders.inbox}"; + SubFolders = "Verbatim"; + } // optionalAttrs (mbsync.flatten != null) { Flatten = mbsync.flatten; } + // mbsync.extraConfig.local) + "\n" + genSection "Channel ${name}" ({ + Master = ":${name}-remote:"; + Slave = ":${name}-local:"; + Patterns = mbsync.patterns; + Create = masterSlaveMapping.${mbsync.create}; + Remove = masterSlaveMapping.${mbsync.remove}; + Expunge = masterSlaveMapping.${mbsync.expunge}; + SyncState = "*"; + } // mbsync.extraConfig.channel) + "\n"; genGroupConfig = name: channels: let genGroupChannel = n: boxes: "Channel ${n}:${concatStringsSep "," boxes}"; - in - concatStringsSep "\n" ( - [ "Group ${name}" ] ++ mapAttrsToList genGroupChannel channels - ); + in concatStringsSep "\n" + ([ "Group ${name}" ] ++ mapAttrsToList genGroupChannel channels); -in - -{ +in { options = { programs.mbsync = { enable = mkEnableOption "mbsync IMAP4 and Maildir mailbox synchronizer"; @@ -117,7 +100,7 @@ in groups = mkOption { type = types.attrsOf (types.attrsOf (types.listOf types.str)); - default = {}; + default = { }; example = literalExample '' { inboxes = { @@ -142,41 +125,34 @@ in }; config = mkIf cfg.enable { - assertions = - let - checkAccounts = pred: msg: - let - badAccounts = filter pred mbsyncAccounts; - in { - assertion = badAccounts == []; - message = "mbsync: ${msg} for accounts: " - + concatMapStringsSep ", " (a: a.name) badAccounts; - }; - in - [ - (checkAccounts (a: a.maildir == null) "Missing maildir configuration") - (checkAccounts (a: a.imap == null) "Missing IMAP configuration") - (checkAccounts (a: a.passwordCommand == null) "Missing passwordCommand") - (checkAccounts (a: a.userName == null) "Missing username") - ]; + assertions = let + checkAccounts = pred: msg: + let badAccounts = filter pred mbsyncAccounts; + in { + assertion = badAccounts == [ ]; + message = "mbsync: ${msg} for accounts: " + + concatMapStringsSep ", " (a: a.name) badAccounts; + }; + in [ + (checkAccounts (a: a.maildir == null) "Missing maildir configuration") + (checkAccounts (a: a.imap == null) "Missing IMAP configuration") + (checkAccounts (a: a.passwordCommand == null) "Missing passwordCommand") + (checkAccounts (a: a.userName == null) "Missing username") + ]; home.packages = [ cfg.package ]; programs.notmuch.new.ignore = [ ".uidvalidity" ".mbsyncstate" ]; - home.file.".mbsyncrc".text = - let - accountsConfig = map genAccountConfig mbsyncAccounts; - groupsConfig = mapAttrsToList genGroupConfig cfg.groups; - in - concatStringsSep "\n" ( - [ "# Generated by Home Manager.\n" ] - ++ optional (cfg.extraConfig != "") cfg.extraConfig - ++ accountsConfig - ++ groupsConfig - ) + "\n"; + home.file.".mbsyncrc".text = let + accountsConfig = map genAccountConfig mbsyncAccounts; + groupsConfig = mapAttrsToList genGroupConfig cfg.groups; + in concatStringsSep "\n" (['' + # Generated by Home Manager. + ''] ++ optional (cfg.extraConfig != "") cfg.extraConfig ++ accountsConfig + ++ groupsConfig) + "\n"; - home.activation = mkIf (mbsyncAccounts != []) { + home.activation = mkIf (mbsyncAccounts != [ ]) { createMaildir = hm.dag.entryBetween [ "linkGeneration" ] [ "writeBoundary" ] '' $DRY_RUN_CMD mkdir -m700 -p $VERBOSE_ARG ${ diff --git a/modules/programs/mercurial.nix b/modules/programs/mercurial.nix index fa6e7b3e..8e9a3bef 100644 --- a/modules/programs/mercurial.nix +++ b/modules/programs/mercurial.nix @@ -6,9 +6,7 @@ let cfg = config.programs.mercurial; -in - -{ +in { options = { programs.mercurial = { @@ -33,13 +31,13 @@ in aliases = mkOption { type = types.attrs; - default = {}; + default = { }; description = "Mercurial aliases to define."; }; extraConfig = mkOption { type = types.either types.attrs types.lines; - default = {}; + default = { }; description = "Additional configuration to add."; }; @@ -50,53 +48,53 @@ in ignores = mkOption { type = types.listOf types.str; - default = []; + default = [ ]; example = [ "*~" "*.swp" ]; description = "List of globs for files to be globally ignored."; }; ignoresRegexp = mkOption { type = types.listOf types.str; - default = []; + default = [ ]; example = [ "^.*~$" "^.*\\.swp$" ]; description = - "List of regular expressions for files to be globally ignored."; + "List of regular expressions for files to be globally ignored."; }; }; }; - config = mkIf cfg.enable ( - mkMerge [ - { - home.packages = [ cfg.package ]; + config = mkIf cfg.enable (mkMerge [ + { + home.packages = [ cfg.package ]; - programs.mercurial.iniContent.ui = { - username = cfg.userName + " <" + cfg.userEmail + ">"; - }; + programs.mercurial.iniContent.ui = { + username = cfg.userName + " <" + cfg.userEmail + ">"; + }; - xdg.configFile."hg/hgrc".text = generators.toINI {} cfg.iniContent; - } + xdg.configFile."hg/hgrc".text = generators.toINI { } cfg.iniContent; + } - (mkIf (cfg.ignores != [] || cfg.ignoresRegexp != []) { - programs.mercurial.iniContent.ui.ignore = - "${config.xdg.configHome}/hg/hgignore_global"; + (mkIf (cfg.ignores != [ ] || cfg.ignoresRegexp != [ ]) { + programs.mercurial.iniContent.ui.ignore = + "${config.xdg.configHome}/hg/hgignore_global"; - xdg.configFile."hg/hgignore_global".text = - "syntax: glob\n" + concatStringsSep "\n" cfg.ignores + "\n" + - "syntax: regexp\n" + concatStringsSep "\n" cfg.ignoresRegexp + "\n"; - }) + xdg.configFile."hg/hgignore_global".text = '' + syntax: glob + '' + concatStringsSep "\n" cfg.ignores + "\n" + '' + syntax: regexp + '' + concatStringsSep "\n" cfg.ignoresRegexp + "\n"; + }) - (mkIf (cfg.aliases != {}) { - programs.mercurial.iniContent.alias = cfg.aliases; - }) + (mkIf (cfg.aliases != { }) { + programs.mercurial.iniContent.alias = cfg.aliases; + }) - (mkIf (lib.isAttrs cfg.extraConfig) { - programs.mercurial.iniContent = cfg.extraConfig; - }) + (mkIf (lib.isAttrs cfg.extraConfig) { + programs.mercurial.iniContent = cfg.extraConfig; + }) - (mkIf (lib.isString cfg.extraConfig) { - xdg.configFile."hg/hgrc".text = cfg.extraConfig; - }) - ] - ); + (mkIf (lib.isString cfg.extraConfig) { + xdg.configFile."hg/hgrc".text = cfg.extraConfig; + }) + ]); } diff --git a/modules/programs/mpv.nix b/modules/programs/mpv.nix index 8b9c191c..3a4e5092 100644 --- a/modules/programs/mpv.nix +++ b/modules/programs/mpv.nix @@ -23,31 +23,21 @@ let }.${typeOf option}; renderOptions = options: - concatStringsSep "\n" - (mapAttrsToList - (name: value: - let - rendered = renderOption value; - length = toString (stringLength rendered); - in - "${name}=%${length}%${rendered}") - options); + concatStringsSep "\n" (mapAttrsToList (name: value: + let + rendered = renderOption value; + length = toString (stringLength rendered); + in "${name}=%${length}%${rendered}") options); renderProfiles = profiles: - concatStringsSep "\n" - (mapAttrsToList - (name: value: '' - [${name}] - ${renderOptions value} - '') - profiles); + concatStringsSep "\n" (mapAttrsToList (name: value: '' + [${name}] + ${renderOptions value} + '') profiles); renderBindings = bindings: concatStringsSep "\n" - (mapAttrsToList - (name: value: - "${name} ${value}") - bindings); + (mapAttrsToList (name: value: "${name} ${value}") bindings); in { options = { @@ -56,7 +46,7 @@ in { scripts = mkOption { type = with types; listOf (either package str); - default = []; + default = [ ]; example = literalExample "[ pkgs.mpvScripts.mpris ]"; description = '' List of scripts to use with mpv. @@ -74,7 +64,7 @@ in { for the full list of options. ''; type = mpvOptions; - default = {}; + default = { }; example = literalExample '' { profile = "gpu-hq"; @@ -92,7 +82,7 @@ in { for more information. ''; type = mpvProfiles; - default = {}; + default = { }; example = literalExample '' { fast = { @@ -117,7 +107,7 @@ in { for the full list of options. ''; type = mpvBindings; - default = {}; + default = { }; example = literalExample '' { WHEEL_UP = "seek 10"; @@ -131,19 +121,20 @@ in { config = mkIf cfg.enable (mkMerge [ { - home.packages = [( - if cfg.scripts == [] - then pkgs.mpv - else pkgs.mpv-with-scripts.override { scripts = cfg.scripts; } - )]; + home.packages = [ + (if cfg.scripts == [ ] then + pkgs.mpv + else + pkgs.mpv-with-scripts.override { scripts = cfg.scripts; }) + ]; } - (mkIf (cfg.config != {} || cfg.profiles != {}) { + (mkIf (cfg.config != { } || cfg.profiles != { }) { xdg.configFile."mpv/mpv.conf".text = '' - ${optionalString (cfg.config != {}) (renderOptions cfg.config)} - ${optionalString (cfg.profiles != {}) (renderProfiles cfg.profiles)} + ${optionalString (cfg.config != { }) (renderOptions cfg.config)} + ${optionalString (cfg.profiles != { }) (renderProfiles cfg.profiles)} ''; }) - (mkIf (cfg.bindings != {}) { + (mkIf (cfg.bindings != { }) { xdg.configFile."mpv/input.conf".text = renderBindings cfg.bindings; }) ]); diff --git a/modules/programs/msmtp-accounts.nix b/modules/programs/msmtp-accounts.nix index 277710f4..894cef51 100644 --- a/modules/programs/msmtp-accounts.nix +++ b/modules/programs/msmtp-accounts.nix @@ -23,7 +23,8 @@ with lib; }; tls.fingerprint = mkOption { - type = types.nullOr (types.strMatching "([[:alnum:]]{2}\:)+[[:alnum:]]{2}"); + type = + types.nullOr (types.strMatching "([[:alnum:]]{2}:)+[[:alnum:]]{2}"); default = null; example = "my:SH:a2:56:ha:sh"; description = '' diff --git a/modules/programs/msmtp.nix b/modules/programs/msmtp.nix index 1ff3139e..f34fd72f 100644 --- a/modules/programs/msmtp.nix +++ b/modules/programs/msmtp.nix @@ -6,38 +6,32 @@ let cfg = config.programs.msmtp; - msmtpAccounts = filter (a: a.msmtp.enable) - (attrValues config.accounts.email.accounts); + msmtpAccounts = + filter (a: a.msmtp.enable) (attrValues config.accounts.email.accounts); onOff = p: if p then "on" else "off"; - accountStr = account: with account; - concatStringsSep "\n" ( - [ "account ${name}" ] - ++ mapAttrsToList (n: v: n + " " + v) ( - { - host = smtp.host; - from = address; - auth = "on"; - user = userName; - tls = onOff smtp.tls.enable; - tls_starttls = onOff smtp.tls.useStartTls; - tls_trust_file = smtp.tls.certificatesFile; - } - // optionalAttrs (msmtp.tls.fingerprint != null) { - tls_fingerprint = msmtp.tls.fingerprint; - } - // optionalAttrs (smtp.port != null) { - port = toString smtp.port; - } + accountStr = account: + with account; + concatStringsSep "\n" ([ "account ${name}" ] + ++ mapAttrsToList (n: v: n + " " + v) ({ + host = smtp.host; + from = address; + auth = "on"; + user = userName; + tls = onOff smtp.tls.enable; + tls_starttls = onOff smtp.tls.useStartTls; + tls_trust_file = smtp.tls.certificatesFile; + } // optionalAttrs (msmtp.tls.fingerprint != null) { + tls_fingerprint = msmtp.tls.fingerprint; + } // optionalAttrs (smtp.port != null) { port = toString smtp.port; } // optionalAttrs (passwordCommand != null) { # msmtp requires the password to finish with a newline. - passwordeval = ''${pkgs.bash}/bin/bash -c "${toString passwordCommand}; echo"''; - } - // msmtp.extraConfig - ) - ++ optional primary "\naccount default : ${name}" - ); + passwordeval = + ''${pkgs.bash}/bin/bash -c "${toString passwordCommand}; echo"''; + } // msmtp.extraConfig) ++ optional primary '' + + account default : ${name}''); configFile = mailAccounts: '' # Generated by Home Manager. @@ -47,9 +41,7 @@ let ${concatStringsSep "\n\n" (map accountStr mailAccounts)} ''; -in - -{ +in { options = { programs.msmtp = { @@ -71,7 +63,7 @@ in xdg.configFile."msmtp/config".text = configFile msmtpAccounts; - home.sessionVariables = { + home.sessionVariables = { MSMTP_QUEUE = "${config.xdg.dataHome}/msmtp/queue"; MSMTP_LOG = "${config.xdg.dataHome}/msmtp/queue.log"; }; diff --git a/modules/programs/neomutt-accounts.nix b/modules/programs/neomutt-accounts.nix index a374f116..033db38e 100644 --- a/modules/programs/neomutt-accounts.nix +++ b/modules/programs/neomutt-accounts.nix @@ -26,10 +26,9 @@ with lib; }; config = mkIf config.neomutt.enable { - neomutt.sendMailCommand = mkOptionDefault ( - if config.msmtp.enable - then "msmtpq --read-envelope-from --read-recipients" - else null - ); + neomutt.sendMailCommand = mkOptionDefault (if config.msmtp.enable then + "msmtpq --read-envelope-from --read-recipients" + else + null); }; } diff --git a/modules/programs/neomutt.nix b/modules/programs/neomutt.nix index 1f7022e0..85af0353 100644 --- a/modules/programs/neomutt.nix +++ b/modules/programs/neomutt.nix @@ -6,8 +6,8 @@ let cfg = config.programs.neomutt; - neomuttAccounts = filter (a: a.neomutt.enable) - (attrValues config.accounts.email.accounts); + neomuttAccounts = + filter (a: a.neomutt.enable) (attrValues config.accounts.email.accounts); sidebarModule = types.submodule { options = { @@ -76,13 +76,12 @@ let yesno = x: if x then "yes" else "no"; setOption = n: v: if v == null then "unset ${n}" else "set ${n}=${v}"; - escape = replaceStrings ["%"] ["%25"]; + escape = replaceStrings [ "%" ] [ "%25" ]; - accountFilename = account: - config.xdg.configHome + "/neomutt/" + account.name; + accountFilename = account: config.xdg.configHome + "/neomutt/" + account.name; - genCommonFolderHooks = account: with account; - { + genCommonFolderHooks = account: + with account; { from = "'${address}'"; realname = "'${realName}'"; spoolfile = "'+${folders.inbox}'"; @@ -91,13 +90,13 @@ let trash = "'+${folders.trash}'"; }; - mtaSection = account: with account; - let - passCmd = concatStringsSep " " passwordCommand; - in - if neomutt.sendMailCommand != null then { - sendmail = "'${neomutt.sendMailCommand}'"; - } else let + mtaSection = account: + with account; + let passCmd = concatStringsSep " " passwordCommand; + in if neomutt.sendMailCommand != null then { + sendmail = "'${neomutt.sendMailCommand}'"; + } else + let smtpProto = if smtp.tls.enable then "smtps" else "smtp"; smtpBaseUrl = "${smtpProto}://${escape userName}@${smtp.host}"; in { @@ -105,35 +104,32 @@ let smtp_pass = "'`${passCmd}`'"; }; - genMaildirAccountConfig = account: with account; + genMaildirAccountConfig = account: + with account; let - folderHook = - mapAttrsToList setOption ( - genCommonFolderHooks account - // { folder = "'${account.maildir.absPath}'"; } - ) - ++ optional (neomutt.extraConfig != "") neomutt.extraConfig; - in - '' - ${concatStringsSep "\n" folderHook} - ''; + folderHook = mapAttrsToList setOption (genCommonFolderHooks account // { + folder = "'${account.maildir.absPath}'"; + }) ++ optional (neomutt.extraConfig != "") neomutt.extraConfig; + in '' + ${concatStringsSep "\n" folderHook} + ''; - registerAccount = account: with account; - '' + registerAccount = account: + with account; '' # register account ${name} mailboxes "${account.maildir.absPath}/${folders.inbox}" folder-hook ${account.maildir.absPath}/ " \ source ${accountFilename account} " ''; - mraSection = account: with account; - if account.maildir != null - then genMaildirAccountConfig account - else throw "Only maildir is supported at the moment"; - - optionsStr = attrs: - concatStringsSep "\n" (mapAttrsToList setOption attrs); + mraSection = account: + with account; + if account.maildir != null then + genMaildirAccountConfig account + else + throw "Only maildir is supported at the moment"; + optionsStr = attrs: concatStringsSep "\n" (mapAttrsToList setOption attrs); sidebarSection = '' # Sidebar @@ -143,81 +139,74 @@ let set sidebar_format = '${cfg.sidebar.format}' ''; - bindSection = - concatMapStringsSep - "\n" - (bind: "bind ${bind.map} ${bind.key} \"${bind.action}\"") - cfg.binds; + bindSection = concatMapStringsSep "\n" + (bind: ''bind ${bind.map} ${bind.key} "${bind.action}"'') cfg.binds; - macroSection = - concatMapStringsSep - "\n" - (bind: "macro ${bind.map} ${bind.key} \"${bind.action}\"") - cfg.macros; + macroSection = concatMapStringsSep "\n" + (bind: ''macro ${bind.map} ${bind.key} "${bind.action}"'') cfg.macros; mailCheckSection = '' set mail_check_stats set mail_check_stats_interval = ${toString cfg.checkStatsInterval} ''; - notmuchSection = account: with account; '' - # notmuch section - set nm_default_uri = "notmuch://${config.accounts.email.maildirBasePath}" - virtual-mailboxes "My INBOX" "notmuch://?query=tag:inbox" - ''; + notmuchSection = account: + with account; '' + # notmuch section + set nm_default_uri = "notmuch://${config.accounts.email.maildirBasePath}" + virtual-mailboxes "My INBOX" "notmuch://?query=tag:inbox" + ''; - accountStr = account: with account; '' - # Generated by Home Manager. - set ssl_force_tls = yes - set certificate_file=${config.accounts.email.certificatesFile} + accountStr = account: + with account; + '' + # Generated by Home Manager. + set ssl_force_tls = yes + set certificate_file=${config.accounts.email.certificatesFile} - # GPG section - set crypt_use_gpgme = yes - set crypt_autosign = ${yesno (gpg.signByDefault or false)} - set pgp_use_gpg_agent = yes - set mbox_type = ${if maildir != null then "Maildir" else "mbox"} - set sort = "${cfg.sort}" + # GPG section + set crypt_use_gpgme = yes + set crypt_autosign = ${yesno (gpg.signByDefault or false)} + set pgp_use_gpg_agent = yes + set mbox_type = ${if maildir != null then "Maildir" else "mbox"} + set sort = "${cfg.sort}" - # MTA section - ${optionsStr (mtaSection account)} + # MTA section + ${optionsStr (mtaSection account)} - ${optionalString (cfg.checkStatsInterval != null) mailCheckSection} + ${optionalString (cfg.checkStatsInterval != null) mailCheckSection} - ${optionalString cfg.sidebar.enable sidebarSection} + ${optionalString cfg.sidebar.enable sidebarSection} - # MRA section - ${mraSection account} + # MRA section + ${mraSection account} - # Extra configuration - ${account.neomutt.extraConfig} - '' - + optionalString (account.signature.showSignature != "none") '' - set signature = ${pkgs.writeText "signature.txt" account.signature.text} - '' - + optionalString account.notmuch.enable (notmuchSection account); + # Extra configuration + ${account.neomutt.extraConfig} + '' + optionalString (account.signature.showSignature != "none") '' + set signature = ${pkgs.writeText "signature.txt" account.signature.text} + '' + optionalString account.notmuch.enable (notmuchSection account); -in - -{ +in { options = { programs.neomutt = { enable = mkEnableOption "the NeoMutt mail client"; sidebar = mkOption { type = sidebarModule; - default = {}; + default = { }; description = "Options related to the sidebar."; }; binds = mkOption { type = types.listOf bindModule; - default = []; + default = [ ]; description = "List of keybindings."; }; macros = mkOption { type = types.listOf bindModule; - default = []; + default = [ ]; description = "List of macros."; }; @@ -259,7 +248,7 @@ in settings = mkOption { type = types.attrsOf types.str; - default = {}; + default = { }; description = "Extra configuration appended to the end."; }; @@ -277,43 +266,37 @@ in rcFile = account: { "${accountFilename account}".text = accountStr account; }; - in - foldl' (a: b: a // b) {} (map rcFile neomuttAccounts); + in foldl' (a: b: a // b) { } (map rcFile neomuttAccounts); - xdg.configFile."neomutt/neomuttrc" = mkIf (neomuttAccounts != []) { - text = - let - primary = filter (a: a.primary) neomuttAccounts; - in - '' - # Generated by Home Manager. - set header_cache = "${config.xdg.cacheHome}/neomutt/headers/" - set message_cachedir = "${config.xdg.cacheHome}/neomutt/messages/" - set editor = "${cfg.editor}" - set implicit_autoview = yes + xdg.configFile."neomutt/neomuttrc" = mkIf (neomuttAccounts != [ ]) { + text = let primary = filter (a: a.primary) neomuttAccounts; + in '' + # Generated by Home Manager. + set header_cache = "${config.xdg.cacheHome}/neomutt/headers/" + set message_cachedir = "${config.xdg.cacheHome}/neomutt/messages/" + set editor = "${cfg.editor}" + set implicit_autoview = yes - alternative_order text/enriched text/plain text + alternative_order text/enriched text/plain text - set delete = yes + set delete = yes - # Binds - ${bindSection} + # Binds + ${bindSection} - # Macros - ${macroSection} + # Macros + ${macroSection} - ${optionalString cfg.vimKeys "source ${pkgs.neomutt}/share/doc/neomutt/vim-keys/vim-keys.rc"} + ${optionalString cfg.vimKeys + "source ${pkgs.neomutt}/share/doc/neomutt/vim-keys/vim-keys.rc"} - # Extra configuration - ${optionsStr cfg.settings} + # Extra configuration + ${optionsStr cfg.settings} - ${cfg.extraConfig} - '' - + - concatMapStringsSep "\n" registerAccount neomuttAccounts - + - # source primary account - "source ${accountFilename (builtins.head primary)}"; + ${cfg.extraConfig} + '' + concatMapStringsSep "\n" registerAccount neomuttAccounts + + # source primary account + "source ${accountFilename (builtins.head primary)}"; }; }; } diff --git a/modules/programs/newsboat.nix b/modules/programs/newsboat.nix index 19fec642..6b59ed71 100644 --- a/modules/programs/newsboat.nix +++ b/modules/programs/newsboat.nix @@ -4,11 +4,9 @@ with lib; let cfg = config.programs.newsboat; - wrapQuote = x: "\"${x}\""; + wrapQuote = x: ''"${x}"''; -in - -{ +in { options = { programs.newsboat = { enable = mkEnableOption "the Newsboat feed reader"; @@ -24,8 +22,8 @@ in tags = mkOption { type = types.listOf types.str; - default = []; - example = ["foo" "bar"]; + default = [ ]; + example = [ "foo" "bar" ]; description = "Feed tags."; }; @@ -37,8 +35,11 @@ in }; }; }); - default = []; - example = [{url = "http://example.com"; tags = ["foo" "bar"];}]; + default = [ ]; + example = [{ + url = "http://example.com"; + tags = [ "foo" "bar" ]; + }]; description = "List of news feeds."; }; @@ -57,7 +58,9 @@ in autoReload = mkOption { type = types.bool; default = false; - description = "Whether to enable automatic reloading while newsboat is running."; + description = '' + Whether to enable automatic reloading while newsboat is running. + ''; }; reloadTime = mkOption { @@ -74,43 +77,40 @@ in queries = mkOption { type = types.attrsOf types.str; - default = {}; - example = { - "foo" = "rssurl =~ \"example.com\""; - }; + default = { }; + example = { "foo" = ''rssurl =~ "example.com"''; }; description = "A list of queries to use."; }; extraConfig = mkOption { type = types.lines; default = ""; - description = "Extra configuration values that will be appended to the end."; + description = '' + Extra configuration values that will be appended to the end. + ''; }; }; }; config = mkIf cfg.enable { home.packages = [ pkgs.newsboat ]; - home.file.".newsboat/urls".text = - let - mkUrlEntry = u: concatStringsSep " " ( - [u.url] - ++ map wrapQuote u.tags - ++ optional (u.title != null) (wrapQuote "~${u.title}") - ); - urls = map mkUrlEntry cfg.urls; + home.file.".newsboat/urls".text = let + mkUrlEntry = u: + concatStringsSep " " ([ u.url ] ++ map wrapQuote u.tags + ++ optional (u.title != null) (wrapQuote "~${u.title}")); + urls = map mkUrlEntry cfg.urls; - mkQueryEntry = n: v: "\"query:${n}:${escape ["\""] v}\""; - queries = mapAttrsToList mkQueryEntry cfg.queries; - in - concatStringsSep "\n" (urls ++ queries) + "\n"; + mkQueryEntry = n: v: ''"query:${n}:${escape [ ''"'' ] v}"''; + queries = mapAttrsToList mkQueryEntry cfg.queries; + in concatStringsSep "\n" (urls ++ queries) + "\n"; home.file.".newsboat/config".text = '' max-items ${toString cfg.maxItems} browser ${cfg.browser} reload-threads ${toString cfg.reloadThreads} auto-reload ${if cfg.autoReload then "yes" else "no"} - ${optionalString (cfg.reloadTime != null) (toString "reload-time ${toString cfg.reloadTime}")} + ${optionalString (cfg.reloadTime != null) + (toString "reload-time ${toString cfg.reloadTime}")} prepopulate-query-feeds yes ${cfg.extraConfig} diff --git a/modules/programs/noti.nix b/modules/programs/noti.nix index 476c2eb1..348555ee 100644 --- a/modules/programs/noti.nix +++ b/modules/programs/noti.nix @@ -1,4 +1,4 @@ -{ config, lib, pkgs, ...}: +{ config, lib, pkgs, ... }: with lib; @@ -6,9 +6,7 @@ let cfg = config.programs.noti; -in - -{ +in { meta.maintainers = [ maintainers.marsam ]; options.programs.noti = { @@ -16,7 +14,7 @@ in settings = mkOption { type = types.attrsOf (types.attrsOf types.str); - default = {}; + default = { }; description = '' Configuration written to ~/.config/noti/noti.yaml. @@ -45,9 +43,8 @@ in config = mkIf cfg.enable { home.packages = [ pkgs.noti ]; - xdg.configFile."noti/noti.yaml" = mkIf (cfg.settings != {}) { - text = generators.toYAML {} cfg.settings; - }; + xdg.configFile."noti/noti.yaml" = + mkIf (cfg.settings != { }) { text = generators.toYAML { } cfg.settings; }; }; } diff --git a/modules/programs/notmuch-accounts.nix b/modules/programs/notmuch-accounts.nix index 7c9c93d3..fd4a811d 100644 --- a/modules/programs/notmuch-accounts.nix +++ b/modules/programs/notmuch-accounts.nix @@ -1,7 +1,5 @@ { lib, ... }: { - options.notmuch = { - enable = lib.mkEnableOption "notmuch indexing"; - }; + options.notmuch = { enable = lib.mkEnableOption "notmuch indexing"; }; } diff --git a/modules/programs/notmuch.nix b/modules/programs/notmuch.nix index 74aa9320..7e7a140b 100644 --- a/modules/programs/notmuch.nix +++ b/modules/programs/notmuch.nix @@ -9,53 +9,42 @@ let mkIniKeyValue = key: value: let tweakVal = v: - if isString v then v - else if isList v then concatMapStringsSep ";" tweakVal v - else if isBool v then (if v then "true" else "false") - else toString v; - in - "${key}=${tweakVal value}"; + if isString v then + v + else if isList v then + concatMapStringsSep ";" tweakVal v + else if isBool v then + (if v then "true" else "false") + else + toString v; + in "${key}=${tweakVal value}"; - notmuchIni = - recursiveUpdate - { - database = { - path = config.accounts.email.maildirBasePath; - }; + notmuchIni = recursiveUpdate { + database = { path = config.accounts.email.maildirBasePath; }; - maildir = { - synchronize_flags = cfg.maildir.synchronizeFlags; - }; + maildir = { synchronize_flags = cfg.maildir.synchronizeFlags; }; - new = { - ignore = cfg.new.ignore; - tags = cfg.new.tags; - }; + new = { + ignore = cfg.new.ignore; + tags = cfg.new.tags; + }; - user = - let - accounts = - filter (a: a.notmuch.enable) - (attrValues config.accounts.email.accounts); - primary = filter (a: a.primary) accounts; - secondaries = filter (a: !a.primary) accounts; - in { - name = catAttrs "realName" primary; - primary_email = catAttrs "address" primary; - other_email = catAttrs "aliases" primary - ++ catAttrs "address" secondaries - ++ catAttrs "aliases" secondaries; - }; + user = let + accounts = filter (a: a.notmuch.enable) + (attrValues config.accounts.email.accounts); + primary = filter (a: a.primary) accounts; + secondaries = filter (a: !a.primary) accounts; + in { + name = catAttrs "realName" primary; + primary_email = catAttrs "address" primary; + other_email = catAttrs "aliases" primary ++ catAttrs "address" secondaries + ++ catAttrs "aliases" secondaries; + }; - search = { - exclude_tags = cfg.search.excludeTags; - }; - } - cfg.extraConfig; + search = { exclude_tags = cfg.search.excludeTags; }; + } cfg.extraConfig; -in - -{ +in { options = { programs.notmuch = { enable = mkEnableOption "Notmuch mail indexer"; @@ -65,7 +54,7 @@ in options = { ignore = mkOption { type = types.listOf types.str; - default = []; + default = [ ]; description = '' A list to specify files and directories that will not be searched for messages by notmuch new. @@ -83,7 +72,7 @@ in }; }; }; - default = {}; + default = { }; description = '' Options related to email processing performed by notmuch new. @@ -92,7 +81,7 @@ in extraConfig = mkOption { type = types.attrsOf (types.attrsOf types.str); - default = {}; + default = { }; description = '' Options that should be appended to the notmuch configuration file. ''; @@ -159,11 +148,11 @@ in config = mkIf cfg.enable { assertions = [ { - assertion = notmuchIni.user.name != []; + assertion = notmuchIni.user.name != [ ]; message = "notmuch: Must have a user name set."; } { - assertion = notmuchIni.user.primary_email != []; + assertion = notmuchIni.user.primary_email != [ ]; message = "notmuch: Must have a user primary email address set."; } ]; @@ -176,33 +165,27 @@ in }; xdg.configFile."notmuch/notmuchrc".text = - let - toIni = generators.toINI { mkKeyValue = mkIniKeyValue; }; - in - "# Generated by Home Manager.\n\n" - + toIni notmuchIni; + let toIni = generators.toINI { mkKeyValue = mkIniKeyValue; }; + in '' + # Generated by Home Manager. - home.file = - let - hook = name: cmds: - { - "${notmuchIni.database.path}/.notmuch/hooks/${name}".source = - pkgs.writeShellScript name '' - export PATH="${pkgs.notmuch}/bin''${PATH:+:}$PATH" - export NOTMUCH_CONFIG="${config.xdg.configHome}/notmuch/notmuchrc" - export NMBGIT="${config.xdg.dataHome}/notmuch/nmbug" + '' + toIni notmuchIni; - ${cmds} - ''; - }; - in - optionalAttrs (cfg.hooks.preNew != "") - (hook "pre-new" cfg.hooks.preNew) - // - optionalAttrs (cfg.hooks.postNew != "") - (hook "post-new" cfg.hooks.postNew) - // - optionalAttrs (cfg.hooks.postInsert != "") - (hook "post-insert" cfg.hooks.postInsert); + home.file = let + hook = name: cmds: { + "${notmuchIni.database.path}/.notmuch/hooks/${name}".source = + pkgs.writeShellScript name '' + export PATH="${pkgs.notmuch}/bin''${PATH:+:}$PATH" + export NOTMUCH_CONFIG="${config.xdg.configHome}/notmuch/notmuchrc" + export NMBGIT="${config.xdg.dataHome}/notmuch/nmbug" + + ${cmds} + ''; + }; + in optionalAttrs (cfg.hooks.preNew != "") (hook "pre-new" cfg.hooks.preNew) + // optionalAttrs (cfg.hooks.postNew != "") + (hook "post-new" cfg.hooks.postNew) + // optionalAttrs (cfg.hooks.postInsert != "") + (hook "post-insert" cfg.hooks.postInsert); }; } diff --git a/modules/programs/obs-studio.nix b/modules/programs/obs-studio.nix index f0dfecb6..6df59783 100644 --- a/modules/programs/obs-studio.nix +++ b/modules/programs/obs-studio.nix @@ -11,23 +11,18 @@ let let pluginDirs = map (pkg: "${pkg}/share/obs/obs-plugins") packages; plugins = concatMapStringsSep " " (p: "${p}/*") pluginDirs; - in - pkgs.runCommand "obs-studio-plugins" - { - preferLocalBuild = true; - allowSubstitutes = false; - } - '' - mkdir $out - [[ '${plugins}' ]] || exit 0 - for plugin in ${plugins}; do - ln -s "$plugin" $out/ - done - ''; + in pkgs.runCommand "obs-studio-plugins" { + preferLocalBuild = true; + allowSubstitutes = false; + } '' + mkdir $out + [[ '${plugins}' ]] || exit 0 + for plugin in ${plugins}; do + ln -s "$plugin" $out/ + done + ''; -in - -{ +in { meta.maintainers = [ maintainers.adisbladis ]; options = { @@ -35,7 +30,7 @@ in enable = mkEnableOption "obs-studio"; plugins = mkOption { - default = []; + default = [ ]; example = literalExample "[ pkgs.obs-linuxbrowser ]"; description = "Optional OBS plugins."; type = types.listOf types.package; @@ -46,8 +41,7 @@ in config = mkIf cfg.enable { home.packages = [ package ]; - xdg.configFile."obs-studio/plugins" = mkIf (cfg.plugins != []) { - source = mkPluginEnv cfg.plugins; - }; + xdg.configFile."obs-studio/plugins" = + mkIf (cfg.plugins != [ ]) { source = mkPluginEnv cfg.plugins; }; }; } diff --git a/modules/programs/offlineimap-accounts.nix b/modules/programs/offlineimap-accounts.nix index 015a5974..afc7a019 100644 --- a/modules/programs/offlineimap-accounts.nix +++ b/modules/programs/offlineimap-accounts.nix @@ -6,18 +6,14 @@ let extraConfigType = with types; attrsOf (either (either str int) bool); -in - -{ +in { options.offlineimap = { enable = mkEnableOption "OfflineIMAP"; extraConfig.account = mkOption { type = extraConfigType; - default = {}; - example = { - autorefresh = 20; - }; + default = { }; + example = { autorefresh = 20; }; description = '' Extra configuration options to add to the account section. ''; @@ -25,10 +21,8 @@ in extraConfig.local = mkOption { type = extraConfigType; - default = {}; - example = { - sync_deletes = true; - }; + default = { }; + example = { sync_deletes = true; }; description = '' Extra configuration options to add to the local account section. @@ -37,7 +31,7 @@ in extraConfig.remote = mkOption { type = extraConfigType; - default = {}; + default = { }; example = { maxconnections = 2; expunge = false; diff --git a/modules/programs/offlineimap.nix b/modules/programs/offlineimap.nix index 82143b63..4ce12ec0 100644 --- a/modules/programs/offlineimap.nix +++ b/modules/programs/offlineimap.nix @@ -12,11 +12,11 @@ let toIni = generators.toINI { mkKeyValue = key: value: let - value' = - if isBool value then (if value then "yes" else "no") - else toString value; - in - "${key} = ${value'}"; + value' = if isBool value then + (if value then "yes" else "no") + else + toString value; + in "${key} = ${value'}"; }; # Generates a script to fetch only a specific account. @@ -29,90 +29,65 @@ let # Something like # # $ email - genOfflineImapScript = account: with account; + genOfflineImapScript = account: + with account; pkgs.writeShellScriptBin "offlineimap-${name}" '' exec ${pkgs.offlineimap}/bin/offlineimap -a${account.name} "$@" ''; - accountStr = account: with account; + accountStr = account: + with account; let postSyncHook = optionalAttrs (offlineimap.postSyncHookCommand != "") { - postsynchook = - pkgs.writeShellScriptBin - "postsynchook" - offlineimap.postSyncHookCommand - + "/bin/postsynchook"; + postsynchook = pkgs.writeShellScriptBin "postsynchook" + offlineimap.postSyncHookCommand + "/bin/postsynchook"; }; localType = - if account.flavor == "gmail.com" - then "GmailMaildir" - else "Maildir"; + if account.flavor == "gmail.com" then "GmailMaildir" else "Maildir"; - remoteType = - if account.flavor == "gmail.com" - then "Gmail" - else "IMAP"; + remoteType = if account.flavor == "gmail.com" then "Gmail" else "IMAP"; - remoteHost = optionalAttrs (imap.host != null) { - remotehost = imap.host; + remoteHost = + optionalAttrs (imap.host != null) { remotehost = imap.host; }; + + remotePort = + optionalAttrs ((imap.port or null) != null) { remoteport = imap.port; }; + + ssl = if imap.tls.enable then { + ssl = true; + sslcacertfile = imap.tls.certificatesFile; + starttls = imap.tls.useStartTls; + } else { + ssl = false; }; - remotePort = optionalAttrs ((imap.port or null) != null) { - remoteport = imap.port; - }; - - ssl = - if imap.tls.enable - then - { - ssl = true; - sslcacertfile = imap.tls.certificatesFile; - starttls = imap.tls.useStartTls; - } - else - { - ssl = false; - }; - remotePassEval = - let - arglist = concatMapStringsSep "," (x: "'${x}'") passwordCommand; - in - optionalAttrs (passwordCommand != null) { - remotepasseval = ''get_pass("${name}", [${arglist}])''; - }; - in - toIni { - "Account ${name}" = { - localrepository = "${name}-local"; - remoterepository = "${name}-remote"; - } - // postSyncHook - // offlineimap.extraConfig.account; + let arglist = concatMapStringsSep "," (x: "'${x}'") passwordCommand; + in optionalAttrs (passwordCommand != null) { + remotepasseval = ''get_pass("${name}", [${arglist}])''; + }; + in toIni { + "Account ${name}" = { + localrepository = "${name}-local"; + remoterepository = "${name}-remote"; + } // postSyncHook // offlineimap.extraConfig.account; - "Repository ${name}-local" = { - type = localType; - localfolders = maildir.absPath; - } - // offlineimap.extraConfig.local; + "Repository ${name}-local" = { + type = localType; + localfolders = maildir.absPath; + } // offlineimap.extraConfig.local; - "Repository ${name}-remote" = { - type = remoteType; - remoteuser = userName; - } - // remoteHost - // remotePort - // remotePassEval - // ssl + "Repository ${name}-remote" = { + type = remoteType; + remoteuser = userName; + } // remoteHost // remotePort // remotePassEval // ssl // offlineimap.extraConfig.remote; - }; + }; extraConfigType = with types; attrsOf (either (either str int) bool); -in - -{ +in { options = { programs.offlineimap = { enable = mkEnableOption "OfflineIMAP"; @@ -133,7 +108,7 @@ in extraConfig.general = mkOption { type = extraConfigType; - default = {}; + default = { }; example = { maxage = 30; ui = "blinkenlights"; @@ -146,10 +121,8 @@ in extraConfig.default = mkOption { type = extraConfigType; - default = {}; - example = { - gmailtrashfolder = "[Gmail]/Papierkorb"; - }; + default = { }; + example = { gmailtrashfolder = "[Gmail]/Papierkorb"; }; description = '' Extra configuration options added to the section. @@ -158,7 +131,7 @@ in extraConfig.mbnames = mkOption { type = extraConfigType; - default = {}; + default = { }; example = literalExample '' { filename = "~/.config/mutt/mailboxes"; @@ -181,27 +154,20 @@ in xdg.configFile."offlineimap/get_settings.py".text = cfg.pythonFile; - xdg.configFile."offlineimap/config".text = - '' - # Generated by Home Manager. - # See https://github.com/OfflineIMAP/offlineimap/blob/master/offlineimap.conf - # for an exhaustive list of options. - '' - + toIni ({ - general = { - accounts = concatMapStringsSep "," (a: a.name) accounts; - pythonfile = "${config.xdg.configHome}/offlineimap/get_settings.py"; - metadata = "${config.xdg.dataHome}/offlineimap"; - } - // cfg.extraConfig.general; - } - // optionalAttrs (cfg.extraConfig.mbnames != {}) { - mbnames = { enabled = true; } // cfg.extraConfig.mbnames; - } - // optionalAttrs (cfg.extraConfig.default != {}) { - DEFAULT = cfg.extraConfig.default; - }) - + "\n" - + concatStringsSep "\n" (map accountStr accounts); + xdg.configFile."offlineimap/config".text = '' + # Generated by Home Manager. + # See https://github.com/OfflineIMAP/offlineimap/blob/master/offlineimap.conf + # for an exhaustive list of options. + '' + toIni ({ + general = { + accounts = concatMapStringsSep "," (a: a.name) accounts; + pythonfile = "${config.xdg.configHome}/offlineimap/get_settings.py"; + metadata = "${config.xdg.dataHome}/offlineimap"; + } // cfg.extraConfig.general; + } // optionalAttrs (cfg.extraConfig.mbnames != { }) { + mbnames = { enabled = true; } // cfg.extraConfig.mbnames; + } // optionalAttrs (cfg.extraConfig.default != { }) { + DEFAULT = cfg.extraConfig.default; + }) + "\n" + concatStringsSep "\n" (map accountStr accounts); }; } diff --git a/modules/programs/opam.nix b/modules/programs/opam.nix index 4de2e82d..a61ff787 100644 --- a/modules/programs/opam.nix +++ b/modules/programs/opam.nix @@ -6,9 +6,7 @@ let cfg = config.programs.opam; -in - -{ +in { meta.maintainers = [ maintainers.marsam ]; options.programs.opam = { diff --git a/modules/programs/password-store.nix b/modules/programs/password-store.nix index a15f002c..db31146a 100644 --- a/modules/programs/password-store.nix +++ b/modules/programs/password-store.nix @@ -6,9 +6,7 @@ let cfg = config.programs.password-store; -in - -{ +in { meta.maintainers = with maintainers; [ pacien ]; options.programs.password-store = { diff --git a/modules/programs/pazi.nix b/modules/programs/pazi.nix index decc0d9d..e1a08eb6 100644 --- a/modules/programs/pazi.nix +++ b/modules/programs/pazi.nix @@ -6,9 +6,7 @@ let cfg = config.programs.pazi; -in - -{ +in { meta.maintainers = [ maintainers.marsam ]; options.programs.pazi = { diff --git a/modules/programs/pidgin.nix b/modules/programs/pidgin.nix index 8dcb2122..a375fd1b 100644 --- a/modules/programs/pidgin.nix +++ b/modules/programs/pidgin.nix @@ -6,9 +6,7 @@ let cfg = config.programs.pidgin; -in - -{ +in { meta.maintainers = [ maintainers.rycee ]; options = { @@ -23,7 +21,7 @@ in }; plugins = mkOption { - default = []; + default = [ ]; example = literalExample "[ pkgs.pidgin-otr pkgs.pidgin-osd ]"; description = "Plugins that should be available to Pidgin."; }; diff --git a/modules/programs/readline.nix b/modules/programs/readline.nix index 35cbab5f..a7ff5f59 100644 --- a/modules/programs/readline.nix +++ b/modules/programs/readline.nix @@ -9,32 +9,34 @@ let mkSetVariableStr = n: v: let mkValueStr = v: - if v == true then "on" - else if v == false then "off" - else if isInt v then toString v - else if isString v then v - else abort ("values ${toPretty v} is of unsupported type"); - in - "set ${n} ${mkValueStr v}"; + if v == true then + "on" + else if v == false then + "off" + else if isInt v then + toString v + else if isString v then + v + else + abort ("values ${toPretty v} is of unsupported type"); + in "set ${n} ${mkValueStr v}"; - mkBindingStr = k: v: "\"${k}\": ${v}"; + mkBindingStr = k: v: ''"${k}": ${v}''; -in - -{ +in { options.programs.readline = { enable = mkEnableOption "readline"; bindings = mkOption { - default = {}; + default = { }; type = types.attrsOf types.str; - example = { "\C-h" = "backward-kill-word"; }; + example = { "\\C-h" = "backward-kill-word"; }; description = "Readline bindings."; }; variables = mkOption { type = with types; attrsOf (either str (either int bool)); - default = {}; + default = { }; example = { expand-tilde = true; }; description = '' Readline customization variable assignments. @@ -58,19 +60,16 @@ in }; config = mkIf cfg.enable { - home.file.".inputrc".text = - let - configStr = concatStringsSep "\n" ( - optional cfg.includeSystemConfig "$include /etc/inputrc" + home.file.".inputrc".text = let + configStr = concatStringsSep "\n" + (optional cfg.includeSystemConfig "$include /etc/inputrc" ++ mapAttrsToList mkSetVariableStr cfg.variables - ++ mapAttrsToList mkBindingStr cfg.bindings - ); - in - '' - # Generated by Home Manager. + ++ mapAttrsToList mkBindingStr cfg.bindings); + in '' + # Generated by Home Manager. - ${configStr} - ${cfg.extraConfig} - ''; + ${configStr} + ${cfg.extraConfig} + ''; }; } diff --git a/modules/programs/rofi.nix b/modules/programs/rofi.nix index e64e5d47..f344e88e 100644 --- a/modules/programs/rofi.nix +++ b/modules/programs/rofi.nix @@ -7,10 +7,11 @@ let cfg = config.programs.rofi; - colorOption = description: mkOption { - type = types.str; - description = description; - }; + colorOption = description: + mkOption { + type = types.str; + description = description; + }; rowColorSubmodule = types.submodule { options = { @@ -71,72 +72,64 @@ let }; valueToString = value: - if isBool value - then (if value then "true" else "else") - else toString value; + if isBool value then (if value then "true" else "else") else toString value; - windowColorsToString = window: concatStringsSep ", " (with window; [ - background - border - separator - ]); + windowColorsToString = window: + concatStringsSep ", " (with window; [ background border separator ]); rowsColorsToString = rows: '' - ${optionalString - (rows.normal != null) - (setOption "color-normal" (rowColorsToString rows.normal))} - ${optionalString - (rows.active != null) - (setOption "color-active" (rowColorsToString rows.active))} - ${optionalString - (rows.urgent != null) - (setOption "color-urgent" (rowColorsToString rows.urgent))} + ${optionalString (rows.normal != null) + (setOption "color-normal" (rowColorsToString rows.normal))} + ${optionalString (rows.active != null) + (setOption "color-active" (rowColorsToString rows.active))} + ${optionalString (rows.urgent != null) + (setOption "color-urgent" (rowColorsToString rows.urgent))} ''; - rowColorsToString = row: concatStringsSep ", " (with row; [ - background - foreground - backgroundAlt - highlight.background - highlight.foreground - ]); + rowColorsToString = row: + concatStringsSep ", " (with row; [ + background + foreground + backgroundAlt + highlight.background + highlight.foreground + ]); setOption = name: value: optionalString (value != null) "rofi.${name}: ${valueToString value}"; - setColorScheme = colors: optionalString (colors != null) '' - ${optionalString - (colors.window != null) - setOption "color-window" (windowColorsToString colors.window)} - ${optionalString - (colors.rows != null) - (rowsColorsToString colors.rows)} - ''; + setColorScheme = colors: + optionalString (colors != null) '' + ${optionalString (colors.window != null) setOption "color-window" + (windowColorsToString colors.window)} + ${optionalString (colors.rows != null) (rowsColorsToString colors.rows)} + ''; locationsMap = { - center = 0; - top-left = 1; - top = 2; - top-right = 3; - right = 4; + center = 0; + top-left = 1; + top = 2; + top-right = 3; + right = 4; bottom-right = 5; - bottom = 6; - bottom-left = 7; - left = 8; + bottom = 6; + bottom-left = 7; + left = 8; }; - themeName = - if (cfg.theme == null) then null - else if (lib.isString cfg.theme) then cfg.theme - else lib.removeSuffix ".rasi" (baseNameOf cfg.theme); + themeName = if (cfg.theme == null) then + null + else if (lib.isString cfg.theme) then + cfg.theme + else + lib.removeSuffix ".rasi" (baseNameOf cfg.theme); themePath = if (lib.isString cfg.theme) then null else cfg.theme; -in - -{ +in { options.programs.rofi = { - enable = mkEnableOption "Rofi: A window switcher, application launcher and dmenu replacement"; + enable = mkEnableOption + "Rofi: A window switcher, application launcher and dmenu replacement"; width = mkOption { default = null; @@ -295,14 +288,12 @@ in }; config = mkIf cfg.enable { - assertions = [ - { - assertion = cfg.theme == null || cfg.colors == null; - message = '' - Cannot use the rofi options 'theme' and 'colors' simultaneously. - ''; - } - ]; + assertions = [{ + assertion = cfg.theme == null || cfg.colors == null; + message = '' + Cannot use the rofi options 'theme' and 'colors' simultaneously. + ''; + }]; home.packages = [ pkgs.rofi ]; @@ -314,11 +305,8 @@ in ${setOption "eh" cfg.rowHeight} ${setOption "padding" cfg.padding} ${setOption "separator-style" cfg.separator} - ${setOption "hide-scrollbar" ( - if (cfg.scrollbar != null) - then (! cfg.scrollbar) - else cfg.scrollbar - )} + ${setOption "hide-scrollbar" + (if (cfg.scrollbar != null) then (!cfg.scrollbar) else cfg.scrollbar)} ${setOption "terminal" cfg.terminal} ${setOption "cycle" cfg.cycle} ${setOption "fullscreen" cfg.fullscreen} @@ -333,7 +321,7 @@ in ''; xdg.dataFile = mkIf (themePath != null) { - "rofi/themes/${themeName}.rasi".source = themePath; + "rofi/themes/${themeName}.rasi".source = themePath; }; }; } diff --git a/modules/programs/rtorrent.nix b/modules/programs/rtorrent.nix index 6300969a..7beeb2e4 100644 --- a/modules/programs/rtorrent.nix +++ b/modules/programs/rtorrent.nix @@ -6,9 +6,7 @@ let cfg = config.programs.rtorrent; -in - -{ +in { meta.maintainers = [ maintainers.marsam ]; options.programs.rtorrent = { @@ -30,8 +28,7 @@ in config = mkIf cfg.enable { home.packages = [ pkgs.rtorrent ]; - xdg.configFile."rtorrent/rtorrent.rc" = mkIf (cfg.settings != "") { - text = cfg.settings; - }; + xdg.configFile."rtorrent/rtorrent.rc" = + mkIf (cfg.settings != "") { text = cfg.settings; }; }; } diff --git a/modules/programs/skim.nix b/modules/programs/skim.nix index de1bff30..c90fe1b1 100644 --- a/modules/programs/skim.nix +++ b/modules/programs/skim.nix @@ -6,9 +6,7 @@ let cfg = config.programs.skim; -in - -{ +in { options.programs.skim = { enable = mkEnableOption "skim - a command-line fuzzy finder"; @@ -24,7 +22,7 @@ in defaultOptions = mkOption { type = types.listOf types.str; - default = []; + default = [ ]; example = [ "--height 40%" "--prompt ⟫" ]; description = '' Extra command line options given to skim by default. @@ -43,7 +41,7 @@ in fileWidgetOptions = mkOption { type = types.listOf types.str; - default = []; + default = [ ]; example = [ "--preview 'head {}'" ]; description = '' Command line options for the CTRL-T keybinding. @@ -53,7 +51,7 @@ in changeDirWidgetCommand = mkOption { type = types.nullOr types.str; default = null; - example = "fd --type d" ; + example = "fd --type d"; description = '' The command that gets executed as the source for skim for the ALT-C keybinding. @@ -62,7 +60,7 @@ in changeDirWidgetOptions = mkOption { type = types.listOf types.str; - default = []; + default = [ ]; example = [ "--preview 'tree -C {} | head -200'" ]; description = '' Command line options for the ALT-C keybinding. @@ -71,7 +69,7 @@ in historyWidgetOptions = mkOption { type = types.listOf types.str; - default = []; + default = [ ]; example = [ "--tac" "--exact" ]; description = '' Command line options for the CTRL-R keybinding. @@ -98,18 +96,16 @@ in config = mkIf cfg.enable { home.packages = [ pkgs.skim ]; - home.sessionVariables = - mapAttrs (n: v: toString v) ( - filterAttrs (n: v: v != [] && v != null) { - SKIM_ALT_C_COMMAND = cfg.changeDirWidgetCommand; - SKIM_ALT_C_OPTS = cfg.changeDirWidgetOptions; - SKIM_CTRL_R_OPTS = cfg.historyWidgetOptions; - SKIM_CTRL_T_COMMAND = cfg.fileWidgetCommand; - SKIM_CTRL_T_OPTS = cfg.fileWidgetOptions; - SKIM_DEFAULT_COMMAND = cfg.defaultCommand; - SKIM_DEFAULT_OPTIONS = cfg.defaultOptions; - } - ); + home.sessionVariables = mapAttrs (n: v: toString v) + (filterAttrs (n: v: v != [ ] && v != null) { + SKIM_ALT_C_COMMAND = cfg.changeDirWidgetCommand; + SKIM_ALT_C_OPTS = cfg.changeDirWidgetOptions; + SKIM_CTRL_R_OPTS = cfg.historyWidgetOptions; + SKIM_CTRL_T_COMMAND = cfg.fileWidgetCommand; + SKIM_CTRL_T_OPTS = cfg.fileWidgetOptions; + SKIM_DEFAULT_COMMAND = cfg.defaultCommand; + SKIM_DEFAULT_OPTIONS = cfg.defaultOptions; + }); programs.bash.initExtra = mkIf cfg.enableBashIntegration '' if [[ :$SHELLOPTS: =~ :(vi|emacs): ]]; then diff --git a/modules/programs/starship.nix b/modules/programs/starship.nix index db7cf926..7c781986 100644 --- a/modules/programs/starship.nix +++ b/modules/programs/starship.nix @@ -7,20 +7,17 @@ let cfg = config.programs.starship; configFile = config: - pkgs.runCommand "config.toml" - { - buildInputs = [ pkgs.remarshal ]; - preferLocalBuild = true; - allowSubstitutes = false; - } - '' - remarshal -if json -of toml \ - < ${pkgs.writeText "config.json" (builtins.toJSON config)} \ - > $out - ''; -in + pkgs.runCommand "config.toml" { + buildInputs = [ pkgs.remarshal ]; + preferLocalBuild = true; + allowSubstitutes = false; + } '' + remarshal -if json -of toml \ + < ${pkgs.writeText "config.json" (builtins.toJSON config)} \ + > $out + ''; -{ +in { meta.maintainers = [ maintainers.marsam ]; options.programs.starship = { @@ -35,7 +32,7 @@ in settings = mkOption { type = types.attrs; - default = {}; + default = { }; description = '' Configuration written to ~/.config/starship.toml. @@ -73,9 +70,8 @@ in config = mkIf cfg.enable { home.packages = [ cfg.package ]; - xdg.configFile."starship.toml" = mkIf (cfg.settings != {}) { - source = configFile cfg.settings; - }; + xdg.configFile."starship.toml" = + mkIf (cfg.settings != { }) { source = configFile cfg.settings; }; programs.bash.initExtra = mkIf cfg.enableBashIntegration '' if [[ -z $INSIDE_EMACS ]]; then diff --git a/modules/programs/taskwarrior.nix b/modules/programs/taskwarrior.nix index eeacc77d..cf95511f 100644 --- a/modules/programs/taskwarrior.nix +++ b/modules/programs/taskwarrior.nix @@ -9,38 +9,39 @@ let themePath = theme: "${pkgs.taskwarrior}/share/doc/task/rc/${theme}.theme"; includeTheme = location: - if location == null then "" - else if isString location then "include ${themePath location}" - else "include ${location}"; + if location == null then + "" + else if isString location then + "include ${themePath location}" + else + "include ${location}"; formatValue = value: - if isBool value then if value then "true" else "false" - else if isList value then concatMapStringsSep "," formatValue value - else toString value; + if isBool value then + if value then "true" else "false" + else if isList value then + concatMapStringsSep "," formatValue value + else + toString value; - formatLine = key: value: - "${key}=${formatValue value}"; + formatLine = key: value: "${key}=${formatValue value}"; formatSet = key: values: (concatStringsSep "\n" - (mapAttrsToList - (subKey: subValue: formatPair "${key}.${subKey}" subValue) + (mapAttrsToList (subKey: subValue: formatPair "${key}.${subKey}" subValue) values)); formatPair = key: value: - if isAttrs value then formatSet key value - else formatLine key value; + if isAttrs value then formatSet key value else formatLine key value; -in - -{ +in { options = { programs.taskwarrior = { enable = mkEnableOption "Task Warrior"; config = mkOption { type = types.attrs; - default = {}; + default = { }; example = literalExample '' { confirmation = false; @@ -103,8 +104,7 @@ in data.location=${cfg.dataLocation} ${includeTheme cfg.colorTheme} - ${concatStringsSep "\n" ( - mapAttrsToList formatPair cfg.config)} + ${concatStringsSep "\n" (mapAttrsToList formatPair cfg.config)} ${cfg.extraConfig} ''; diff --git a/modules/programs/termite.nix b/modules/programs/termite.nix index 4d66fc42..8a05db03 100644 --- a/modules/programs/termite.nix +++ b/modules/programs/termite.nix @@ -13,9 +13,7 @@ let fi ''; -in - -{ +in { options = { programs.termite = { enable = mkEnableOption "Termite VTE-based terminal"; @@ -61,7 +59,9 @@ in mouseAutohide = mkOption { default = null; type = types.nullOr types.bool; - description = "Automatically hide the mouse pointer when you start typing."; + description = '' + Automatically hide the mouse pointer when you start typing. + ''; }; scrollOnOutput = mkOption { @@ -73,7 +73,9 @@ in scrollOnKeystroke = mkOption { default = null; type = types.nullOr types.bool; - description = "Scroll to the bottom automatically when a key is pressed."; + description = '' + Scroll to the bottom automatically when a key is pressed. + ''; }; searchWrap = mkOption { @@ -106,14 +108,16 @@ in default = null; example = "terminal"; type = types.nullOr types.str; - description = "The name of the icon to be used for the terminal process."; + description = + "The name of the icon to be used for the terminal process."; }; scrollbackLines = mkOption { default = null; example = 10000; type = types.nullOr types.int; - description = "Set the number of lines to limit the terminal's scrollback."; + description = + "Set the number of lines to limit the terminal's scrollback."; }; browser = mkOption { @@ -149,7 +153,8 @@ in filterUnmatchedUrls = mkOption { default = null; type = types.nullOr types.bool; - description = "Whether to hide url hints not matching input in url hints mode."; + description = + "Whether to hide url hints not matching input in url hints mode."; }; modifyOtherKeys = mkOption { @@ -290,7 +295,8 @@ in default = ""; example = "fullscreen = true"; type = types.lines; - description = "Extra options that should be added to [options] section."; + description = + "Extra options that should be added to [options] section."; }; colorsExtra = mkOption { @@ -301,78 +307,81 @@ in color2 = #60b48a ''; type = types.lines; - description = "Extra colors options that should be added to [colors] section."; + description = + "Extra colors options that should be added to [colors] section."; }; hintsExtra = mkOption { default = ""; example = "border = #3f3f3f"; type = types.lines; - description = "Extra hints options that should be added to [hints] section."; + description = + "Extra hints options that should be added to [hints] section."; }; }; }; - config = ( - let - boolToString = v: if v then "true" else "false"; - optionalBoolean = name: val: lib.optionalString (val != null) "${name} = ${boolToString val}"; - optionalInteger = name: val: lib.optionalString (val != null) "${name} = ${toString val}"; - optionalString = name: val: lib.optionalString (val != null) "${name} = ${val}"; - in mkIf cfg.enable { - home.packages = [ pkgs.termite ]; - xdg.configFile."termite/config".text = '' - [options] - ${optionalBoolean "allow_bold" cfg.allowBold} - ${optionalBoolean "audible_bell" cfg.audibleBell} - ${optionalString "browser" cfg.browser} - ${optionalBoolean "clickable_url" cfg.clickableUrl} - ${optionalString "cursor_blink" cfg.cursorBlink} - ${optionalString "cursor_shape" cfg.cursorShape} - ${optionalBoolean "dynamic_title" cfg.dynamicTitle} - ${optionalBoolean "filter_unmatched_urls" cfg.filterUnmatchedUrls} - ${optionalString "font" cfg.font} - ${optionalBoolean "fullscreen" cfg.fullscreen} - ${optionalString "geometry" cfg.geometry} - ${optionalString "icon_name" cfg.iconName} - ${optionalBoolean "modify_other_keys" cfg.modifyOtherKeys} - ${optionalBoolean "mouse_autohide" cfg.mouseAutohide} - ${optionalBoolean "scroll_on_keystroke" cfg.scrollOnKeystroke} - ${optionalBoolean "scroll_on_output" cfg.scrollOnOutput} - ${optionalInteger "scrollback_lines" cfg.scrollbackLines} - ${optionalString "scrollbar" cfg.scrollbar} - ${optionalBoolean "search_wrap" cfg.searchWrap} - ${optionalBoolean "size_hints" cfg.sizeHints} - ${optionalBoolean "urgent_on_bell" cfg.urgentOnBell} + config = (let + boolToString = v: if v then "true" else "false"; + optionalBoolean = name: val: + lib.optionalString (val != null) "${name} = ${boolToString val}"; + optionalInteger = name: val: + lib.optionalString (val != null) "${name} = ${toString val}"; + optionalString = name: val: + lib.optionalString (val != null) "${name} = ${val}"; + in mkIf cfg.enable { + home.packages = [ pkgs.termite ]; + xdg.configFile."termite/config".text = '' + [options] + ${optionalBoolean "allow_bold" cfg.allowBold} + ${optionalBoolean "audible_bell" cfg.audibleBell} + ${optionalString "browser" cfg.browser} + ${optionalBoolean "clickable_url" cfg.clickableUrl} + ${optionalString "cursor_blink" cfg.cursorBlink} + ${optionalString "cursor_shape" cfg.cursorShape} + ${optionalBoolean "dynamic_title" cfg.dynamicTitle} + ${optionalBoolean "filter_unmatched_urls" cfg.filterUnmatchedUrls} + ${optionalString "font" cfg.font} + ${optionalBoolean "fullscreen" cfg.fullscreen} + ${optionalString "geometry" cfg.geometry} + ${optionalString "icon_name" cfg.iconName} + ${optionalBoolean "modify_other_keys" cfg.modifyOtherKeys} + ${optionalBoolean "mouse_autohide" cfg.mouseAutohide} + ${optionalBoolean "scroll_on_keystroke" cfg.scrollOnKeystroke} + ${optionalBoolean "scroll_on_output" cfg.scrollOnOutput} + ${optionalInteger "scrollback_lines" cfg.scrollbackLines} + ${optionalString "scrollbar" cfg.scrollbar} + ${optionalBoolean "search_wrap" cfg.searchWrap} + ${optionalBoolean "size_hints" cfg.sizeHints} + ${optionalBoolean "urgent_on_bell" cfg.urgentOnBell} - ${cfg.optionsExtra} + ${cfg.optionsExtra} - [colors] - ${optionalString "background" cfg.backgroundColor} - ${optionalString "cursor" cfg.cursorColor} - ${optionalString "cursor_foreground" cfg.cursorForegroundColor} - ${optionalString "foreground" cfg.foregroundColor} - ${optionalString "foregroundBold" cfg.foregroundBoldColor} - ${optionalString "highlight" cfg.highlightColor} + [colors] + ${optionalString "background" cfg.backgroundColor} + ${optionalString "cursor" cfg.cursorColor} + ${optionalString "cursor_foreground" cfg.cursorForegroundColor} + ${optionalString "foreground" cfg.foregroundColor} + ${optionalString "foregroundBold" cfg.foregroundBoldColor} + ${optionalString "highlight" cfg.highlightColor} - ${cfg.colorsExtra} + ${cfg.colorsExtra} - [hints] - ${optionalString "active_background" cfg.hintsActiveBackgroundColor} - ${optionalString "active_foreground" cfg.hintsActiveForegroundColor} - ${optionalString "background" cfg.hintsBackgroundColor} - ${optionalString "border" cfg.hintsBorderColor} - ${optionalInteger "border_width" cfg.hintsBorderWidth} - ${optionalString "font" cfg.hintsFont} - ${optionalString "foreground" cfg.hintsForegroundColor} - ${optionalInteger "padding" cfg.hintsPadding} - ${optionalInteger "roundness" cfg.hintsRoundness} + [hints] + ${optionalString "active_background" cfg.hintsActiveBackgroundColor} + ${optionalString "active_foreground" cfg.hintsActiveForegroundColor} + ${optionalString "background" cfg.hintsBackgroundColor} + ${optionalString "border" cfg.hintsBorderColor} + ${optionalInteger "border_width" cfg.hintsBorderWidth} + ${optionalString "font" cfg.hintsFont} + ${optionalString "foreground" cfg.hintsForegroundColor} + ${optionalInteger "padding" cfg.hintsPadding} + ${optionalInteger "roundness" cfg.hintsRoundness} - ${cfg.hintsExtra} - ''; + ${cfg.hintsExtra} + ''; - programs.bash.initExtra = vteInitStr; - programs.zsh.initExtra = vteInitStr; - } - ); + programs.bash.initExtra = vteInitStr; + programs.zsh.initExtra = vteInitStr; + }); } diff --git a/modules/programs/texlive.nix b/modules/programs/texlive.nix index 0f8953e9..08a376d6 100644 --- a/modules/programs/texlive.nix +++ b/modules/programs/texlive.nix @@ -8,9 +8,7 @@ let texlivePkgs = cfg.extraPackages pkgs.texlive; -in - -{ +in { meta.maintainers = [ maintainers.rycee ]; options = { @@ -35,13 +33,11 @@ in }; config = mkIf cfg.enable { - assertions = [ - { - assertion = texlivePkgs != {}; - message = "Must provide at least one extra package in" - + " 'programs.texlive.extraPackages'."; - } - ]; + assertions = [{ + assertion = texlivePkgs != { }; + message = "Must provide at least one extra package in" + + " 'programs.texlive.extraPackages'."; + }]; home.packages = [ cfg.package ]; diff --git a/modules/programs/urxvt.nix b/modules/programs/urxvt.nix index 6f4eb3ff..e4c72bfe 100644 --- a/modules/programs/urxvt.nix +++ b/modules/programs/urxvt.nix @@ -6,9 +6,7 @@ let cfg = config.programs.urxvt; -in - -{ +in { options.programs.urxvt = { enable = mkEnableOption "rxvt-unicode terminal emulator"; @@ -21,14 +19,14 @@ in fonts = mkOption { type = types.listOf types.str; - default = []; + default = [ ]; description = "List of fonts to be used."; example = [ "xft:Droid Sans Mono Nerd Font:size=9" ]; }; keybindings = mkOption { type = types.attrsOf types.str; - default = {}; + default = { }; description = "Mapping of keybindings to actions"; example = literalExample '' { @@ -41,7 +39,8 @@ in iso14755 = mkOption { type = types.bool; default = true; - description = "ISO14755 support for viewing and entering unicode characters."; + description = + "ISO14755 support for viewing and entering unicode characters."; }; scroll = { @@ -75,11 +74,12 @@ in floating = mkOption { type = types.bool; default = true; - description = "Whether to display an rxvt scrollbar without a trough."; + description = + "Whether to display an rxvt scrollbar without a trough."; }; }; }; - default = {}; + default = { }; description = "Scrollbar settings."; }; @@ -92,7 +92,8 @@ in keepPosition = mkOption { type = types.bool; default = true; - description = "Whether to keep a scroll position when TTY receives new lines."; + description = + "Whether to keep a scroll position when TTY receives new lines."; }; scrollOnKeystroke = mkOption { @@ -117,11 +118,12 @@ in shading = mkOption { type = types.ints.between 0 200; default = 100; - description = "Darken (0 .. 99) or lighten (101 .. 200) the transparent background."; + description = + "Darken (0 .. 99) or lighten (101 .. 200) the transparent background."; }; extraConfig = mkOption { - default = {}; + default = { }; type = types.attrs; description = "Additional configuration to add."; example = { "shading" = 15; }; @@ -145,12 +147,10 @@ in "URxvt.transparent" = cfg.transparent; "URxvt.shading" = cfg.shading; "URxvt.iso14755" = cfg.iso14755; - } // flip mapAttrs' cfg.keybindings (kb: action: - nameValuePair "URxvt.keysym.${kb}" action - ) // optionalAttrs (cfg.fonts != []) { - "URxvt.font" = concatStringsSep "," cfg.fonts; - } // flip mapAttrs' cfg.extraConfig (k: v: - nameValuePair "URxvt.${k}" v - ); + } // flip mapAttrs' cfg.keybindings + (kb: action: nameValuePair "URxvt.keysym.${kb}" action) + // optionalAttrs (cfg.fonts != [ ]) { + "URxvt.font" = concatStringsSep "," cfg.fonts; + } // flip mapAttrs' cfg.extraConfig (k: v: nameValuePair "URxvt.${k}" v); }; } diff --git a/modules/programs/vim.nix b/modules/programs/vim.nix index a14a9562..39826a9a 100644 --- a/modules/programs/vim.nix +++ b/modules/programs/vim.nix @@ -31,43 +31,36 @@ let }; vimSettingsType = types.submodule { - options = - let - opt = name: type: mkOption { + options = let + opt = name: type: + mkOption { type = types.nullOr type; default = null; visible = false; }; - in - mapAttrs opt knownSettings; + in mapAttrs opt knownSettings; }; setExpr = name: value: let - v = - if isBool value then (if value then "" else "no") + name - else - "${name}=${ - if isList value - then concatStringsSep "," value - else toString value - }"; - in - optionalString (value != null) ("set " + v); + v = if isBool value then + (if value then "" else "no") + name + else + "${name}=${ + if isList value then concatStringsSep "," value else toString value + }"; + in optionalString (value != null) ("set " + v); - plugins = - let - vpkgs = pkgs.vimPlugins; - getPkg = p: - if isDerivation p - then [ p ] - else optional (isString p && hasAttr p vpkgs) vpkgs.${p}; - in - concatMap getPkg cfg.plugins; + plugins = let + vpkgs = pkgs.vimPlugins; + getPkg = p: + if isDerivation p then + [ p ] + else + optional (isString p && hasAttr p vpkgs) vpkgs.${p}; + in concatMap getPkg cfg.plugins; -in - -{ +in { options = { programs.vim = { enable = mkEnableOption "Vim"; @@ -75,7 +68,7 @@ in plugins = mkOption { type = with types; listOf (either str package); default = defaultPlugins; - example = literalExample ''[ pkgs.vimPlugins.YankRing ]''; + example = literalExample "[ pkgs.vimPlugins.YankRing ]"; description = '' List of vim plugins to install. To get a list of supported plugins run: nix-env -f '<nixpkgs>' -qaP -A vimPlugins. @@ -88,7 +81,7 @@ in settings = mkOption { type = vimSettingsType; - default = {}; + default = { }; example = literalExample '' { expandtab = true; @@ -102,14 +95,12 @@ in options. - ${concatStringsSep "\n" ( - mapAttrsToList (n: v: '' - - ${n} - ${v.description} - - '') knownSettings - )} + ${concatStringsSep "\n" (mapAttrsToList (n: v: '' + + ${n} + ${v.description} + + '') knownSettings)} See the Vim documentation for detailed descriptions of these @@ -136,56 +127,45 @@ in }; }; - config = ( - let - customRC = '' - ${concatStringsSep "\n" ( - filter (v: v != "") ( - mapAttrsToList setExpr ( - builtins.intersectAttrs knownSettings cfg.settings)))} + config = (let + customRC = '' + ${concatStringsSep "\n" (filter (v: v != "") (mapAttrsToList setExpr + (builtins.intersectAttrs knownSettings cfg.settings)))} - ${cfg.extraConfig} - ''; + ${cfg.extraConfig} + ''; - vim = pkgs.vim_configurable.customize { - name = "vim"; - vimrcConfig = { - inherit customRC; + vim = pkgs.vim_configurable.customize { + name = "vim"; + vimrcConfig = { + inherit customRC; - packages.home-manager.start = plugins; - }; + packages.home-manager.start = plugins; }; - in - mkIf cfg.enable { - assertions = - let - packagesNotFound = filter (p: isString p && (!hasAttr p pkgs.vimPlugins)) cfg.plugins; - in - [ - { - assertion = packagesNotFound == []; - message = "Following VIM plugin not found in pkgs.vimPlugins: ${ - concatMapStringsSep ", " (p: ''"${p}"'') packagesNotFound - }"; - } - ]; + }; + in mkIf cfg.enable { + assertions = let + packagesNotFound = + filter (p: isString p && (!hasAttr p pkgs.vimPlugins)) cfg.plugins; + in [{ + assertion = packagesNotFound == [ ]; + message = "Following VIM plugin not found in pkgs.vimPlugins: ${ + concatMapStringsSep ", " (p: ''"${p}"'') packagesNotFound + }"; + }]; - warnings = - let - stringPlugins = filter isString cfg.plugins; - in - optional (stringPlugins != []) '' - Specifying VIM plugins using strings is deprecated, found ${ - concatMapStringsSep ", " (p: ''"${p}"'') stringPlugins - } as strings. - ''; + warnings = let stringPlugins = filter isString cfg.plugins; + in optional (stringPlugins != [ ]) '' + Specifying VIM plugins using strings is deprecated, found ${ + concatMapStringsSep ", " (p: ''"${p}"'') stringPlugins + } as strings. + ''; - home.packages = [ cfg.package ]; + home.packages = [ cfg.package ]; - programs.vim = { - package = vim; - plugins = defaultPlugins; - }; - } - ); + programs.vim = { + package = vim; + plugins = defaultPlugins; + }; + }); } diff --git a/modules/programs/vscode/haskell.nix b/modules/programs/vscode/haskell.nix index c8ea10d4..ee84e707 100644 --- a/modules/programs/vscode/haskell.nix +++ b/modules/programs/vscode/haskell.nix @@ -7,8 +7,8 @@ let cfg = config.programs.vscode.haskell; defaultHieNixExe = hie-nix.hies + "/bin/hie-wrapper"; - defaultHieNixExeText = literalExample - "\"\${pkgs.hie-nix.hies}/bin/hie-wrapper\""; + defaultHieNixExeText = + literalExample ''"''${pkgs.hie-nix.hies}/bin/hie-wrapper"''; hie-nix = pkgs.hie-nix or (abort '' vscode.haskell: pkgs.hie-nix missing. Please add an overlay such as: @@ -21,9 +21,7 @@ let ] ''; -in - -{ +in { options.programs.vscode.haskell = { enable = mkEnableOption "Haskell integration for Visual Studio Code"; @@ -57,10 +55,8 @@ in }; programs.vscode.extensions = - [ - pkgs.vscode-extensions.justusadam.language-haskell - ] + [ pkgs.vscode-extensions.justusadam.language-haskell ] ++ lib.optional cfg.hie.enable - pkgs.vscode-extensions.alanz.vscode-hie-server; + pkgs.vscode-extensions.alanz.vscode-hie-server; }; } diff --git a/modules/programs/z-lua.nix b/modules/programs/z-lua.nix index 245eff6a..d722ac6a 100644 --- a/modules/programs/z-lua.nix +++ b/modules/programs/z-lua.nix @@ -7,16 +7,14 @@ let cfg = config.programs.z-lua; aliases = { - zz = "z -c"; # restrict matches to subdirs of $PWD - zi = "z -i"; # cd with interactive selection - zf = "z -I"; # use fzf to select in multiple matches - zb = "z -b"; # quickly cd to the parent directory - zh = "z -I -t ."; # fzf + zz = "z -c"; # restrict matches to subdirs of $PWD + zi = "z -i"; # cd with interactive selection + zf = "z -I"; # use fzf to select in multiple matches + zb = "z -b"; # quickly cd to the parent directory + zh = "z -I -t ."; # fzf }; -in - -{ +in { meta.maintainers = [ maintainers.marsam ]; options.programs.z-lua = { @@ -24,7 +22,7 @@ in options = mkOption { type = types.listOf types.str; - default = []; + default = [ ]; example = [ "enhanced" "once" "fzf" ]; description = '' List of options to pass to z.lua. @@ -68,15 +66,21 @@ in home.packages = [ pkgs.z-lua ]; programs.bash.initExtra = mkIf cfg.enableBashIntegration '' - eval "$(${pkgs.z-lua}/bin/z --init bash ${concatStringsSep " " cfg.options})" + eval "$(${pkgs.z-lua}/bin/z --init bash ${ + concatStringsSep " " cfg.options + })" ''; programs.zsh.initExtra = mkIf cfg.enableZshIntegration '' - eval "$(${pkgs.z-lua}/bin/z --init zsh ${concatStringsSep " " cfg.options})" + eval "$(${pkgs.z-lua}/bin/z --init zsh ${ + concatStringsSep " " cfg.options + })" ''; programs.fish.shellInit = mkIf cfg.enableFishIntegration '' - source (${pkgs.z-lua}/bin/z --init fish ${concatStringsSep " " cfg.options} | psub) + source (${pkgs.z-lua}/bin/z --init fish ${ + concatStringsSep " " cfg.options + } | psub) ''; programs.bash.shellAliases = mkIf cfg.enableAliases aliases; diff --git a/modules/programs/zathura.nix b/modules/programs/zathura.nix index f01bd501..d9f3c1af 100644 --- a/modules/programs/zathura.nix +++ b/modules/programs/zathura.nix @@ -1,4 +1,4 @@ -{ config, lib, pkgs, ...}: +{ config, lib, pkgs, ... }: with lib; @@ -9,14 +9,10 @@ let formatLine = n: v: let formatValue = v: - if isBool v then (if v then "true" else "false") - else toString v; - in - "set ${n}\t\"${formatValue v}\""; + if isBool v then (if v then "true" else "false") else toString v; + in ''set ${n} "${formatValue v}"''; -in - -{ +in { meta.maintainers = [ maintainers.rprospero ]; options.programs.zathura = { @@ -25,7 +21,7 @@ in focused on keyboard interaction''; options = mkOption { - default = {}; + default = { }; type = with types; attrsOf (either str (either bool int)); description = '' Add command options to zathura and make @@ -36,7 +32,10 @@ in for the full list of options. ''; - example = { default-bg = "#000000"; default-fg = "#FFFFFF"; }; + example = { + default-bg = "#000000"; + default-fg = "#FFFFFF"; + }; }; extraConfig = mkOption { @@ -52,10 +51,8 @@ in config = mkIf cfg.enable { home.packages = [ pkgs.zathura ]; - xdg.configFile."zathura/zathurarc".text = - concatStringsSep "\n" ([] - ++ optional (cfg.extraConfig != "") cfg.extraConfig - ++ mapAttrsToList formatLine cfg.options - ) + "\n"; + xdg.configFile."zathura/zathurarc".text = concatStringsSep "\n" ([ ] + ++ optional (cfg.extraConfig != "") cfg.extraConfig + ++ mapAttrsToList formatLine cfg.options) + "\n"; }; } diff --git a/modules/services/blueman-applet.nix b/modules/services/blueman-applet.nix index 0a071f08..5a57accc 100644 --- a/modules/services/blueman-applet.nix +++ b/modules/services/blueman-applet.nix @@ -22,19 +22,15 @@ with lib; config = mkIf config.services.blueman-applet.enable { systemd.user.services.blueman-applet = { - Unit = { - Description = "Blueman applet"; - After = [ "graphical-session-pre.target" ]; - PartOf = [ "graphical-session.target" ]; - }; + Unit = { + Description = "Blueman applet"; + After = [ "graphical-session-pre.target" ]; + PartOf = [ "graphical-session.target" ]; + }; - Install = { - WantedBy = [ "graphical-session.target" ]; - }; + Install = { WantedBy = [ "graphical-session.target" ]; }; - Service = { - ExecStart = "${pkgs.blueman}/bin/blueman-applet"; - }; + Service = { ExecStart = "${pkgs.blueman}/bin/blueman-applet"; }; }; }; } diff --git a/modules/services/cbatticon.nix b/modules/services/cbatticon.nix index 7bf3b705..0de69c5f 100644 --- a/modules/services/cbatticon.nix +++ b/modules/services/cbatticon.nix @@ -9,37 +9,24 @@ let package = pkgs.cbatticon; makeCommand = commandName: commandArg: - optional (commandArg != null) ( - let - cmd = pkgs.writeShellScript commandName commandArg; - in - "--${commandName} ${cmd}" - ); + optional (commandArg != null) + (let cmd = pkgs.writeShellScript commandName commandArg; + in "--${commandName} ${cmd}"); - commandLine = concatStringsSep " " ( - [ "${package}/bin/cbatticon" ] + commandLine = concatStringsSep " " ([ "${package}/bin/cbatticon" ] ++ makeCommand "command-critical-level" cfg.commandCriticalLevel ++ makeCommand "command-left-click" cfg.commandLeftClick - ++ optional - (cfg.iconType != null) - "--icon-type ${cfg.iconType}" - ++ optional - (cfg.lowLevelPercent != null) - "--low-level ${toString cfg.lowLevelPercent}" - ++ optional - (cfg.criticalLevelPercent != null) - "--critical-level ${toString cfg.criticalLevelPercent}" - ++ optional - (cfg.updateIntervalSeconds != null) - "--update-interval ${toString cfg.updateIntervalSeconds}" - ++ optional - (cfg.hideNotification != null && cfg.hideNotification) - "--hide-notification" - ); + ++ optional (cfg.iconType != null) "--icon-type ${cfg.iconType}" + ++ optional (cfg.lowLevelPercent != null) + "--low-level ${toString cfg.lowLevelPercent}" + ++ optional (cfg.criticalLevelPercent != null) + "--critical-level ${toString cfg.criticalLevelPercent}" + ++ optional (cfg.updateIntervalSeconds != null) + "--update-interval ${toString cfg.updateIntervalSeconds}" + ++ optional (cfg.hideNotification != null && cfg.hideNotification) + "--hide-notification"); -in - -{ +in { meta.maintainers = [ maintainers.pmiddend ]; options = { @@ -66,7 +53,8 @@ in }; iconType = mkOption { - type = types.nullOr (types.enum [ "standard" "notification" "symbolic" ]); + type = + types.nullOr (types.enum [ "standard" "notification" "symbolic" ]); default = null; example = "symbolic"; description = "Icon type to display in the system tray."; @@ -119,9 +107,7 @@ in PartOf = [ "graphical-session.target" ]; }; - Install = { - WantedBy = [ "graphical-session.target" ]; - }; + Install = { WantedBy = [ "graphical-session.target" ]; }; Service = { ExecStart = commandLine; diff --git a/modules/services/compton.nix b/modules/services/compton.nix index c227f0a8..c5b96af3 100644 --- a/modules/services/compton.nix +++ b/modules/services/compton.nix @@ -7,44 +7,41 @@ let cfg = config.services.compton; - configFile = pkgs.writeText "compton.conf" - (optionalString cfg.fade '' - # fading - fading = true; - fade-delta = ${toString cfg.fadeDelta}; - fade-in-step = ${elemAt cfg.fadeSteps 0}; - fade-out-step = ${elemAt cfg.fadeSteps 1}; - fade-exclude = ${toJSON cfg.fadeExclude}; - '' + - optionalString cfg.shadow '' + configFile = pkgs.writeText "compton.conf" (optionalString cfg.fade '' + # fading + fading = true; + fade-delta = ${toString cfg.fadeDelta}; + fade-in-step = ${elemAt cfg.fadeSteps 0}; + fade-out-step = ${elemAt cfg.fadeSteps 1}; + fade-exclude = ${toJSON cfg.fadeExclude}; + '' + optionalString cfg.shadow '' - # shadows - shadow = true; - shadow-offset-x = ${toString (elemAt cfg.shadowOffsets 0)}; - shadow-offset-y = ${toString (elemAt cfg.shadowOffsets 1)}; - shadow-opacity = ${cfg.shadowOpacity}; - shadow-exclude = ${toJSON cfg.shadowExclude}; - no-dock-shadow = ${toJSON cfg.noDockShadow}; - no-dnd-shadow = ${toJSON cfg.noDNDShadow}; - '' + - optionalString cfg.blur '' + # shadows + shadow = true; + shadow-offset-x = ${toString (elemAt cfg.shadowOffsets 0)}; + shadow-offset-y = ${toString (elemAt cfg.shadowOffsets 1)}; + shadow-opacity = ${cfg.shadowOpacity}; + shadow-exclude = ${toJSON cfg.shadowExclude}; + no-dock-shadow = ${toJSON cfg.noDockShadow}; + no-dnd-shadow = ${toJSON cfg.noDNDShadow}; + '' + optionalString cfg.blur '' - # blur - blur-background = true; - blur-background-exclude = ${toJSON cfg.blurExclude}; - '' + '' + # blur + blur-background = true; + blur-background-exclude = ${toJSON cfg.blurExclude}; + '' + '' - # opacity - active-opacity = ${cfg.activeOpacity}; - inactive-opacity = ${cfg.inactiveOpacity}; - menu-opacity = ${cfg.menuOpacity}; - opacity-rule = ${toJSON cfg.opacityRule}; + # opacity + active-opacity = ${cfg.activeOpacity}; + inactive-opacity = ${cfg.inactiveOpacity}; + menu-opacity = ${cfg.menuOpacity}; + opacity-rule = ${toJSON cfg.opacityRule}; - # other options - backend = ${toJSON cfg.backend}; - vsync = ${toJSON cfg.vSync}; - refresh-rate = ${toString cfg.refreshRate}; - '' + cfg.extraOptions); + # other options + backend = ${toJSON cfg.backend}; + vsync = ${toJSON cfg.vSync}; + refresh-rate = ${toString cfg.refreshRate}; + '' + cfg.extraOptions); in { @@ -61,11 +58,8 @@ in { blurExclude = mkOption { type = types.listOf types.str; - default = []; - example = [ - "class_g = 'slop'" - "class_i = 'polybar'" - ]; + default = [ ]; + example = [ "class_g = 'slop'" "class_i = 'polybar'" ]; description = '' List of windows to exclude background blur. See the @@ -105,12 +99,8 @@ in { fadeExclude = mkOption { type = types.listOf types.str; - default = []; - example = [ - "window_type *= 'menu'" - "name ~= 'Firefox$'" - "focused = 1" - ]; + default = [ ]; + example = [ "window_type *= 'menu'" "name ~= 'Firefox$'" "focused = 1" ]; description = '' List of conditions of windows that should not be faded. See the @@ -150,12 +140,8 @@ in { shadowExclude = mkOption { type = types.listOf types.str; - default = []; - example = [ - "window_type *= 'menu'" - "name ~= 'Firefox$'" - "focused = 1" - ]; + default = [ ]; + example = [ "window_type *= 'menu'" "name ~= 'Firefox$'" "focused = 1" ]; description = '' List of conditions of windows that should have no shadow. See the @@ -212,11 +198,8 @@ in { opacityRule = mkOption { type = types.listOf types.str; - default = []; - example = [ - "87:class_i ?= 'scratchpad'" - "91:class_i ?= 'xterm'" - ]; + default = [ ]; + example = [ "87:class_i ?= 'scratchpad'" "91:class_i ?= 'xterm'" ]; description = '' List of opacity rules. See the @@ -256,7 +239,7 @@ in { default = 0; example = 60; description = '' - Screen refresh rate (0 = automatically detect). + Screen refresh rate (0 = automatically detect). ''; }; @@ -293,16 +276,13 @@ in { PartOf = [ "graphical-session.target" ]; }; - Install = { - WantedBy = [ "graphical-session.target" ]; - }; + Install = { WantedBy = [ "graphical-session.target" ]; }; Service = { ExecStart = "${cfg.package}/bin/compton --config ${configFile}"; Restart = "always"; RestartSec = 3; - } - // optionalAttrs (cfg.backend == "glx") { + } // optionalAttrs (cfg.backend == "glx") { # Temporarily fixes corrupt colours with Mesa 18. Environment = [ "allow_rgb10_configs=false" ]; }; diff --git a/modules/services/dunst.nix b/modules/services/dunst.nix index 96b1f71a..d32e8751 100644 --- a/modules/services/dunst.nix +++ b/modules/services/dunst.nix @@ -6,17 +6,19 @@ let cfg = config.services.dunst; - eitherStrBoolIntList = with types; either str (either bool (either int (listOf str))); + eitherStrBoolIntList = with types; + either str (either bool (either int (listOf str))); toDunstIni = generators.toINI { mkKeyValue = key: value: - let - value' = - if isBool value then (if value then "yes" else "no") - else if isString value then "\"${value}\"" - else toString value; - in - "${key}=${value'}"; + let + value' = if isBool value then + (if value then "yes" else "no") + else if isString value then + ''"${value}"'' + else + toString value; + in "${key}=${value'}"; }; themeType = types.submodule { @@ -48,9 +50,7 @@ let size = "32x32"; }; -in - -{ +in { meta.maintainers = [ maintainers.rycee ]; options = { @@ -65,7 +65,7 @@ in settings = mkOption { type = with types; attrsOf (attrsOf eitherStrBoolIntList); - default = {}; + default = { }; description = "Configuration written to ~/.config/dunstrc"; example = literalExample '' { @@ -87,86 +87,73 @@ in }; }; - config = mkIf cfg.enable ( - mkMerge [ - { - xdg.dataFile."dbus-1/services/org.knopwob.dunst.service".source = - "${pkgs.dunst}/share/dbus-1/services/org.knopwob.dunst.service"; + config = mkIf cfg.enable (mkMerge [ + { + xdg.dataFile."dbus-1/services/org.knopwob.dunst.service".source = + "${pkgs.dunst}/share/dbus-1/services/org.knopwob.dunst.service"; - services.dunst.settings.global.icon_path = - let - useCustomTheme = - cfg.iconTheme.package != hicolorTheme.package - || cfg.iconTheme.name != hicolorTheme.name - || cfg.iconTheme.size != hicolorTheme.size; + services.dunst.settings.global.icon_path = let + useCustomTheme = cfg.iconTheme.package != hicolorTheme.package + || cfg.iconTheme.name != hicolorTheme.name || cfg.iconTheme.size + != hicolorTheme.size; - basePaths = [ - "/run/current-system/sw" - config.home.profileDirectory - cfg.iconTheme.package - ] ++ optional useCustomTheme hicolorTheme.package; + basePaths = [ + "/run/current-system/sw" + config.home.profileDirectory + cfg.iconTheme.package + ] ++ optional useCustomTheme hicolorTheme.package; - themes = - [ - cfg.iconTheme - ] ++ optional useCustomTheme ( - hicolorTheme // { size = cfg.iconTheme.size; } - ); + themes = [ cfg.iconTheme ] ++ optional useCustomTheme + (hicolorTheme // { size = cfg.iconTheme.size; }); - categories = [ - "actions" - "animations" - "apps" - "categories" - "devices" - "emblems" - "emotes" - "filesystem" - "intl" - "mimetypes" - "places" - "status" - "stock" - ]; - in - concatStringsSep ":" ( - concatMap (theme: - concatMap (basePath: - map (category: - "${basePath}/share/icons/${theme.name}/${theme.size}/${category}" - ) categories - ) basePaths - ) themes - ); + categories = [ + "actions" + "animations" + "apps" + "categories" + "devices" + "emblems" + "emotes" + "filesystem" + "intl" + "mimetypes" + "places" + "status" + "stock" + ]; + in concatStringsSep ":" (concatMap (theme: + concatMap (basePath: + map (category: + "${basePath}/share/icons/${theme.name}/${theme.size}/${category}") + categories) basePaths) themes); - systemd.user.services.dunst = { - Unit = { - Description = "Dunst notification daemon"; - After = [ "graphical-session-pre.target" ]; - PartOf = [ "graphical-session.target" ]; - }; - - Service = { - Type = "dbus"; - BusName = "org.freedesktop.Notifications"; - ExecStart = "${pkgs.dunst}/bin/dunst"; - }; + systemd.user.services.dunst = { + Unit = { + Description = "Dunst notification daemon"; + After = [ "graphical-session-pre.target" ]; + PartOf = [ "graphical-session.target" ]; }; - } - (mkIf (cfg.settings != {}) { - xdg.configFile."dunst/dunstrc" = { - text = toDunstIni cfg.settings; - onChange = '' - pkillVerbose="" - if [[ -v VERBOSE ]]; then - pkillVerbose="-e" - fi - $DRY_RUN_CMD ${pkgs.procps}/bin/pkill -u $USER $pkillVerbose dunst || true - unset pkillVerbose - ''; + Service = { + Type = "dbus"; + BusName = "org.freedesktop.Notifications"; + ExecStart = "${pkgs.dunst}/bin/dunst"; }; - }) - ] - ); + }; + } + + (mkIf (cfg.settings != { }) { + xdg.configFile."dunst/dunstrc" = { + text = toDunstIni cfg.settings; + onChange = '' + pkillVerbose="" + if [[ -v VERBOSE ]]; then + pkillVerbose="-e" + fi + $DRY_RUN_CMD ${pkgs.procps}/bin/pkill -u $USER $pkillVerbose dunst || true + unset pkillVerbose + ''; + }; + }) + ]); } diff --git a/modules/services/dwm-status.nix b/modules/services/dwm-status.nix index 2b010cec..7a19e5e5 100644 --- a/modules/services/dwm-status.nix +++ b/modules/services/dwm-status.nix @@ -10,9 +10,8 @@ let configText = builtins.toJSON ({ inherit (cfg) order; } // cfg.extraConfig); configFile = pkgs.writeText "dwm-status.json" configText; -in -{ +in { options = { services.dwm-status = { enable = mkEnableOption "dwm-status user service"; @@ -32,7 +31,7 @@ in extraConfig = mkOption { type = types.attrs; - default = {}; + default = { }; example = literalExample '' { separator = "#"; @@ -58,13 +57,9 @@ in PartOf = [ "graphical-session.target" ]; }; - Install = { - WantedBy = [ "graphical-session.target" ]; - }; + Install = { WantedBy = [ "graphical-session.target" ]; }; - Service = { - ExecStart = "${cfg.package}/bin/dwm-status ${configFile}"; - }; + Service = { ExecStart = "${cfg.package}/bin/dwm-status ${configFile}"; }; }; }; } diff --git a/modules/services/emacs.nix b/modules/services/emacs.nix index 33d6871c..5b0e88db 100644 --- a/modules/services/emacs.nix +++ b/modules/services/emacs.nix @@ -8,26 +8,21 @@ let emacsCfg = config.programs.emacs; emacsBinPath = "${emacsCfg.finalPackage}/bin"; -in - -{ - options.services.emacs = { - enable = mkEnableOption "the Emacs daemon"; - }; +in { + options.services.emacs = { enable = mkEnableOption "the Emacs daemon"; }; config = mkIf cfg.enable { - assertions = [ - { - assertion = emacsCfg.enable; - message = "The Emacs service module requires" - + " 'programs.emacs.enable = true'."; - } - ]; + assertions = [{ + assertion = emacsCfg.enable; + message = "The Emacs service module requires" + + " 'programs.emacs.enable = true'."; + }]; systemd.user.services.emacs = { Unit = { Description = "Emacs: the extensible, self-documenting text editor"; - Documentation = "info:emacs man:emacs(1) https://gnu.org/software/emacs/"; + Documentation = + "info:emacs man:emacs(1) https://gnu.org/software/emacs/"; # Avoid killing the Emacs session, which may be full of # unsaved buffers. @@ -35,14 +30,13 @@ in }; Service = { - ExecStart = "${pkgs.runtimeShell} -l -c 'exec ${emacsBinPath}/emacs --fg-daemon'"; + ExecStart = + "${pkgs.runtimeShell} -l -c 'exec ${emacsBinPath}/emacs --fg-daemon'"; ExecStop = "${emacsBinPath}/emacsclient --eval '(kill-emacs)'"; Restart = "on-failure"; }; - Install = { - WantedBy = [ "default.target" ]; - }; + Install = { WantedBy = [ "default.target" ]; }; }; }; } diff --git a/modules/services/flameshot.nix b/modules/services/flameshot.nix index 87b494d0..c8659d51 100644 --- a/modules/services/flameshot.nix +++ b/modules/services/flameshot.nix @@ -7,16 +7,10 @@ let cfg = config.services.flameshot; package = pkgs.flameshot; -in - -{ +in { meta.maintainers = [ maintainers.hamhut1066 ]; - options = { - services.flameshot = { - enable = mkEnableOption "Flameshot"; - }; - }; + options = { services.flameshot = { enable = mkEnableOption "Flameshot"; }; }; config = mkIf cfg.enable { home.packages = [ package ]; @@ -33,9 +27,7 @@ in PartOf = [ "graphical-session.target" ]; }; - Install = { - WantedBy = [ "graphical-session.target" ]; - }; + Install = { WantedBy = [ "graphical-session.target" ]; }; Service = { Environment = "PATH=${config.home.profileDirectory}/bin"; diff --git a/modules/services/getmail.nix b/modules/services/getmail.nix index 46d4c175..e7a1b1a4 100644 --- a/modules/services/getmail.nix +++ b/modules/services/getmail.nix @@ -6,17 +6,19 @@ let cfg = config.services.getmail; - accounts = filter (a: a.getmail.enable) - (attrValues config.accounts.email.accounts); + accounts = + filter (a: a.getmail.enable) (attrValues config.accounts.email.accounts); # Note: The getmail service does not expect a path, but just the filename! - renderConfigFilepath = a: if a.primary then "getmailrc" else "getmail${a.name}"; - configFiles = concatMapStringsSep " " (a: " --rcfile ${renderConfigFilepath a}") accounts; -in -{ + renderConfigFilepath = a: + if a.primary then "getmailrc" else "getmail${a.name}"; + configFiles = + concatMapStringsSep " " (a: " --rcfile ${renderConfigFilepath a}") accounts; +in { options = { services.getmail = { - enable = mkEnableOption "the getmail systemd service to automatically retrieve mail"; + enable = mkEnableOption + "the getmail systemd service to automatically retrieve mail"; frequency = mkOption { type = types.str; @@ -36,25 +38,17 @@ in config = mkIf cfg.enable { systemd.user.services.getmail = { - Unit = { - Description = "getmail email fetcher"; - }; - Service = { - ExecStart = "${pkgs.getmail}/bin/getmail ${configFiles}"; - }; + Unit = { Description = "getmail email fetcher"; }; + Service = { ExecStart = "${pkgs.getmail}/bin/getmail ${configFiles}"; }; }; systemd.user.timers.getmail = { - Unit = { - Description = "getmail email fetcher"; - }; + Unit = { Description = "getmail email fetcher"; }; Timer = { OnCalendar = "${cfg.frequency}"; Unit = "getmail.service"; }; - Install = { - WantedBy = [ "timers.target" ]; - }; + Install = { WantedBy = [ "timers.target" ]; }; }; }; diff --git a/modules/services/gnome-keyring.nix b/modules/services/gnome-keyring.nix index 4ca6c7ca..6d8317dc 100644 --- a/modules/services/gnome-keyring.nix +++ b/modules/services/gnome-keyring.nix @@ -6,9 +6,7 @@ let cfg = config.services.gnome-keyring; -in - -{ +in { meta.maintainers = [ maintainers.rycee ]; options = { @@ -16,8 +14,8 @@ in enable = mkEnableOption "GNOME Keyring"; components = mkOption { - type = types.listOf (types.enum ["pkcs11" "secrets" "ssh"]); - default = []; + type = types.listOf (types.enum [ "pkcs11" "secrets" "ssh" ]); + default = [ ]; description = '' The GNOME keyring components to start. If empty then the default set of components will be started. @@ -34,22 +32,15 @@ in }; Service = { - ExecStart = - let - args = concatStringsSep " " ( - [ "--start" "--foreground" ] - ++ optional (cfg.components != []) ( - "--components=" + concatStringsSep "," cfg.components - ) - ); - in - "${pkgs.gnome3.gnome_keyring}/bin/gnome-keyring-daemon ${args}"; + ExecStart = let + args = concatStringsSep " " ([ "--start" "--foreground" ] + ++ optional (cfg.components != [ ]) + ("--components=" + concatStringsSep "," cfg.components)); + in "${pkgs.gnome3.gnome_keyring}/bin/gnome-keyring-daemon ${args}"; Restart = "on-abort"; }; - Install = { - WantedBy = [ "graphical-session-pre.target" ]; - }; + Install = { WantedBy = [ "graphical-session-pre.target" ]; }; }; }; } diff --git a/modules/services/grobi.nix b/modules/services/grobi.nix index e910bcdf..4dfc5d63 100644 --- a/modules/services/grobi.nix +++ b/modules/services/grobi.nix @@ -6,12 +6,10 @@ let cfg = config.services.grobi; - eitherStrBoolIntList = - with types; either str (either bool (either int (listOf str))); + eitherStrBoolIntList = with types; + either str (either bool (either int (listOf str))); -in - -{ +in { meta.maintainers = [ maintainers.mbrgm ]; options = { @@ -20,7 +18,7 @@ in executeAfter = mkOption { type = with types; listOf str; - default = []; + default = [ ]; example = [ "setxkbmap dvorak" ]; description = '' Commands to be run after an output configuration was @@ -32,7 +30,7 @@ in rules = mkOption { type = with types; listOf (attrsOf eitherStrBoolIntList); - default = []; + default = [ ]; example = literalExample '' [ { @@ -88,9 +86,7 @@ in Environment = "PATH=${pkgs.xorg.xrandr}/bin:${pkgs.bash}/bin"; }; - Install = { - WantedBy = [ "graphical-session.target" ]; - }; + Install = { WantedBy = [ "graphical-session.target" ]; }; }; xdg.configFile."grobi.conf".text = builtins.toJSON { diff --git a/modules/services/hound.nix b/modules/services/hound.nix index a252a68d..00589f34 100644 --- a/modules/services/hound.nix +++ b/modules/services/hound.nix @@ -6,23 +6,16 @@ let cfg = config.services.hound; - configFile = pkgs.writeText "hound-config.json" ( - builtins.toJSON { - max-concurrent-indexers = cfg.maxConcurrentIndexers; - dbpath = cfg.databasePath; - repos = cfg.repositories; - health-check-url = "/healthz"; - } - ); + configFile = pkgs.writeText "hound-config.json" (builtins.toJSON { + max-concurrent-indexers = cfg.maxConcurrentIndexers; + dbpath = cfg.databasePath; + repos = cfg.repositories; + health-check-url = "/healthz"; + }); - houndOptions = [ - "--addr ${cfg.listenAddress}" - "--conf ${configFile}" - ]; + houndOptions = [ "--addr ${cfg.listenAddress}" "--conf ${configFile}" ]; -in - -{ +in { meta.maintainers = [ maintainers.adisbladis ]; options.services.hound = { @@ -37,7 +30,7 @@ in databasePath = mkOption { type = types.path; default = "${config.xdg.dataHome}/hound"; - defaultText = "\$XDG_DATA_HOME/hound"; + defaultText = "$XDG_DATA_HOME/hound"; description = "The Hound database path."; }; @@ -49,7 +42,7 @@ in repositories = mkOption { type = types.attrsOf (types.uniq types.attrs); - default = {}; + default = { }; example = literalExample '' { SomeGitRepo = { @@ -67,17 +60,14 @@ in home.packages = [ pkgs.hound ]; systemd.user.services.hound = { - Unit = { - Description = "Hound source code search engine"; - }; + Unit = { Description = "Hound source code search engine"; }; - Install = { - WantedBy = [ "default.target" ]; - }; + Install = { WantedBy = [ "default.target" ]; }; Service = { Environment = "PATH=${makeBinPath [ pkgs.mercurial pkgs.git ]}"; - ExecStart = "${pkgs.hound}/bin/houndd ${concatStringsSep " " houndOptions}"; + ExecStart = + "${pkgs.hound}/bin/houndd ${concatStringsSep " " houndOptions}"; }; }; }; diff --git a/modules/services/imapnotify-accounts.nix b/modules/services/imapnotify-accounts.nix index 1c780bf2..94bdce5d 100644 --- a/modules/services/imapnotify-accounts.nix +++ b/modules/services/imapnotify-accounts.nix @@ -16,13 +16,16 @@ with lib; onNotifyPost = mkOption { type = with types; either str (attrsOf str); default = ""; - example = { mail = "\${pkgs.notmuch}/bin/notmuch new && \${pkgs.libnotify}/bin/notify-send 'New mail arrived'"; }; + example = { + mail = + "\${pkgs.notmuch}/bin/notmuch new && \${pkgs.libnotify}/bin/notify-send 'New mail arrived'"; + }; description = "Shell commands to run after onNotify event."; }; boxes = mkOption { type = types.listOf types.str; - default = []; + default = [ ]; example = [ "Inbox" "[Gmail]/MyLabel" ]; description = "IMAP folders to watch."; }; diff --git a/modules/services/imapnotify.nix b/modules/services/imapnotify.nix index fbb0713e..b59b006e 100644 --- a/modules/services/imapnotify.nix +++ b/modules/services/imapnotify.nix @@ -6,102 +6,85 @@ let cfg = config.services.imapnotify; - safeName = lib.replaceChars ["@" ":" "\\" "[" "]"] ["-" "-" "-" "" ""]; + safeName = lib.replaceChars [ "@" ":" "\\" "[" "]" ] [ "-" "-" "-" "" "" ]; imapnotifyAccounts = - filter (a: a.imapnotify.enable) - (attrValues config.accounts.email.accounts); + filter (a: a.imapnotify.enable) (attrValues config.accounts.email.accounts); genAccountUnit = account: - let - name = safeName account.name; - in - { - name = "imapnotify-${name}"; - value = { - Unit = { - Description = "imapnotify for ${name}"; - }; + let name = safeName account.name; + in { + name = "imapnotify-${name}"; + value = { + Unit = { Description = "imapnotify for ${name}"; }; - Service = { - ExecStart = "${pkgs.imapnotify}/bin/imapnotify -c ${genAccountConfig account}"; - } // optionalAttrs account.notmuch.enable { - Environment = "NOTMUCH_CONFIG=${config.xdg.configHome}/notmuch/notmuchrc"; - }; - - Install = { - WantedBy = [ "default.target" ]; - }; + Service = { + ExecStart = + "${pkgs.imapnotify}/bin/imapnotify -c ${genAccountConfig account}"; + } // optionalAttrs account.notmuch.enable { + Environment = + "NOTMUCH_CONFIG=${config.xdg.configHome}/notmuch/notmuchrc"; }; + + Install = { WantedBy = [ "default.target" ]; }; }; + }; genAccountConfig = account: - pkgs.writeText "imapnotify-${safeName account.name}-config.js" ( - let - port = - if account.imap.port != null then account.imap.port - else if account.imap.tls.enable then 993 - else 143; + pkgs.writeText "imapnotify-${safeName account.name}-config.js" (let + port = if account.imap.port != null then + account.imap.port + else if account.imap.tls.enable then + 993 + else + 143; - toJSON = builtins.toJSON; - in - '' - var child_process = require('child_process'); + toJSON = builtins.toJSON; + in '' + var child_process = require('child_process'); - function getStdout(cmd) { - var stdout = child_process.execSync(cmd); - return stdout.toString().trim(); - } + function getStdout(cmd) { + var stdout = child_process.execSync(cmd); + return stdout.toString().trim(); + } - exports.host = ${toJSON account.imap.host} - exports.port = ${toJSON port}; - exports.tls = ${toJSON account.imap.tls.enable}; - exports.username = ${toJSON account.userName}; - exports.password = getStdout("${toString account.passwordCommand}"); - exports.onNotify = ${toJSON account.imapnotify.onNotify}; - exports.onNotifyPost = ${toJSON account.imapnotify.onNotifyPost}; - exports.boxes = ${toJSON account.imapnotify.boxes}; - '' - ); + exports.host = ${toJSON account.imap.host} + exports.port = ${toJSON port}; + exports.tls = ${toJSON account.imap.tls.enable}; + exports.username = ${toJSON account.userName}; + exports.password = getStdout("${toString account.passwordCommand}"); + exports.onNotify = ${toJSON account.imapnotify.onNotify}; + exports.onNotifyPost = ${toJSON account.imapnotify.onNotifyPost}; + exports.boxes = ${toJSON account.imapnotify.boxes}; + ''); -in - -{ +in { meta.maintainers = [ maintainers.nickhu ]; options = { - services.imapnotify = { - enable = mkEnableOption "imapnotify"; - }; + services.imapnotify = { enable = mkEnableOption "imapnotify"; }; accounts.email.accounts = mkOption { - type = with types; attrsOf (submodule ( - import ./imapnotify-accounts.nix - )); + type = with types; attrsOf (submodule (import ./imapnotify-accounts.nix)); }; }; config = mkIf cfg.enable { - assertions = - let - checkAccounts = pred: msg: - let - badAccounts = filter pred imapnotifyAccounts; - in - { - assertion = badAccounts == []; - message = "imapnotify: Missing ${msg} for accounts: " - + concatMapStringsSep ", " (a: a.name) badAccounts; - }; - in - [ - (checkAccounts (a: a.maildir == null) "maildir configuration") - (checkAccounts (a: a.imap == null) "IMAP configuration") - (checkAccounts (a: a.passwordCommand == null) "password command") - (checkAccounts (a: a.userName == null) "username") - ]; + assertions = let + checkAccounts = pred: msg: + let badAccounts = filter pred imapnotifyAccounts; + in { + assertion = badAccounts == [ ]; + message = "imapnotify: Missing ${msg} for accounts: " + + concatMapStringsSep ", " (a: a.name) badAccounts; + }; + in [ + (checkAccounts (a: a.maildir == null) "maildir configuration") + (checkAccounts (a: a.imap == null) "IMAP configuration") + (checkAccounts (a: a.passwordCommand == null) "password command") + (checkAccounts (a: a.userName == null) "username") + ]; - systemd.user.services = - listToAttrs (map genAccountUnit imapnotifyAccounts); + systemd.user.services = listToAttrs (map genAccountUnit imapnotifyAccounts); }; } diff --git a/modules/services/kdeconnect.nix b/modules/services/kdeconnect.nix index bd698fcf..82de1f0e 100644 --- a/modules/services/kdeconnect.nix +++ b/modules/services/kdeconnect.nix @@ -7,9 +7,7 @@ let cfg = config.services.kdeconnect; package = pkgs.kdeconnect; -in - -{ +in { meta.maintainers = [ maintainers.adisbladis ]; options = { @@ -31,14 +29,13 @@ in systemd.user.services.kdeconnect = { Unit = { - Description = "Adds communication between your desktop and your smartphone"; + Description = + "Adds communication between your desktop and your smartphone"; After = [ "graphical-session-pre.target" ]; PartOf = [ "graphical-session.target" ]; }; - Install = { - WantedBy = [ "graphical-session.target" ]; - }; + Install = { WantedBy = [ "graphical-session.target" ]; }; Service = { Environment = "PATH=${config.home.profileDirectory}/bin"; @@ -52,16 +49,16 @@ in systemd.user.services.kdeconnect-indicator = { Unit = { Description = "kdeconnect-indicator"; - After = [ "graphical-session-pre.target" - "polybar.service" - "taffybar.service" - "stalonetray.service" ]; + After = [ + "graphical-session-pre.target" + "polybar.service" + "taffybar.service" + "stalonetray.service" + ]; PartOf = [ "graphical-session.target" ]; }; - Install = { - WantedBy = [ "graphical-session.target" ]; - }; + Install = { WantedBy = [ "graphical-session.target" ]; }; Service = { Environment = "PATH=${config.home.profileDirectory}/bin"; diff --git a/modules/services/keepassx.nix b/modules/services/keepassx.nix index ad791786..dc37066e 100644 --- a/modules/services/keepassx.nix +++ b/modules/services/keepassx.nix @@ -13,19 +13,15 @@ with lib; config = mkIf config.services.keepassx.enable { systemd.user.services.keepassx = { - Unit = { - Description = "KeePassX password manager"; - After = [ "graphical-session-pre.target" ]; - PartOf = [ "graphical-session.target" ]; - }; + Unit = { + Description = "KeePassX password manager"; + After = [ "graphical-session-pre.target" ]; + PartOf = [ "graphical-session.target" ]; + }; - Install = { - WantedBy = [ "graphical-session.target" ]; - }; + Install = { WantedBy = [ "graphical-session.target" ]; }; - Service = { - ExecStart = "${pkgs.keepassx}/bin/keepassx -min -lock"; - }; + Service = { ExecStart = "${pkgs.keepassx}/bin/keepassx -min -lock"; }; }; }; } diff --git a/modules/services/lorri.nix b/modules/services/lorri.nix index 351afbc1..3b2c244e 100644 --- a/modules/services/lorri.nix +++ b/modules/services/lorri.nix @@ -6,14 +6,10 @@ let cfg = config.services.lorri; -in - -{ +in { meta.maintainers = [ maintainers.gerschtli ]; - options = { - services.lorri.enable = mkEnableOption "lorri build daemon"; - }; + options = { services.lorri.enable = mkEnableOption "lorri build daemon"; }; config = mkIf cfg.enable { home.packages = [ pkgs.lorri ]; @@ -33,25 +29,22 @@ in ProtectSystem = "strict"; ProtectHome = "read-only"; Restart = "on-failure"; - Environment = - let path = with pkgs; makeSearchPath "bin" [ nix gitMinimal gnutar gzip ]; - in "PATH=${path}"; + Environment = let + path = with pkgs; + makeSearchPath "bin" [ nix gitMinimal gnutar gzip ]; + in "PATH=${path}"; }; }; sockets.lorri = { - Unit = { - Description = "Socket for lorri build daemon"; - }; + Unit = { Description = "Socket for lorri build daemon"; }; Socket = { ListenStream = "%t/lorri/daemon.socket"; RuntimeDirectory = "lorri"; }; - Install = { - WantedBy = [ "sockets.target" ]; - }; + Install = { WantedBy = [ "sockets.target" ]; }; }; }; }; diff --git a/modules/services/mbsync.nix b/modules/services/mbsync.nix index 73c3b326..ac6ac1ef 100644 --- a/modules/services/mbsync.nix +++ b/modules/services/mbsync.nix @@ -6,14 +6,10 @@ let cfg = config.services.mbsync; - mbsyncOptions = - [ "--all" - ] ++ optional (cfg.verbose) "--verbose" - ++ optional (cfg.configFile != null) "--config ${cfg.configFile}"; + mbsyncOptions = [ "--all" ] ++ optional (cfg.verbose) "--verbose" + ++ optional (cfg.configFile != null) "--config ${cfg.configFile}"; -in - -{ +in { meta.maintainers = [ maintainers.pjones ]; options.services.mbsync = { @@ -81,30 +77,28 @@ in config = mkIf cfg.enable { systemd.user.services.mbsync = { - Unit = { - Description = "mbsync mailbox synchronization"; - }; + Unit = { Description = "mbsync mailbox synchronization"; }; Service = { Type = "oneshot"; - ExecStart = "${cfg.package}/bin/mbsync ${concatStringsSep " " mbsyncOptions}"; - } // (optionalAttrs (cfg.postExec != null) { ExecStartPost = cfg.postExec; }) - // (optionalAttrs (cfg.preExec != null) { ExecStartPre = cfg.preExec; }); + ExecStart = + "${cfg.package}/bin/mbsync ${concatStringsSep " " mbsyncOptions}"; + } // (optionalAttrs (cfg.postExec != null) { + ExecStartPost = cfg.postExec; + }) // (optionalAttrs (cfg.preExec != null) { + ExecStartPre = cfg.preExec; + }); }; systemd.user.timers.mbsync = { - Unit = { - Description = "mbsync mailbox synchronization"; - }; + Unit = { Description = "mbsync mailbox synchronization"; }; Timer = { OnCalendar = cfg.frequency; Unit = "mbsync.service"; }; - Install = { - WantedBy = [ "timers.target" ]; - }; + Install = { WantedBy = [ "timers.target" ]; }; }; }; } diff --git a/modules/services/mpdris2.nix b/modules/services/mpdris2.nix index 9030e0fd..cb8cefba 100644 --- a/modules/services/mpdris2.nix +++ b/modules/services/mpdris2.nix @@ -9,11 +9,11 @@ let toIni = generators.toINI { mkKeyValue = key: value: let - value' = - if isBool value then (if value then "True" else "False") - else toString value; - in - "${key} = ${value'}"; + value' = if isBool value then + (if value then "True" else "False") + else + toString value; + in "${key} = ${value'}"; }; mpdris2Conf = { @@ -29,9 +29,7 @@ let }; }; -in - -{ +in { meta.maintainers = [ maintainers.pjones ]; options.services.mpdris2 = { @@ -76,19 +74,15 @@ in }; config = mkIf cfg.enable { - assertions = [ - { - assertion = config.services.mpd.enable; - message = "The mpdris2 module requires 'services.mpd.enable = true'."; - } - ]; + assertions = [{ + assertion = config.services.mpd.enable; + message = "The mpdris2 module requires 'services.mpd.enable = true'."; + }]; xdg.configFile."mpDris2/mpDris2.conf".text = toIni mpdris2Conf; systemd.user.services.mpdris2 = { - Install = { - WantedBy = [ "default.target" ]; - }; + Install = { WantedBy = [ "default.target" ]; }; Unit = { Description = "MPRIS 2 support for MPD"; diff --git a/modules/services/muchsync.nix b/modules/services/muchsync.nix index 72bf737c..b7004418 100644 --- a/modules/services/muchsync.nix +++ b/modules/services/muchsync.nix @@ -150,23 +150,21 @@ in { }; config = let - mapRemotes = gen: with attrsets; mapAttrs' + mapRemotes = gen: + with attrsets; + mapAttrs' (name: remoteCfg: nameValuePair "muchsync-${name}" (gen name remoteCfg)) cfg.remotes; in mkIf (cfg.remotes != { }) { - assertions = [ - { - assertion = config.programs.notmuch.enable; - message = '' - The muchsync module requires 'programs.notmuch.enable = true'. - ''; - } - ]; + assertions = [{ + assertion = config.programs.notmuch.enable; + message = '' + The muchsync module requires 'programs.notmuch.enable = true'. + ''; + }]; systemd.user.services = mapRemotes (name: remoteCfg: { - Unit = { - Description = "muchsync sync service (${name})"; - }; + Unit = { Description = "muchsync sync service (${name})"; }; Service = { CPUSchedulingPolicy = "idle"; IOSchedulingClass = "idle"; @@ -175,8 +173,7 @@ in { ''"NOTMUCH_CONFIG=${config.home.sessionVariables.NOTMUCH_CONFIG}"'' ''"NMBGIT=${config.home.sessionVariables.NMBGIT}"'' ]; - ExecStart = concatStringsSep " " ( - [ "${pkgs.muchsync}/bin/muchsync" ] + ExecStart = concatStringsSep " " ([ "${pkgs.muchsync}/bin/muchsync" ] ++ [ "-s ${escapeShellArg remoteCfg.sshCommand}" ] ++ optional (!remoteCfg.upload) "--noup" @@ -187,25 +184,20 @@ in { # remote configuration ++ [ (escapeShellArg remoteCfg.remote.host) ] ++ optional (remoteCfg.remote.muchsyncPath != "") - "-r ${escapeShellArg remoteCfg.remote.muchsyncPath}" + "-r ${escapeShellArg remoteCfg.remote.muchsyncPath}" ++ optional remoteCfg.remote.checkForModifiedFiles "-F" - ++ optional (!remoteCfg.remote.importNew) "--nonew" - ); + ++ optional (!remoteCfg.remote.importNew) "--nonew"); }; }); systemd.user.timers = mapRemotes (name: remoteCfg: { - Unit = { - Description = "muchsync periodic sync (${name})"; - }; + Unit = { Description = "muchsync periodic sync (${name})"; }; Timer = { Unit = "muchsync-${name}.service"; OnCalendar = remoteCfg.frequency; Persistent = true; }; - Install = { - WantedBy = [ "timers.target" ]; - }; + Install = { WantedBy = [ "timers.target" ]; }; }); }; } diff --git a/modules/services/network-manager-applet.nix b/modules/services/network-manager-applet.nix index 72a4711e..bf57ed65 100644 --- a/modules/services/network-manager-applet.nix +++ b/modules/services/network-manager-applet.nix @@ -6,9 +6,7 @@ let cfg = config.services.network-manager-applet; -in - -{ +in { meta.maintainers = [ maintainers.rycee ]; options = { @@ -25,17 +23,13 @@ in PartOf = [ "graphical-session.target" ]; }; - Install = { - WantedBy = [ "graphical-session.target" ]; - }; + Install = { WantedBy = [ "graphical-session.target" ]; }; Service = { - ExecStart = toString ( - [ - "${pkgs.networkmanagerapplet}/bin/nm-applet" - "--sm-disable" - ] ++ optional config.xsession.preferStatusNotifierItems "--indicator" - ); + ExecStart = toString + ([ "${pkgs.networkmanagerapplet}/bin/nm-applet" "--sm-disable" ] + ++ optional config.xsession.preferStatusNotifierItems + "--indicator"); }; }; }; diff --git a/modules/services/nextcloud-client.nix b/modules/services/nextcloud-client.nix index 3d8dc0bc..555ca11a 100644 --- a/modules/services/nextcloud-client.nix +++ b/modules/services/nextcloud-client.nix @@ -4,9 +4,7 @@ with lib; { options = { - services.nextcloud-client = { - enable = mkEnableOption "Nextcloud Client"; - }; + services.nextcloud-client = { enable = mkEnableOption "Nextcloud Client"; }; }; config = mkIf config.services.nextcloud-client.enable { @@ -22,9 +20,7 @@ with lib; ExecStart = "${pkgs.nextcloud-client}/bin/nextcloud"; }; - Install = { - WantedBy = [ "graphical-session.target" ]; - }; + Install = { WantedBy = [ "graphical-session.target" ]; }; }; }; } diff --git a/modules/services/owncloud-client.nix b/modules/services/owncloud-client.nix index d98a508f..d55d8ffa 100644 --- a/modules/services/owncloud-client.nix +++ b/modules/services/owncloud-client.nix @@ -4,9 +4,7 @@ with lib; { options = { - services.owncloud-client = { - enable = mkEnableOption "Owncloud Client"; - }; + services.owncloud-client = { enable = mkEnableOption "Owncloud Client"; }; }; config = mkIf config.services.owncloud-client.enable { @@ -22,9 +20,7 @@ with lib; ExecStart = "${pkgs.owncloud-client}/bin/owncloud"; }; - Install = { - WantedBy = [ "graphical-session.target" ]; - }; + Install = { WantedBy = [ "graphical-session.target" ]; }; }; }; } diff --git a/modules/services/parcellite.nix b/modules/services/parcellite.nix index 45cb33ea..ce042386 100644 --- a/modules/services/parcellite.nix +++ b/modules/services/parcellite.nix @@ -7,15 +7,11 @@ let cfg = config.services.parcellite; package = pkgs.parcellite; -in - -{ +in { meta.maintainers = [ maintainers.gleber ]; options = { - services.parcellite = { - enable = mkEnableOption "Parcellite"; - }; + services.parcellite = { enable = mkEnableOption "Parcellite"; }; }; config = mkIf cfg.enable { @@ -28,9 +24,7 @@ in PartOf = [ "graphical-session.target" ]; }; - Install = { - WantedBy = [ "graphical-session.target" ]; - }; + Install = { WantedBy = [ "graphical-session.target" ]; }; Service = { ExecStart = "${package}/bin/parcellite"; diff --git a/modules/services/password-store-sync.nix b/modules/services/password-store-sync.nix index 32c70ff5..81933914 100644 --- a/modules/services/password-store-sync.nix +++ b/modules/services/password-store-sync.nix @@ -7,9 +7,7 @@ let serviceCfg = config.services.password-store-sync; programCfg = config.programs.password-store; -in - -{ +in { meta.maintainers = with maintainers; [ pacien ]; options.services.password-store-sync = { @@ -35,28 +33,22 @@ in }; config = mkIf serviceCfg.enable { - assertions = [ - { - assertion = programCfg.enable; - message = "The 'services.password-store-sync' module requires" - + " 'programs.password-store.enable = true'."; - } - ]; + assertions = [{ + assertion = programCfg.enable; + message = "The 'services.password-store-sync' module requires" + + " 'programs.password-store.enable = true'."; + }]; systemd.user.services.password-store-sync = { - Unit = { - Description = "Password store sync"; - }; + Unit = { Description = "Password store sync"; }; Service = { CPUSchedulingPolicy = "idle"; IOSchedulingClass = "idle"; - Environment = - let - makeEnvironmentPairs = - mapAttrsToList (key: value: "${key}=${builtins.toJSON value}"); - in - makeEnvironmentPairs programCfg.settings; + Environment = let + makeEnvironmentPairs = + mapAttrsToList (key: value: "${key}=${builtins.toJSON value}"); + in makeEnvironmentPairs programCfg.settings; ExecStart = toString (pkgs.writeShellScript "password-store-sync" '' ${pkgs.pass}/bin/pass git pull --rebase && \ ${pkgs.pass}/bin/pass git push @@ -65,9 +57,7 @@ in }; systemd.user.timers.password-store-sync = { - Unit = { - Description = "Password store periodic sync"; - }; + Unit = { Description = "Password store periodic sync"; }; Timer = { Unit = "password-store-sync.service"; @@ -75,9 +65,7 @@ in Persistent = true; }; - Install = { - WantedBy = [ "timers.target" ]; - }; + Install = { WantedBy = [ "timers.target" ]; }; }; }; } diff --git a/modules/services/pasystray.nix b/modules/services/pasystray.nix index 8f92f34c..7c6651d9 100644 --- a/modules/services/pasystray.nix +++ b/modules/services/pasystray.nix @@ -6,31 +6,25 @@ with lib; meta.maintainers = [ maintainers.pltanton ]; options = { - services.pasystray = { - enable = mkEnableOption "PulseAudio system tray"; - }; + services.pasystray = { enable = mkEnableOption "PulseAudio system tray"; }; }; config = mkIf config.services.pasystray.enable { systemd.user.services.pasystray = { - Unit = { - Description = "PulseAudio system tray"; - After = [ "graphical-session-pre.target" ]; - PartOf = [ "graphical-session.target" ]; - }; + Unit = { + Description = "PulseAudio system tray"; + After = [ "graphical-session-pre.target" ]; + PartOf = [ "graphical-session.target" ]; + }; - Install = { - WantedBy = [ "graphical-session.target" ]; - }; + Install = { WantedBy = [ "graphical-session.target" ]; }; - Service = { - Environment = - let - toolPaths = makeBinPath [ pkgs.paprefs pkgs.pavucontrol ]; - in - [ "PATH=${toolPaths}" ]; - ExecStart = "${pkgs.pasystray}/bin/pasystray"; - }; + Service = { + Environment = + let toolPaths = makeBinPath [ pkgs.paprefs pkgs.pavucontrol ]; + in [ "PATH=${toolPaths}" ]; + ExecStart = "${pkgs.pasystray}/bin/pasystray"; + }; }; }; } diff --git a/modules/services/polybar.nix b/modules/services/polybar.nix index 4225ed9b..934a9906 100644 --- a/modules/services/polybar.nix +++ b/modules/services/polybar.nix @@ -6,30 +6,28 @@ let cfg = config.services.polybar; - eitherStrBoolIntList = with types; either str (either bool (either int (listOf str))); + eitherStrBoolIntList = with types; + either str (either bool (either int (listOf str))); toPolybarIni = generators.toINI { mkKeyValue = key: value: let quoted = v: - if hasPrefix " " v || hasSuffix " " v - then ''"${v}"'' - else v; + if hasPrefix " " v || hasSuffix " " v then ''"${v}"'' else v; - value' = - if isBool value then (if value then "true" else "false") - else if (isString value && key != "include-file") then quoted value - else toString value; - in - "${key}=${value'}"; + value' = if isBool value then + (if value then "true" else "false") + else if (isString value && key != "include-file") then + quoted value + else + toString value; + in "${key}=${value'}"; }; configFile = pkgs.writeText "polybar.conf" (toPolybarIni cfg.config + "\n" + cfg.extraConfig); -in - -{ +in { options = { services.polybar = { enable = mkEnableOption "Polybar status bar"; @@ -39,7 +37,7 @@ in default = pkgs.polybar; defaultText = literalExample "pkgs.polybar"; description = "Polybar package to install."; - example = literalExample '' + example = literalExample '' pkgs.polybar.override { i3GapsSupport = true; alsaSupport = true; @@ -50,15 +48,14 @@ in }; config = mkOption { - type = types.coercedTo - types.path + type = types.coercedTo types.path (p: { "section/base" = { include-file = "${p}"; }; }) (types.attrsOf (types.attrsOf eitherStrBoolIntList)); description = '' Polybar configuration. Can be either path to a file, or set of attributes that will be used to create the final configuration. ''; - default = {}; + default = { }; example = literalExample '' { "bar/top" = { @@ -118,25 +115,20 @@ in Description = "Polybar status bar"; After = [ "graphical-session-pre.target" ]; PartOf = [ "graphical-session.target" ]; - X-Restart-Triggers = [ - "${config.xdg.configFile."polybar/config".source}" - ]; + X-Restart-Triggers = + [ "${config.xdg.configFile."polybar/config".source}" ]; }; Service = { Type = "forking"; Environment = "PATH=${cfg.package}/bin:/run/wrappers/bin"; ExecStart = - let - scriptPkg = pkgs.writeShellScriptBin "polybar-start" cfg.script; - in - "${scriptPkg}/bin/polybar-start"; + let scriptPkg = pkgs.writeShellScriptBin "polybar-start" cfg.script; + in "${scriptPkg}/bin/polybar-start"; Restart = "on-failure"; }; - Install = { - WantedBy = [ "graphical-session.target" ]; - }; + Install = { WantedBy = [ "graphical-session.target" ]; }; }; }; diff --git a/modules/services/random-background.nix b/modules/services/random-background.nix index 885574af..9deee8de 100644 --- a/modules/services/random-background.nix +++ b/modules/services/random-background.nix @@ -6,18 +6,11 @@ let cfg = config.services.random-background; - flags = lib.concatStringsSep " " ( - [ - "--bg-${cfg.display}" - "--no-fehbg" - "--randomize" - ] - ++ lib.optional (!cfg.enableXinerama) "--no-xinerama" - ); + flags = lib.concatStringsSep " " + ([ "--bg-${cfg.display}" "--no-fehbg" "--randomize" ] + ++ lib.optional (!cfg.enableXinerama) "--no-xinerama"); -in - -{ +in { meta.maintainers = [ maintainers.rycee ]; options = { @@ -73,41 +66,32 @@ in }; }; - config = mkIf cfg.enable ( - mkMerge ([ - { - systemd.user.services.random-background = { - Unit = { - Description = "Set random desktop background using feh"; - After = [ "graphical-session-pre.target" ]; - PartOf = [ "graphical-session.target" ]; - }; - - Service = { - Type = "oneshot"; - ExecStart = "${pkgs.feh}/bin/feh ${flags} ${cfg.imageDirectory}"; - IOSchedulingClass = "idle"; - }; - - Install = { - WantedBy = [ "graphical-session.target" ]; - }; + config = mkIf cfg.enable (mkMerge ([ + { + systemd.user.services.random-background = { + Unit = { + Description = "Set random desktop background using feh"; + After = [ "graphical-session-pre.target" ]; + PartOf = [ "graphical-session.target" ]; }; - } - (mkIf (cfg.interval != null) { - systemd.user.timers.random-background = { - Unit = { - Description = "Set random desktop background using feh"; - }; - Timer = { - OnUnitActiveSec = cfg.interval; - }; - - Install = { - WantedBy = [ "timers.target" ]; - }; + Service = { + Type = "oneshot"; + ExecStart = "${pkgs.feh}/bin/feh ${flags} ${cfg.imageDirectory}"; + IOSchedulingClass = "idle"; }; - }) - ])); + + Install = { WantedBy = [ "graphical-session.target" ]; }; + }; + } + (mkIf (cfg.interval != null) { + systemd.user.timers.random-background = { + Unit = { Description = "Set random desktop background using feh"; }; + + Timer = { OnUnitActiveSec = cfg.interval; }; + + Install = { WantedBy = [ "timers.target" ]; }; + }; + }) + ])); } diff --git a/modules/services/redshift.nix b/modules/services/redshift.nix index 1452fcc9..86cbab20 100644 --- a/modules/services/redshift.nix +++ b/modules/services/redshift.nix @@ -8,9 +8,7 @@ let cfg = config.services.redshift; -in - -{ +in { meta.maintainers = [ maintainers.rycee ]; options.services.redshift = { @@ -113,7 +111,7 @@ in extraOptions = mkOption { type = types.listOf types.str; - default = []; + default = [ ]; example = [ "-v" "-m randr" ]; description = '' Additional command-line arguments to pass to @@ -123,17 +121,13 @@ in }; config = mkIf cfg.enable { - assertions = [ - { - assertion = - cfg.provider == "manual" - -> cfg.latitude != null && cfg.longitude != null; - message = - "Must provide services.redshift.latitude and" - + " services.redshift.latitude when" - + " services.redshift.provider is set to \"manual\"."; - } - ]; + assertions = [{ + assertion = cfg.provider == "manual" -> cfg.latitude != null + && cfg.longitude != null; + message = "Must provide services.redshift.latitude and" + + " services.redshift.latitude when" + + " services.redshift.provider is set to \"manual\"."; + }]; systemd.user.services.redshift = { Unit = { @@ -142,27 +136,25 @@ in PartOf = [ "graphical-session.target" ]; }; - Install = { - WantedBy = [ "graphical-session.target" ]; - }; + Install = { WantedBy = [ "graphical-session.target" ]; }; Service = { - ExecStart = - let - providerString = - if cfg.provider == "manual" - then "${cfg.latitude}:${cfg.longitude}" - else cfg.provider; + ExecStart = let + providerString = if cfg.provider == "manual" then + "${cfg.latitude}:${cfg.longitude}" + else + cfg.provider; - args = [ - "-l ${providerString}" - "-t ${toString cfg.temperature.day}:${toString cfg.temperature.night}" - "-b ${toString cfg.brightness.day}:${toString cfg.brightness.night}" - ] ++ cfg.extraOptions; + args = [ + "-l ${providerString}" + "-t ${toString cfg.temperature.day}:${ + toString cfg.temperature.night + }" + "-b ${toString cfg.brightness.day}:${toString cfg.brightness.night}" + ] ++ cfg.extraOptions; - command = if cfg.tray then "redshift-gtk" else "redshift"; - in - "${cfg.package}/bin/${command} ${concatStringsSep " " args}"; + command = if cfg.tray then "redshift-gtk" else "redshift"; + in "${cfg.package}/bin/${command} ${concatStringsSep " " args}"; RestartSec = 3; Restart = "always"; }; diff --git a/modules/services/rsibreak.nix b/modules/services/rsibreak.nix index 242e0343..77eaa71f 100644 --- a/modules/services/rsibreak.nix +++ b/modules/services/rsibreak.nix @@ -6,9 +6,7 @@ let cfg = config.services.rsibreak; -in - -{ +in { options.services.rsibreak = { enable = mkEnableOption "rsibreak"; @@ -23,9 +21,7 @@ in PartOf = [ "graphical-session.target" ]; }; - Install = { - WantedBy = [ "graphical-session.target" ]; - }; + Install = { WantedBy = [ "graphical-session.target" ]; }; Service = { Environment = "PATH=${config.home.profileDirectory}/bin"; diff --git a/modules/services/screen-locker.nix b/modules/services/screen-locker.nix index e3da1406..2d0fc758 100644 --- a/modules/services/screen-locker.nix +++ b/modules/services/screen-locker.nix @@ -29,7 +29,7 @@ in { xautolockExtraOptions = mkOption { type = types.listOf types.str; - default = []; + default = [ ]; description = '' Extra command-line arguments to pass to xautolock. ''; @@ -37,7 +37,7 @@ in { xssLockExtraOptions = mkOption { type = types.listOf types.str; - default = []; + default = [ ]; description = '' Extra command-line arguments to pass to xss-lock. ''; @@ -53,9 +53,7 @@ in { PartOf = [ "graphical-session.target" ]; }; - Install = { - WantedBy = [ "graphical-session.target" ]; - }; + Install = { WantedBy = [ "graphical-session.target" ]; }; Service = { ExecStart = concatStringsSep " " ([ @@ -70,7 +68,9 @@ in { # xss-lock will run specified screen locker when the session is locked via loginctl # can't be started as a systemd service, # see https://bitbucket.org/raymonad/xss-lock/issues/13/allow-operation-as-systemd-user-unit - xsession.initExtra = "${pkgs.xss-lock}/bin/xss-lock ${concatStringsSep " " cfg.xssLockExtraOptions} -- ${cfg.lockCmd} &"; + xsession.initExtra = "${pkgs.xss-lock}/bin/xss-lock ${ + concatStringsSep " " cfg.xssLockExtraOptions + } -- ${cfg.lockCmd} &"; }; } diff --git a/modules/services/spotifyd.nix b/modules/services/spotifyd.nix index b9e09126..bc231814 100644 --- a/modules/services/spotifyd.nix +++ b/modules/services/spotifyd.nix @@ -7,18 +7,16 @@ let cfg = config.services.spotifyd; configFile = pkgs.writeText "spotifyd.conf" '' - ${generators.toINI {} cfg.settings} + ${generators.toINI { } cfg.settings} ''; -in - -{ +in { options.services.spotifyd = { enable = mkEnableOption "SpotifyD connect"; settings = mkOption { type = types.attrsOf (types.attrsOf types.str); - default = {}; + default = { }; description = "Configuration for spotifyd"; example = literalExample '' { @@ -44,7 +42,8 @@ in Install.WantedBy = [ "default.target" ]; Service = { - ExecStart = "${pkgs.spotifyd}/bin/spotifyd --no-daemon --config-path ${configFile}"; + ExecStart = + "${pkgs.spotifyd}/bin/spotifyd --no-daemon --config-path ${configFile}"; Restart = "always"; RestartSec = 12; }; diff --git a/modules/services/stalonetray.nix b/modules/services/stalonetray.nix index 934e78c9..cca60498 100644 --- a/modules/services/stalonetray.nix +++ b/modules/services/stalonetray.nix @@ -6,9 +6,7 @@ let cfg = config.services.stalonetray; -in - -{ +in { options = { services.stalonetray = { enable = mkEnableOption "Stalonetray system tray"; @@ -22,19 +20,18 @@ in }; config = mkOption { - type = with types; - attrsOf (nullOr (either str (either bool int))); - description = '' - Stalonetray configuration as a set of attributes. - ''; - default = {}; - example = { - geometry = "3x1-600+0"; - decorations = null; - icon_size = 30; - sticky = true; - background = "#cccccc"; - }; + type = with types; attrsOf (nullOr (either str (either bool int))); + description = '' + Stalonetray configuration as a set of attributes. + ''; + default = { }; + example = { + geometry = "3x1-600+0"; + decorations = null; + icon_size = 30; + sticky = true; + background = "#cccccc"; + }; }; extraConfig = mkOption { @@ -42,11 +39,11 @@ in description = "Additional configuration lines for stalonetrayrc."; default = ""; example = '' - geometry 3x1-600+0 - decorations none - icon_size 30 - sticky true - background "#cccccc" + geometry 3x1-600+0 + decorations none + icon_size 30 + sticky true + background "#cccccc" ''; }; }; @@ -63,9 +60,7 @@ in PartOf = [ "graphical-session.target" ]; }; - Install = { - WantedBy = [ "graphical-session.target" ]; - }; + Install = { WantedBy = [ "graphical-session.target" ]; }; Service = { ExecStart = "${cfg.package}/bin/stalonetray"; @@ -74,17 +69,18 @@ in }; } - (mkIf (cfg.config != {}) { - home.file.".stalonetrayrc".text = - let - valueToString = v: - if isBool v then (if v then "true" else "false") - else if (v==null) then "none" - else ''"${toString v}"''; - in - concatStrings ( - mapAttrsToList (k: v: "${k} ${valueToString v}\n") cfg.config - ); + (mkIf (cfg.config != { }) { + home.file.".stalonetrayrc".text = let + valueToString = v: + if isBool v then + (if v then "true" else "false") + else if (v == null) then + "none" + else + ''"${toString v}"''; + in concatStrings (mapAttrsToList (k: v: '' + ${k} ${valueToString v} + '') cfg.config); }) (mkIf (cfg.extraConfig != "") { diff --git a/modules/services/status-notifier-watcher.nix b/modules/services/status-notifier-watcher.nix index 8a2ded87..3c3e5487 100644 --- a/modules/services/status-notifier-watcher.nix +++ b/modules/services/status-notifier-watcher.nix @@ -6,9 +6,7 @@ let cfg = config.services.status-notifier-watcher; -in - -{ +in { meta.maintainers = [ maintainers.pltanton ]; options = { @@ -17,30 +15,30 @@ in package = mkOption { default = pkgs.haskellPackages.status-notifier-item; - defaultText = literalExample "pkgs.haskellPackages.status-notifier-item"; + defaultText = + literalExample "pkgs.haskellPackages.status-notifier-item"; type = types.package; example = literalExample "pkgs.haskellPackages.status-notifier-item"; - description = "The package to use for the status notifier watcher binary."; + description = + "The package to use for the status notifier watcher binary."; }; }; }; config = mkIf cfg.enable { systemd.user.services.status-notifier-watcher = { - Unit = { - Description = "SNI watcher"; - After = [ "graphical-session-pre.target" ]; - PartOf = [ "graphical-session.target" ]; - Before = [ "taffybar.service" ]; - }; + Unit = { + Description = "SNI watcher"; + After = [ "graphical-session-pre.target" ]; + PartOf = [ "graphical-session.target" ]; + Before = [ "taffybar.service" ]; + }; - Service = { - ExecStart = "${cfg.package}/bin/status-notifier-watcher"; - }; + Service = { ExecStart = "${cfg.package}/bin/status-notifier-watcher"; }; - Install = { - WantedBy = [ "graphical-session.target" "taffybar.service" ]; - }; + Install = { + WantedBy = [ "graphical-session.target" "taffybar.service" ]; + }; }; }; } diff --git a/modules/services/syncthing.nix b/modules/services/syncthing.nix index 7fc556c5..2ef10540 100644 --- a/modules/services/syncthing.nix +++ b/modules/services/syncthing.nix @@ -22,21 +22,21 @@ with lib; systemd.user.services = { syncthing = { Unit = { - Description = "Syncthing - Open Source Continuous File Synchronization"; + Description = + "Syncthing - Open Source Continuous File Synchronization"; Documentation = "man:syncthing(1)"; After = [ "network.target" ]; }; Service = { - ExecStart = "${pkgs.syncthing}/bin/syncthing -no-browser -no-restart -logflags=0"; + ExecStart = + "${pkgs.syncthing}/bin/syncthing -no-browser -no-restart -logflags=0"; Restart = "on-failure"; SuccessExitStatus = [ 3 4 ]; RestartForceExitStatus = [ 3 4 ]; }; - Install = { - WantedBy = [ "default.target" ]; - }; + Install = { WantedBy = [ "default.target" ]; }; }; }; }) @@ -46,10 +46,12 @@ with lib; qsyncthingtray = { Unit = { Description = "QSyncthingTray"; - After = [ "graphical-session-pre.target" - "polybar.service" - "taffybar.service" - "stalonetray.service" ]; + After = [ + "graphical-session-pre.target" + "polybar.service" + "taffybar.service" + "stalonetray.service" + ]; PartOf = [ "graphical-session.target" ]; }; @@ -58,9 +60,7 @@ with lib; ExecStart = "${pkgs.qsyncthingtray}/bin/QSyncthingTray"; }; - Install = { - WantedBy = [ "graphical-session.target" ]; - }; + Install = { WantedBy = [ "graphical-session.target" ]; }; }; }; }) diff --git a/modules/services/taffybar.nix b/modules/services/taffybar.nix index 69531a19..53927554 100644 --- a/modules/services/taffybar.nix +++ b/modules/services/taffybar.nix @@ -6,9 +6,7 @@ let cfg = config.services.taffybar; -in - -{ +in { meta.maintainers = [ maintainers.rycee ]; options = { @@ -38,9 +36,7 @@ in Restart = "on-failure"; }; - Install = { - WantedBy = [ "graphical-session.target" ]; - }; + Install = { WantedBy = [ "graphical-session.target" ]; }; }; xsession.importedVariables = [ "GDK_PIXBUF_MODULE_FILE" ]; diff --git a/modules/services/tahoe-lafs.nix b/modules/services/tahoe-lafs.nix index bb7be8d7..742b779b 100644 --- a/modules/services/tahoe-lafs.nix +++ b/modules/services/tahoe-lafs.nix @@ -6,20 +6,14 @@ with lib; meta.maintainers = [ maintainers.rycee ]; options = { - services.tahoe-lafs = { - enable = mkEnableOption "Tahoe-LAFS"; - }; + services.tahoe-lafs = { enable = mkEnableOption "Tahoe-LAFS"; }; }; config = mkIf config.services.tahoe-lafs.enable { systemd.user.services.tahoe-lafs = { - Unit = { - Description = "Tahoe-LAFS"; - }; + Unit = { Description = "Tahoe-LAFS"; }; - Service = { - ExecStart = "${pkgs.tahoelafs}/bin/tahoe run -C %h/.tahoe"; - }; + Service = { ExecStart = "${pkgs.tahoelafs}/bin/tahoe run -C %h/.tahoe"; }; }; }; } diff --git a/modules/services/taskwarrior-sync.nix b/modules/services/taskwarrior-sync.nix index 4179ac8a..d16c0681 100644 --- a/modules/services/taskwarrior-sync.nix +++ b/modules/services/taskwarrior-sync.nix @@ -6,9 +6,7 @@ let cfg = config.services.taskwarrior-sync; -in - -{ +in { meta.maintainers = with maintainers; [ minijackson pacien ]; options.services.taskwarrior-sync = { @@ -32,9 +30,7 @@ in config = mkIf cfg.enable { systemd.user.services.taskwarrior-sync = { - Unit = { - Description = "Taskwarrior sync"; - }; + Unit = { Description = "Taskwarrior sync"; }; Service = { CPUSchedulingPolicy = "idle"; IOSchedulingClass = "idle"; @@ -43,16 +39,12 @@ in }; systemd.user.timers.taskwarrior-sync = { - Unit = { - Description = "Taskwarrior periodic sync"; - }; + Unit = { Description = "Taskwarrior periodic sync"; }; Timer = { Unit = "taskwarrior-sync.service"; OnCalendar = cfg.frequency; }; - Install = { - WantedBy = [ "timers.target" ]; - }; + Install = { WantedBy = [ "timers.target" ]; }; }; }; } diff --git a/modules/services/udiskie.nix b/modules/services/udiskie.nix index c058a23d..2444d68f 100644 --- a/modules/services/udiskie.nix +++ b/modules/services/udiskie.nix @@ -6,19 +6,17 @@ let cfg = config.services.udiskie; - commandArgs = - concatStringsSep " " ( - map (opt: "-" + opt) [ - (if cfg.automount then "a" else "A") - (if cfg.notify then "n" else "N") - ({ always = "t"; auto = "s"; never = "T"; }.${cfg.tray}) - ] - ++ optional config.xsession.preferStatusNotifierItems "--appindicator" - ); + commandArgs = concatStringsSep " " (map (opt: "-" + opt) [ + (if cfg.automount then "a" else "A") + (if cfg.notify then "n" else "N") + ({ + always = "t"; + auto = "s"; + never = "T"; + }.${cfg.tray}) + ] ++ optional config.xsession.preferStatusNotifierItems "--appindicator"); -in - -{ +in { meta.maintainers = [ maintainers.rycee ]; imports = [ @@ -77,19 +75,17 @@ in config = mkIf config.services.udiskie.enable { systemd.user.services.udiskie = { - Unit = { - Description = "udiskie mount daemon"; - After = [ "graphical-session-pre.target" ]; - PartOf = [ "graphical-session.target" ]; - }; + Unit = { + Description = "udiskie mount daemon"; + After = [ "graphical-session-pre.target" ]; + PartOf = [ "graphical-session.target" ]; + }; - Service = { - ExecStart = "${pkgs.udiskie}/bin/udiskie -2 ${commandArgs}"; - }; + Service = { + ExecStart = "${pkgs.udiskie}/bin/udiskie -2 ${commandArgs}"; + }; - Install = { - WantedBy = [ "graphical-session.target" ]; - }; + Install = { WantedBy = [ "graphical-session.target" ]; }; }; }; } diff --git a/modules/services/unclutter.nix b/modules/services/unclutter.nix index 6b5ac866..5e760639 100644 --- a/modules/services/unclutter.nix +++ b/modules/services/unclutter.nix @@ -55,9 +55,7 @@ in { Restart = "always"; }; - Install = { - WantedBy = [ "graphical-session.target" ]; - }; + Install = { WantedBy = [ "graphical-session.target" ]; }; }; }; } diff --git a/modules/services/unison.nix b/modules/services/unison.nix index fc998e39..93c59e8f 100644 --- a/modules/services/unison.nix +++ b/modules/services/unison.nix @@ -7,10 +7,8 @@ let cfg = config.services.unison; pairOf = t: - let - list = types.addCheck (types.listOf t) (l: length l == 2); - in - list // { description = list.description + " of length 2"; }; + let list = types.addCheck (types.listOf t) (l: length l == 2); + in list // { description = list.description + " of length 2"; }; pairOptions = { options = { @@ -64,17 +62,14 @@ let serialiseArg = key: val: "-${key}=${escapeShellArg val}"; - serialiseArgs = args: - concatStringsSep " " (mapAttrsToList serialiseArg args); + serialiseArgs = args: concatStringsSep " " (mapAttrsToList serialiseArg args); makeDefs = gen: mapAttrs' - (name: pairCfg: nameValuePair "unison-pair-${name}" (gen name pairCfg)) - cfg.pairs; + (name: pairCfg: nameValuePair "unison-pair-${name}" (gen name pairCfg)) + cfg.pairs; -in - -{ +in { meta.maintainers = with maintainers; [ pacien ]; options.services.unison = { @@ -120,9 +115,7 @@ in ''; }; - Install = { - WantedBy = [ "default.target" ]; - }; + Install = { WantedBy = [ "default.target" ]; }; }); }; } diff --git a/modules/services/window-managers/awesome.nix b/modules/services/window-managers/awesome.nix index fe914864..d2e2903f 100644 --- a/modules/services/window-managers/awesome.nix +++ b/modules/services/window-managers/awesome.nix @@ -9,12 +9,9 @@ let getLuaPath = lib: dir: "${lib}/${dir}/lua/${pkgs.luaPackages.lua.luaversion}"; makeSearchPath = lib.concatMapStrings (path: " --search ${getLuaPath path "share"}" - + " --search ${getLuaPath path "lib"}" - ); + + " --search ${getLuaPath path "lib"}"); -in - -{ +in { options = { xsession.windowManager.awesome = { enable = mkEnableOption "Awesome window manager."; @@ -27,31 +24,29 @@ in }; luaModules = mkOption { - default = []; - type = types.listOf types.package; - description = '' - List of lua packages available for being - used in the Awesome configuration. - ''; - example = literalExample "[ luaPackages.oocairo ]"; + default = [ ]; + type = types.listOf types.package; + description = '' + List of lua packages available for being + used in the Awesome configuration. + ''; + example = literalExample "[ luaPackages.oocairo ]"; }; noArgb = mkOption { - default = false; - type = types.bool; - description = '' - Disable client transparency support, which can be greatly - detrimental to performance in some setups - ''; + default = false; + type = types.bool; + description = '' + Disable client transparency support, which can be greatly + detrimental to performance in some setups + ''; }; }; }; config = mkIf cfg.enable { home.packages = [ awesome ]; - xsession.windowManager.command = - "${awesome}/bin/awesome " - + optionalString cfg.noArgb "--no-argb " - + makeSearchPath cfg.luaModules; + xsession.windowManager.command = "${awesome}/bin/awesome " + + optionalString cfg.noArgb "--no-argb " + makeSearchPath cfg.luaModules; }; } diff --git a/modules/services/window-managers/bspwm/default.nix b/modules/services/window-managers/bspwm/default.nix index e9fa064a..9ea5adbc 100644 --- a/modules/services/window-managers/bspwm/default.nix +++ b/modules/services/window-managers/bspwm/default.nix @@ -13,59 +13,62 @@ let formatConfig = n: v: let formatList = x: - if isList x - then throw "can not convert 2-dimensional lists to bspwm format" - else formatValue x; + if isList x then + throw "can not convert 2-dimensional lists to bspwm format" + else + formatValue x; formatValue = v: - if isBool v then (if v then "true" else "false") - else if isList v then concatMapStringsSep ", " formatList v - else if isString v then "${lib.strings.escapeShellArg v}" - else toString v; - in - "bspc config ${n} ${formatValue v}"; + if isBool v then + (if v then "true" else "false") + else if isList v then + concatMapStringsSep ", " formatList v + else if isString v then + "${lib.strings.escapeShellArg v}" + else + toString v; + in "bspc config ${n} ${formatValue v}"; formatMonitors = n: v: "bspc monitor ${n} -d ${concatStringsSep " " v}"; formatRules = target: directiveOptions: let formatDirective = n: v: - if isBool v then (if v then "${camelToSnake n}=on" else "${camelToSnake n}=off") - else if (n == "desktop" || n == "node") then "${camelToSnake n}='${v}'" - else "${camelToSnake n}=${lib.strings.escapeShellArg v}"; + if isBool v then + (if v then "${camelToSnake n}=on" else "${camelToSnake n}=off") + else if (n == "desktop" || n == "node") then + "${camelToSnake n}='${v}'" + else + "${camelToSnake n}=${lib.strings.escapeShellArg v}"; - directives = filterAttrs (n: v: v != null && !(lib.strings.hasPrefix "_" n)) directiveOptions; - directivesStr = builtins.concatStringsSep " " (mapAttrsToList formatDirective directives); - in - "bspc rule -a ${target} ${directivesStr}"; + directives = + filterAttrs (n: v: v != null && !(lib.strings.hasPrefix "_" n)) + directiveOptions; + directivesStr = builtins.concatStringsSep " " + (mapAttrsToList formatDirective directives); + in "bspc rule -a ${target} ${directivesStr}"; formatStartupPrograms = map (s: "${s} &"); -in - -{ - options = import ./options.nix { inherit pkgs; inherit lib; }; +in { + options = import ./options.nix { + inherit pkgs; + inherit lib; + }; config = mkIf cfg.enable { home.packages = [ bspwm ]; - xsession.windowManager.command = - let - configFile = pkgs.writeShellScript "bspwmrc" ( - concatStringsSep "\n" ( - (mapAttrsToList formatMonitors cfg.monitors) - ++ (mapAttrsToList formatConfig cfg.settings) - ++ (mapAttrsToList formatRules cfg.rules) - ++ [ '' - # java gui fixes - export _JAVA_AWT_WM_NONREPARENTING=1 - bspc rule -a sun-awt-X11-XDialogPeer state=floating - '' ] - ++ [ cfg.extraConfig ] - ++ (formatStartupPrograms cfg.startupPrograms) - ) - ); - configCmdOpt = optionalString (cfg.settings != null) "-c ${configFile}"; - in - "${cfg.package}/bin/bspwm ${configCmdOpt}"; + xsession.windowManager.command = let + configFile = pkgs.writeShellScript "bspwmrc" (concatStringsSep "\n" + ((mapAttrsToList formatMonitors cfg.monitors) + ++ (mapAttrsToList formatConfig cfg.settings) + ++ (mapAttrsToList formatRules cfg.rules) ++ ['' + # java gui fixes + export _JAVA_AWT_WM_NONREPARENTING=1 + bspc rule -a sun-awt-X11-XDialogPeer state=floating + ''] ++ [ cfg.extraConfig ] + ++ (formatStartupPrograms cfg.startupPrograms))); + configCmdOpt = optionalString (cfg.settings != null) "-c ${configFile}"; + in "${cfg.package}/bin/bspwm ${configCmdOpt}"; }; } diff --git a/modules/services/window-managers/bspwm/options.nix b/modules/services/window-managers/bspwm/options.nix index 9d1955aa..58a58a1a 100644 --- a/modules/services/window-managers/bspwm/options.nix +++ b/modules/services/window-managers/bspwm/options.nix @@ -28,7 +28,8 @@ let }; state = mkOption { - type = types.nullOr (types.enum [ "tiled" "pseudo_tiled" "floating" "fullscreen" ]); + type = types.nullOr + (types.enum [ "tiled" "pseudo_tiled" "floating" "fullscreen" ]); default = null; description = "The state in which a new window should spawn."; example = "floating"; @@ -61,7 +62,7 @@ let hidden = mkOption { type = types.nullOr types.bool; default = null; - description = ''Whether the node should occupy any space.''; + description = "Whether the node should occupy any space."; example = true; }; @@ -141,9 +142,7 @@ let }; }; -in - -{ +in { xsession.windowManager.bspwm = { enable = mkEnableOption "bspwm window manager."; @@ -156,11 +155,10 @@ in }; settings = mkOption { - type = with types; let - primitive = either bool (either int (either float str)); - in - attrsOf (either primitive (listOf primitive)); - default = {}; + type = with types; + let primitive = either bool (either int (either float str)); + in attrsOf (either primitive (listOf primitive)); + default = { }; description = "bspwm configuration"; example = { "border_width" = 2; @@ -180,16 +178,14 @@ in monitors = mkOption { type = types.attrsOf (types.listOf types.str); - default = {}; + default = { }; description = "bspc monitor configurations"; - example = { - "HDMI-0" = [ "web" "terminal" "III" "IV" ]; - }; + example = { "HDMI-0" = [ "web" "terminal" "III" "IV" ]; }; }; rules = mkOption { type = types.attrsOf rule; - default = {}; + default = { }; description = "bspc rules"; example = literalExample '' { @@ -210,12 +206,9 @@ in startupPrograms = mkOption { type = types.listOf types.str; - default = []; + default = [ ]; description = "Programs to be executed during startup."; - example = [ - "numlockx on" - "tilda" - ]; + example = [ "numlockx on" "tilda" ]; }; }; } diff --git a/modules/services/window-managers/xmonad.nix b/modules/services/window-managers/xmonad.nix index 6b3426b9..7be03874 100644 --- a/modules/services/window-managers/xmonad.nix +++ b/modules/services/window-managers/xmonad.nix @@ -9,15 +9,13 @@ let xmonad = pkgs.xmonad-with-packages.override { ghcWithPackages = cfg.haskellPackages.ghcWithPackages; packages = self: - cfg.extraPackages self - ++ optionals cfg.enableContribAndExtras [ - self.xmonad-contrib self.xmonad-extras + cfg.extraPackages self ++ optionals cfg.enableContribAndExtras [ + self.xmonad-contrib + self.xmonad-extras ]; }; -in - -{ +in { options = { xsession.windowManager.xmonad = { enable = mkEnableOption "xmonad window manager"; @@ -35,7 +33,7 @@ in }; extraPackages = mkOption { - default = self: []; + default = self: [ ]; defaultText = "self: []"; example = literalExample '' haskellPackages: [ diff --git a/modules/services/xcape.nix b/modules/services/xcape.nix index 26115a93..f4f77caa 100644 --- a/modules/services/xcape.nix +++ b/modules/services/xcape.nix @@ -6,9 +6,7 @@ let cfg = config.services.xcape; -in - -{ +in { meta.maintainers = [ maintainers.nickhu ]; options = { @@ -27,8 +25,11 @@ in mapExpression = mkOption { type = types.attrsOf types.str; - default = {}; - example = { Shift_L = "Escape"; Control_L = "Control_L|O"; }; + default = { }; + example = { + Shift_L = "Escape"; + Control_L = "Control_L|O"; + }; description = '' The value has the grammar Key[|OtherKey]. @@ -63,14 +64,13 @@ in Type = "forking"; ExecStart = "${pkgs.xcape}/bin/xcape" + optionalString (cfg.timeout != null) " -t ${toString cfg.timeout}" - + optionalString (cfg.mapExpression != {}) - " -e '${builtins.concatStringsSep ";" - (attrsets.mapAttrsToList (n: v: "${n}=${v}") cfg.mapExpression)}'"; + + optionalString (cfg.mapExpression != { }) " -e '${ + builtins.concatStringsSep ";" + (attrsets.mapAttrsToList (n: v: "${n}=${v}") cfg.mapExpression) + }'"; }; - Install = { - WantedBy = [ "graphical-session.target" ]; - }; + Install = { WantedBy = [ "graphical-session.target" ]; }; }; }; } diff --git a/modules/services/xembed-sni-proxy.nix b/modules/services/xembed-sni-proxy.nix index d9e5ae78..ff63d108 100644 --- a/modules/services/xembed-sni-proxy.nix +++ b/modules/services/xembed-sni-proxy.nix @@ -6,9 +6,7 @@ let cfg = config.services.xembed-sni-proxy; -in - -{ +in { meta.maintainers = [ maintainers.rycee ]; options = { @@ -35,9 +33,7 @@ in PartOf = [ "graphical-session.target" ]; }; - Install = { - WantedBy = [ "graphical-session.target" ]; - }; + Install = { WantedBy = [ "graphical-session.target" ]; }; Service = { Environment = "PATH=${config.home.profileDirectory}/bin"; diff --git a/modules/services/xscreensaver.nix b/modules/services/xscreensaver.nix index 4001c294..73a365aa 100644 --- a/modules/services/xscreensaver.nix +++ b/modules/services/xscreensaver.nix @@ -6,9 +6,7 @@ let cfg = config.services.xscreensaver; -in - -{ +in { meta.maintainers = [ maintainers.rycee ]; options = { @@ -17,7 +15,7 @@ in settings = mkOption { type = with types; attrsOf (either bool (either int str)); - default = {}; + default = { }; example = { mode = "blank"; lock = false; @@ -38,19 +36,17 @@ in mapAttrs' (n: nameValuePair "xscreensaver.${n}") cfg.settings; systemd.user.services.xscreensaver = { - Unit = { - Description = "XScreenSaver"; - After = [ "graphical-session-pre.target" ]; - PartOf = [ "graphical-session.target" ]; - }; + Unit = { + Description = "XScreenSaver"; + After = [ "graphical-session-pre.target" ]; + PartOf = [ "graphical-session.target" ]; + }; - Service = { - ExecStart = "${pkgs.xscreensaver}/bin/xscreensaver -no-splash"; - }; + Service = { + ExecStart = "${pkgs.xscreensaver}/bin/xscreensaver -no-splash"; + }; - Install = { - WantedBy = [ "graphical-session.target" ]; - }; + Install = { WantedBy = [ "graphical-session.target" ]; }; }; }; } diff --git a/modules/services/xsuspender.nix b/modules/services/xsuspender.nix index 22a5ca53..2eb40f5d 100644 --- a/modules/services/xsuspender.nix +++ b/modules/services/xsuspender.nix @@ -61,7 +61,7 @@ let ''; type = types.nullOr types.str; default = null; - example = ''echo resuming ...''; + example = "echo resuming ..."; }; sendSignals = mkOption { @@ -74,7 +74,8 @@ let }; suspendSubtreePattern = mkOption { - description = "Also suspend descendant processes that match this regex."; + description = + "Also suspend descendant processes that match this regex."; type = types.nullOr types.str; default = null; }; @@ -105,9 +106,7 @@ let }; }; -in - -{ +in { meta.maintainers = [ maintainers.offline ]; options = { @@ -117,13 +116,13 @@ in defaults = mkOption { description = "XSuspender defaults."; type = xsuspenderOptions; - default = {}; + default = { }; }; rules = mkOption { description = "Attribute set of XSuspender rules."; type = types.attrsOf xsuspenderOptions; - default = {}; + default = { }; example = { Chromium = { suspendDelay = 10; @@ -147,9 +146,9 @@ in }; config = mkIf cfg.enable { - services.xsuspender.iniContent = - let - mkSection = values: filterAttrs (_: v: v != null) { + services.xsuspender.iniContent = let + mkSection = values: + filterAttrs (_: v: v != null) { match_wm_class_contains = values.matchWmClassContains; match_wm_class_group_contains = values.matchWmClassGroupContains; match_wm_name_contains = values.matchWmNameContains; @@ -164,25 +163,22 @@ in auto_suspend_on_battery = values.autoSuspendOnBattery; downclock_on_battery = values.downclockOnBattery; }; - in - { - Default = mkSection cfg.defaults; - } - // mapAttrs (_: mkSection) cfg.rules; + in { + Default = mkSection cfg.defaults; + } // mapAttrs (_: mkSection) cfg.rules; # To make the xsuspender tool available. home.packages = [ pkgs.xsuspender ]; - xdg.configFile."xsuspender.conf".text = generators.toINI {} cfg.iniContent; + xdg.configFile."xsuspender.conf".text = generators.toINI { } cfg.iniContent; systemd.user.services.xsuspender = { Unit = { Description = "XSuspender"; After = [ "graphical-session-pre.target" ]; PartOf = [ "graphical-session.target" ]; - X-Restart-Triggers = [ - "${config.xdg.configFile."xsuspender.conf".source}" - ]; + X-Restart-Triggers = + [ "${config.xdg.configFile."xsuspender.conf".source}" ]; }; Service = { @@ -190,9 +186,7 @@ in Environment = mkIf cfg.debug [ "G_MESSAGE_DEBUG=all" ]; }; - Install = { - WantedBy = [ "graphical-session.target" ]; - }; + Install = { WantedBy = [ "graphical-session.target" ]; }; }; }; } diff --git a/modules/xcursor.nix b/modules/xcursor.nix index 17158602..63ceef38 100644 --- a/modules/xcursor.nix +++ b/modules/xcursor.nix @@ -36,9 +36,7 @@ let }; }; -in - -{ +in { meta.maintainers = [ maintainers.league ]; options = { @@ -58,15 +56,17 @@ in config = mkIf (cfg != null) { - home.packages = [cfg.package]; + home.packages = [ cfg.package ]; xsession.initExtra = '' - ${pkgs.xorg.xsetroot}/bin/xsetroot -xcf ${cfg.package}/share/icons/${cfg.name}/cursors/${cfg.defaultCursor} ${toString cfg.size} + ${pkgs.xorg.xsetroot}/bin/xsetroot -xcf ${cfg.package}/share/icons/${cfg.name}/cursors/${cfg.defaultCursor} ${ + toString cfg.size + } ''; xresources.properties = { "Xcursor.theme" = cfg.name; - "Xcursor.size" = cfg.size; + "Xcursor.size" = cfg.size; }; gtk.gtk2.extraConfig = '' diff --git a/modules/xresources.nix b/modules/xresources.nix index 1e5ec854..b74d671b 100644 --- a/modules/xresources.nix +++ b/modules/xresources.nix @@ -9,20 +9,21 @@ let formatLine = n: v: let formatList = x: - if isList x - then throw "can not convert 2-dimensional lists to Xresources format" - else formatValue x; + if isList x then + throw "can not convert 2-dimensional lists to Xresources format" + else + formatValue x; formatValue = v: - if isBool v then (if v then "true" else "false") - else if isList v then concatMapStringsSep ", " formatList v - else toString v; - in - "${n}: ${formatValue v}"; + if isBool v then + (if v then "true" else "false") + else if isList v then + concatMapStringsSep ", " formatList v + else + toString v; + in "${n}: ${formatValue v}"; -in - -{ +in { meta.maintainers = [ maintainers.rycee ]; options = { @@ -72,11 +73,10 @@ in config = mkIf (cfg.properties != null || cfg.extraConfig != "") { home.file.".Xresources" = { - text = - concatStringsSep "\n" ([] - ++ optional (cfg.extraConfig != "") cfg.extraConfig - ++ optionals (cfg.properties != null) (mapAttrsToList formatLine cfg.properties) - ) + "\n"; + text = concatStringsSep "\n" ([ ] + ++ optional (cfg.extraConfig != "") cfg.extraConfig + ++ optionals (cfg.properties != null) + (mapAttrsToList formatLine cfg.properties)) + "\n"; onChange = '' if [[ -v DISPLAY ]] ; then $DRY_RUN_CMD ${pkgs.xorg.xrdb}/bin/xrdb -merge $HOME/.Xresources diff --git a/modules/xsession.nix b/modules/xsession.nix index e1cf9942..d32c2849 100644 --- a/modules/xsession.nix +++ b/modules/xsession.nix @@ -6,9 +6,7 @@ let cfg = config.xsession; -in - -{ +in { meta.maintainers = [ maintainers.rycee ]; options = { @@ -89,30 +87,25 @@ in systemd.user = { services = mkIf (config.home.keyboard != null) { - setxkbmap = { + setxkbmap = { Unit = { Description = "Set up keyboard in X"; After = [ "graphical-session-pre.target" ]; PartOf = [ "graphical-session.target" ]; }; - Install = { - WantedBy = [ "graphical-session.target" ]; - }; + Install = { WantedBy = [ "graphical-session.target" ]; }; Service = { Type = "oneshot"; RemainAfterExit = true; - ExecStart = - with config.home.keyboard; + ExecStart = with config.home.keyboard; let - args = - optional (layout != null) "-layout '${layout}'" + args = optional (layout != null) "-layout '${layout}'" ++ optional (variant != null) "-variant '${variant}'" ++ optional (model != null) "-model '${model}'" ++ map (v: "-option '${v}'") options; - in - "${pkgs.xorg.setxkbmap}/bin/setxkbmap ${toString args}"; + in "${pkgs.xorg.setxkbmap}/bin/setxkbmap ${toString args}"; }; }; }; @@ -128,25 +121,24 @@ in }; home.file.".xprofile".text = '' - . "${config.home.profileDirectory}/etc/profile.d/hm-session-vars.sh" + . "${config.home.profileDirectory}/etc/profile.d/hm-session-vars.sh" - if [ -e "$HOME/.profile" ]; then - . "$HOME/.profile" - fi + if [ -e "$HOME/.profile" ]; then + . "$HOME/.profile" + fi - # If there are any running services from a previous session. - # Need to run this in xprofile because the NixOS xsession - # script starts up graphical-session.target. - systemctl --user stop graphical-session.target graphical-session-pre.target + # If there are any running services from a previous session. + # Need to run this in xprofile because the NixOS xsession + # script starts up graphical-session.target. + systemctl --user stop graphical-session.target graphical-session-pre.target - ${optionalString (cfg.importedVariables != []) ( - "systemctl --user import-environment " - + toString (unique cfg.importedVariables) - )} + ${optionalString (cfg.importedVariables != [ ]) + ("systemctl --user import-environment " + + toString (unique cfg.importedVariables))} - ${cfg.profileExtra} + ${cfg.profileExtra} - export HM_XPROFILE_SOURCED=1 + export HM_XPROFILE_SOURCED=1 ''; home.file.${cfg.scriptPath} = { diff --git a/nixos/default.nix b/nixos/default.nix index 6b7d559a..f4e417bd 100644 --- a/nixos/default.nix +++ b/nixos/default.nix @@ -10,8 +10,8 @@ let hmModule = types.submoduleWith { specialArgs = { lib = extendedLib; }; - modules = [( - {name, ...}: { + modules = [ + ({ name, ... }: { imports = import ../modules/modules.nix { inherit pkgs; lib = extendedLib; @@ -23,27 +23,21 @@ let # The per-user directory inside /etc/profiles is not known by # fontconfig by default. - fonts.fontconfig.enable = - cfg.useUserPackages && config.fonts.fontconfig.enable; + fonts.fontconfig.enable = cfg.useUserPackages + && config.fonts.fontconfig.enable; home.username = config.users.users.${name}.name; home.homeDirectory = config.users.users.${name}.home; }; - } - )]; + }) + ]; }; - serviceEnvironment = - optionalAttrs (cfg.backupFileExtension != null) { - HOME_MANAGER_BACKUP_EXT = cfg.backupFileExtension; - } - // optionalAttrs cfg.verbose { - VERBOSE = "1"; - }; + serviceEnvironment = optionalAttrs (cfg.backupFileExtension != null) { + HOME_MANAGER_BACKUP_EXT = cfg.backupFileExtension; + } // optionalAttrs cfg.verbose { VERBOSE = "1"; }; -in - -{ +in { options = { home-manager = { useUserPackages = mkEnableOption '' @@ -65,7 +59,7 @@ in users = mkOption { type = types.attrsOf hmModule; - default = {}; + default = { }; description = '' Per-user Home Manager configuration. ''; @@ -73,57 +67,44 @@ in }; }; - config = mkIf (cfg.users != {}) { - warnings = - flatten (flip mapAttrsToList cfg.users (user: config: - flip map config.warnings (warning: - "${user} profile: ${warning}" - ) - )); + config = mkIf (cfg.users != { }) { + warnings = flatten (flip mapAttrsToList cfg.users (user: config: + flip map config.warnings (warning: "${user} profile: ${warning}"))); - assertions = - flatten (flip mapAttrsToList cfg.users (user: config: - flip map config.assertions (assertion: - { - inherit (assertion) assertion; - message = "${user} profile: ${assertion.message}"; - } - ) - )); + assertions = flatten (flip mapAttrsToList cfg.users (user: config: + flip map config.assertions (assertion: { + inherit (assertion) assertion; + message = "${user} profile: ${assertion.message}"; + }))); - users.users = mkIf cfg.useUserPackages ( - mapAttrs (username: usercfg: { - packages = usercfg.home.packages; - }) cfg.users - ); + users.users = mkIf cfg.useUserPackages + (mapAttrs (username: usercfg: { packages = usercfg.home.packages; }) + cfg.users); systemd.services = mapAttrs' (_: usercfg: - let - username = usercfg.home.username; - in - nameValuePair ("home-manager-${utils.escapeSystemdPath username}") { - description = "Home Manager environment for ${username}"; - wantedBy = [ "multi-user.target" ]; - wants = [ "nix-daemon.socket" ]; - after = [ "nix-daemon.socket" ]; + let username = usercfg.home.username; + in nameValuePair ("home-manager-${utils.escapeSystemdPath username}") { + description = "Home Manager environment for ${username}"; + wantedBy = [ "multi-user.target" ]; + wants = [ "nix-daemon.socket" ]; + after = [ "nix-daemon.socket" ]; - environment = serviceEnvironment; + environment = serviceEnvironment; - serviceConfig = { - User = usercfg.home.username; - Type = "oneshot"; - RemainAfterExit = "yes"; - SyslogIdentifier = "hm-activate-${username}"; + serviceConfig = { + User = usercfg.home.username; + Type = "oneshot"; + RemainAfterExit = "yes"; + SyslogIdentifier = "hm-activate-${username}"; - # The activation script is run by a login shell to make sure - # that the user is given a sane Nix environment. - ExecStart = pkgs.writeScript "activate-${username}" '' - #! ${pkgs.runtimeShell} -el - echo Activating home-manager configuration for ${username} - exec ${usercfg.home.activationPackage}/activate - ''; - }; - } - ) cfg.users; + # The activation script is run by a login shell to make sure + # that the user is given a sane Nix environment. + ExecStart = pkgs.writeScript "activate-${username}" '' + #! ${pkgs.runtimeShell} -el + echo Activating home-manager configuration for ${username} + exec ${usercfg.home.activationPackage}/activate + ''; + }; + }) cfg.users; }; } diff --git a/overlay.nix b/overlay.nix index fa779fe0..35136cc8 100644 --- a/overlay.nix +++ b/overlay.nix @@ -1,5 +1,3 @@ self: super: { - home-manager = super.callPackage ./home-manager { - path = toString ./.; - }; + home-manager = super.callPackage ./home-manager { path = toString ./.; }; } diff --git a/tests/lib/types/dag-merge.nix b/tests/lib/types/dag-merge.nix index 058530cc..138a0b64 100644 --- a/tests/lib/types/dag-merge.nix +++ b/tests/lib/types/dag-merge.nix @@ -6,25 +6,19 @@ let dag = config.lib.dag; - result = - let - sorted = dag.topoSort config.tested.dag; - data = map (e: "${e.name}:${e.data}") sorted.result; - in - concatStringsSep "\n" data + "\n"; + result = let + sorted = dag.topoSort config.tested.dag; + data = map (e: "${e.name}:${e.data}") sorted.result; + in concatStringsSep "\n" data + "\n"; -in - -{ - options.tested.dag = mkOption { - type = hm.types.dagOf types.str; - }; +in { + options.tested.dag = mkOption { type = hm.types.dagOf types.str; }; config = { tested = mkMerge [ { dag.after = "after"; } - { dag.before = dag.entryBefore ["after"] "before"; } - { dag.between = dag.entryBetween ["after"] ["before"] "between"; } + { dag.before = dag.entryBefore [ "after" ] "before"; } + { dag.between = dag.entryBetween [ "after" ] [ "before" ] "between"; } ]; home.file."result.txt".text = result; diff --git a/tests/lib/types/list-or-dag-merge.nix b/tests/lib/types/list-or-dag-merge.nix index ac592ef3..08216140 100644 --- a/tests/lib/types/list-or-dag-merge.nix +++ b/tests/lib/types/list-or-dag-merge.nix @@ -6,27 +6,21 @@ let dag = config.lib.dag; - result = - let - sorted = dag.topoSort config.tested.dag; - data = map (e: "${e.name}:${e.data}") sorted.result; - in - concatStringsSep "\n" data + "\n"; + result = let + sorted = dag.topoSort config.tested.dag; + data = map (e: "${e.name}:${e.data}") sorted.result; + in concatStringsSep "\n" data + "\n"; -in - -{ - options.tested.dag = mkOption { - type = hm.types.listOrDagOf types.str; - }; +in { + options.tested.dag = mkOption { type = hm.types.listOrDagOf types.str; }; config = { tested = mkMerge [ { dag = [ "k" "l" ]; } { dag = [ "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" ]; } { dag.after = "after"; } - { dag.before = dag.entryBefore ["after"] "before"; } - { dag.between = dag.entryBetween ["after"] ["before"] "between"; } + { dag.before = dag.entryBefore [ "after" ] "before"; } + { dag.between = dag.entryBetween [ "after" ] [ "before" ] "between"; } ]; home.file."result.txt".text = result; diff --git a/tests/modules/files/hidden-source.nix b/tests/modules/files/hidden-source.nix index a8635398..8169fedc 100644 --- a/tests/modules/files/hidden-source.nix +++ b/tests/modules/files/hidden-source.nix @@ -9,7 +9,10 @@ with lib; nmt.script = '' assertFileExists home-files/.hidden; assertFileContent home-files/.hidden ${ - builtins.path { path = ./.hidden; name = "expected"; } + builtins.path { + path = ./.hidden; + name = "expected"; + } } ''; }; diff --git a/tests/modules/misc/pam/default.nix b/tests/modules/misc/pam/default.nix index 8a64f831..81c435e7 100644 --- a/tests/modules/misc/pam/default.nix +++ b/tests/modules/misc/pam/default.nix @@ -1,3 +1 @@ -{ - pam-session-variables = ./session-variables.nix; -} +{ pam-session-variables = ./session-variables.nix; } diff --git a/tests/modules/misc/xdg/default.nix b/tests/modules/misc/xdg/default.nix index 5772becd..e5d01575 100644 --- a/tests/modules/misc/xdg/default.nix +++ b/tests/modules/misc/xdg/default.nix @@ -1,3 +1 @@ -{ - xdg-mime-apps-basics = ./mime-apps-basics.nix; -} +{ xdg-mime-apps-basics = ./mime-apps-basics.nix; } diff --git a/tests/modules/misc/xdg/mime-apps-basics.nix b/tests/modules/misc/xdg/mime-apps-basics.nix index 2c320710..e181e820 100644 --- a/tests/modules/misc/xdg/mime-apps-basics.nix +++ b/tests/modules/misc/xdg/mime-apps-basics.nix @@ -11,9 +11,7 @@ with lib; "mimetype1" = [ "foo1.desktop" "foo2.desktop" "foo3.desktop" ]; "mimetype2" = "foo4.desktop"; }; - removed = { - mimetype1 = "foo5.desktop"; - }; + removed = { mimetype1 = "foo5.desktop"; }; }; defaultApplications = { "mimetype1" = [ "default1.desktop" "default2.desktop" ]; diff --git a/tests/modules/misc/xsession/basic.nix b/tests/modules/misc/xsession/basic.nix index d86b57dd..39df6362 100644 --- a/tests/modules/misc/xsession/basic.nix +++ b/tests/modules/misc/xsession/basic.nix @@ -17,11 +17,9 @@ with lib; nixpkgs.overlays = [ (self: super: { xorg = super.xorg // { - setxkbmap = super.xorg.setxkbmap // { - outPath = "@setxkbmap@"; - }; + setxkbmap = super.xorg.setxkbmap // { outPath = "@setxkbmap@"; }; }; - }) + }) ]; nmt.script = '' diff --git a/tests/modules/misc/xsession/keyboard-without-layout.nix b/tests/modules/misc/xsession/keyboard-without-layout.nix index 5f89a29e..015efe61 100644 --- a/tests/modules/misc/xsession/keyboard-without-layout.nix +++ b/tests/modules/misc/xsession/keyboard-without-layout.nix @@ -8,9 +8,7 @@ with lib; home.homeDirectory = "/test-home"; - home.keyboard = { - options = [ "ctrl:nocaps" "altwin:no_win" ]; - }; + home.keyboard = { options = [ "ctrl:nocaps" "altwin:no_win" ]; }; xsession = { enable = true; @@ -23,11 +21,9 @@ with lib; nixpkgs.overlays = [ (self: super: { xorg = super.xorg // { - setxkbmap = super.xorg.setxkbmap // { - outPath = "@setxkbmap@"; - }; + setxkbmap = super.xorg.setxkbmap // { outPath = "@setxkbmap@"; }; }; - }) + }) ]; nmt.script = '' diff --git a/tests/modules/programs/alacritty/empty-settings.nix b/tests/modules/programs/alacritty/empty-settings.nix index 5fd2792a..65470473 100644 --- a/tests/modules/programs/alacritty/empty-settings.nix +++ b/tests/modules/programs/alacritty/empty-settings.nix @@ -7,9 +7,7 @@ with lib; programs.alacritty.enable = true; nixpkgs.overlays = [ - (self: super: { - alacritty = pkgs.writeScriptBin "dummy-alacritty" ""; - }) + (self: super: { alacritty = pkgs.writeScriptBin "dummy-alacritty" ""; }) ]; nmt.script = '' diff --git a/tests/modules/programs/alacritty/example-settings.nix b/tests/modules/programs/alacritty/example-settings.nix index 0caa8025..46be1064 100644 --- a/tests/modules/programs/alacritty/example-settings.nix +++ b/tests/modules/programs/alacritty/example-settings.nix @@ -13,20 +13,16 @@ with lib; columns = 200; }; - key_bindings = [ - { - key = "K"; - mods = "Control"; - chars = "\\x0c"; - } - ]; + key_bindings = [{ + key = "K"; + mods = "Control"; + chars = "\\x0c"; + }]; }; }; nixpkgs.overlays = [ - (self: super: { - alacritty = pkgs.writeScriptBin "dummy-alacritty" ""; - }) + (self: super: { alacritty = pkgs.writeScriptBin "dummy-alacritty" ""; }) ]; nmt.script = '' diff --git a/tests/modules/programs/browserpass/browserpass.nix b/tests/modules/programs/browserpass/browserpass.nix index 229392e1..9189a445 100644 --- a/tests/modules/programs/browserpass/browserpass.nix +++ b/tests/modules/programs/browserpass/browserpass.nix @@ -6,30 +6,24 @@ with lib; config = { programs.browserpass = { enable = true; - browsers = [ - "chrome" - "chromium" - "firefox" - "vivaldi" - ]; + browsers = [ "chrome" "chromium" "firefox" "vivaldi" ]; }; - nmt.script = - if pkgs.stdenv.hostPlatform.isDarwin then '' - for dir in "Google/Chrome" "Chromium" "Mozilla" "Vivaldi"; do - assertFileExists "home-files/Library/Application Support/$dir/NativeMessagingHosts/com.github.browserpass.native.json" - done + nmt.script = if pkgs.stdenv.hostPlatform.isDarwin then '' + for dir in "Google/Chrome" "Chromium" "Mozilla" "Vivaldi"; do + assertFileExists "home-files/Library/Application Support/$dir/NativeMessagingHosts/com.github.browserpass.native.json" + done - for dir in "Google/Chrome" "Chromium" "Vivaldi"; do - assertFileExists "home-files/Library/Application Support/$dir/policies/managed/com.github.browserpass.native.json" - done - '' else '' - for dir in "google-chrome" "chromium" "vivaldi"; do - assertFileExists "home-files/.config/$dir/NativeMessagingHosts/com.github.browserpass.native.json" - assertFileExists "home-files/.config/$dir/policies/managed/com.github.browserpass.native.json" - done + for dir in "Google/Chrome" "Chromium" "Vivaldi"; do + assertFileExists "home-files/Library/Application Support/$dir/policies/managed/com.github.browserpass.native.json" + done + '' else '' + for dir in "google-chrome" "chromium" "vivaldi"; do + assertFileExists "home-files/.config/$dir/NativeMessagingHosts/com.github.browserpass.native.json" + assertFileExists "home-files/.config/$dir/policies/managed/com.github.browserpass.native.json" + done - assertFileExists "home-files/.mozilla/native-messaging-hosts/com.github.browserpass.native.json" - ''; + assertFileExists "home-files/.mozilla/native-messaging-hosts/com.github.browserpass.native.json" + ''; }; } diff --git a/tests/modules/programs/browserpass/default.nix b/tests/modules/programs/browserpass/default.nix index 478530f7..fa40ddca 100644 --- a/tests/modules/programs/browserpass/default.nix +++ b/tests/modules/programs/browserpass/default.nix @@ -1,3 +1 @@ -{ - browserpass = ./browserpass.nix; -} +{ browserpass = ./browserpass.nix; } diff --git a/tests/modules/programs/firefox/profile-settings.nix b/tests/modules/programs/firefox/profile-settings.nix index f1e9be92..8c5fb4ec 100644 --- a/tests/modules/programs/firefox/profile-settings.nix +++ b/tests/modules/programs/firefox/profile-settings.nix @@ -6,26 +6,20 @@ with lib; config = { programs.firefox = { enable = true; - profiles.test.settings = { - "general.smoothScroll" = false; - }; + profiles.test.settings = { "general.smoothScroll" = false; }; }; nixpkgs.overlays = [ (self: super: { - firefox-unwrapped = - pkgs.runCommand - "firefox-0" - { - meta.description = "I pretend to be Firefox"; - preferLocalBuild = true; - allowSubstitutes = false; - } - '' - mkdir -p "$out/bin" - touch "$out/bin/firefox" - chmod 755 "$out/bin/firefox" - ''; + firefox-unwrapped = pkgs.runCommand "firefox-0" { + meta.description = "I pretend to be Firefox"; + preferLocalBuild = true; + allowSubstitutes = false; + } '' + mkdir -p "$out/bin" + touch "$out/bin/firefox" + chmod 755 "$out/bin/firefox" + ''; }) ]; diff --git a/tests/modules/programs/firefox/state-version-19_09.nix b/tests/modules/programs/firefox/state-version-19_09.nix index 4d65d7a7..27dc867a 100644 --- a/tests/modules/programs/firefox/state-version-19_09.nix +++ b/tests/modules/programs/firefox/state-version-19_09.nix @@ -10,19 +10,15 @@ with lib; nixpkgs.overlays = [ (self: super: { - firefox-unwrapped = - pkgs.runCommand - "firefox-0" - { - meta.description = "I pretend to be Firefox"; - preferLocalBuild = true; - allowSubstitutes = false; - } - '' - mkdir -p "$out/bin" - touch "$out/bin/firefox" - chmod 755 "$out/bin/firefox" - ''; + firefox-unwrapped = pkgs.runCommand "firefox-0" { + meta.description = "I pretend to be Firefox"; + preferLocalBuild = true; + allowSubstitutes = false; + } '' + mkdir -p "$out/bin" + touch "$out/bin/firefox" + chmod 755 "$out/bin/firefox" + ''; }) ]; diff --git a/tests/modules/programs/getmail/default.nix b/tests/modules/programs/getmail/default.nix index a0d79e7d..cb789a90 100644 --- a/tests/modules/programs/getmail/default.nix +++ b/tests/modules/programs/getmail/default.nix @@ -1,3 +1 @@ -{ - getmail = ./getmail.nix; -} +{ getmail = ./getmail.nix; } diff --git a/tests/modules/programs/getmail/getmail.nix b/tests/modules/programs/getmail/getmail.nix index d72a8d65..fe10b98f 100644 --- a/tests/modules/programs/getmail/getmail.nix +++ b/tests/modules/programs/getmail/getmail.nix @@ -13,7 +13,7 @@ with lib; "hm@example.com" = { getmail = { enable = true; - mailboxes = ["INBOX" "Sent" "Work"]; + mailboxes = [ "INBOX" "Sent" "Work" ]; destinationCommand = "/bin/maildrop"; delete = false; }; @@ -23,7 +23,9 @@ with lib; nmt.script = '' assertFileExists home-files/.getmail/getmailhm@example.com - assertFileContent home-files/.getmail/getmailhm@example.com ${./getmail-expected.conf} + assertFileContent home-files/.getmail/getmailhm@example.com ${ + ./getmail-expected.conf + } ''; }; } diff --git a/tests/modules/programs/git/git-with-email.nix b/tests/modules/programs/git/git-with-email.nix index 35092198..ca577eef 100644 --- a/tests/modules/programs/git/git-with-email.nix +++ b/tests/modules/programs/git/git-with-email.nix @@ -25,7 +25,9 @@ with lib; } assertFileExists home-files/.config/git/config - assertFileContent home-files/.config/git/config ${./git-with-email-expected.conf} + assertFileContent home-files/.config/git/config ${ + ./git-with-email-expected.conf + } assertGitConfig "sendemail.hm@example.com.from" "hm@example.com" assertGitConfig "sendemail.hm-account.from" "hm@example.org" diff --git a/tests/modules/programs/git/git.nix b/tests/modules/programs/git/git.nix index 3a84bf77..7c0bf52d 100644 --- a/tests/modules/programs/git/git.nix +++ b/tests/modules/programs/git/git.nix @@ -11,15 +11,15 @@ let }; }; - substituteExpected = path: pkgs.substituteAll { - src = path; + substituteExpected = path: + pkgs.substituteAll { + src = path; - git_include_path = pkgs.writeText "contents" (generators.toINI {} gitInclude); - }; + git_include_path = + pkgs.writeText "contents" (generators.toINI { } gitInclude); + }; -in - -{ +in { config = { programs.git = mkMerge [ { @@ -32,7 +32,7 @@ in extraConfig = { extra = { name = "value"; - multiple = [1]; + multiple = [ 1 ]; }; }; ignores = [ "*~" "*.swp" ]; @@ -62,14 +62,16 @@ in extraConfig."extra \"backcompat.with.dots\"".previously = "worked"; extraConfig.extra.boolean = true; extraConfig.extra.integer = 38; - extraConfig.extra.multiple = [2]; + extraConfig.extra.multiple = [ 2 ]; extraConfig.extra.subsection.value = "test"; } ]; nmt.script = '' assertFileExists home-files/.config/git/config - assertFileContent home-files/.config/git/config ${substituteExpected ./git-expected.conf} + assertFileContent home-files/.config/git/config ${ + substituteExpected ./git-expected.conf + } ''; }; } diff --git a/tests/modules/programs/gpg/default.nix b/tests/modules/programs/gpg/default.nix index 5cb24817..7fed2cdc 100644 --- a/tests/modules/programs/gpg/default.nix +++ b/tests/modules/programs/gpg/default.nix @@ -1,3 +1 @@ -{ - gpg-override-defaults = ./override-defaults.nix; -} +{ gpg-override-defaults = ./override-defaults.nix; } diff --git a/tests/modules/programs/mbsync/default.nix b/tests/modules/programs/mbsync/default.nix index c31e0dc7..9c369fa5 100644 --- a/tests/modules/programs/mbsync/default.nix +++ b/tests/modules/programs/mbsync/default.nix @@ -1,3 +1 @@ -{ - mbsync = ./mbsync.nix; -} +{ mbsync = ./mbsync.nix; } diff --git a/tests/modules/programs/mbsync/mbsync.nix b/tests/modules/programs/mbsync/mbsync.nix index 072a7271..03a54c17 100644 --- a/tests/modules/programs/mbsync/mbsync.nix +++ b/tests/modules/programs/mbsync/mbsync.nix @@ -18,13 +18,9 @@ with lib; }; accounts.email.accounts = { - "hm@example.com".mbsync = { - enable = true; - }; + "hm@example.com".mbsync = { enable = true; }; - hm-account.mbsync = { - enable = true; - }; + hm-account.mbsync = { enable = true; }; }; nmt.script = '' diff --git a/tests/modules/programs/neomutt/default.nix b/tests/modules/programs/neomutt/default.nix index 3c778e9e..289f2705 100644 --- a/tests/modules/programs/neomutt/default.nix +++ b/tests/modules/programs/neomutt/default.nix @@ -1,3 +1 @@ -{ - neomutt-simple = ./neomutt.nix; -} +{ neomutt-simple = ./neomutt.nix; } diff --git a/tests/modules/programs/neomutt/neomutt.nix b/tests/modules/programs/neomutt/neomutt.nix index d7ffadd8..91cb9dca 100644 --- a/tests/modules/programs/neomutt/neomutt.nix +++ b/tests/modules/programs/neomutt/neomutt.nix @@ -30,17 +30,18 @@ with lib; vimKeys = false; }; - nixpkgs.overlays = [ - (self: super: { - neomutt = pkgs.writeScriptBin "dummy-neomutt" ""; - }) - ]; + nixpkgs.overlays = + [ (self: super: { neomutt = pkgs.writeScriptBin "dummy-neomutt" ""; }) ]; nmt.script = '' assertFileExists home-files/.config/neomutt/neomuttrc assertFileExists home-files/.config/neomutt/hm@example.com - assertFileContent home-files/.config/neomutt/neomuttrc ${./neomutt-expected.conf} - assertFileContent home-files/.config/neomutt/hm@example.com ${./hm-example.com-expected} + assertFileContent home-files/.config/neomutt/neomuttrc ${ + ./neomutt-expected.conf + } + assertFileContent home-files/.config/neomutt/hm@example.com ${ + ./hm-example.com-expected + } ''; }; } diff --git a/tests/modules/programs/newsboat/default.nix b/tests/modules/programs/newsboat/default.nix index a9b15a44..27f523a6 100644 --- a/tests/modules/programs/newsboat/default.nix +++ b/tests/modules/programs/newsboat/default.nix @@ -1,3 +1 @@ -{ - newsboat-basics = ./newsboat-basics.nix; -} +{ newsboat-basics = ./newsboat-basics.nix; } diff --git a/tests/modules/programs/newsboat/newsboat-basics.nix b/tests/modules/programs/newsboat/newsboat-basics.nix index 49a54f6d..e6eb4151 100644 --- a/tests/modules/programs/newsboat/newsboat-basics.nix +++ b/tests/modules/programs/newsboat/newsboat-basics.nix @@ -14,20 +14,14 @@ with lib; title = "Cool feed"; } - { - url = "http://example.org/feed2.xml"; - } + { url = "http://example.org/feed2.xml"; } ]; - queries = { - "foo" = "rssurl =~ \"example.com\""; - }; + queries = { "foo" = ''rssurl =~ "example.com"''; }; }; nixpkgs.overlays = [ - (self: super: { - newsboat = pkgs.writeScriptBin "dummy-newsboat" ""; - }) + (self: super: { newsboat = pkgs.writeScriptBin "dummy-newsboat" ""; }) ]; nmt.script = '' diff --git a/tests/modules/programs/readline/default.nix b/tests/modules/programs/readline/default.nix index 767d88bf..c95745d1 100644 --- a/tests/modules/programs/readline/default.nix +++ b/tests/modules/programs/readline/default.nix @@ -1,3 +1 @@ -{ - readline-using-all-options = ./using-all-options.nix; -} +{ readline-using-all-options = ./using-all-options.nix; } diff --git a/tests/modules/programs/readline/using-all-options.nix b/tests/modules/programs/readline/using-all-options.nix index f5011767..104d08b8 100644 --- a/tests/modules/programs/readline/using-all-options.nix +++ b/tests/modules/programs/readline/using-all-options.nix @@ -7,9 +7,7 @@ with lib; programs.readline = { enable = true; - bindings = { - "\C-h" = "backward-kill-word"; - }; + bindings = { "C-h" = "backward-kill-word"; }; variables = { bell-style = "audible"; diff --git a/tests/modules/programs/rofi/assert-on-both-theme-and-colors.nix b/tests/modules/programs/rofi/assert-on-both-theme-and-colors.nix index 2558a258..0f9cfc39 100644 --- a/tests/modules/programs/rofi/assert-on-both-theme-and-colors.nix +++ b/tests/modules/programs/rofi/assert-on-both-theme-and-colors.nix @@ -13,16 +13,12 @@ with lib; border = "border"; separator = "separator"; }; - rows = { - }; + rows = { }; }; }; - home.file.result.text = - builtins.toJSON - (map (a: a.message) - (filter (a: !a.assertion) - config.assertions)); + home.file.result.text = builtins.toJSON + (map (a: a.message) (filter (a: !a.assertion) config.assertions)); nmt.script = '' assertFileContent \ diff --git a/tests/modules/programs/ssh/default-config.nix b/tests/modules/programs/ssh/default-config.nix index 266bc9d1..6d7e5508 100644 --- a/tests/modules/programs/ssh/default-config.nix +++ b/tests/modules/programs/ssh/default-config.nix @@ -4,15 +4,10 @@ with lib; { config = { - programs.ssh = { - enable = true; - }; + programs.ssh = { enable = true; }; - home.file.assertions.text = - builtins.toJSON - (map (a: a.message) - (filter (a: !a.assertion) - config.assertions)); + home.file.assertions.text = builtins.toJSON + (map (a: a.message) (filter (a: !a.assertion) config.assertions)); nmt.script = '' assertFileExists home-files/.ssh/config diff --git a/tests/modules/programs/ssh/forwards-dynamic-bind-path-with-port-asserts.nix b/tests/modules/programs/ssh/forwards-dynamic-bind-path-with-port-asserts.nix index 2e9082de..cf2efe5a 100644 --- a/tests/modules/programs/ssh/forwards-dynamic-bind-path-with-port-asserts.nix +++ b/tests/modules/programs/ssh/forwards-dynamic-bind-path-with-port-asserts.nix @@ -8,25 +8,22 @@ with lib; enable = true; matchBlocks = { dynamicBindPathWithPort = { - dynamicForwards = [ - { - # Error: - address = "/run/user/1000/gnupg/S.gpg-agent.extra"; - port = 3000; - } - ]; + dynamicForwards = [{ + # Error: + address = "/run/user/1000/gnupg/S.gpg-agent.extra"; + port = 3000; + }]; }; }; }; - home.file.result.text = - builtins.toJSON - (map (a: a.message) - (filter (a: !a.assertion) - config.assertions)); + home.file.result.text = builtins.toJSON + (map (a: a.message) (filter (a: !a.assertion) config.assertions)); nmt.script = '' - assertFileContent home-files/result ${./forwards-paths-with-ports-error.json} + assertFileContent home-files/result ${ + ./forwards-paths-with-ports-error.json + } ''; }; } diff --git a/tests/modules/programs/ssh/forwards-dynamic-valid-bind-no-asserts.nix b/tests/modules/programs/ssh/forwards-dynamic-valid-bind-no-asserts.nix index 15ab59e8..d0c3a732 100644 --- a/tests/modules/programs/ssh/forwards-dynamic-valid-bind-no-asserts.nix +++ b/tests/modules/programs/ssh/forwards-dynamic-valid-bind-no-asserts.nix @@ -8,31 +8,24 @@ with lib; enable = true; matchBlocks = { dynamicBindPathNoPort = { - dynamicForwards = [ - { - # OK: - address = "/run/user/1000/gnupg/S.gpg-agent.extra"; - } - ]; + dynamicForwards = [{ + # OK: + address = "/run/user/1000/gnupg/S.gpg-agent.extra"; + }]; }; dynamicBindAddressWithPort = { - dynamicForwards = [ - { - # OK: - address = "127.0.0.1"; - port = 3000; - } - ]; + dynamicForwards = [{ + # OK: + address = "127.0.0.1"; + port = 3000; + }]; }; }; }; - home.file.result.text = - builtins.toJSON - (map (a: a.message) - (filter (a: !a.assertion) - config.assertions)); + home.file.result.text = builtins.toJSON + (map (a: a.message) (filter (a: !a.assertion) config.assertions)); nmt.script = '' assertFileExists home-files/.ssh/config diff --git a/tests/modules/programs/ssh/forwards-local-bind-path-with-port-asserts.nix b/tests/modules/programs/ssh/forwards-local-bind-path-with-port-asserts.nix index c05cba82..f9d8e2da 100644 --- a/tests/modules/programs/ssh/forwards-local-bind-path-with-port-asserts.nix +++ b/tests/modules/programs/ssh/forwards-local-bind-path-with-port-asserts.nix @@ -8,29 +8,26 @@ with lib; enable = true; matchBlocks = { localBindPathWithPort = { - localForwards = [ - { - # OK: - host.address = "127.0.0.1"; - host.port = 3000; + localForwards = [{ + # OK: + host.address = "127.0.0.1"; + host.port = 3000; - # Error: - bind.address = "/run/user/1000/gnupg/S.gpg-agent.extra"; - bind.port = 3000; - } - ]; + # Error: + bind.address = "/run/user/1000/gnupg/S.gpg-agent.extra"; + bind.port = 3000; + }]; }; }; }; - home.file.result.text = - builtins.toJSON - (map (a: a.message) - (filter (a: !a.assertion) - config.assertions)); + home.file.result.text = builtins.toJSON + (map (a: a.message) (filter (a: !a.assertion) config.assertions)); nmt.script = '' - assertFileContent home-files/result ${./forwards-paths-with-ports-error.json} + assertFileContent home-files/result ${ + ./forwards-paths-with-ports-error.json + } ''; }; } diff --git a/tests/modules/programs/ssh/forwards-local-host-path-with-port-asserts.nix b/tests/modules/programs/ssh/forwards-local-host-path-with-port-asserts.nix index 8cecc5e5..02a7e5b1 100644 --- a/tests/modules/programs/ssh/forwards-local-host-path-with-port-asserts.nix +++ b/tests/modules/programs/ssh/forwards-local-host-path-with-port-asserts.nix @@ -8,29 +8,26 @@ with lib; enable = true; matchBlocks = { localHostPathWithPort = { - localForwards = [ - { - # OK: - bind.address = "127.0.0.1"; - bind.port = 3000; + localForwards = [{ + # OK: + bind.address = "127.0.0.1"; + bind.port = 3000; - # Error: - host.address = "/run/user/1000/gnupg/S.gpg-agent.extra"; - host.port = 3000; - } - ]; + # Error: + host.address = "/run/user/1000/gnupg/S.gpg-agent.extra"; + host.port = 3000; + }]; }; }; }; - home.file.result.text = - builtins.toJSON - (map (a: a.message) - (filter (a: !a.assertion) - config.assertions)); + home.file.result.text = builtins.toJSON + (map (a: a.message) (filter (a: !a.assertion) config.assertions)); nmt.script = '' - assertFileContent home-files/result ${./forwards-paths-with-ports-error.json} + assertFileContent home-files/result ${ + ./forwards-paths-with-ports-error.json + } ''; }; } diff --git a/tests/modules/programs/ssh/forwards-remote-bind-path-with-port-asserts.nix b/tests/modules/programs/ssh/forwards-remote-bind-path-with-port-asserts.nix index a0473147..61ce9ae0 100644 --- a/tests/modules/programs/ssh/forwards-remote-bind-path-with-port-asserts.nix +++ b/tests/modules/programs/ssh/forwards-remote-bind-path-with-port-asserts.nix @@ -8,29 +8,26 @@ with lib; enable = true; matchBlocks = { remoteBindPathWithPort = { - remoteForwards = [ - { - # OK: - host.address = "127.0.0.1"; - host.port = 3000; + remoteForwards = [{ + # OK: + host.address = "127.0.0.1"; + host.port = 3000; - # Error: - bind.address = "/run/user/1000/gnupg/S.gpg-agent.extra"; - bind.port = 3000; - } - ]; + # Error: + bind.address = "/run/user/1000/gnupg/S.gpg-agent.extra"; + bind.port = 3000; + }]; }; }; }; - home.file.result.text = - builtins.toJSON - (map (a: a.message) - (filter (a: !a.assertion) - config.assertions)); + home.file.result.text = builtins.toJSON + (map (a: a.message) (filter (a: !a.assertion) config.assertions)); nmt.script = '' - assertFileContent home-files/result ${./forwards-paths-with-ports-error.json} + assertFileContent home-files/result ${ + ./forwards-paths-with-ports-error.json + } ''; }; } diff --git a/tests/modules/programs/ssh/forwards-remote-host-path-with-port-asserts.nix b/tests/modules/programs/ssh/forwards-remote-host-path-with-port-asserts.nix index 770b8ab2..71bdbcb7 100644 --- a/tests/modules/programs/ssh/forwards-remote-host-path-with-port-asserts.nix +++ b/tests/modules/programs/ssh/forwards-remote-host-path-with-port-asserts.nix @@ -8,29 +8,26 @@ with lib; enable = true; matchBlocks = { remoteHostPathWithPort = { - remoteForwards = [ - { - # OK: - bind.address = "127.0.0.1"; - bind.port = 3000; + remoteForwards = [{ + # OK: + bind.address = "127.0.0.1"; + bind.port = 3000; - # Error: - host.address = "/run/user/1000/gnupg/S.gpg-agent.extra"; - host.port = 3000; - } - ]; + # Error: + host.address = "/run/user/1000/gnupg/S.gpg-agent.extra"; + host.port = 3000; + }]; }; }; }; - home.file.result.text = - builtins.toJSON - (map (a: a.message) - (filter (a: !a.assertion) - config.assertions)); + home.file.result.text = builtins.toJSON + (map (a: a.message) (filter (a: !a.assertion) config.assertions)); nmt.script = '' - assertFileContent home-files/result ${./forwards-paths-with-ports-error.json} + assertFileContent home-files/result ${ + ./forwards-paths-with-ports-error.json + } ''; }; } diff --git a/tests/modules/programs/ssh/match-blocks-attrs.nix b/tests/modules/programs/ssh/match-blocks-attrs.nix index 94263ef9..a84a703e 100644 --- a/tests/modules/programs/ssh/match-blocks-attrs.nix +++ b/tests/modules/programs/ssh/match-blocks-attrs.nix @@ -15,13 +15,11 @@ with lib; xyz = { identityFile = "file"; serverAliveInterval = 60; - localForwards = [ - { - bind.port = 8080; - host.address = "10.0.0.1"; - host.port = 80; - } - ]; + localForwards = [{ + bind.port = 8080; + host.address = "10.0.0.1"; + host.port = 80; + }]; remoteForwards = [ { bind.port = 8081; @@ -33,25 +31,18 @@ with lib; host.address = "/run/user/1000/gnupg/S.gpg-agent"; } ]; - dynamicForwards = [ - { - port = 2839; - } - ]; + dynamicForwards = [{ port = 2839; }]; }; "* !github.com" = { - identityFile = ["file1" "file2"]; + identityFile = [ "file1" "file2" ]; port = 516; }; }; }; - home.file.assertions.text = - builtins.toJSON - (map (a: a.message) - (filter (a: !a.assertion) - config.assertions)); + home.file.assertions.text = builtins.toJSON + (map (a: a.message) (filter (a: !a.assertion) config.assertions)); nmt.script = '' assertFileExists home-files/.ssh/config diff --git a/tests/modules/programs/texlive/default.nix b/tests/modules/programs/texlive/default.nix index e9a6f882..23bfe2da 100644 --- a/tests/modules/programs/texlive/default.nix +++ b/tests/modules/programs/texlive/default.nix @@ -1,3 +1 @@ -{ - texlive-minimal = ./texlive-minimal.nix; -} +{ texlive-minimal = ./texlive-minimal.nix; } diff --git a/tests/modules/programs/tmux/vi-all-true.nix b/tests/modules/programs/tmux/vi-all-true.nix index 70787128..bce032fd 100644 --- a/tests/modules/programs/tmux/vi-all-true.nix +++ b/tests/modules/programs/tmux/vi-all-true.nix @@ -16,9 +16,7 @@ with lib; nixpkgs.overlays = [ (self: super: { tmuxPlugins = super.tmuxPlugins // { - sensible = super.tmuxPlugins.sensible // { - rtp = "@sensible_rtp@"; - }; + sensible = super.tmuxPlugins.sensible // { rtp = "@sensible_rtp@"; }; }; }) ]; diff --git a/tests/modules/programs/zsh/history-path-new-custom.nix b/tests/modules/programs/zsh/history-path-new-custom.nix index 6a8c7372..0c052d69 100644 --- a/tests/modules/programs/zsh/history-path-new-custom.nix +++ b/tests/modules/programs/zsh/history-path-new-custom.nix @@ -10,11 +10,8 @@ with lib; history.path = "$HOME/some/directory/zsh_history"; }; - nixpkgs.overlays = [ - (self: super: { - zsh = pkgs.writeScriptBin "dummy-zsh" ""; - }) - ]; + nixpkgs.overlays = + [ (self: super: { zsh = pkgs.writeScriptBin "dummy-zsh" ""; }) ]; nmt.script = '' assertFileRegex home-files/.zshrc '^HISTFILE="$HOME/some/directory/zsh_history"$' diff --git a/tests/modules/programs/zsh/history-path-new-default.nix b/tests/modules/programs/zsh/history-path-new-default.nix index b01bd92d..6d1f58a2 100644 --- a/tests/modules/programs/zsh/history-path-new-default.nix +++ b/tests/modules/programs/zsh/history-path-new-default.nix @@ -7,11 +7,8 @@ with lib; home.stateVersion = "20.03"; programs.zsh.enable = true; - nixpkgs.overlays = [ - (self: super: { - zsh = pkgs.writeScriptBin "dummy-zsh" ""; - }) - ]; + nixpkgs.overlays = + [ (self: super: { zsh = pkgs.writeScriptBin "dummy-zsh" ""; }) ]; nmt.script = '' assertFileRegex home-files/.zshrc '^HISTFILE="$HOME/.zsh_history"$' diff --git a/tests/modules/programs/zsh/history-path-old-custom.nix b/tests/modules/programs/zsh/history-path-old-custom.nix index 672ccc81..f5b178b5 100644 --- a/tests/modules/programs/zsh/history-path-old-custom.nix +++ b/tests/modules/programs/zsh/history-path-old-custom.nix @@ -10,11 +10,8 @@ with lib; history.path = "some/directory/zsh_history"; }; - nixpkgs.overlays = [ - (self: super: { - zsh = pkgs.writeScriptBin "dummy-zsh" ""; - }) - ]; + nixpkgs.overlays = + [ (self: super: { zsh = pkgs.writeScriptBin "dummy-zsh" ""; }) ]; nmt.script = '' assertFileRegex home-files/.zshrc '^HISTFILE="$HOME/some/directory/zsh_history"$' diff --git a/tests/modules/programs/zsh/history-path-old-default.nix b/tests/modules/programs/zsh/history-path-old-default.nix index a89070c9..d880d966 100644 --- a/tests/modules/programs/zsh/history-path-old-default.nix +++ b/tests/modules/programs/zsh/history-path-old-default.nix @@ -7,11 +7,8 @@ with lib; home.stateVersion = "19.03"; programs.zsh.enable = true; - nixpkgs.overlays = [ - (self: super: { - zsh = pkgs.writeScriptBin "dummy-zsh" ""; - }) - ]; + nixpkgs.overlays = + [ (self: super: { zsh = pkgs.writeScriptBin "dummy-zsh" ""; }) ]; nmt.script = '' assertFileRegex home-files/.zshrc '^HISTFILE="$HOME/.zsh_history"$' diff --git a/tests/modules/services/sxhkd/configuration.nix b/tests/modules/services/sxhkd/configuration.nix index ac04a7ec..992c4b18 100644 --- a/tests/modules/services/sxhkd/configuration.nix +++ b/tests/modules/services/sxhkd/configuration.nix @@ -1,5 +1,4 @@ -{ config, ... }: -{ +{ config, ... }: { config = { services.sxhkd = { enable = true; @@ -13,7 +12,7 @@ extraConfig = '' super + c call command c - + # comment super + d call command d diff --git a/tests/modules/services/window-managers/i3/default.nix b/tests/modules/services/window-managers/i3/default.nix index 6105eb41..e239d6c0 100644 --- a/tests/modules/services/window-managers/i3/default.nix +++ b/tests/modules/services/window-managers/i3/default.nix @@ -1,3 +1 @@ -{ - i3-keybindings = ./i3-keybindings.nix; -} +{ i3-keybindings = ./i3-keybindings.nix; } diff --git a/tests/modules/services/window-managers/i3/i3-keybindings.nix b/tests/modules/services/window-managers/i3/i3-keybindings.nix index 89e545be..4f8515e6 100644 --- a/tests/modules/services/window-managers/i3/i3-keybindings.nix +++ b/tests/modules/services/window-managers/i3/i3-keybindings.nix @@ -8,29 +8,21 @@ with lib; enable = true; config.keybindings = - let - modifier = config.xsession.windowManager.i3.config.modifier; - in - lib.mkOptionDefault { - "${modifier}+Left" = "overridden-command"; - "${modifier}+Right" = null; - "${modifier}+Invented" = "invented-key-command"; - }; + let modifier = config.xsession.windowManager.i3.config.modifier; + in lib.mkOptionDefault { + "${modifier}+Left" = "overridden-command"; + "${modifier}+Right" = null; + "${modifier}+Invented" = "invented-key-command"; + }; }; nixpkgs.overlays = [ (self: super: { - dmenu = super.dmenu // { - outPath = "@dmenu@"; - }; + dmenu = super.dmenu // { outPath = "@dmenu@"; }; - i3 = super.i3 // { - outPath = "@i3@"; - }; + i3 = super.i3 // { outPath = "@i3@"; }; - i3status = super.i3status // { - outPath = "@i3status@"; - }; + i3status = super.i3status // { outPath = "@i3status@"; }; }) ]; diff --git a/tests/modules/systemd/timers.nix b/tests/modules/systemd/timers.nix index 0fa0070c..eaa43f17 100644 --- a/tests/modules/systemd/timers.nix +++ b/tests/modules/systemd/timers.nix @@ -5,17 +5,11 @@ with lib; { config = { systemd.user.timers.test-timer = { - Unit = { - Description = "A basic test timer"; - }; + Unit = { Description = "A basic test timer"; }; - Timer = { - OnUnitActiveSec = "1h 30m"; - }; + Timer = { OnUnitActiveSec = "1h 30m"; }; - Install = { - WantedBy = [ "timers.target" ]; - }; + Install = { WantedBy = [ "timers.target" ]; }; }; nmt.script = '' diff --git a/tests/modules/xresources/default.nix b/tests/modules/xresources/default.nix index 0e96aef9..afd15fbd 100644 --- a/tests/modules/xresources/default.nix +++ b/tests/modules/xresources/default.nix @@ -1,3 +1 @@ -{ - xresources = ./xresources.nix; -} +{ xresources = ./xresources.nix; }