summaryrefslogtreecommitdiff
path: root/home-manager
diff options
context:
space:
mode:
Diffstat (limited to 'home-manager')
-rw-r--r--home-manager/default.nix25
-rw-r--r--home-manager/firefox.nix83
-rw-r--r--home-manager/git.nix7
-rw-r--r--home-manager/gtk-bookmarks.nix17
-rw-r--r--home-manager/htop.nix38
-rw-r--r--home-manager/initial-home-setup.nix22
-rw-r--r--home-manager/pcmanfm.nix6
-rw-r--r--home-manager/resources/activation-scripts/clone-repos.sh30
-rw-r--r--home-manager/resources/firefox/uiCustomization.json1
-rw-r--r--home-manager/resources/firefox/userChrome.css204
-rw-r--r--home-manager/resources/pcmanfm/root.desktop11
-rw-r--r--home-manager/theme-st.nix22
-rw-r--r--home-manager/theme.nix101
-rw-r--r--home-manager/userdirs.nix5
-rw-r--r--home-manager/wallpapers.nix14
15 files changed, 586 insertions, 0 deletions
diff --git a/home-manager/default.nix b/home-manager/default.nix
new file mode 100644
index 0000000..bcd99eb
--- /dev/null
+++ b/home-manager/default.nix
@@ -0,0 +1,25 @@
+{ lib, userDetails, homeStateVersion, ... }: {
+ home = {
+ username = userDetails.username;
+ homeDirectory = lib.mkForce userDetails.home;
+ stateVersion = homeStateVersion;
+ };
+
+ imports = [
+ ./firefox.nix
+ ./git.nix
+ ./gtk-bookmarks.nix
+ ./htop.nix
+ ./initial-home-setup.nix
+ ./pcmanfm.nix # TODO mk name changeable & doesn't seem to work right now
+ ./theme-st.nix
+ ./theme.nix
+ ./userdirs.nix
+ ./wallpapers.nix
+ ];
+
+ theme.enable = lib.mkDefault true;
+ theme.st.enable = lib.mkDefault false;
+ theme.mint.enable = lib.mkDefault true;
+ wallpapers.enable = lib.mkDefault false;
+}
diff --git a/home-manager/firefox.nix b/home-manager/firefox.nix
new file mode 100644
index 0000000..8aa1af3
--- /dev/null
+++ b/home-manager/firefox.nix
@@ -0,0 +1,83 @@
+{ lib, pkgs, userDetails, ... }: {
+ programs.firefox = {
+ enable = lib.mkDefault true;
+ arkenfox.enable = true;
+ profiles = let
+ search = {
+ engines = {
+ "Timmy Search" = {
+ urls = [{
+ template = "https://search.tjkeller.xyz/search";
+ params = [ { name = "q"; value = "{searchTerms}"; } ];
+ }];
+ iconURI = "https://search.tjkeller.xyz/static/themes/simple/img/favicon.svg"; # TODO doesn't seem to work
+ };
+ "Nix Packages" = {
+ urls = [{
+ template = "https://search.nixos.org/packages";
+ params = [ { name = "query"; value = "{searchTerms}"; } ];
+ }];
+ icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
+ definedAliases = [ "@np" ];
+ };
+ "NixOS Options" = {
+ urls = [{
+ template = "https://search.nixos.org/options";
+ params = [ { name = "query"; value = "{searchTerms}"; } ];
+ }];
+ icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg";
+ definedAliases = [ "@no" ];
+ };
+ };
+ default = "Timmy Search";
+ privateDefault = "Timmy Search";
+ force = true; # Overwrite old
+ };
+ userChrome = builtins.readFile ./resources/firefox/userChrome.css;
+ arkenfox = {
+ enable = true;
+ enableAllSections = true;
+ "0100"."0102"."browser.startup.page".value = 3; # 0=blank, 1=home, 2=last visited page, 3=resume previous session
+ "0100"."0103"."browser.startup.homepage".enable = false;
+ "0100"."0104"."browser.newtabpage.enabled".enable = false;
+ #"2800"."2811"."privacy.clearOnShutdown.history".enable = false;
+ };
+ settings = {
+ "browser.compactmode.show" = true;
+ "browser.uiCustomization.state" = builtins.readFile ./resources/firefox/uiCustomization.json; # Toolbar etc.
+ "browser.uidensity" = 1; # Compact
+ "toolkit.legacyUserProfileCustomizations.stylesheets" = true; # userchrome
+
+ "app.normandy.first_run" = false;
+ "browser.aboutConfig.showWarning" = false; # arkenfox does
+ #"browser.download.dir" = userDetails.userDirs.downloads;
+ "browser.newtabpage.activity-stream.feeds.section.topstories" = false;
+ "browser.newtabpage.activity-stream.feeds.topsites" = false;
+ "browser.urlbar.suggest.topsites" = false;
+ "devtools.toolbox.host" = "window";
+ "dom.push.enabled" = false; #
+ "extensions.pocket.enabled" = false;
+ "general.smoothScroll" = false;
+ };
+ workSettings = settings // {
+ "extensions.activeThemeID" = "firefox-compact-dark@mozilla.org"; # Use builtin dark theme instead of system theme
+ };
+ in {
+ Personal = {
+ id = 0;
+ isDefault = true;
+ inherit search;
+ inherit userChrome;
+ inherit arkenfox;
+ inherit settings;
+ };
+ Work = {
+ id = 1;
+ inherit search;
+ inherit userChrome;
+ inherit arkenfox;
+ settings = workSettings;
+ };
+ };
+ };
+}
diff --git a/home-manager/git.nix b/home-manager/git.nix
new file mode 100644
index 0000000..9d15a90
--- /dev/null
+++ b/home-manager/git.nix
@@ -0,0 +1,7 @@
+{ userDetails, ... }: {
+ programs.git = {
+ enable = true;
+ userName = userDetails.fullname;
+ userEmail = userDetails.email;
+ };
+}
diff --git a/home-manager/gtk-bookmarks.nix b/home-manager/gtk-bookmarks.nix
new file mode 100644
index 0000000..24c6563
--- /dev/null
+++ b/home-manager/gtk-bookmarks.nix
@@ -0,0 +1,17 @@
+{ config, lib, userDetails, ... }: {
+ options = {
+ additional-gtk-bookmarks = lib.mkOption {
+ type = with lib.types; listOf str;
+ default = [];
+ description = "gtk bookmarks for file managers, etc.";
+ };
+ };
+
+ config = {
+ gtk.gtk3.bookmarks = (
+ lib.mapAttrsToList (name: path:
+ "file://${path} ${lib.toUpper (lib.substring 0 1 name)}${lib.substring 1 (-1) name}"
+ ) userDetails.userDirs
+ ) ++ config.additional-gtk-bookmarks;
+ };
+}
diff --git a/home-manager/htop.nix b/home-manager/htop.nix
new file mode 100644
index 0000000..523fee8
--- /dev/null
+++ b/home-manager/htop.nix
@@ -0,0 +1,38 @@
+{ config, ... }: {
+ programs.htop.enable = true;
+ programs.htop.settings = {
+ fields = with config.lib.htop.fields; [
+ PID
+ USER
+ 124 # EXE
+ PERCENT_CPU
+ PERCENT_MEM
+ STARTTIME
+ ELAPSED # time elapsed since process start
+ IO_READ_RATE
+ RBYTES # num read bytes
+ IO_WRITE_RATE
+ WBYTES # num written bytes
+ TIME
+ STIME # sys time
+ CSTIME # child sys time
+ NICE
+ STATE
+ PRIORITY
+ 125 # CWD
+ ];
+ } // (with config.lib.htop; leftMeters [
+ (bar "AllCPUs2")
+ (bar "CPU")
+ (bar "Memory")
+ (bar "DiskIO")
+ (bar "NetworkIO")
+ ]) // (with config.lib.htop; rightMeters [
+ (text "Hostname")
+ (text "Clock")
+ (text "Uptime")
+ (text "Battery")
+ (text "LoadAverage")
+ (text "Tasks")
+ ]);
+}
diff --git a/home-manager/initial-home-setup.nix b/home-manager/initial-home-setup.nix
new file mode 100644
index 0000000..4132386
--- /dev/null
+++ b/home-manager/initial-home-setup.nix
@@ -0,0 +1,22 @@
+{ config, lib, pkgs, userDetails, ... }: {
+ home.activation = {
+ cloneRepos = lib.hm.dag.entryAfter ["writeBoundary"] ''
+ export PATH="${config.home.path}/bin:$PATH"
+ ${builtins.readFile ./resources/activation-scripts/clone-repos.sh}
+ '';
+ linkZshProfile = lib.hm.dag.entryAfter ["writeBoundary"] ''
+ run ln -sf $VERBOSE_ARG $HOME/.config/zsh/zprofile $HOME/.zprofile
+ '';
+ cleanupHome = lib.hm.dag.entryAfter ["writeBoundary"] ''
+ run rm -f $VERBOSE_ARG $HOME/{.zcompdump,.zshrc,.zsh_history,.bash_history}
+ '';
+ mimewiz = lib.hm.dag.entryAfter ["writeBoundary"] ''
+ export PATH="${pkgs.xdg-utils}/bin:$PATH"
+ export PATH="$HOME/.local/bin/misc:$PATH"
+ run mimewiz -i # already verbose
+ '';
+ createDirs = lib.hm.dag.entryAfter ["writeBoundary"] ''
+ run mkdir -p $VERBOSE_ARG ${ lib.concatStringsSep " " (lib.attrValues userDetails.userDirs) }
+ '';
+ };
+}
diff --git a/home-manager/pcmanfm.nix b/home-manager/pcmanfm.nix
new file mode 100644
index 0000000..3c70521
--- /dev/null
+++ b/home-manager/pcmanfm.nix
@@ -0,0 +1,6 @@
+{
+ home.file.pcmanfm-root = {
+ target = ".local/share/file-manager/actions/root.desktop";
+ source = ./resources/pcmanfm/root.desktop;
+ };
+}
diff --git a/home-manager/resources/activation-scripts/clone-repos.sh b/home-manager/resources/activation-scripts/clone-repos.sh
new file mode 100644
index 0000000..eaee4dc
--- /dev/null
+++ b/home-manager/resources/activation-scripts/clone-repos.sh
@@ -0,0 +1,30 @@
+#!/bin/sh
+
+server="https://git.tjkeller.xyz/"
+
+clonemissing() {
+ # pull and return if already existing
+ if [ -d "$2"/.git ]; then
+ run cd $VERBOSE_ARG "$2"
+ run git pull $VERBOSE_ARG || echo "$2: failed to pull from remote"
+ return
+ fi
+
+ # clone to $2
+ run mkdir -p $VERBOSE_ARG "$2"
+ run git clone $VERBOSE_ARG "$server$1" "$2"
+
+ # link to $3
+ [ -z "$3" ] && return
+ run mkdir -p $VERBOSE_ARG "$3"
+ run ln -sf $VERBOSE_ARG "$2"/* "$3"
+}
+
+# # repo # clone to # link to
+clonemissing scripts $HOME/docs/src/scripts $HOME/.local/bin
+clonemissing dotconfig $HOME/docs/src/config $HOME/.config
+clonemissing userscripts $HOME/docs/src/userscripts ''
+clonemissing nixos $HOME/docs/src/nixos ''
+clonemissing awesome $HOME/.config/awesome ''
+clonemissing nvim $HOME/.config/nvim ''
+clonemissing zsh $HOME/.config/zsh ''
diff --git a/home-manager/resources/firefox/uiCustomization.json b/home-manager/resources/firefox/uiCustomization.json
new file mode 100644
index 0000000..339b716
--- /dev/null
+++ b/home-manager/resources/firefox/uiCustomization.json
@@ -0,0 +1 @@
+{"placements":{"widget-overflow-fixed-list":[],"unified-extensions-area":["ublock0_raymondhill_net-browser-action","sponsorblocker_ajay_app-browser-action","_e6e36c9a-8323-446c-b720-a176017e38ff_-browser-action","dearrow_ajay_app-browser-action","_446900e4-71c2-419f-a6a7-df9c091e268b_-browser-action","idcac-pub_guus_ninja-browser-action","addon_darkreader_org-browser-action","_74145f27-f039-47ce-a470-a662b129930a_-browser-action","_762f9885-5a13-4abd-9c77-433dcd38b8fd_-browser-action","jid1-bofifl9vbdl2zq_jetpack-browser-action","addon_fastforward_team-browser-action","jid1-tsgsxbhncspbwq_jetpack-browser-action","_aecec67f-0d10-4fa7-b7c7-609a2db280cf_-browser-action"],"nav-bar":["back-button","forward-button","stop-reload-button","home-button","urlbar-container","downloads-button","unified-extensions-button"],"toolbar-menubar":["menubar-items"],"TabsToolbar":["tabbrowser-tabs","new-tab-button","alltabs-button"],"PersonalToolbar":["personal-bookmarks"]},"seen":["save-to-pocket-button","developer-button","dearrow_ajay_app-browser-action","_446900e4-71c2-419f-a6a7-df9c091e268b_-browser-action","_e6e36c9a-8323-446c-b720-a176017e38ff_-browser-action","sponsorblocker_ajay_app-browser-action","ublock0_raymondhill_net-browser-action","idcac-pub_guus_ninja-browser-action","addon_darkreader_org-browser-action","_74145f27-f039-47ce-a470-a662b129930a_-browser-action","_762f9885-5a13-4abd-9c77-433dcd38b8fd_-browser-action","jid1-bofifl9vbdl2zq_jetpack-browser-action","addon_fastforward_team-browser-action","jid1-tsgsxbhncspbwq_jetpack-browser-action","_aecec67f-0d10-4fa7-b7c7-609a2db280cf_-browser-action"],"dirtyAreaCache":["nav-bar","PersonalToolbar","unified-extensions-area","toolbar-menubar","TabsToolbar"],"currentVersion":20,"newElementCount":5}
diff --git a/home-manager/resources/firefox/userChrome.css b/home-manager/resources/firefox/userChrome.css
new file mode 100644
index 0000000..624ab26
--- /dev/null
+++ b/home-manager/resources/firefox/userChrome.css
@@ -0,0 +1,204 @@
+/* TOP BAR */
+#navigator-toolbox {
+ --uc-navigationbar-width: 40vw;
+}
+
+/* Remove overflow button */
+#nav-bar-overflow-button { display: none; }
+
+/* remove alltabs button */
+#alltabs-button { display: none; }
+
+/* Change background color of toolbar */
+#navigator-toolbox-background {
+ background: var(--toolbar-field-border-color) !important;
+}
+
+/* Change background color of bookmarks toolbar */
+#PersonalToolbar {
+ background: var(--toolbox-bgcolor) !important;
+}
+
+/* Adjust spacing of toolbar items */
+#PlacesToolbarItems {
+ gap: .35rem;
+ margin-block: .2rem;
+}
+
+/* Fix vertical spacing of tabs */
+#TabsToolbar {
+ margin-top: -1px;
+}
+
+/* Move new tab to far right */
+#tabbrowser-arrowscrollbox-periphery {
+ margin-left: auto;
+}
+
+/* Fix spacing around tabs by removing nav bar top border */
+#nav-bar {
+ border: none !important;
+}
+
+/* Media queries for width of nav bar */
+@media screen and (max-width: 1000px) {
+ #navigator-toolbox {
+ --uc-navigationbar-width: 50vw;
+ }
+}
+@media screen and (max-width: 800px) {
+ #navigator-toolbox {
+ --uc-navigationbar-width: 60vw;
+ }
+}
+
+/* Change look of tabs in smaller view */
+@media screen and (max-width: 800px) {
+ .tab-background {
+ margin-block: .2em !important;
+ }
+ #TabsToolbar {
+ margin-left: 5px;
+ }
+}
+
+
+/* COMBINE TOP BAR */
+/* Combine top bar into single line if width >= 800px */
+@media screen and (min-width: 800px) {
+ :root {
+ --uc-toolbar-height: 36px; /* Half height bar */
+ }
+
+ /* Modify these to change relative widths or default height */
+ #navigator-toolbox {
+ margin-bottom: 0px;
+ padding-top: 1px; /* Top bar is cut off otherwise */
+ }
+
+ #TabsToolbar {
+ margin-left: calc(var(--uc-navigationbar-width) + 2px); /* Resize tab bar */
+ margin-top: -4px;
+ margin-bottom: 2px;
+ }
+
+ /* Tabs extend to bottom of bar */
+ .tab-background {
+ margin-bottom: 0 !important;
+ margin-top: 3px !important; /* See above navigator-toolbox rule. Avoid cutting off top */
+ }
+
+ /* Center tab buttons */
+ #tabs-newtab-button,
+ #alltabs-button
+ {
+ margin-top: 4px !important;
+ }
+
+ /* Integrate url / nav bar */
+ #nav-bar {
+ margin-right:calc(100vw - var(--uc-navigationbar-width));
+ margin-top: calc(0px - var(--uc-toolbar-height));
+ border-radius: 0 var(--tab-border-radius) var(--tab-border-radius) 0;
+ border-right: 1px solid ThreeDShadow !important;
+ box-shadow: 0 0 4px rgba(0,0,0,.4) !important;
+ }
+
+ /* 1px margin on touch density causes tabs to be too high */
+ .tab-close-button {
+ margin-top: 0 !important
+ }
+
+ /* Make opened urlbar overlay the toolbar */
+ #urlbar[open]:focus-within {
+ min-width: 50vw !important;
+ }
+
+ /* Remove min and max width of urlbar */
+ #urlbar-container {
+ width: 0 !important;
+ }
+
+ /* Fix customization view */
+ #customization-panelWrapper .panel-arrowbox .panel-arrow {
+ margin-inline-end: initial !important;
+ }
+
+ /* Shorten findbar */
+ findbar {
+ width: 600px !important;
+ border-radius: 0 0 0 5px;
+ border-bottom: none !important;
+ box-shadow: 0 2px 4px rgba(0,0,0,.4); /* Move down 2px so it doesn't go over the tab bar */
+ }
+}
+
+
+/* FINDBAR */
+findbar {
+ width: 100vw;
+ position: absolute;
+ top: 0;
+ right: 0;
+ padding: 0 !important;
+ padding-top: 1px !important;
+ background: -moz-headerbar Field !important;
+ border-top-width: 0px !important;
+ border-bottom: 1px solid ThreeDShadow;
+}
+
+findbar .findbar-container {
+ padding-bottom: 5px !important; /* Move search bar closer to left edge */
+ padding-top: 2px !important; /* Move search bar closer to left edge */
+ height: max-content !important;
+ gap: 2px;
+ justify-content: space-between;
+ flex-wrap: wrap;
+}
+
+/* Force textbox to fill up first line */
+findbar .findbar-textbox {
+ width: 100% !important;
+ background: Field !important; /* Set the background color to be consistent with found-matches label when unfocused */
+}
+
+/* Hide description showing wrap conditions etc. */
+findbar description {
+ display: none;
+}
+
+/* Move found matches label (roughly) into the textbox */
+findbar label.found-matches,
+findbar description {
+ position: absolute;
+ top: 6.5px;
+ right: 110px;
+ color: color-mix(in srgb, -moz-headerbartext, transparent 46%) !important;
+ /* So this text overrides the text below, TODO find a more elegant solution */
+ padding-inline: 1ex;
+ background: Field;
+}
+
+/* Show description when it says "Phrase Not Found" */
+findbar description[status=notfound] {
+ display: inline-block;
+}
+
+/* Force checkboxes onto second line */
+findbar .findbar-container hbox {
+ width: 100%;
+}
+
+
+/* BOOKMARK BAR */
+@-moz-document url(chrome://browser/content/browser.xhtml) {
+ #PersonalToolbar {
+ background: -moz-headerbar Field !important;
+ border-top: 1px solid ThreeDShadow !important;
+ z-index: 1000; /* To not be affected by shadow from navbar */
+ }
+ /* Space out bookmark items */
+ .bookmark-item .toolbarbutton-text {
+ padding: 2.5px 4px;
+ }
+}
diff --git a/home-manager/resources/pcmanfm/root.desktop b/home-manager/resources/pcmanfm/root.desktop
new file mode 100644
index 0000000..4b4d263
--- /dev/null
+++ b/home-manager/resources/pcmanfm/root.desktop
@@ -0,0 +1,11 @@
+[Desktop Entry]
+Type=Action
+Tooltip=Open Directory As Root
+Name=Open Directory As Root
+Profiles=profile-zero;
+Icon=gtk-dialog-authentication
+
+[X-Action-Profile profile-zero]
+MimeTypes=inode/directory;
+Exec=/home/timmy/.local/bin/x11/xsudo /usr/bin/pcmanfm %u
+Name=Default profile
diff --git a/home-manager/theme-st.nix b/home-manager/theme-st.nix
new file mode 100644
index 0000000..0a06cd0
--- /dev/null
+++ b/home-manager/theme-st.nix
@@ -0,0 +1,22 @@
+{ config, lib, pkgs, ... }: {
+ options = {
+ theme.st = {
+ enable = lib.mkEnableOption "enables theming st with home manager";
+ font = lib.mkOption {
+ type = lib.types.str;
+ default = "JetBrainsMonoNL Nerd Font Mono:size=12:antialias=true:autohint=true";
+ };
+ };
+ };
+ config = let
+ themed-st = pkgs.st.overrideAttrs (old: {
+ buildInputs = old.buildInputs or [] ++ [ pkgs.makeWrapper ];
+ postInstall = old.postInstall or "" + ''
+ wrapProgram $out/bin/st \
+ --add-flags '-f"${config.theme.st.font}"'
+ '';
+ });
+ in lib.mkIf config.theme.enable {
+ home.packages = [ themed-st ];
+ };
+}
diff --git a/home-manager/theme.nix b/home-manager/theme.nix
new file mode 100644
index 0000000..9e4edae
--- /dev/null
+++ b/home-manager/theme.nix
@@ -0,0 +1,101 @@
+{ config, lib, pkgs, ... }:
+let
+ transformColorValue = color :
+ if color == "Green" then "Mint-Y"
+ else if color == "Dark-Green" then "Mint-Y-Dark"
+ else "Mint-Y-${color}"
+ ;
+in {
+ options = {
+ theme.enable = lib.mkEnableOption "enables theming";
+ theme.mint = {
+ enable = lib.mkEnableOption "enables mint theme";
+ # TODO add theme.dark option instead of specifying Dark-Color
+ theme.color = lib.mkOption {
+ type = lib.types.enum [
+ "Aqua" "Blue" "Green" "Grey" "Orange" "Pink" "Purple" "Red"
+ "Sand" "Teal" "Dark-Aqua" "Dark-Blue" "Dark-Green"
+ "Dark-Grey" "Dark-Orange" "Dark-Pink" "Dark-Purple"
+ "Dark-Red" "Dark-Sand" "Dark-Teal"
+ ];
+ default = "Dark-Aqua";
+ description = "mint-y theme color eg. 'Dark-Aqua' or 'Red'";
+ };
+ icons.color = lib.mkOption {
+ type = lib.types.enum [
+ "Aqua" "Blue" "Green" "Grey" "Orange" "Pink" "Purple" "Red"
+ "Sand" "Teal"
+ ];
+ default = "Aqua";
+ description = "mint-y icons color eg. 'Aqua' or 'Red'";
+ };
+ };
+ theme.font = {
+ sansSerif = lib.mkOption {
+ type = lib.types.str;
+ default = "Inter";
+ description = "default sans serif font";
+ };
+ monospace = lib.mkOption {
+ type = lib.types.str;
+ default = "CommitMono";
+ description = "default monospace font";
+ };
+ gtk = {
+ name = lib.mkOption {
+ type = lib.types.str;
+ default = "sans-serif";
+ description = "default gtk font";
+ };
+ size = lib.mkOption {
+ type = with lib.types; nullOr int;
+ default = null;
+ description = "default gtk font size";
+ };
+ };
+ };
+ theme.cursor = {
+ name = lib.mkOption {
+ type = lib.types.str;
+ default = "Adwaita";
+ description = "gtk cursor theme";
+ };
+ size = lib.mkOption {
+ type = with lib.types; nullOr int;
+ default = null;
+ description = "gtk cursor size";
+ };
+ };
+ };
+
+ config = lib.mkIf config.theme.enable {
+ gtk = {
+ enable = true;
+ theme = lib.mkIf config.theme.mint.enable {
+ package = pkgs.mint-themes;
+ name = transformColorValue config.theme.mint.theme.color;
+ };
+ iconTheme = lib.mkIf config.theme.mint.enable {
+ package = pkgs.mint-y-icons;
+ name = transformColorValue config.theme.mint.icons.color;
+ };
+ font = {
+ name = config.theme.font.gtk.name;
+ size = config.theme.font.gtk.size;
+ };
+ cursorTheme = {
+ name = config.theme.cursor.name;
+ size = config.theme.cursor.size;
+ };
+ gtk2.configLocation = "${config.xdg.configHome}/gtk-2.0/gtkrc";
+ };
+ qt = {
+ enable = true;
+ platformTheme.name = "gtk3";
+ };
+ fonts.fontconfig.defaultFonts = {
+ sansSerif = [ config.theme.font.sansSerif ];
+ monospace = [ config.theme.font.monospace ];
+ };
+ };
+}
diff --git a/home-manager/userdirs.nix b/home-manager/userdirs.nix
new file mode 100644
index 0000000..58c1d59
--- /dev/null
+++ b/home-manager/userdirs.nix
@@ -0,0 +1,5 @@
+{ userDetails, ... }: {
+ xdg.userDirs = {
+ enable = true;
+ } // userDetails.userDirs;
+}
diff --git a/home-manager/wallpapers.nix b/home-manager/wallpapers.nix
new file mode 100644
index 0000000..d7e067a
--- /dev/null
+++ b/home-manager/wallpapers.nix
@@ -0,0 +1,14 @@
+{ lib, config, pkgs, ... }: {
+ options = {
+ wallpapers.enable = lib.mkEnableOption "enables all wallpapers";
+ };
+
+ config = lib.mkIf config.wallpapers.enable {
+ home.file.".local/share/wallpaper" = {
+ source = pkgs.fetchzip {
+ url = "https://tjkeller.xyz/permalinks/wallpapers.tar";
+ hash = "sha256-lhj9wUMZfd0XOrUtWY9HB64oXrS/EjsvsaJHzu4ucFg=";
+ };
+ };
+ };
+}