diff options
Diffstat (limited to 'home-manager/modules')
-rw-r--r-- | home-manager/modules/programs/getmail.nix | 1 | ||||
-rw-r--r-- | home-manager/modules/programs/kakoune.nix | 1 | ||||
-rw-r--r-- | home-manager/modules/programs/newsboat.nix | 47 | ||||
-rw-r--r-- | home-manager/modules/programs/termite.nix | 2 | ||||
-rw-r--r-- | home-manager/modules/programs/vscode.nix | 47 |
5 files changed, 76 insertions, 22 deletions
diff --git a/home-manager/modules/programs/getmail.nix b/home-manager/modules/programs/getmail.nix index 8c1ac5e021e..04a958d6cda 100644 --- a/home-manager/modules/programs/getmail.nix +++ b/home-manager/modules/programs/getmail.nix @@ -31,6 +31,7 @@ let [retriever] type = ${retrieverType} server = ${imap.host} + ${optionalString (imap.port != null) "port = ${imap.port}"} username = ${userName} password_command = (${passCmd}) mailboxes = ( ${renderedMailboxes} ) diff --git a/home-manager/modules/programs/kakoune.nix b/home-manager/modules/programs/kakoune.nix index e48f0e295a8..dbaa764a212 100644 --- a/home-manager/modules/programs/kakoune.nix +++ b/home-manager/modules/programs/kakoune.nix @@ -540,6 +540,7 @@ let in pkgs.writeText "kakrc" ( optionalString (cfg.config != null) cfgStr + + "\n" + cfg.extraConfig ); diff --git a/home-manager/modules/programs/newsboat.nix b/home-manager/modules/programs/newsboat.nix index 84c64dfa607..19fec642d21 100644 --- a/home-manager/modules/programs/newsboat.nix +++ b/home-manager/modules/programs/newsboat.nix @@ -14,10 +14,32 @@ in enable = mkEnableOption "the Newsboat feed reader"; urls = mkOption { - type = types.listOf types.attrs; + type = types.listOf (types.submodule { + options = { + url = mkOption { + type = types.str; + example = "http://example.com"; + description = "Feed URL."; + }; + + tags = mkOption { + type = types.listOf types.str; + default = []; + example = ["foo" "bar"]; + description = "Feed tags."; + }; + + title = mkOption { + type = types.nullOr types.str; + default = null; + example = "ORF News"; + description = "Feed title."; + }; + }; + }); default = []; example = [{url = "http://example.com"; tags = ["foo" "bar"];}]; - description = "List of urls and tokens."; + description = "List of news feeds."; }; maxItems = mkOption { @@ -71,19 +93,18 @@ in home.packages = [ pkgs.newsboat ]; home.file.".newsboat/urls".text = let - urls = builtins.concatStringsSep "\n" ( - map (u: builtins.concatStringsSep " " ([u.url] ++ (map wrapQuote u.tags))) - cfg.urls); - queries = builtins.concatStringsSep "\n" ( - mapAttrsToList (n: v: "\"query:${n}:${escape ["\""] v}\"") cfg.queries); - + 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"; - '' - ${urls} - - ${queries} - ''; home.file.".newsboat/config".text = '' max-items ${toString cfg.maxItems} browser ${cfg.browser} diff --git a/home-manager/modules/programs/termite.nix b/home-manager/modules/programs/termite.nix index 6eab39edb3a..a5b1cebe775 100644 --- a/home-manager/modules/programs/termite.nix +++ b/home-manager/modules/programs/termite.nix @@ -9,7 +9,7 @@ let vteInitStr = '' # See https://github.com/thestinger/termite#id1 if [[ $TERM == xterm-termite ]]; then - . ${pkgs.gnome3.vte-ng}/etc/profile.d/vte.sh + . ${pkgs.termite.vte-ng}/etc/profile.d/vte.sh fi ''; diff --git a/home-manager/modules/programs/vscode.nix b/home-manager/modules/programs/vscode.nix index 3a82816f588..fdaea0ba4fe 100644 --- a/home-manager/modules/programs/vscode.nix +++ b/home-manager/modules/programs/vscode.nix @@ -6,12 +6,22 @@ let cfg = config.programs.vscode; + vscodePname = cfg.package.pname; + + configDir = { + "vscode" = "Code"; + "vscode-insiders" = "Code - Insiders"; + "vscodium" = "Codium"; + }.${vscodePname}; + configFilePath = if pkgs.stdenv.hostPlatform.isDarwin then - "Library/Application Support/Code/User/settings.json" + "Library/Application Support/${configDir}/User/settings.json" else - "${config.xdg.configHome}/Code/User/settings.json"; + "${config.xdg.configHome}/${configDir}/User/settings.json"; + # TODO: On Darwin where are the extensions? + extensionPath = ".${vscodePname}/extensions"; in { @@ -19,6 +29,15 @@ in programs.vscode = { enable = mkEnableOption "Visual Studio Code"; + package = mkOption { + type = types.package; + default = pkgs.vscode; + example = literalExample "pkgs.vscodium"; + description = '' + Version of Visual Studio Code to install. + ''; + }; + userSettings = mkOption { type = types.attrs; default = {}; @@ -47,12 +66,24 @@ in }; config = mkIf cfg.enable { - home.packages = [ - (pkgs.vscode-with-extensions.override { - vscodeExtensions = cfg.extensions; - }) - ]; + home.packages = [ cfg.package ]; - home.file."${configFilePath}".text = builtins.toJSON cfg.userSettings; + # Adapted from https://discourse.nixos.org/t/vscode-extensions-setup/1801/2 + home.file = + let + toPaths = p: + # Links every dir in p to the extension path. + mapAttrsToList (k: v: + { + "${extensionPath}/${k}".source = "${p}/${k}"; + }) (builtins.readDir p); + toSymlink = concatMap toPaths cfg.extensions; + in + foldr + (a: b: a // b) + { + "${configFilePath}".text = builtins.toJSON cfg.userSettings; + } + toSymlink; }; } |