diff --git a/hosts/vali/temperance/configuration.nix b/hosts/vali/temperance/configuration.nix index 7154015..9f19ef3 100644 --- a/hosts/vali/temperance/configuration.nix +++ b/hosts/vali/temperance/configuration.nix @@ -62,6 +62,7 @@ }; }; services = { + locate.enable = true; media.mpd = { enable = true; musicDirectory = "/home/${config.modules.other.system.username}/Nextcloud/Media/Music"; diff --git a/hosts/vali/temperance/programs.nix b/hosts/vali/temperance/programs.nix index 89a5d17..312e165 100644 --- a/hosts/vali/temperance/programs.nix +++ b/hosts/vali/temperance/programs.nix @@ -95,7 +95,7 @@ in { texliveFull tldr thunderbird - tor-browser-bundle-bin + tor-browser trash-cli tree ttyper diff --git a/modules/default.nix b/modules/default.nix index d4c4bd8..9fc5882 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -10,5 +10,6 @@ _: { ./runners ./styling ./options + #./system/nix/module.nix ]; } diff --git a/modules/gui/steam.nix b/modules/gui/steam.nix index 9850828..0f85195 100644 --- a/modules/gui/steam.nix +++ b/modules/gui/steam.nix @@ -21,7 +21,7 @@ in { gamescopeSession.enable = mkIf cfg.gamescope true; }; programs.gamemode.enable = true; - environment.systemPackages = [pkgs.protonup]; + environment.systemPackages = [pkgs.protonup-ng]; environment.sessionVariables = { STEAM_EXTRA_COMPAT_TOOLS_PATHS = "/home/${username}/.steam/root/compatibilitytoolds.d"; }; diff --git a/modules/options/usrEnv/services/default.nix b/modules/options/usrEnv/services/default.nix index 12e3ee4..1c4d44b 100644 --- a/modules/options/usrEnv/services/default.nix +++ b/modules/options/usrEnv/services/default.nix @@ -2,12 +2,15 @@ inherit (lib.options) mkOption mkEnableOption; inherit (lib) types; in { - options.modules.usrEnv.services.media = { - mpd = { - enable = mkEnableOption "mpd service"; - musicDirectory = mkOption { - description = "music directory for mpd"; - type = types.str; + options.modules.usrEnv.services = { + locate.enable = mkEnableOption "Locate service"; + media = { + mpd = { + enable = mkEnableOption "mpd service"; + musicDirectory = mkOption { + description = "music directory for mpd"; + type = types.str; + }; }; }; }; diff --git a/modules/services/default.nix b/modules/services/default.nix index 07c30f2..2be32dc 100644 --- a/modules/services/default.nix +++ b/modules/services/default.nix @@ -1 +1,12 @@ -_: {imports = [./pipewire.nix ./ssh.nix ./greetd.nix ./dunst.nix ./mpd.nix ./firewall.nix ./vpn.nix];} +_: { + imports = [ + ./pipewire.nix + ./locate.nix + ./ssh.nix + ./greetd.nix + ./dunst.nix + ./mpd.nix + ./firewall.nix + ./vpn.nix + ]; +} diff --git a/modules/services/locate.nix b/modules/services/locate.nix new file mode 100644 index 0000000..09062fd --- /dev/null +++ b/modules/services/locate.nix @@ -0,0 +1,19 @@ +{ + config, + lib, + pkgs, + ... +}: let + cfg = config.modules.usrEnv.services.locate; + inherit (lib) mkIf; +in { + config = mkIf cfg.enable { + environment.systemPackages = with pkgs; [plocate]; + services.locate = { + enable = true; + interval = "hourly"; + package = pkgs.plocate; + localuser = null; + }; + }; +} diff --git a/modules/styling/stylix.nix b/modules/styling/stylix.nix index c515f18..cf3ad8f 100644 --- a/modules/styling/stylix.nix +++ b/modules/styling/stylix.nix @@ -51,7 +51,7 @@ in { # }; emoji = { - package = pkgs.noto-fonts-emoji; + package = pkgs.noto-fonts-color-emoji; name = "Noto Color Emoji"; }; }; diff --git a/modules/system/nix/documentation.nix b/modules/system/nix/documentation.nix new file mode 100644 index 0000000..025e71e --- /dev/null +++ b/modules/system/nix/documentation.nix @@ -0,0 +1,28 @@ +{ + # faster rebuilding + documentation = { + # whether to enable the `doc` output of packages + # generally in ${pkg}/share/ as plaintext or html + # # can shave off a few megabytes + # doc.enable = false; + # + # # whether to install the `info` command and the `info` + # # output of packages + # info.enable = false; + # + # man = { + # # Whether to install manual pages + # # this means packages that provide a `man` output will have said output + # # included in the final closure + # enable = true; + # + # # Whether to generate the manual page index caches + # # if true, it becomes possible to search for a page or keyword + # # using utilities like apropos(1) and the -k option of man(1). + # generateCaches = true; + # + # # Whether to enable mandoc as the default man page viewer. + # mandoc.enable = false; # my default manpage viewer is Neovim, so this isn't necessary + # }; + }; +} diff --git a/modules/system/nix/module.nix b/modules/system/nix/module.nix new file mode 100644 index 0000000..ae677a0 --- /dev/null +++ b/modules/system/nix/module.nix @@ -0,0 +1,152 @@ +{pkgs, ...}: { + imports = [ + ./documentation.nix # nixos documentation + ./nixpkgs.nix # global nixpkgs configuration.nix + ]; + + nix = { + # Lix, Nix but gay! + # package = pkgs.lix; + # + # # Run the Nix daemon on lowest possible priority so that my system + # # stays responsive during demanding tasks such as GC and builds. + # # This is especially useful while auto-gc and auto-upgrade are enabled + # # as they can be quite demanding on the CPU. + # daemonCPUSchedPolicy = "idle"; + # daemonIOSchedClass = "idle"; + # daemonIOSchedPriority = 7; + # + # # Collect garbage + # gc = { + # automatic = true; + # dates = "20:00"; + # options = "--delete-older-than 7d"; + # persistent = false; # don't try to catch up on missed GC runs + # }; + # + # # Automatically optimize nix store by removing hard links + # # do it after the gc. + # optimise = { + # automatic = true; + # dates = ["21:00"]; + # }; + # + settings = { + # Tell nix to use the xdg spec for base directories + # while transitioning, any state must be carried over + # manually, as Nix won't do it for us. + # use-xdg-base-directories = true; + # + # # Automatically optimise symlinks + # auto-optimise-store = true; + # + # # Allow sudo users to mark the following values as trusted + # allowed-users = ["root" "@wheel" "nix-builder"]; + # + # # Only allow sudo users to manage the nix store + # trusted-users = ["root" "@wheel" "nix-builder"]; + # + # # Let the system decide the number of max jobs + # # based on available system specs. Usually this is + # # the same as the number of cores your CPU has. + # max-jobs = "auto"; + # + # # Always build inside sandboxed environments + # sandbox = true; + # sandbox-fallback = false; + # + # # Continue building derivations even if one fails + # keep-going = true; + # + # # Fallback to local builds after remote builders are unavailable. + # # Setting this too low on a slow network may cause remote builders + # # to be discarded before a connection can be established. + # connect-timeout = 5; + # + # # If we haven't received data for >= 20s, retry the download + # stalled-download-timeout = 20; + # + # # Show more logs when a build fails and decides to display + # # a bunch of lines. `nix log` would normally provide more + # # information, but this may save us some time and keystrokes. + # log-lines = 30; + # + # # Extra features of Nix that are considered unstable + # # and experimental. By default we should always include + # # `flakes` and `nix-command`, while others are usually + # optional. + extra-experimental-features = [ + "flakes" # flakes + "nix-command" # experimental nix commands + "cgroups" # allow nix to execute builds inside cgroups + ]; + + # Ensures that the result of Nix expressions is fully determined by + # # explicitly declared inputs, and not influenced by external state. + # # In other words, fully stateless evaluation by Nix at all times. + # # pure-eval = true; + # + # # Don't warn me that my git tree is dirty, I know. + # warn-dirty = false; + # + # # Maximum number of parallel TCP connections + # # used to fetch imports and binary caches. + # # 0 means no limit, default is 25. + # http-connections = 50; # lower values fare better on slow connections + # + # # Whether to accept nix configuration from a flake + # # without displaying a Y/N prompt. For those obtuse + # # enough to keep this true, I wish the best of luck. + # # tl;dr: this is a security vulnerability. + # accept-flake-config = false; + # + # # Whether to execute builds inside cgroups. cgroups are + # # "a Linux kernel feature that limits, accounts for, and + # # isolates the resource usage (CPU, memory, disk I/O, etc.) + # # of a collection of processes." + # # See: + # # + # # use-cgroups = pkgs.stdenv.isLinux; # only supported on Linux + # + # # for direnv GC roots + # keep-derivations = true; + # keep-outputs = true; + # + # # Use binary cache, this is not Gentoo + # # external builders can also pick up those substituters + # builders-use-substitutes = true; + + # Substituters to pull from. While sigs are disabled, we must + # make sure the substituters listed here are trusted. + substituters = [ + "https://cache.nixos.org" # funny binary cache + "https://cache.privatevoid.net" # for nix-super + "https://nix-community.cachix.org" # nix-community cache + "https://hyprland.cachix.org" # hyprland + "https://nixpkgs-unfree.cachix.org" # unfree-package cache + "https://anyrun.cachix.org" # anyrun program launcher + "https://neovim-flake.cachix.org" # a cache for my neovim flake + "https://cache.garnix.io" # garnix binary cache, hosts prismlauncher + ]; + + trusted-public-keys = [ + "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=" + "cache.privatevoid.net:SErQ8bvNWANeAvtsOESUwVYr2VJynfuc9JRwlzTTkVg=" + "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" + "hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc=" + "nixpkgs-unfree.cachix.org-1:hqvoInulhbV4nJ9yJOEr+4wxhDV4xq2d1DK7S6Nj6rs=" + "anyrun.cachix.org-1:pqBobmOjI7nKlsUMV25u9QHa9btJK65/C8vnO3p346s=" + ]; + }; + }; + + # By default nix-gc makes no effort to respect battery life by avoiding + # GC runs on battery and fully commits a few cores to collecting garbage. + # This will drain the battery faster than you can say "Nix, what the hell?" + # and contribute heavily to you wanting to get a new desktop. + # For those curious (such as myself) desktops are always seen as "AC powered" + # so the system will not fail to fire if you are on a desktop system. + # systemd.services.nix-gc = { + # unitConfig.ConditionACPower = true; + # }; +} diff --git a/modules/system/nix/nixpkgs.nix b/modules/system/nix/nixpkgs.nix new file mode 100644 index 0000000..55faa74 --- /dev/null +++ b/modules/system/nix/nixpkgs.nix @@ -0,0 +1,45 @@ +{ + # Global nixpkgs configuration. This is ignored if nixpkgs.pkgs is set + # which is a case that should be avoided. Everything that is set to configure + # nixpkgs must go here. + nixpkgs = { + # Configuration reference: + # + # config = { + # # Allow broken packages to be built. Setting this to false means packages + # # will refuse to evaluate sometimes, but only if they have been marked as + # # broken for a specific reason. At that point we can either try to solve + # # the breakage, or get rid of the package entirely. + # allowBroken = false; + # allowUnsupportedSystem = true; + # + # # Really a pain in the ass to deal with when disabled. True means + # # we are able to build unfree packages without explicitly allowing + # # each unfree package. + # allowUnfree = true; + # + # # Default to none, add more as necessary. This is usually where + # # electron packages go when they reach EOL. + # permittedInsecurePackages = []; + # + # # Nixpkgs sets internal package aliases to ease migration from other + # # distributions easier, or for convenience's sake. Even though the manual + # # and the description for this option recommends this to be true, I prefer + # # explicit naming conventions, i.e., no aliases. + # allowAliases = true; + # + # # Enable parallel building by default. This, in theory, should speed up building + # # derivations, especially rust ones. However setting this to true causes a mass rebuild + # # of the *entire* system closure, so it must be handled with proper care. + # enableParallelBuildingByDefault = false; + # + # # List of derivation warnings to display while rebuilding. + # # See: + # # NOTE: "maintainerless" can be added to emit warnings + # # about packages without maintainers but it seems to me + # # like there are more packages without maintainers than + # # with maintainers, so it's disabled for the time being. + # showDerivationWarnings = []; + # }; + }; +} diff --git a/modules/wms/wayland/hypr/land.nix b/modules/wms/wayland/hypr/land.nix index 78196c9..ba0bcaf 100644 --- a/modules/wms/wayland/hypr/land.nix +++ b/modules/wms/wayland/hypr/land.nix @@ -172,7 +172,7 @@ in { ]; # Hyprland anomations, using the above bezier curves animations = { - enabled = false; + enabled = true; animation = [ "windows, 1, 4, dupa, popin" "windowsOut, 1, 4, dupa, slide" @@ -359,6 +359,12 @@ in { "[workspace special:pipewire;silent;tile] ${pkgs.pavucontrol}/bin/pavucontrol" # "${pkgs.networkmanagerapplet}/bin/nm-applet --indicator" ]; + plugin = { + split-monitor-workspaces = { + keep-focued = true; + count = 10; + }; + }; }; }; }; diff --git a/options/desktop/fonts.nix b/options/desktop/fonts.nix index 25e4f05..8cece80 100644 --- a/options/desktop/fonts.nix +++ b/options/desktop/fonts.nix @@ -2,11 +2,13 @@ fonts = { packages = with pkgs; [ material-design-icons + xfce.xfce4-icon-theme + papirus-icon-theme (nerdfonts.override {fonts = ["JetBrainsMono" "ComicShannsMono"];}) noto-fonts noto-fonts-cjk-sans noto-fonts-cjk-serif - noto-fonts-emoji + noto-fonts-color-emoji corefonts ]; # What does this do?