qutebrowser: add module

PR #1132
This commit is contained in:
Justin Lovinger 2020-04-07 03:10:07 -04:00 committed by Robert Helgesson
parent d06bcf4c97
commit b7737f1732
No known key found for this signature in database
GPG key ID: 36BDAA14C2797E89
6 changed files with 123 additions and 0 deletions

View file

@ -1459,6 +1459,13 @@ in
is deployed on a NixOS host.
'';
}
{
time = "2020-04-08T11:51:15+00:00";
message = ''
A new module is available: 'programs.qutebrowser'
'';
}
];
};
}

View file

@ -94,6 +94,7 @@ let
(loadModule ./programs/password-store.nix { })
(loadModule ./programs/pazi.nix { })
(loadModule ./programs/pidgin.nix { })
(loadModule ./programs/qutebrowser.nix { })
(loadModule ./programs/readline.nix { })
(loadModule ./programs/rofi.nix { })
(loadModule ./programs/rtorrent.nix { })

View file

@ -0,0 +1,67 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.programs.qutebrowser;
formatLine = o: n: v:
let
formatValue = v:
if builtins.isNull v then
"None"
else if builtins.isBool v then
(if v then "True" else "False")
else if builtins.isString v then
''"${v}"''
else
builtins.toString v;
in if builtins.isAttrs v then
concatStringsSep "\n" (mapAttrsToList (formatLine "${o}${n}.") v)
else
"${o}${n} = ${formatValue v}";
in {
options.programs.qutebrowser = {
enable = mkEnableOption "qutebrowser";
settings = mkOption {
type = types.attrs;
default = { };
description = ''
Options to add to qutebrowser <filename>config.py</filename> file.
See <link xlink:href="https://qutebrowser.org/doc/help/settings.html"/>
for options.
'';
example = literalExample ''
{
colors = {
hints = {
bg = "#000000";
fg = "#ffffff";
};
tabs.bar.bg = "#000000";
};
tabs.tabs_are_windows = true;
}
'';
};
extraConfig = mkOption {
type = types.lines;
default = "";
description = ''
Extra lines added to qutebrowser <filename>config.py</filename> file.
'';
};
};
config = mkIf cfg.enable {
home.packages = [ pkgs.qutebrowser ];
xdg.configFile."qutebrowser/config.py".text = concatStringsSep "\n" ([ ]
++ mapAttrsToList (formatLine "c.") cfg.settings
++ optional (cfg.extraConfig != "") cfg.extraConfig);
};
}

View file

@ -36,6 +36,7 @@ import nmt {
./modules/programs/mbsync
./modules/programs/neomutt
./modules/programs/newsboat
./modules/programs/qutebrowser
./modules/programs/readline
./modules/programs/ssh
./modules/programs/starship

View file

@ -0,0 +1 @@
{ qutebrowser-settings = ./settings.nix; }

View file

@ -0,0 +1,46 @@
{ config, lib, pkgs, ... }:
with lib;
{
config = {
programs.qutebrowser = {
enable = true;
settings = {
colors = {
hints = {
bg = "#000000";
fg = "#ffffff";
};
tabs.bar.bg = "#000000";
};
tabs.tabs_are_windows = true;
};
extraConfig = ''
# Extra qutebrowser configuration.
'';
};
nixpkgs.overlays = [
(self: super: {
qutebrowser = pkgs.writeScriptBin "dummy-qutebrowser" "";
})
];
nmt.script = ''
assertFileContent \
home-files/.config/qutebrowser/config.py \
${
pkgs.writeText "qutebrowser-expected-config.py" ''
c.colors.hints.bg = "#000000"
c.colors.hints.fg = "#ffffff"
c.colors.tabs.bar.bg = "#000000"
c.tabs.tabs_are_windows = True
# Extra qutebrowser configuration.
''
}
'';
};
}