mirror of
https://github.com/foo-dogsquared/nixos-config.git
synced 2025-04-27 00:19:10 +00:00
222 lines
7.7 KiB
Nix
222 lines
7.7 KiB
Nix
{ config, lib, ... }@attrs:
|
|
|
|
let
|
|
inherit (config.xdg) userDirs;
|
|
userCfg = config.users.foo-dogsquared;
|
|
cfg = userCfg.programs.dconf;
|
|
in {
|
|
options.users.foo-dogsquared.programs.dconf.enable =
|
|
lib.mkEnableOption "dconf configuration";
|
|
|
|
config = lib.mkIf cfg.enable (lib.mkMerge [
|
|
{
|
|
dconf.settings = {
|
|
# My GNOME Shell and programs configuration.
|
|
"org/gnome/shell" = {
|
|
favorite-apps = lib.optional userCfg.programs.browsers.firefox.enable
|
|
"firefox.desktop"
|
|
++ lib.optional userCfg.setups.desktop.enable "thunderbird.desktop"
|
|
++ lib.optional userCfg.setups.development.enable
|
|
"org.wezfurlong.wezterm.desktop"
|
|
++ lib.optional userCfg.programs.doom-emacs.enable "emacs.desktop"
|
|
++ lib.optional userCfg.programs.vs-code.enable "code.desktop";
|
|
};
|
|
|
|
"org/gnome/calculator" = {
|
|
button-mode = "basic";
|
|
show-thousands = true;
|
|
base = 10;
|
|
word-size = 64;
|
|
};
|
|
|
|
"org/freedesktop/tracker/miner/files" = {
|
|
index-recursive-directories = [
|
|
# We could also use the values from home-manager but just to make GNOME Settings happy.
|
|
"&DESKTOP"
|
|
"&DOCUMENTS"
|
|
"&MUSIC"
|
|
"&PICTURES"
|
|
"&VIDEOS"
|
|
"&PUBLIC_SHARE"
|
|
|
|
userDirs.extraConfig.XDG_PROJECTS_DIR
|
|
];
|
|
};
|
|
|
|
"org/gnome/epiphany".homepage-url = lib.mkIf userCfg.programs.custom-homepage.enable "file://${config.xdg.dataHome}/foodogsquared/homepage/index.html";
|
|
};
|
|
}
|
|
|
|
# For everything else, pls refer to the "A happy GNOME" workflow module to
|
|
# know what workspaces has been set.
|
|
#
|
|
# Also, this config block comes with the following assumptions:
|
|
#
|
|
# * ALL workspaces has been configured with an index.
|
|
# * The preset workspace option for the workflow module has been enabled
|
|
# and exclusively configured around that.
|
|
# * The default list of applications from the workflow module.
|
|
(lib.mkIf (lib.elem "a-happy-gnome" attrs.nixosConfig.workflows.enable or []) {
|
|
dconf.settings = {
|
|
"org/gnome/shell/extensions/paperwm" = {
|
|
winprops =
|
|
let
|
|
inherit (attrs.nixosConfig.workflows.workflows.a-happy-gnome.paperwm) workspaces;
|
|
|
|
# A small convenience to make memorizing the index of a workspace
|
|
# not a thing.
|
|
wmIndexOf = name: workspaces.${name}.index.value;
|
|
|
|
# Another small convenience for making matches with Epiphany-made PWAs.
|
|
mkEpiphanyWebAppMatch = attr: attr // {
|
|
wm_class = "/org.gnome.Epiphany.WebApp_[A-Za-z0-9]+/";
|
|
};
|
|
|
|
winpropRules =
|
|
lib.optionals userCfg.setups.development.enable [
|
|
{
|
|
wm_class = "org.wezfurlong.wezterm";
|
|
preferredWidth = "100%";
|
|
spaceIndex = wmIndexOf "dev";
|
|
}
|
|
|
|
# All Epiphany-created web apps with DevDocs.
|
|
(mkEpiphanyWebAppMatch {
|
|
title = "/.*DevDocs.*/";
|
|
spaceIndex = wmIndexOf "dev";
|
|
})
|
|
|
|
(mkEpiphanyWebAppMatch {
|
|
title = "/.*GNOME DevDocs.*/";
|
|
spaceIndex = wmIndexOf "dev";
|
|
})
|
|
]
|
|
++ lib.optionals userCfg.setups.development.creative-coding.enable [
|
|
{
|
|
wm_class = "Processing";
|
|
spaceIndex = wmIndexOf "creative";
|
|
}
|
|
|
|
{
|
|
wm_class = "scide";
|
|
title = "SuperCollider IDE";
|
|
spaceIndex = wmIndexOf "creative";
|
|
}
|
|
|
|
{
|
|
wm_class = "Pure Data";
|
|
spaceIndex = wmIndexOf "creative";
|
|
}
|
|
|
|
{
|
|
wm_class = "Sonic Pi";
|
|
spaceIndex = wmIndexOf "creative";
|
|
}
|
|
]
|
|
++ lib.optionals userCfg.programs.doom-emacs.enable [{
|
|
wm_class = "Emacs";
|
|
spaceIndex = wmIndexOf "research";
|
|
}]
|
|
++ lib.optionals userCfg.setups.research.enable [
|
|
{
|
|
wm_class = "Zotero";
|
|
spaceIndex = wmIndexOf "research";
|
|
}
|
|
|
|
{
|
|
wm_class = "Kiwix";
|
|
spaceIndex = wmIndexOf "research";
|
|
}
|
|
]
|
|
++ lib.optionals config.suites.desktop.audio.enable [
|
|
{
|
|
wm_class = "Audacity";
|
|
spaceIndex = wmIndexOf "creative";
|
|
}
|
|
|
|
{
|
|
wm_class = "zrythm";
|
|
spaceIndex = wmIndexOf "creative";
|
|
}
|
|
|
|
{
|
|
wm_class = "Musescore4";
|
|
spaceIndex = wmIndexOf "creative";
|
|
}
|
|
]
|
|
++ lib.optionals config.suites.desktop.audio.pipewire.enable [
|
|
{
|
|
wm_class = "org.pipewire.Helvum";
|
|
spaceIndex = wmIndexOf "creative";
|
|
}
|
|
|
|
{
|
|
wm_class = "Carla2";
|
|
spaceIndex = wmIndexOf "creative";
|
|
}
|
|
]
|
|
++ lib.optionals config.suites.desktop.graphics.enable [
|
|
{
|
|
wm_class = "org.inkscape.Inkscape";
|
|
spaceIndex = wmIndexOf "creative";
|
|
}
|
|
|
|
{
|
|
wm_class = "GIMP";
|
|
spaceIndex = wmIndexOf "creative";
|
|
}
|
|
|
|
{
|
|
wm_class = "krita";
|
|
spaceIndex = wmIndexOf "creative";
|
|
}
|
|
|
|
{
|
|
wm_class = "Pureref";
|
|
spaceIndex = wmIndexOf "creative";
|
|
}
|
|
|
|
{
|
|
wm_class = "io.github.lainsce.Emulsion";
|
|
spaceIndex = wmIndexOf "creative";
|
|
}
|
|
|
|
(mkEpiphanyWebAppMatch {
|
|
title = "Penpot";
|
|
spaceIndex = wmIndexOf "creative";
|
|
})
|
|
]
|
|
++ lib.optionals userCfg.programs.email.thunderbird.enable [{
|
|
wm_class = "thunderbird";
|
|
preferredWidth = "100%";
|
|
spaceIndex = wmIndexOf "work";
|
|
}]
|
|
++ lib.optionals userCfg.programs.vs-code.enable [{
|
|
wm_class = "Code";
|
|
preferredWidth = "100%";
|
|
spaceIndex = wmIndexOf "dev";
|
|
}]
|
|
++ lib.optionals userCfg.programs.browsers.firefox.enable [{
|
|
wm_class = "firefox";
|
|
spaceIndex = wmIndexOf "media";
|
|
}]
|
|
++ lib.optionals userCfg.programs.browsers.brave.enable [{
|
|
wm_class = "Brave";
|
|
spaceIndex = wmIndexOf "media";
|
|
}]
|
|
++ lib.optionals userCfg.programs.browsers.google-chrome.enable [{
|
|
wm_class = "Google-chrome";
|
|
spaceIndex = wmIndexOf "media";
|
|
}]
|
|
++ lib.optionals userCfg.setups.music.spotify.enable [{
|
|
wm_class = "Spotify";
|
|
spaceIndex = wmIndexOf "media";
|
|
}];
|
|
in
|
|
lib.map lib.strings.toJSON winpropRules;
|
|
};
|
|
};
|
|
})
|
|
]);
|
|
}
|