Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 7 additions & 3 deletions modules/programs/alacritty.nix
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,8 @@
with lib;

let

cfg = config.programs.alacritty;

yamlFormat = pkgs.formats.yaml { };
in {
options = {
programs.alacritty = {
Expand All @@ -19,7 +18,7 @@ in {
};

settings = mkOption {
type = types.attrs;
type = yamlFormat.type;
default = { };
example = literalExample ''
{
Expand Down Expand Up @@ -51,6 +50,11 @@ in {
home.packages = [ cfg.package ];

xdg.configFile."alacritty/alacritty.yml" = mkIf (cfg.settings != { }) {
# TODO: Replace by the generate function but need to figure out how to
# handle the escaping first.
#
# source = yamlFormat.generate "alacritty.yml" cfg.settings;
Comment thread
rycee marked this conversation as resolved.

text =
replaceStrings [ "\\\\" ] [ "\\" ] (builtins.toJSON cfg.settings);
};
Expand Down
2 changes: 1 addition & 1 deletion modules/programs/astroid-accounts.nix
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ with lib;
};

extraConfig = mkOption {
type = types.attrs;
type = types.attrsOf types.anything;
default = { };
example = { select_query = ""; };
description = ''
Expand Down
44 changes: 22 additions & 22 deletions modules/programs/astroid.nix
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ let

cfg = config.programs.astroid;

jsonFormat = pkgs.formats.json { };

astroidAccounts =
filterAttrs (n: v: v.astroid.enable) config.accounts.email.accounts;

Expand Down Expand Up @@ -36,19 +38,18 @@ let
} // astroid.extraConfig;

# See https://github.com/astroidmail/astroid/wiki/Configuration-Reference
configFile = mailAccounts:
let
template = fromJSON (readFile ./astroid-config-template.json);
astroidConfig = foldl' recursiveUpdate template [
{
astroid.notmuch_config = "${config.xdg.configHome}/notmuch/notmuchrc";
accounts = mapAttrs (n: accountAttr) astroidAccounts;
crypto.gpg.path = "${pkgs.gnupg}/bin/gpg";
}
cfg.extraConfig
cfg.externalEditor
];
in builtins.toJSON astroidConfig;
finalConfig = let
template = fromJSON (readFile ./astroid-config-template.json);
astroidConfig = foldl' recursiveUpdate template [
{
astroid.notmuch_config = "${config.xdg.configHome}/notmuch/notmuchrc";
accounts = mapAttrs (n: accountAttr) astroidAccounts;
crypto.gpg.path = "${pkgs.gnupg}/bin/gpg";
}
cfg.extraConfig
cfg.externalEditor
];
in astroidConfig;

in {
options = {
Expand Down Expand Up @@ -90,9 +91,13 @@ in {
};

extraConfig = mkOption {
type = types.attrs;
type = jsonFormat.type;
default = { };
example = { poll.interval = 0; };
example = literalExample ''
{
poll.interval = 0;
}
'';
description = ''
JSON config that will override the default Astroid configuration.
'';
Expand All @@ -107,13 +112,8 @@ in {
config = mkIf cfg.enable {
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 =
jsonFormat.generate "astroid-config" finalConfig;

xdg.configFile."astroid/poll.sh" = {
executable = true;
Expand Down
8 changes: 5 additions & 3 deletions modules/programs/beets.nix
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ let

cfg = config.programs.beets;

yamlFormat = pkgs.formats.yaml { };

in {
meta.maintainers = [ maintainers.rycee ];

Expand Down Expand Up @@ -39,7 +41,7 @@ in {
};

settings = mkOption {
type = types.attrs;
type = yamlFormat.type;
default = { };
description = ''
Configuration written to
Expand All @@ -52,7 +54,7 @@ in {
config = mkIf cfg.enable {
home.packages = [ cfg.package ];

xdg.configFile."beets/config.yaml".text =
builtins.toJSON config.programs.beets.settings;
xdg.configFile."beets/config.yaml".source =
yamlFormat.generate "beets-config" cfg.settings;
};
}
19 changes: 6 additions & 13 deletions modules/programs/direnv.nix
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,8 @@ with lib;
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
'';

tomlFormat = pkgs.formats.toml { };

in {
meta.maintainers = [ maintainers.rycee ];
Expand All @@ -23,7 +15,7 @@ in {
enable = mkEnableOption "direnv, the environment switcher";

config = mkOption {
type = types.attrs;
type = tomlFormat.type;
default = { };
description = ''
Configuration written to
Expand Down Expand Up @@ -80,8 +72,9 @@ 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 = tomlFormat.generate "direnv-config" cfg.config;
};

xdg.configFile."direnv/direnvrc" = let
text = concatStringsSep "\n" (optional (cfg.stdlib != "") cfg.stdlib
Expand Down
2 changes: 1 addition & 1 deletion modules/programs/git.nix
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ let
};

contents = mkOption {
type = types.attrs;
type = types.attrsOf types.anything;
default = { };
description = ''
Configuration to include. If empty then a path must be given.
Expand Down
2 changes: 1 addition & 1 deletion modules/programs/matplotlib.nix
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ in {

config = mkOption {
default = { };
type = types.attrs;
type = types.attrsOf types.anything;
description = ''
Add terms to the <filename>matplotlibrc</filename> file to
control the default matplotlib behavior.
Expand Down
11 changes: 7 additions & 4 deletions modules/programs/mercurial.nix
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ let

cfg = config.programs.mercurial;

iniFormat = pkgs.formats.ini { };

in {

options = {
Expand All @@ -30,19 +32,19 @@ in {
};

aliases = mkOption {
type = types.attrs;
type = types.attrsOf types.anything;
default = { };
description = "Mercurial aliases to define.";
};

extraConfig = mkOption {
type = types.either types.attrs types.lines;
type = types.either (types.attrsOf types.anything) types.lines;
default = { };
description = "Additional configuration to add.";
};

iniContent = mkOption {
type = types.attrsOf types.attrs;
type = iniFormat.type;
internal = true;
};

Expand Down Expand Up @@ -71,7 +73,8 @@ in {
username = cfg.userName + " <" + cfg.userEmail + ">";
};

xdg.configFile."hg/hgrc".text = generators.toINI { } cfg.iniContent;
xdg.configFile."hg/hgrc".source =
iniFormat.generate "hgrc" cfg.iniContent;
}

(mkIf (cfg.ignores != [ ] || cfg.ignoresRegexp != [ ]) {
Expand Down
2 changes: 1 addition & 1 deletion modules/programs/neovim.nix
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,7 @@ in {
};

configure = mkOption {
type = types.attrs;
type = types.attrsOf types.anything;
default = { };
example = literalExample ''
configure = {
Expand Down
2 changes: 1 addition & 1 deletion modules/programs/qutebrowser.nix
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ in {
};

settings = mkOption {
type = types.attrs;
type = types.attrsOf types.anything;
default = { };
description = ''
Options to add to qutebrowser <filename>config.py</filename> file.
Expand Down
2 changes: 1 addition & 1 deletion modules/programs/taskwarrior.nix
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ in {
enable = mkEnableOption "Task Warrior";

config = mkOption {
type = types.attrs;
type = types.attrsOf types.anything;
default = { };
example = literalExample ''
{
Expand Down
2 changes: 1 addition & 1 deletion modules/programs/urxvt.nix
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ in {

extraConfig = mkOption {
default = { };
type = types.attrs;
type = types.attrsOf types.anything;
description = "Additional configuration to add.";
example = { "shading" = 15; };
};
Expand Down
8 changes: 5 additions & 3 deletions modules/programs/vscode.nix
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ let

vscodePname = cfg.package.pname;

jsonFormat = pkgs.formats.json { };

configDir = {
"vscode" = "Code";
"vscode-insiders" = "Code - Insiders";
Expand Down Expand Up @@ -46,7 +48,7 @@ in {
};

userSettings = mkOption {
type = types.attrs;
type = jsonFormat.type;
default = { };
example = literalExample ''
{
Expand Down Expand Up @@ -125,10 +127,10 @@ in {
toSymlink = concatMap toPaths cfg.extensions;
in foldr (a: b: a // b) {
"${configFilePath}" = mkIf (cfg.userSettings != { }) {
text = builtins.toJSON cfg.userSettings;
source = jsonFormat.generate "vscode-user-settings" cfg.userSettings;
};
"${keybindingsFilePath}" = mkIf (cfg.keybindings != [ ]) {
text = builtins.toJSON cfg.keybindings;
source = jsonFormat.generate "vscode-keybindings" cfg.keybindings;
};
} toSymlink;
};
Expand Down
8 changes: 5 additions & 3 deletions modules/services/dwm-status.nix
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,13 @@ with lib;
let
cfg = config.services.dwm-status;

jsonFormat = pkgs.formats.json { };

features = [ "audio" "backlight" "battery" "cpu_load" "network" "time" ];

configText = builtins.toJSON ({ inherit (cfg) order; } // cfg.extraConfig);
finalConfig = { inherit (cfg) order; } // cfg.extraConfig;

configFile = pkgs.writeText "dwm-status.json" configText;
configFile = jsonFormat.generate "dwm-status.json" finalConfig;

in {
options = {
Expand All @@ -30,7 +32,7 @@ in {
};

extraConfig = mkOption {
type = types.attrs;
type = jsonFormat.type;
default = { };
example = literalExample ''
{
Expand Down
8 changes: 5 additions & 3 deletions modules/services/hound.nix
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,14 @@ let

cfg = config.services.hound;

configFile = pkgs.writeText "hound-config.json" (builtins.toJSON {
jsonFormat = pkgs.formats.json { };

configFile = jsonFormat.generate "hound-config.json" {
max-concurrent-indexers = cfg.maxConcurrentIndexers;
dbpath = cfg.databasePath;
repos = cfg.repositories;
health-check-url = "/healthz";
});
};

houndOptions = [ "--addr ${cfg.listenAddress}" "--conf ${configFile}" ];

Expand Down Expand Up @@ -41,7 +43,7 @@ in {
};

repositories = mkOption {
type = types.attrsOf (types.uniq types.attrs);
type = types.attrsOf jsonFormat.type;
default = { };
example = literalExample ''
{
Expand Down
7 changes: 5 additions & 2 deletions modules/services/xsuspender.nix
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ let

cfg = config.services.xsuspender;

iniFormat = pkgs.formats.ini { };

xsuspenderOptions = types.submodule {
options = {
matchWmClassContains = mkOption {
Expand Down Expand Up @@ -139,7 +141,7 @@ in {
};

iniContent = mkOption {
type = types.attrsOf types.attrs;
type = iniFormat.type;
internal = true;
};
};
Expand Down Expand Up @@ -170,7 +172,8 @@ in {
# To make the xsuspender tool available.
home.packages = [ pkgs.xsuspender ];

xdg.configFile."xsuspender.conf".text = generators.toINI { } cfg.iniContent;
xdg.configFile."xsuspender.conf".source =
iniFormat.generate "xsuspender.conf" cfg.iniContent;

systemd.user.services.xsuspender = {
Unit = {
Expand Down
1 change: 1 addition & 0 deletions tests/modules/programs/alacritty/default.nix
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
{
alacritty-example-settings = ./example-settings.nix;
alacritty-empty-settings = ./empty-settings.nix;
alacritty-merging-settings = ./settings-merging.nix;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"font":{"bold":{"family":"SFMono"},"normal":{"family":"SFMono"}},"key_bindings":[{"chars":"\x0c","key":"K","mods":"Control"}],"window":{"dimensions":{"columns":200,"lines":3}}}
Loading