Skip to content
Closed
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
3 changes: 3 additions & 0 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,9 @@

/modules/programs/firefox.nix @rycee

/modules/programs/flavours.nix @misterio77
/tests/modules/programs/flavours @misterio77

/modules/programs/foot.nix @plabadens
/tests/modules/programs/foot @plabadens

Expand Down
4 changes: 2 additions & 2 deletions home-manager/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ let

pathStr = if path == null then "" else path;

nixos-option =
callPackage (pkgs.path + "/nixos/modules/installer/tools/nixos-option") { };
nixos-option = pkgs.nixos-option or (callPackage
(pkgs.path + "/nixos/modules/installer/tools/nixos-option") { });

in runCommand "home-manager" {
preferLocalBuild = true;
Expand Down
10 changes: 10 additions & 0 deletions modules/lib/maintainers.nix
Original file line number Diff line number Diff line change
Expand Up @@ -115,4 +115,14 @@
githubId = 56614642;
name = "Ilan Joselevich";
};
misterio77 = {
email = "eu@misterio.me";
github = "Misterio77";
githubId = 5727578;
name = "Gabriel Fontes";
keys = [{
longkeyid = "rsa3072/0x245CAB70B4C225E9";
fingerprint = "7088 C742 1873 E0DB 97FF 17C2 245C AB70 B4C2 25E9";
}];
};
}
7 changes: 7 additions & 0 deletions modules/misc/news.nix
Original file line number Diff line number Diff line change
Expand Up @@ -2118,6 +2118,13 @@ in
A new module is available: 'programs.himalaya'.
'';
}

{
time = "2021-07-07T00:58:43+00:00";
message = ''
A new module is available: 'programs.flavours'.
'';
}
];
};
}
1 change: 1 addition & 0 deletions modules/modules.nix
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@ let
(loadModule ./programs/feh.nix { })
(loadModule ./programs/firefox.nix { })
(loadModule ./programs/fish.nix { })
(loadModule ./programs/flavours.nix { })
(loadModule ./programs/foot.nix { condition = hostPlatform.isLinux; })
(loadModule ./programs/fzf.nix { })
(loadModule ./programs/getmail.nix { condition = hostPlatform.isLinux; })
Expand Down
64 changes: 64 additions & 0 deletions modules/programs/flavours.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
{ config, lib, pkgs, ... }:

with lib;

let

cfg = config.programs.flavours;

tomlFormat = pkgs.formats.toml { };

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

options.programs.flavours = {
enable = mkEnableOption "Flavours, a base16 manager";

package = mkOption {
type = types.package;
default = pkgs.flavours;
defaultText = literalExample "pkgs.flavours";
description = "The package to use for the flavours binary.";
};

settings = mkOption {
type = tomlFormat.type;
default = { };
defaultText = literalExample "{ }";
example = literalExample ''
{
shell = "bash -c '{}'";
item = [
{
file = "~/.config/alacritty/colors.yml";
template = "alacritty";
subtemplate = "default-256";
rewrite = true;
}
{
file = "~/.config/sway/colors";
template = "sway";
subtemplate = "colors";
hook = "swaymsg reload";
rewrite = true;
}
];
}
'';
description = ''
Configuration written to
<filename>$XDG_CONFIG_HOME/flavours/config.toml</filename>.
</para><para>
See <link xlink:href="https://github.com/Misterio77/flavours#setup" /> for all options
and some examples.
'';
};
};

config = mkIf cfg.enable {
home.packages = [ cfg.package ];
xdg.configFile."flavours/config.toml" = mkIf (cfg.settings != { }) {
source = tomlFormat.generate "flavours-config" cfg.settings;
};
};
}
20 changes: 19 additions & 1 deletion modules/programs/qutebrowser.nix
Original file line number Diff line number Diff line change
Expand Up @@ -306,7 +306,25 @@ in {
};

xdg.configFile."qutebrowser/config.py" =
mkIf pkgs.stdenv.hostPlatform.isLinux { text = qutebrowserConfig; };
mkIf pkgs.stdenv.hostPlatform.isLinux {
text = qutebrowserConfig;
onChange = ''
hash="$(echo -n $USER | md5sum | cut -d' ' -f1)"
socket="''${XDG_RUNTIME_DIR:-/run/user/$UID}/qutebrowser/ipc-$hash"
if [ -S $socket ]; then
echo "Reloading qutebrowser"
command=${
escapeShellArg (builtins.toJSON {
args = [ ":config-source" ];
target_arg = null;
protocol_version = 1;
})
}
$DRY_RUN_CMD echo $command | ${pkgs.socat}/bin/socat -lf /dev/null - UNIX-CONNECT:$socket
fi
unset hash socket command
'';
};

xdg.configFile."qutebrowser/quickmarks" =
mkIf (cfg.quickmarks != { } && pkgs.stdenv.hostPlatform.isLinux) {
Expand Down
1 change: 1 addition & 0 deletions tests/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ import nmt {
./modules/programs/direnv
./modules/programs/feh
./modules/programs/fish
./modules/programs/flavours
./modules/programs/gh
./modules/programs/git
./modules/programs/gpg
Expand Down
1 change: 1 addition & 0 deletions tests/modules/programs/flavours/default.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{ flavours-settings = ./settings.nix; }
19 changes: 19 additions & 0 deletions tests/modules/programs/flavours/settings-expected.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
shell = "bash -c '{}'"
[[item]]
file = "~/.config/sway/config"
hook = "swaymsg reload"
light = false
subtemplate = "colors"
template = "sway"

[[item]]
file = "~/.config/waybar/colors.css"
rewrite = true
template = "waybar"

[[item]]
end = "/* End Flavours */"
file = "~/.config/beautifuldiscord/style.css"
start = "/* Start Flavours */"
subtemplate = "css-variables"
template = "styles"
46 changes: 46 additions & 0 deletions tests/modules/programs/flavours/settings.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
{ config, lib, pkgs, ... }:

with lib;

{
config = {
programs.flavours = {
enable = true;

settings = {
shell = "bash -c '{}'";
item = [
{
file = "~/.config/sway/config";
template = "sway";
subtemplate = "colors";
hook = "swaymsg reload";
light = false;
}
{
file = "~/.config/waybar/colors.css";
template = "waybar";
rewrite = true;
}
{
file = "~/.config/beautifuldiscord/style.css";
template = "styles";
subtemplate = "css-variables";
start = "/* Start Flavours */";
end = "/* End Flavours */";
}
];
};
};

nixpkgs.overlays = [
(self: super: { flavours = pkgs.writeScriptBin "dummy-flavours" ""; })
];

nmt.script = ''
assertFileContent \
home-files/.config/flavours/config.toml \
${./settings-expected.toml}
'';
};
}
1 change: 1 addition & 0 deletions tests/modules/programs/xmobar/basic-configuration.nix
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ with lib;
config = {
programs.xmobar = {
enable = true;
package = pkgs.writeScriptBin "dummy" "";
extraConfig = ''
Config
{ font = "Fira Code"
Expand Down