From 45abf3d38a2b51c00c347cab6950f3734e023bba Mon Sep 17 00:00:00 2001 From: Robert Helgesson <robert@rycee.net> Date: Sun, 2 Feb 2020 00:39:17 +0100 Subject: [PATCH 1/3] Apply `nixfmt` on many files --- default.nix | 11 +- doc/default.nix | 38 +- home-manager/install.nix | 115 +++--- modules/lib/dag.nix | 45 +-- modules/lib/shell.nix | 2 +- modules/lib/stdlib-extended.nix | 8 +- modules/lib/strings.nix | 13 +- modules/lib/types-dag.nix | 92 +++-- modules/lib/zsh.nix | 16 +- modules/misc/fontconfig.nix | 12 +- modules/misc/lib.nix | 2 +- modules/misc/numlock.nix | 12 +- modules/misc/pam.nix | 14 +- modules/misc/qt.nix | 28 +- modules/misc/xdg-mime-apps.nix | 18 +- modules/misc/xdg-mime.nix | 4 +- modules/misc/xdg-user-dirs.nix | 35 +- modules/programs/alacritty.nix | 11 +- modules/programs/alot-accounts.nix | 25 +- modules/programs/astroid-accounts.nix | 7 +- modules/programs/astroid.nix | 80 ++--- modules/programs/autorandr.nix | 202 ++++++----- modules/programs/bat.nix | 13 +- modules/programs/beets.nix | 19 +- modules/programs/broot.nix | 97 +++-- modules/programs/browserpass.nix | 115 +++--- modules/programs/chromium.nix | 103 +++--- .../command-not-found/command-not-found.nix | 14 +- modules/programs/direnv.nix | 50 ++- modules/programs/eclipse.nix | 14 +- modules/programs/feh.nix | 45 ++- modules/programs/fzf.nix | 38 +- modules/programs/getmail-accounts.nix | 4 +- modules/programs/getmail.nix | 47 ++- modules/programs/git.nix | 248 ++++++------- modules/programs/gnome-terminal.nix | 338 ++++++++---------- modules/programs/go.nix | 44 +-- modules/programs/home-manager.nix | 11 +- modules/programs/htop.nix | 79 +++- modules/programs/info.nix | 31 +- modules/programs/jq.nix | 26 +- modules/programs/kakoune.nix | 150 +++++--- modules/programs/keychain.nix | 18 +- modules/programs/lsd.nix | 6 +- modules/programs/matplotlib.nix | 25 +- modules/programs/mbsync-accounts.nix | 12 +- modules/programs/mbsync.nix | 180 ++++------ modules/programs/mercurial.nix | 68 ++-- modules/programs/mpv.nix | 57 ++- modules/programs/msmtp-accounts.nix | 3 +- modules/programs/msmtp.nix | 54 ++- modules/programs/neomutt-accounts.nix | 9 +- modules/programs/neomutt.nix | 199 +++++------ modules/programs/newsboat.nix | 54 +-- modules/programs/noti.nix | 13 +- modules/programs/notmuch-accounts.nix | 4 +- modules/programs/notmuch.nix | 127 +++---- modules/programs/obs-studio.nix | 34 +- modules/programs/offlineimap-accounts.nix | 18 +- modules/programs/offlineimap.nix | 160 ++++----- modules/programs/opam.nix | 4 +- modules/programs/password-store.nix | 4 +- modules/programs/pazi.nix | 4 +- modules/programs/pidgin.nix | 6 +- modules/programs/readline.nix | 51 ++- modules/programs/rofi.nix | 120 +++---- modules/programs/rtorrent.nix | 9 +- modules/programs/skim.nix | 36 +- modules/programs/starship.nix | 30 +- modules/programs/taskwarrior.nix | 36 +- modules/programs/termite.nix | 143 ++++---- modules/programs/texlive.nix | 16 +- modules/programs/urxvt.nix | 36 +- modules/programs/vim.nix | 144 ++++---- modules/programs/vscode/haskell.nix | 14 +- modules/programs/z-lua.nix | 28 +- modules/programs/zathura.nix | 27 +- modules/services/blueman-applet.nix | 18 +- modules/services/cbatticon.nix | 48 +-- modules/services/compton.nix | 104 +++--- modules/services/dunst.nix | 159 ++++---- modules/services/dwm-status.nix | 13 +- modules/services/emacs.nix | 30 +- modules/services/flameshot.nix | 14 +- modules/services/getmail.nix | 32 +- modules/services/gnome-keyring.nix | 27 +- modules/services/grobi.nix | 16 +- modules/services/hound.nix | 38 +- modules/services/imapnotify-accounts.nix | 7 +- modules/services/imapnotify.nix | 131 +++---- modules/services/kdeconnect.nix | 25 +- modules/services/keepassx.nix | 18 +- modules/services/lorri.nix | 23 +- modules/services/mbsync.nix | 32 +- modules/services/mpdris2.nix | 28 +- modules/services/muchsync.nix | 38 +- modules/services/network-manager-applet.nix | 18 +- modules/services/nextcloud-client.nix | 8 +- modules/services/owncloud-client.nix | 8 +- modules/services/parcellite.nix | 12 +- modules/services/password-store-sync.nix | 38 +- modules/services/pasystray.nix | 32 +- modules/services/polybar.nix | 46 +-- modules/services/random-background.nix | 74 ++-- modules/services/redshift.nix | 56 ++- modules/services/rsibreak.nix | 8 +- modules/services/screen-locker.nix | 12 +- modules/services/spotifyd.nix | 11 +- modules/services/stalonetray.nix | 66 ++-- modules/services/status-notifier-watcher.nix | 32 +- modules/services/syncthing.nix | 24 +- modules/services/taffybar.nix | 8 +- modules/services/tahoe-lafs.nix | 12 +- modules/services/taskwarrior-sync.nix | 16 +- modules/services/udiskie.nix | 42 +-- modules/services/unclutter.nix | 4 +- modules/services/unison.nix | 21 +- modules/services/window-managers/awesome.nix | 39 +- .../window-managers/bspwm/default.nix | 81 +++-- .../window-managers/bspwm/options.nix | 33 +- modules/services/window-managers/xmonad.nix | 12 +- modules/services/xcape.nix | 22 +- modules/services/xembed-sni-proxy.nix | 8 +- modules/services/xscreensaver.nix | 26 +- modules/services/xsuspender.nix | 38 +- modules/xcursor.nix | 12 +- modules/xresources.nix | 32 +- modules/xsession.nix | 46 +-- nixos/default.nix | 105 +++--- overlay.nix | 4 +- tests/lib/types/dag-merge.nix | 22 +- tests/lib/types/list-or-dag-merge.nix | 22 +- tests/modules/files/hidden-source.nix | 5 +- tests/modules/misc/pam/default.nix | 4 +- tests/modules/misc/xdg/default.nix | 4 +- tests/modules/misc/xdg/mime-apps-basics.nix | 4 +- tests/modules/misc/xsession/basic.nix | 6 +- .../misc/xsession/keyboard-without-layout.nix | 10 +- .../programs/alacritty/empty-settings.nix | 4 +- .../programs/alacritty/example-settings.nix | 16 +- .../programs/browserpass/browserpass.nix | 36 +- .../modules/programs/browserpass/default.nix | 4 +- .../programs/firefox/profile-settings.nix | 26 +- .../programs/firefox/state-version-19_09.nix | 22 +- tests/modules/programs/getmail/default.nix | 4 +- tests/modules/programs/getmail/getmail.nix | 6 +- tests/modules/programs/git/git-with-email.nix | 4 +- tests/modules/programs/git/git.nix | 22 +- tests/modules/programs/gpg/default.nix | 4 +- tests/modules/programs/mbsync/default.nix | 4 +- tests/modules/programs/mbsync/mbsync.nix | 8 +- tests/modules/programs/neomutt/default.nix | 4 +- tests/modules/programs/neomutt/neomutt.nix | 15 +- tests/modules/programs/newsboat/default.nix | 4 +- .../programs/newsboat/newsboat-basics.nix | 12 +- tests/modules/programs/readline/default.nix | 4 +- .../programs/readline/using-all-options.nix | 4 +- .../rofi/assert-on-both-theme-and-colors.nix | 10 +- tests/modules/programs/ssh/default-config.nix | 11 +- ...ds-dynamic-bind-path-with-port-asserts.nix | 23 +- ...forwards-dynamic-valid-bind-no-asserts.nix | 29 +- ...ards-local-bind-path-with-port-asserts.nix | 29 +- ...ards-local-host-path-with-port-asserts.nix | 29 +- ...rds-remote-bind-path-with-port-asserts.nix | 29 +- ...rds-remote-host-path-with-port-asserts.nix | 29 +- .../programs/ssh/match-blocks-attrs.nix | 27 +- tests/modules/programs/texlive/default.nix | 4 +- tests/modules/programs/tmux/vi-all-true.nix | 4 +- .../programs/zsh/history-path-new-custom.nix | 7 +- .../programs/zsh/history-path-new-default.nix | 7 +- .../programs/zsh/history-path-old-custom.nix | 7 +- .../programs/zsh/history-path-old-default.nix | 7 +- .../modules/services/sxhkd/configuration.nix | 5 +- .../services/window-managers/i3/default.nix | 4 +- .../window-managers/i3/i3-keybindings.nix | 26 +- tests/modules/systemd/timers.nix | 12 +- tests/modules/xresources/default.nix | 4 +- 177 files changed, 2850 insertions(+), 3565 deletions(-) diff --git a/default.nix b/default.nix index 1e3ff09e0..545b01141 100644 --- a/default.nix +++ b/default.nix @@ -1,13 +1,10 @@ -{ pkgs ? import <nixpkgs> {} }: +{ pkgs ? import <nixpkgs> { } }: 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 97c1914a5..638027b0a 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 bafb9a065..87aae5047 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 <<EOF - { config, pkgs, ... }: - - { - # Let Home Manager install and manage itself. - programs.home-manager.enable = true; - - # This value determines the Home Manager release that your - # configuration is compatible with. This helps avoid breakage - # when a new Home Manager release introduces backwards - # incompatible changes. - # - # You can update Home Manager without changing this value. See - # the Home Manager release notes for a list of state version - # changes in each release. - home.stateVersion = "19.09"; - } - EOF - fi +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 generation..." - echo + echo "Creating initial Home Manager configuration..." - if home-manager switch; then - cat <<EOF + mkdir -p "$(dirname "$confFile")" + cat > $confFile <<EOF + { config, pkgs, ... }: - All done! The home-manager tool should now be installed and you - can edit + { + # Let Home Manager install and manage itself. + programs.home-manager.enable = true; - $confFile + # This value determines the Home Manager release that your + # configuration is compatible with. This helps avoid breakage + # when a new Home Manager release introduces backwards + # incompatible changes. + # + # You can update Home Manager without changing this value. See + # the Home Manager release notes for a list of state version + # changes in each release. + home.stateVersion = "19.09"; + } + EOF + fi - to configure Home Manager. Run 'man home-configuration.nix' to - see all available options. - EOF - exit 0 - else - cat <<EOF + echo + echo "Creating initial Home Manager generation..." + echo - Uh oh, the installation failed! Please create an issue at + if home-manager switch; then + cat <<EOF - https://github.com/rycee/home-manager/issues + All done! The home-manager tool should now be installed and you + can edit - if the error seems to be the fault of Home Manager. - EOF - exit 1 - fi - ''; - } - '' - echo This derivation is not buildable, instead run it using nix-shell. - exit 1 - '' + $confFile + + to configure Home Manager. Run 'man home-configuration.nix' to + see all available options. + EOF + exit 0 + else + cat <<EOF + + Uh oh, the installation failed! Please create an issue at + + https://github.com/rycee/home-manager/issues + + if the error seems to be the fault of Home Manager. + EOF + exit 1 + fi + ''; +} '' + echo This derivation is not buildable, instead run it using nix-shell. + exit 1 +'' diff --git a/modules/lib/dag.nix b/modules/lib/dag.nix index 535dec35a..cbe341296 100644 --- a/modules/lib/dag.nix +++ b/modules/lib/dag.nix @@ -13,13 +13,11 @@ with lib; rec { - emptyDag = {}; + emptyDag = { }; isDag = dag: - let - isEntry = e: (e ? data) && (e ? after) && (e ? before); - in - builtins.isAttrs dag && all (x: x) (mapAttrsToList (n: isEntry) dag); + let isEntry = e: (e ? data) && (e ? after) && (e ? before); + in builtins.isAttrs dag && all (x: x) (mapAttrsToList (n: isEntry) dag); # Takes an attribute set containing entries built by # dagEntryAnywhere, dagEntryAfter, and dagEntryBefore to a @@ -80,22 +78,19 @@ rec { dagTopoSort = dag: let dagBefore = dag: name: - mapAttrsToList (n: v: n) ( - filterAttrs (n: v: any (a: a == name) v.before) dag - ); - normalizedDag = - mapAttrs (n: v: { - name = n; - data = v.data; - after = v.after ++ dagBefore dag n; - }) dag; + mapAttrsToList (n: v: n) + (filterAttrs (n: v: any (a: a == name) v.before) dag); + normalizedDag = mapAttrs (n: v: { + name = n; + data = v.data; + after = v.after ++ dagBefore dag n; + }) dag; before = a: b: any (c: a.name == c) b.after; sorted = toposort before (mapAttrsToList (n: v: v) normalizedDag); - in - if sorted ? result then - { result = map (v: { inherit (v) name data; }) sorted.result; } - else - sorted; + in if sorted ? result then { + result = map (v: { inherit (v) name data; }) sorted.result; + } else + sorted; # Applies a function to each element of the given DAG. dagMap = f: dag: mapAttrs (n: v: v // { data = f n v.data; }) dag; @@ -103,22 +98,20 @@ rec { # Create a DAG entry with no particular dependency information. dagEntryAnywhere = data: { inherit data; - before = []; - after = []; + before = [ ]; + after = [ ]; }; - dagEntryBetween = before: after: data: { - inherit data before after; - }; + dagEntryBetween = before: after: data: { inherit data before after; }; dagEntryAfter = after: data: { inherit data after; - before = []; + before = [ ]; }; dagEntryBefore = before: data: { inherit data before; - after = []; + after = [ ]; }; } diff --git a/modules/lib/shell.nix b/modules/lib/shell.nix index f1443c546..5e5743f51 100644 --- a/modules/lib/shell.nix +++ b/modules/lib/shell.nix @@ -2,7 +2,7 @@ rec { # Produces a Bourne shell like variable export statement. - export = n: v: "export ${n}=\"${toString v}\""; + export = n: v: ''export ${n}="${toString v}"''; # Given an attribute set containing shell variable names and their # assignment, this function produces a string containing an export diff --git a/modules/lib/stdlib-extended.nix b/modules/lib/stdlib-extended.nix index 307f7a07c..93f2397ce 100644 --- a/modules/lib/stdlib-extended.nix +++ b/modules/lib/stdlib-extended.nix @@ -3,9 +3,5 @@ nixpkgsLib: -let - mkHmLib = import ./.; -in - nixpkgsLib.extend (self: super: { - hm = mkHmLib { lib = super; }; - }) +let mkHmLib = import ./.; +in nixpkgsLib.extend (self: super: { hm = mkHmLib { lib = super; }; }) diff --git a/modules/lib/strings.nix b/modules/lib/strings.nix index 13d6bb03b..fe7b2fa30 100644 --- a/modules/lib/strings.nix +++ b/modules/lib/strings.nix @@ -9,19 +9,14 @@ with lib; # All characters that are considered safe. Note "-" is not # included to avoid "-" followed by digit being interpreted as a # version. - safeChars = - [ "+" "." "_" "?" "=" ] - ++ lowerChars - ++ upperChars + safeChars = [ "+" "." "_" "?" "=" ] ++ lowerChars ++ upperChars ++ stringToCharacters "0123456789"; empties = l: genList (x: "") (length l); - unsafeInName = stringToCharacters ( - replaceStrings safeChars (empties safeChars) path - ); + unsafeInName = + stringToCharacters (replaceStrings safeChars (empties safeChars) path); safeName = replaceStrings unsafeInName (empties unsafeInName) path; - in - "hm_" + safeName; + in "hm_" + safeName; } diff --git a/modules/lib/types-dag.nix b/modules/lib/types-dag.nix index 4003d7132..4dbdb907b 100644 --- a/modules/lib/types-dag.nix +++ b/modules/lib/types-dag.nix @@ -6,41 +6,34 @@ let isDagEntry = e: isAttrs e && (e ? data) && (e ? after) && (e ? before); - dagContentType = elemType: types.submodule { - options = { - data = mkOption { type = elemType; }; - after = mkOption { type = with types; uniq (listOf str); }; - before = mkOption { type = with types; uniq (listOf str); }; + dagContentType = elemType: + types.submodule { + options = { + data = mkOption { type = elemType; }; + after = mkOption { type = with types; uniq (listOf str); }; + before = mkOption { type = with types; uniq (listOf str); }; + }; }; - }; -in - -{ +in { # A directed acyclic graph of some inner type. dagOf = elemType: let - convertAllToDags = - let - maybeConvert = n: v: - if isDagEntry v - then v - else dag.entryAnywhere v; - in - map (def: def // { value = mapAttrs maybeConvert def.value; }); + convertAllToDags = let + maybeConvert = n: v: if isDagEntry v then v else dag.entryAnywhere v; + in map (def: def // { value = mapAttrs maybeConvert def.value; }); attrEquivalent = types.attrsOf (dagContentType 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 ++ ["<name>"]); - 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 ++ [ "<name>" ]); + 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 ++ ["<name>"]); - 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 ++ [ "<name>" ]); + 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 1d3e96b54..c6901350f 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 8dbcce53c..795ab3a74 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 a09075453..13c00dc59 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 77149d123..199dd317d 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 6ace2bfda..f54f4b950 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 d0ba16d73..ff38f842c 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.</para> <para>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 979c7ea48..7ba4083b3 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 0063e43d2..32006e025 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 d45356da4..da9d3c43a 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 84675cb1c..69b9ea967 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 8f3ffdfb3..89ae28f9c 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<name>.*)", '' - + ''"address": "(?P<email>.+)", '' - + ''"name-addr": ".*"'' + command = + "'${pkgs.notmuch}/bin/notmuch address --format=json --output=recipients date:6M..'"; + regexp = "'\\[?{" + '' + "name": "(?P<name>.*)", "address": "(?P<email>.+)", "name-addr": ".*"'' + "}[,\\]]?'"; shellcommand_external_filtering = "False"; }; @@ -36,9 +34,9 @@ with lib; } ''; description = '' - Contact completion configuration as expected per alot. - See <link xlink:href="http://alot.readthedocs.io/en/latest/configuration/contacts_completion.html">alot's wiki</link> for - explanation about possible values. + Contact completion configuration as expected per alot. + See <link xlink:href="http://alot.readthedocs.io/en/latest/configuration/contacts_completion.html">alot's wiki</link> 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 bc94a301d..17544ff78 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 b4b60fe23..8b3762fac 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 <code>%1</code>, <code>%2</code>, and <code>%3</code> 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 4514a5b5d..02fc77c1e 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 <code>autorandr --fingerprint</code> 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 860c5e82f..aa0df9abd 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 efd5f8fd1..1a45bbea1 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 <literal>beets</literal> 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 <filename>~/.config/beets/config.yaml</filename> @@ -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 f6d3cd7f9..eac31b568 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 e65484fad..10a2883c8 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 a34fef3d4..4e35c07b9 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 - <link xlink:href="https://chrome.google.com/webstore/category/extensions">Chrome Web Store</link>. - ''; - }; + 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 + <link xlink:href="https://chrome.google.com/webstore/category/extensions">Chrome Web Store</link>. + ''; + }; + }; + 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 0053fe36a..b79fde0f6 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 <filename>programs.sqlite</filename>. By default this file will be provided by your channel diff --git a/modules/programs/direnv.nix b/modules/programs/direnv.nix index e4c17239c..beb40a962 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 <filename>~/.config/direnv/config.toml</filename>. @@ -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 4a432c9fe..8ce605b10 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 1b14e71f5..b1b33697e 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 <link xlink:href="https://man.finalrewind.org/1/feh/#x425554544f4e53"/> 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 <link xlink:href="https://man.finalrewind.org/1/feh/#x4b455953"/> 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 832c0bfa3..36eb3a1cd 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 32e1312dc..24eb4fb58 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 <literal>ALL</literal> mailbox. diff --git a/modules/programs/getmail.nix b/modules/programs/getmail.nix index 3de898ef7..2c3919dcf 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 913f86f71..a56aa10d5 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 9a4436449..570a1fc7d 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 <literal>true</literal>, 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 <literal>true</literal>, 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 39788e040..983769d26 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 <envar>GOPATH</envar>s relative to <envar>HOME</envar> appended - after - <varname><link linkend="opt-${goPathOpt}">${goPathOpt}</link></varname>, - if that option is set. - ''; + description = let goPathOpt = "programs.go.goPath"; + in '' + Extra <envar>GOPATH</envar>s relative to <envar>HOME</envar> appended + after + <varname><link linkend="opt-${goPathOpt}">${goPathOpt}</link></varname>, + 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 42e3c8a38..9039a59d7 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 d700c4855..849660405 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 863bdcc19..9e4a5d4aa 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 56c3adf06..6c89df0df 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 dbaa764a2..faf2542dc 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 <link xlink:href="https://github.com/mawww/kakoune/blob/master/doc/pages/mapping.asciidoc"/>. @@ -459,7 +488,7 @@ let hooks = mkOption { type = types.listOf hook; - default = []; + default = [ ]; description = '' Global hooks. For documentation, see <link xlink:href="https://github.com/mawww/kakoune/blob/master/doc/pages/hooks.asciidoc"/>. @@ -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 2231a7c2e..6e26bd232 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 94934169a..ab1880ff8 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 48ff6e60d..da80c1167 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 <filename>matplotlibrc</filename> 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 c586481df..4de1965fe 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 7537f6d5c..6ade10986 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 fa6e7b3e5..8e9a3befb 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 8b9c191ce..3a4e5092f 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 { <option>programs.mpv.config</option> 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 277710f4c..894cef517 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 1ff3139ef..f34fd72f8 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 a374f1167..033db38eb 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 1f7022e0a..85af0353b 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 19fec642d..6b59ed713 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 476c2eb19..348555eef 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 <filename>~/.config/noti/noti.yaml</filename>. @@ -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 7c9c93d3f..fd4a811d7 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 74aa9320d..7e7a140b2 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 <command>notmuch new</command>. @@ -83,7 +72,7 @@ in }; }; }; - default = {}; + default = { }; description = '' Options related to email processing performed by <command>notmuch new</command>. @@ -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 f0dfecb63..6df597838 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 015a5974a..afc7a0199 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 82143b630..4ce12ec0a 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 <account name> <program name> <program args> - 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 <option>DEFAULT</option> 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 4de2e82da..a61ff7878 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 a15f002c2..db31146a1 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 decc0d9db..e1a08eb61 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 8dcb21221..a375fd1b2 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 35cbab5f5..a7ff5f594 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 e64e5d478..f344e88e2 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 6300969a5..7beeb2e42 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 de1bff30f..c90fe1b1a 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 db7cf9262..7c7819865 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 <filename>~/.config/starship.toml</filename>. @@ -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 eeacc77da..cf95511f8 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 4d66fc42d..8a05db035 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 0f8953e9f..08a376d65 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 6f4eb3ff7..e4c72bfe2 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 a14a9562a..39826a9a5 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: <command>nix-env -f '<nixpkgs>' -qaP -A vimPlugins</command>. @@ -88,7 +81,7 @@ in settings = mkOption { type = vimSettingsType; - default = {}; + default = { }; example = literalExample '' { expandtab = true; @@ -102,14 +95,12 @@ in options. <informaltable frame="none"><tgroup cols="1"><tbody> - ${concatStringsSep "\n" ( - mapAttrsToList (n: v: '' - <row> - <entry><varname>${n}</varname></entry> - <entry>${v.description}</entry> - </row> - '') knownSettings - )} + ${concatStringsSep "\n" (mapAttrsToList (n: v: '' + <row> + <entry><varname>${n}</varname></entry> + <entry>${v.description}</entry> + </row> + '') knownSettings)} </tbody></tgroup></informaltable> 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 c8ea10d47..ee84e7071 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 245eff6a5..d722ac6a2 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 f01bd501c..d9f3c1af1 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 <option>:set</option> command options to zathura and make @@ -36,7 +32,10 @@ in </citerefentry> 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 0a071f083..5a57acccc 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 7bf3b7055..0de69c5f9 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 c227f0a8c..c5b96af34 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 96b1f71a2..d32e87513 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 2b010cec1..7a19e5e5f 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 33d6871c6..5b0e88db7 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 87b494d0f..c8659d51d 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 46d4c1752..e7a1b1a46 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 4ca6c7cac..6d8317dcf 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 e910bcdfd..4dfc5d633 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 a252a68d2..00589f340 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 1c780bf28..94bdce5df 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 fbb0713e9..b59b006e3 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 bd698fcf8..82de1f0eb 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 ad791786f..dc37066e2 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 351afbc1d..3b2c244e3 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 73c3b3266..ac6ac1ef7 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 9030e0fdb..cb8cefba6 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 72bf737c2..b7004418d 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 72a4711e3..bf57ed650 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 3d8dc0bc8..555ca11ad 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 d98a508f0..d55d8ffa2 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 45cb33ea8..ce0423861 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 32c70ff58..819339149 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 8f92f34c0..7c6651d94 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 4225ed9b3..934a99063 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 885574aff..9deee8deb 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 1452fcc95..86cbab205 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 242e03432..77eaa71f9 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 e3da14069..2d0fc7588 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 <command>xautolock</command>. ''; @@ -37,7 +37,7 @@ in { xssLockExtraOptions = mkOption { type = types.listOf types.str; - default = []; + default = [ ]; description = '' Extra command-line arguments to pass to <command>xss-lock</command>. ''; @@ -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 b9e09126c..bc231814e 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 934e78c99..cca604989 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 8a2ded872..3c3e54877 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 7fc556c52..2ef105401 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 69531a19d..539275542 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 bb7be8d7d..742b779b2 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 4179ac8aa..d16c0681b 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 c058a23de..2444d68ff 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 6b5ac866e..5e7606395 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 fc998e39a..93c59e8fd 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 fe914864e..d2e2903f8 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 e9fa064a8..9ea5adbc8 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 9d1955aa5..58a58a1a7 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 6b3426b96..7be03874a 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 26115a930..f4f77caa3 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 <literal>Key[|OtherKey]</literal>. </para> @@ -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 d9e5ae783..ff63d108b 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 4001c294e..73a365aa7 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 22a5ca536..2eb40f5dd 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 171586028..63ceef387 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 1e5ec8541..b74d671be 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 e1cf9942e..d32c28491 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 6b7d559a6..f4e417bda 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 fa779fe03..35136cc85 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 058530ccb..138a0b64f 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 ac592ef35..08216140e 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 a8635398f..8169fedcd 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 8a64f831c..81c435e76 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 5772becd7..e5d015759 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 2c3207106..e181e8206 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 d86b57ddb..39df63623 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 5f89a29ed..015efe615 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 5fd2792a8..65470473c 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 0caa80258..46be1064c 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 229392e17..9189a445a 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 478530f78..fa40ddcab 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 f1e9be927..8c5fb4ec1 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 4d65d7a7b..27dc867ad 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 a0d79e7d0..cb789a90d 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 d72a8d650..fe10b98f9 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 350921981..ca577eef4 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 3a84bf77a..7c0bf52de 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 5cb24817c..7fed2cdcc 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 c31e0dc7a..9c369fa50 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 072a7271f..03a54c178 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 3c778e9ee..289f2705e 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 d7ffadd8e..91cb9dca2 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 a9b15a443..27f523a62 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 49a54f6d0..e6eb41517 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 767d88bfa..c95745d19 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 f50117679..104d08b8a 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 2558a2583..0f9cfc39a 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 266bc9d1f..6d7e5508a 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 2e9082de3..cf2efe5a5 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 15ab59e82..d0c3a7322 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 c05cba827..f9d8e2daf 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 8cecc5e51..02a7e5b16 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 a0473147b..61ce9ae03 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 770b8ab28..71bdbcb70 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 94263ef9d..a84a703e8 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 e9a6f882b..23bfe2daf 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 70787128a..bce032fd6 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 6a8c7372d..0c052d694 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 b01bd92d6..6d1f58a29 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 672ccc810..f5b178b5e 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 a89070c90..d880d9664 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 ac04a7ecf..992c4b18a 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 6105eb415..e239d6c07 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 89e545be9..4f8515e61 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 0fa0070cd..eaa43f176 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 0e96aef9f..afd15fbd3 100644 --- a/tests/modules/xresources/default.nix +++ b/tests/modules/xresources/default.nix @@ -1,3 +1 @@ -{ - xresources = ./xresources.nix; -} +{ xresources = ./xresources.nix; } From 70af3b126a0ca281526e328f32c4009a2804aa21 Mon Sep 17 00:00:00 2001 From: Robert Helgesson <robert@rycee.net> Date: Sat, 1 Feb 2020 20:59:49 +0100 Subject: [PATCH 2/3] ci: add format script and use in CI pipeline The format script can be used to automatically format the Nix source files and also verify that the files are formatted using the `-c` command argument. At the moment some files are exempt from the formatting to avoid causing merge conflicts in active pull requests. Finally, update the contribution guidelines to note that `nixfmt` should be used. --- .travis.yml | 1 + CONTRIBUTING.md | 17 +++++++----- format | 70 +++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 81 insertions(+), 7 deletions(-) create mode 100755 format diff --git a/.travis.yml b/.travis.yml index df9c468be..e0712e1e4 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,5 +8,6 @@ before_script: - mkdir -m 0755 -p /nix/var/nix/{profiles,gcroots}/per-user/$USER script: + - ./format -c - nix-shell . -A install - nix-shell tests -A run.all diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d441aef06..8e64b3b45 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -91,12 +91,15 @@ In addition to the above commit message guidelines, try to follow the ### Style guidelines ### -The code in Home Manager should follow the [Nixpkgs syntax -guidelines][]. Note, we prefer `lowerCamelCase` for variable and -attribute names with the accepted exception of variables directly -referencing packages in Nixpkgs which use a hyphenated style. For -example, the Home Manager option `services.gpg-agent.enableSshSupport` -references the `gpg-agent` package in Nixpkgs. +The code in Home Manager is formatted by the [nixfmt][] tool and the +formatting is checked in the pull request tests. Run the `format` tool +inside the project repository before submitting your pull request. + +Note, we prefer `lowerCamelCase` for variable and attribute names with +the accepted exception of variables directly referencing packages in +Nixpkgs which use a hyphenated style. For example, the Home Manager +option `services.gpg-agent.enableSshSupport` references the +`gpg-agent` package in Nixpkgs. ### News ### @@ -158,4 +161,4 @@ If you do have a change worthy of a news entry then please add one in [create a pull request]: https://help.github.com/articles/creating-a-pull-request/ [seven rules]: https://chris.beams.io/posts/git-commit/#seven-rules [`news.nix`]: https://github.com/rycee/home-manager/blob/master/modules/misc/news.nix -[Nixpkgs syntax guidelines]: https://nixos.org/nixpkgs/manual/#sec-syntax +[nixfmt]: https://github.com/serokell/nixfmt/ diff --git a/format b/format new file mode 100755 index 000000000..539ae60de --- /dev/null +++ b/format @@ -0,0 +1,70 @@ +#! /usr/bin/env nix-shell +#! nix-shell -i bash -p findutils nixfmt + +CHECK_ARG= + +case $1 in + -h) + echo "$0 [-c]" + ;; + -c) + CHECK_ARG=-c + ;; +esac + +# The first block of excludes are files where nixfmt does a poor job, +# IMHO. The second block of excludes are files touched by open pull +# requests and we want to avoid merge conflicts. +find . -name '*.nix' \ + ! -path ./modules/programs/irssi.nix \ + \ + ! -path ./home-manager/default.nix \ + ! -path ./home-manager/home-manager.nix \ + ! -path ./modules/accounts/email.nix \ + ! -path ./modules/default.nix \ + ! -path ./modules/files.nix \ + ! -path ./modules/home-environment.nix \ + ! -path ./modules/lib/default.nix \ + ! -path ./modules/lib/file-type.nix \ + ! -path ./modules/lib/types.nix \ + ! -path ./modules/manual.nix \ + ! -path ./modules/misc/dconf.nix \ + ! -path ./modules/misc/gtk.nix \ + ! -path ./modules/misc/news.nix \ + ! -path ./modules/misc/nixpkgs.nix \ + ! -path ./modules/misc/xdg.nix \ + ! -path ./modules/modules.nix \ + ! -path ./modules/programs/afew.nix \ + ! -path ./modules/programs/alot.nix \ + ! -path ./modules/programs/bash.nix \ + ! -path ./modules/programs/emacs.nix \ + ! -path ./modules/programs/firefox.nix \ + ! -path ./modules/programs/fish.nix \ + ! -path ./modules/programs/gpg.nix \ + ! -path ./modules/programs/lesspipe.nix \ + ! -path ./modules/programs/neovim.nix \ + ! -path ./modules/programs/ssh.nix \ + ! -path ./modules/programs/tmux.nix \ + ! -path ./modules/programs/vscode.nix \ + ! -path ./modules/programs/zsh.nix \ + ! -path ./modules/services/gpg-agent.nix \ + ! -path ./modules/services/kbfs.nix \ + ! -path ./modules/services/keybase.nix \ + ! -path ./modules/services/mpd.nix \ + ! -path ./modules/services/sxhkd.nix \ + ! -path ./modules/services/window-managers/i3.nix \ + ! -path ./modules/systemd.nix \ + ! -path ./nix-darwin/default.nix \ + ! -path ./tests/default.nix \ + ! -path ./tests/modules/home-environment/default.nix \ + ! -path ./tests/modules/home-environment/session-variables.nix \ + ! -path ./tests/modules/programs/gpg/override-defaults.nix \ + ! -path ./tests/modules/programs/tmux/default.nix \ + ! -path ./tests/modules/programs/tmux/disable-confirmation-prompt.nix \ + ! -path ./tests/modules/programs/tmux/secure-socket-enabled.nix \ + ! -path ./tests/modules/programs/zsh/session-variables.nix \ + ! -path ./tests/modules/services/sxhkd/service.nix \ + ! -path ./tests/modules/systemd/default.nix \ + ! -path ./tests/modules/systemd/services.nix \ + ! -path ./tests/modules/systemd/session-variables.nix \ + -exec nixfmt $CHECK_ARG {} + From a4a07ba996cc74e58aa22772ad69b50670c8b24f Mon Sep 17 00:00:00 2001 From: Robert Helgesson <robert@rycee.net> Date: Sun, 2 Feb 2020 00:58:06 +0100 Subject: [PATCH 3/3] readline: fix example --- modules/programs/readline.nix | 4 +++- tests/modules/programs/readline/using-all-options.nix | 2 +- tests/modules/programs/readline/using-all-options.txt | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/modules/programs/readline.nix b/modules/programs/readline.nix index a7ff5f594..2f79df6e1 100644 --- a/modules/programs/readline.nix +++ b/modules/programs/readline.nix @@ -30,7 +30,9 @@ in { bindings = mkOption { default = { }; type = types.attrsOf types.str; - example = { "\\C-h" = "backward-kill-word"; }; + example = literalExample '' + { "\\C-h" = "backward-kill-word"; } + ''; description = "Readline bindings."; }; diff --git a/tests/modules/programs/readline/using-all-options.nix b/tests/modules/programs/readline/using-all-options.nix index 104d08b8a..ab851020c 100644 --- a/tests/modules/programs/readline/using-all-options.nix +++ b/tests/modules/programs/readline/using-all-options.nix @@ -7,7 +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/readline/using-all-options.txt b/tests/modules/programs/readline/using-all-options.txt index da9f7df68..6b4aef51e 100644 --- a/tests/modules/programs/readline/using-all-options.txt +++ b/tests/modules/programs/readline/using-all-options.txt @@ -4,7 +4,7 @@ $include /etc/inputrc set bell-style audible set completion-map-case on set completion-prefix-display-length 2 -"C-h": backward-kill-word +"\C-h": backward-kill-word $if mode=emacs "\e[1~": beginning-of-line $endif