Compare commits

...

6 commits

9 changed files with 142 additions and 92 deletions

View file

@ -1,4 +1,20 @@
{ _ }: { lib, namespace, ... }:
let
inherit (lib.${namespace}) enabled;
in
{ {
home.keyboard.options = [ "apple:alupckeys" ];
${namespace} = {
appearance = {
base = enabled;
gtk = enabled;
qt = enabled;
};
xorg = {
xsession = enabled;
};
};
home.stateVersion = "24.05"; home.stateVersion = "24.05";
} }

View file

@ -9,11 +9,11 @@ let
inherit (lib) mkIf; inherit (lib) mkIf;
inherit (lib.${namespace}) mkEnableModule enabled; inherit (lib.${namespace}) mkEnableModule enabled;
cfg = config.${namespace}.appearance; cfg = config.${namespace}.appearance.base;
inherit (config.${namespace}) theme; inherit (config.${namespace}) theme;
in in
{ {
options = mkEnableModule "appearance"; options.appearance = mkEnableModule "base";
config = mkIf cfg.enable { config = mkIf cfg.enable {
home.packages = with pkgs; [ home.packages = with pkgs; [

View file

@ -1,6 +1,6 @@
{ config, ... }: { config, ... }:
{ {
home = { config.home = {
sessionPath = [ sessionPath = [
"${config.home.homeDirectory}/.local/bin" "${config.home.homeDirectory}/.local/bin"
]; ];
@ -20,8 +20,4 @@
v = "${config.home.sessionVariables.EDITOR}"; v = "${config.home.sessionVariables.EDITOR}";
}; };
}; };
imports = [
./xdg.nix
];
} }

View file

@ -0,0 +1,75 @@
{
config,
namespace,
lib,
pkgs,
...
}:
let
inherit (lib) mkMerge mkIf;
inherit (config.${namespace}) isDesktop;
in
{
config = {
home.preferXdgDirectories = true;
xdg =
let
homeDir = config.home.homeDirectory;
in
mkMerge [
{
enable = true;
cacheHome = "${homeDir}/.cache";
configHome = "${homeDir}/.config";
dataHome = "${homeDir}/.local/share";
stateHome = "${homeDir}/.local/state";
}
(mkIf isDesktop {
userDirs = {
enable = true;
createDirectories = true;
desktop = "${homeDir}/desktop";
documents = null;
download = "${homeDir}/downloads";
music = null;
pictures = "${homeDir}/pictures";
templates = null;
videos = "${homeDir}/videos";
};
portal = {
enable = true;
xdgOpenUsePortal = true;
extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
config.common.default = [ "gtk" ];
};
mimeApps = rec {
enable = true;
associations.added = {
"application/json" = [ "nvim.desktop" ];
"application/pdf" = [ "org.pwmt.zathura-pdf-mupdf.desktop" ];
"application/xhtml+xml" = [ "zen-alpha.desktop" ];
"application/x-extension-htm" = [ "zen-alpha.desktop" ];
"application/x-extension-html" = [ "zen-alpha.desktop" ];
"application/x-extension-shtml" = [ "zen-alpha.desktop" ];
"application/x-extension-xhtml" = [ "zen-alpha.desktop" ];
"application/x-extension-xht" = [ "zen-alpha.desktop" ];
"image/png" = [ "feh.desktop" ];
"text/html" = [ "zen-alpha.desktop" ];
"text/plain" = [ "nvim.desktop" ];
"x-scheme-handler/chrome" = [ "zen-alpha.desktop" ];
"x-scheme-handler/http" = [ "zen-alpha.desktop" ];
"x-scheme-handler/https" = [ "zen-alpha.desktop" ];
};
defaultApplications = associations.added;
};
})
];
};
}

View file

@ -0,0 +1,11 @@
{ lib, namespace, ... }:
let
inherit (lib) mkOption types;
in
{
options.${namespace}.isDesktop = mkOption {
type = with types; bool;
default = false;
description = "Whether this machine is used as a graphical desktop.";
};
}

View file

@ -0,0 +1,36 @@
{
lib,
config,
namespace,
...
}:
let
inherit (lib) mkIf;
inherit (lib.${namespace}) mkEnableModule;
cfg = config.${namespace}.xorg.xsession;
in
{
options.xorg = mkEnableModule "xsession";
config = mkIf cfg.enable {
xsession = {
enable = true;
numlock.enable = true;
# TODO: Switch to autorandr.
profileEtra = # sh
''
sudo mount -a
"${config.home.homeDirectory}/.config/xrandr/desktop.sh"
'';
initExtra = # sh
''
mpd &
pidgin &
'';
};
};
}

View file

@ -1,60 +0,0 @@
{ config, pkgs, ... }:
{
home.preferXdgDirectories = true;
xdg =
let
homeDir = config.home.homeDirectory;
in
{
enable = true;
cacheHome = "${homeDir}/.cache";
configHome = "${homeDir}/.config";
dataHome = "${homeDir}/.local/share";
stateHome = "${homeDir}/.local/state";
userDirs = {
enable = true;
createDirectories = true;
desktop = "${homeDir}/desktop";
documents = null;
download = "${homeDir}/downloads";
music = null;
pictures = "${homeDir}/pictures";
templates = null;
videos = "${homeDir}/videos";
};
portal = {
enable = true;
xdgOpenUsePortal = true;
extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
config.common.default = [ "gtk" ];
};
mimeApps = rec {
enable = true;
associations.added = {
"application/json" = [ "nvim.desktop" ];
"application/pdf" = [ "org.pwmt.zathura-pdf-mupdf.desktop" ];
"application/xhtml+xml" = [ "zen-alpha.desktop" ];
"application/x-extension-htm" = [ "zen-alpha.desktop" ];
"application/x-extension-html" = [ "zen-alpha.desktop" ];
"application/x-extension-shtml" = [ "zen-alpha.desktop" ];
"application/x-extension-xhtml" = [ "zen-alpha.desktop" ];
"application/x-extension-xht" = [ "zen-alpha.desktop" ];
"image/png" = [ "feh.desktop" ];
"text/html" = [ "zen-alpha.desktop" ];
"text/plain" = [ "nvim.desktop" ];
"x-scheme-handler/chrome" = [ "zen-alpha.desktop" ];
"x-scheme-handler/http" = [ "zen-alpha.desktop" ];
"x-scheme-handler/https" = [ "zen-alpha.desktop" ];
};
defaultApplications = associations.added;
};
};
}

View file

@ -1,6 +0,0 @@
{ ... }:
{
imports = [
./xsession.nix
];
}

View file

@ -1,18 +0,0 @@
{ ... }:
{
home.keyboard.options = [ "apple:alupckeys" ];
xsession = {
enable = true;
numlock.enable = true;
# TODO: Switch to autorandr
profileExtra = # sh
''
sudo mount -a
"$HOME/.config/xrandr/desktop.sh"
mpd &
pidgin &
'';
};
}