diff --git a/.github/workflows/benchmark-eval.yml b/.github/workflows/benchmark-eval.yml index f4d20df3..118ca4f1 100644 --- a/.github/workflows/benchmark-eval.yml +++ b/.github/workflows/benchmark-eval.yml @@ -2,12 +2,14 @@ name: Benchmark Evaluation Speed on: workflow_dispatch: - push: - branches: - - master + pull_request: + types: + - closed jobs: benchmark: + if: github.event.pull_request.merged == true + name: Benchmark NixOS Configuration runs-on: ubuntu-latest steps: diff --git a/flake.lock b/flake.lock index 48f02b20..f3171b0b 100644 --- a/flake.lock +++ b/flake.lock @@ -70,11 +70,11 @@ "firefox-gnome-theme": { "flake": false, "locked": { - "lastModified": 1756083905, - "narHash": "sha256-UqYGTBgI5ypGh0Kf6zZjom/vABg7HQocB4gmxzl12uo=", + "lastModified": 1758112371, + "narHash": "sha256-lizRM2pj6PHrR25yimjyFn04OS4wcdbc38DCdBVa2rk=", "owner": "rafaelmardojai", "repo": "firefox-gnome-theme", - "rev": "b655eaf16d4cbec9c3472f62eee285d4b419a808", + "rev": "0909cfe4a2af8d358ad13b20246a350e14c2473d", "type": "github" }, "original": { @@ -162,11 +162,11 @@ ] }, "locked": { - "lastModified": 1758296614, - "narHash": "sha256-l60D1i0aaSqemy9dL7wP0ePMfcv/oZbeKpvUMY+q0kQ=", + "lastModified": 1759106866, + "narHash": "sha256-GjLvAl7qxGxKtop6ghasxjQ1biTT7pA+WU45byzMl/4=", "owner": "nix-community", "repo": "home-manager", - "rev": "55b1f5b7b191572257545413b98e37abab2fdb00", + "rev": "619ae569293b6427d23cce4854eb4f3c33af3eec", "type": "github" }, "original": { @@ -177,11 +177,11 @@ }, "nixos-hardware": { "locked": { - "lastModified": 1757943327, - "narHash": "sha256-w6cDExPBqbq7fTLo4dZ1ozDGeq3yV6dSN4n/sAaS6OM=", + "lastModified": 1758663926, + "narHash": "sha256-6CFdj7Xs616t1W4jLDH7IohAAvl5Dyib3qEv/Uqw1rk=", "owner": "NixOS", "repo": "nixos-hardware", - "rev": "67a709cfe5d0643dafd798b0b613ed579de8be05", + "rev": "170ff93c860b2a9868ed1e1102d4e52cb3d934e1", "type": "github" }, "original": { @@ -192,11 +192,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1758198701, - "narHash": "sha256-7To75JlpekfUmdkUZewnT6MoBANS0XVypW6kjUOXQwc=", + "lastModified": 1758690382, + "narHash": "sha256-NY3kSorgqE5LMm1LqNwGne3ZLMF2/ILgLpFr1fS4X3o=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "0147c2f1d54b30b5dd6d4a8c8542e8d7edf93b5d", + "rev": "e643668fd71b949c53f8626614b21ff71a07379d", "type": "github" }, "original": { @@ -233,11 +233,11 @@ ] }, "locked": { - "lastModified": 1756961635, - "narHash": "sha256-hETvQcILTg5kChjYNns1fD5ELdsYB/VVgVmBtqKQj9A=", + "lastModified": 1758998580, + "narHash": "sha256-VLx0z396gDCGSiowLMFz5XRO/XuNV+4EnDYjdJhHvUk=", "owner": "nix-community", "repo": "NUR", - "rev": "6ca27b2654ac55e3f6e0ca434c1b4589ae22b370", + "rev": "ba8d9c98f5f4630bcb0e815ab456afd90c930728", "type": "github" }, "original": { @@ -276,11 +276,11 @@ "tinted-zed": "tinted-zed" }, "locked": { - "lastModified": 1757956156, - "narHash": "sha256-f0W7qbsCqpi6swQ5w8H+0YrAbNwsHgCFDkNRMTJjqrE=", + "lastModified": 1759069666, + "narHash": "sha256-/oVAVpL4xxR4KG4MlFspi8fiP9wEaSs+zqHkD2tw17g=", "owner": "nix-community", "repo": "stylix", - "rev": "0ce0103b498bb22f899ed8862d8d7f9503ed9cdb", + "rev": "f23b6c30cc002786a22998caf15312ea01c20654", "type": "github" }, "original": { @@ -340,11 +340,11 @@ "tinted-schemes": { "flake": false, "locked": { - "lastModified": 1754779259, - "narHash": "sha256-8KG2lXGaXLUE0F/JVwLQe7kOVm21IDfNEo0gfga5P4M=", + "lastModified": 1757716333, + "narHash": "sha256-d4km8W7w2zCUEmPAPUoLk1NlYrGODuVa3P7St+UrqkM=", "owner": "tinted-theming", "repo": "schemes", - "rev": "097d751b9e3c8b97ce158e7d141e5a292545b502", + "rev": "317a5e10c35825a6c905d912e480dfe8e71c7559", "type": "github" }, "original": { @@ -356,11 +356,11 @@ "tinted-tmux": { "flake": false, "locked": { - "lastModified": 1754788770, - "narHash": "sha256-LAu5nBr7pM/jD9jwFc6/kyFY4h7Us4bZz7dvVvehuwo=", + "lastModified": 1757811970, + "narHash": "sha256-n5ZJgmzGZXOD9pZdAl1OnBu3PIqD+X3vEBUGbTi4JiI=", "owner": "tinted-theming", "repo": "tinted-tmux", - "rev": "fb2175accef8935f6955503ec9dd3c973eec385c", + "rev": "d217ba31c846006e9e0ae70775b0ee0f00aa6b1e", "type": "github" }, "original": { @@ -372,11 +372,11 @@ "tinted-zed": { "flake": false, "locked": { - "lastModified": 1755613540, - "narHash": "sha256-zBFrrTxHLDMDX/OYxkCwGGbAhPXLi8FrnLhYLsSOKeY=", + "lastModified": 1757811247, + "narHash": "sha256-4EFOUyLj85NRL3OacHoLGEo0wjiRJzfsXtR4CZWAn6w=", "owner": "tinted-theming", "repo": "base16-zed", - "rev": "937bada16cd3200bdbd3a2f5776fc3b686d5cba0", + "rev": "824fe0aacf82b3c26690d14e8d2cedd56e18404e", "type": "github" }, "original": { diff --git a/hosts/iso/configuration.nix b/hosts/iso/configuration.nix index b8f26fc4..091f6a00 100644 --- a/hosts/iso/configuration.nix +++ b/hosts/iso/configuration.nix @@ -8,22 +8,14 @@ ]; config = { - networking.networkmanager.enable = true; + my.desktops.gnome.enable = true; - services.desktopManager.plasma6.enable = true; - services.displayManager.defaultSession = "plasmax11"; - - services.displayManager = { - autoLogin.enable = true; - sddm.enable = true; - }; + services.displayManager.autoLogin.enable = true; console.keyMap = "us"; i18n.defaultLocale = "en_CA.UTF-8"; time.timeZone = "America/Toronto"; - zramSwap.enable = true; - nixpkgs.config.allowUnfree = true; }; } \ No newline at end of file diff --git a/hosts/laptop/configuration.nix b/hosts/laptop/configuration.nix index 2217d2be..f03a7583 100644 --- a/hosts/laptop/configuration.nix +++ b/hosts/laptop/configuration.nix @@ -14,7 +14,7 @@ my.desktops = { - sway.enable = lib.mkForce false; + niri.enable = lib.mkForce false; gnome.enable = true; }; }; @@ -23,7 +23,7 @@ boot.kernelPackages = pkgs.linuxPackages_xanmod_latest; # Enable a desktop environment - my.desktops.sway.enable = true; + my.desktops.niri.enable = true; # Set locale, keymap and timezone console.keyMap = "us"; diff --git a/hosts/laptop/hardware/mounts.nix b/hosts/laptop/hardware/mounts.nix index b5756195..793b5485 100644 --- a/hosts/laptop/hardware/mounts.nix +++ b/hosts/laptop/hardware/mounts.nix @@ -37,7 +37,5 @@ interval = "weekly"; }; - - zramSwap.enable = true; }; } \ No newline at end of file diff --git a/modules/home-manager/desktops/sway/config.nix b/modules/home-manager/desktops/sway/config.nix deleted file mode 100644 index 84930c6f..00000000 --- a/modules/home-manager/desktops/sway/config.nix +++ /dev/null @@ -1,19 +0,0 @@ -{ - osConfig, - config, - lib, - ... -}: -let - cfg = config.my.desktops.sway; -in { - config = lib.mkIf cfg.enable { - assertions = [{ - assertion = osConfig.my.desktops.sway.enable; - message = "Please enable my.desktops.sway in your NixOS configuration"; - }]; - - - xdg.configFile."sway/config".source = cfg.config; - }; -} \ No newline at end of file diff --git a/modules/home-manager/desktops/sway/options.nix b/modules/home-manager/desktops/sway/options.nix deleted file mode 100644 index 894aa51f..00000000 --- a/modules/home-manager/desktops/sway/options.nix +++ /dev/null @@ -1,18 +0,0 @@ -{ - osConfig, - lib, - ... -}: -{ - options = { - my.desktops.sway = { - enable = lib.mkEnableOption "sway" // { - default = osConfig.my.desktops.sway.enable; - }; - - config = lib.mkOption { - type = with lib.types; path; - }; - }; - }; -} \ No newline at end of file diff --git a/modules/home-manager/fonts/fontconfig/module.nix b/modules/home-manager/fonts/fontconfig/module.nix new file mode 100644 index 00000000..0e18fbae --- /dev/null +++ b/modules/home-manager/fonts/fontconfig/module.nix @@ -0,0 +1,24 @@ +{ + config, + lib, + pkgs, + ... +}: +let + cfg = config.fonts.fontconfig; +in { + # TODO: eventually I want to move this to some environment flag, such as + # `config.environment.isTerminal`, `config.environment.isGraphical`, and + # have these environment flags controlled by their respective programs. + # + # For example, using `programs.eza.enable` should enable the `isTerminal` + # flag, and therefore bring in all terminal styling configurations. + # + # The naming here is very much pending, but I prefer this instead of + # activating it here. + config = lib.mkIf cfg.enable { + home.packages = with pkgs; [ + nerd-fonts.symbols-only + ]; + }; +} \ No newline at end of file diff --git a/modules/home-manager/my/programs/app2unit/config.nix b/modules/home-manager/my/programs/app2unit/config.nix new file mode 100644 index 00000000..7d73618a --- /dev/null +++ b/modules/home-manager/my/programs/app2unit/config.nix @@ -0,0 +1,14 @@ +{ + config, + lib, + ... +}: +let + cfg = config.my.programs.app2unit; +in { + config = lib.mkIf cfg.enable { + home.packages = [ + cfg.package + ]; + }; +} \ No newline at end of file diff --git a/modules/home-manager/desktops/gnome/module.nix b/modules/home-manager/my/programs/app2unit/module.nix similarity index 100% rename from modules/home-manager/desktops/gnome/module.nix rename to modules/home-manager/my/programs/app2unit/module.nix diff --git a/modules/home-manager/my/programs/app2unit/options.nix b/modules/home-manager/my/programs/app2unit/options.nix new file mode 100644 index 00000000..6d81ea58 --- /dev/null +++ b/modules/home-manager/my/programs/app2unit/options.nix @@ -0,0 +1,21 @@ +{ + lib, + pkgs, + ... +}: +{ + options = { + my.programs.app2unit = { + enable = lib.mkEnableOption "app2unit"; + + package = lib.mkOption { + default = pkgs.app2unit; + apply = app2unit: pkgs.callPackage ./package { + inherit app2unit; + }; + + type = with lib.types; package; + }; + }; + }; +} \ No newline at end of file diff --git a/modules/home-manager/my/programs/app2unit/package/default.nix b/modules/home-manager/my/programs/app2unit/package/default.nix new file mode 100644 index 00000000..313cc83a --- /dev/null +++ b/modules/home-manager/my/programs/app2unit/package/default.nix @@ -0,0 +1,21 @@ +{ + callPackage, + buildEnv, + + app2unit, +}: +let + wrapper = callPackage ./package.nix { + inherit app2unit; + }; +in buildEnv { + inherit (app2unit) name version; + + paths = [ + wrapper + app2unit + ]; + + ignoreCollisions = true; + meta.mainProgram = "app2unit"; +} \ No newline at end of file diff --git a/modules/home-manager/my/programs/app2unit/package/package.nix b/modules/home-manager/my/programs/app2unit/package/package.nix new file mode 100644 index 00000000..02289cc6 --- /dev/null +++ b/modules/home-manager/my/programs/app2unit/package/package.nix @@ -0,0 +1,38 @@ +{ + lib, + stdenvNoCC, + + app2unit, +}: +stdenvNoCC.mkDerivation { + pname = "app2unit-wrapper"; + version = "0.1.0"; + + src = with lib.fileset; toSource { + root = ./.; + fileset = unions [ + ./src + ]; + }; + + env = { + app2unit = lib.getExe app2unit; + }; + + installPhase = '' + install -Dm755 src/app2unit.sh $out/bin/app2unit + + substituteInPlace $out/bin/app2unit \ + --subst-var app2unit + ''; + + meta = with lib; { + description = "Launch applications through app2unit with specific fixes"; + + license = licenses.agpl3Plus; + maintainers = with maintainers; [ frontear ]; + platforms = platforms.linux; + + mainProgram = "app2unit"; + }; +} \ No newline at end of file diff --git a/modules/home-manager/my/programs/app2unit/package/src/app2unit.sh b/modules/home-manager/my/programs/app2unit/package/src/app2unit.sh new file mode 100755 index 00000000..c06992bf --- /dev/null +++ b/modules/home-manager/my/programs/app2unit/package/src/app2unit.sh @@ -0,0 +1,44 @@ +#!/usr/bin/env bash + +set -o errexit +set -o nounset +set -o pipefail + +# We want to be an extremely thin wrapper around `app2unit`. If there is only +# one argument given, and it matches with an expected application or .desktop +# file, then we will perform our wrapping. In all other cases, we will not do +# anything, and just pass arguments as is to the underlying application, to +# prevent breaking expected functionality. +# +# More directly, for this wrapper to be effective, the caller must ONLY provide +# a single argument (or a single argument after `--`): a path to a binary, or a +# .desktop file. This wrapper will then determine if the argument warrants any +# wrapping. If it does, then it will attach arguments as needed and re-invoke +# the underlying program. If not, then the underlying application is invoked +# with all arguments passed directly to it. + +# `app2unit` accepts binary files or .desktop files to be specified after an +# end-of-options `--` specifier. We will account for that by shifting it. +if [ "$1" = "--" ]; then + shift +fi + +if [ "$#" -eq 1 ]; then + case "$1" in + # Run Microsoft Edge as a service to link it with the other scope unit + # that comes up with it. This prevents a race condition during shutdown + # that causes unclean termination. + # + # see: https://github.com/hyprwm/Hyprland/discussions/8459#discussioncomment-14063563 + *microsoft-edge|*microsoft-edge.desktop|*com.microsoft.Edge.desktop) + exec "@app2unit@" -t service -- "$1" + ;; + esac +fi + +# Will never be reached if any `case` branch succeeds. +# +# NOTE: `-a "$0"` needed because this application has symlinks to the main +# binary which change the behaviour of execution. The symlink name, which will +# be seen in `$0`, determines this change. +exec -a "$0" "@app2unit@" "$@" \ No newline at end of file diff --git a/modules/home-manager/programs/bat/config.nix b/modules/home-manager/my/programs/bat/config.nix similarity index 100% rename from modules/home-manager/programs/bat/config.nix rename to modules/home-manager/my/programs/bat/config.nix diff --git a/modules/home-manager/desktops/sway/module.nix b/modules/home-manager/my/programs/bat/module.nix similarity index 100% rename from modules/home-manager/desktops/sway/module.nix rename to modules/home-manager/my/programs/bat/module.nix diff --git a/modules/home-manager/programs/bat/options.nix b/modules/home-manager/my/programs/bat/options.nix similarity index 100% rename from modules/home-manager/programs/bat/options.nix rename to modules/home-manager/my/programs/bat/options.nix diff --git a/modules/home-manager/programs/doggo/config.nix b/modules/home-manager/my/programs/doggo/config.nix similarity index 100% rename from modules/home-manager/programs/doggo/config.nix rename to modules/home-manager/my/programs/doggo/config.nix diff --git a/modules/home-manager/programs/bat/module.nix b/modules/home-manager/my/programs/doggo/module.nix similarity index 100% rename from modules/home-manager/programs/bat/module.nix rename to modules/home-manager/my/programs/doggo/module.nix diff --git a/modules/home-manager/programs/doggo/options.nix b/modules/home-manager/my/programs/doggo/options.nix similarity index 100% rename from modules/home-manager/programs/doggo/options.nix rename to modules/home-manager/my/programs/doggo/options.nix diff --git a/modules/home-manager/programs/duf/config.nix b/modules/home-manager/my/programs/duf/config.nix similarity index 100% rename from modules/home-manager/programs/duf/config.nix rename to modules/home-manager/my/programs/duf/config.nix diff --git a/modules/home-manager/programs/doggo/module.nix b/modules/home-manager/my/programs/duf/module.nix similarity index 100% rename from modules/home-manager/programs/doggo/module.nix rename to modules/home-manager/my/programs/duf/module.nix diff --git a/modules/home-manager/programs/duf/options.nix b/modules/home-manager/my/programs/duf/options.nix similarity index 100% rename from modules/home-manager/programs/duf/options.nix rename to modules/home-manager/my/programs/duf/options.nix diff --git a/modules/home-manager/programs/dust/config.nix b/modules/home-manager/my/programs/dust/config.nix similarity index 100% rename from modules/home-manager/programs/dust/config.nix rename to modules/home-manager/my/programs/dust/config.nix diff --git a/modules/home-manager/programs/duf/module.nix b/modules/home-manager/my/programs/dust/module.nix similarity index 100% rename from modules/home-manager/programs/duf/module.nix rename to modules/home-manager/my/programs/dust/module.nix diff --git a/modules/home-manager/programs/dust/options.nix b/modules/home-manager/my/programs/dust/options.nix similarity index 100% rename from modules/home-manager/programs/dust/options.nix rename to modules/home-manager/my/programs/dust/options.nix diff --git a/modules/home-manager/programs/element/config.nix b/modules/home-manager/my/programs/element/config.nix similarity index 100% rename from modules/home-manager/programs/element/config.nix rename to modules/home-manager/my/programs/element/config.nix diff --git a/modules/home-manager/programs/dust/module.nix b/modules/home-manager/my/programs/element/module.nix similarity index 100% rename from modules/home-manager/programs/dust/module.nix rename to modules/home-manager/my/programs/element/module.nix diff --git a/modules/home-manager/programs/element/options.nix b/modules/home-manager/my/programs/element/options.nix similarity index 68% rename from modules/home-manager/programs/element/options.nix rename to modules/home-manager/my/programs/element/options.nix index c58105df..15e81104 100644 --- a/modules/home-manager/programs/element/options.nix +++ b/modules/home-manager/my/programs/element/options.nix @@ -9,6 +9,9 @@ enable = lib.mkEnableOption "element"; package = lib.mkOption { default = pkgs.element-desktop; + apply = element-desktop: pkgs.callPackage ./package.nix { + inherit element-desktop; + }; type = with lib.types; package; }; diff --git a/modules/home-manager/my/programs/element/package.nix b/modules/home-manager/my/programs/element/package.nix new file mode 100644 index 00000000..d0d006bd --- /dev/null +++ b/modules/home-manager/my/programs/element/package.nix @@ -0,0 +1,29 @@ +{ + lib, + symlinkJoin, + makeWrapper, + + element-desktop, + + # NOTE: despite it's name, this will actually force Electron to query the + # correct `org.freedesktops.secrets` provider through D-BUS. Thus, it's a + # safe default for any generic provider, _not_ just `gnome-keyring`. + # + # see: https://github.com/electron/electron/issues/47436#issuecomment-2995219848 + withArgs ? "--password-store=gnome-libsecret" +}: +symlinkJoin { + name = "element-desktop"; + paths = [ + element-desktop + ]; + + nativeBuildInputs = [ + makeWrapper + ]; + + postBuild = '' + wrapProgram $out/bin/element-desktop \ + --add-flags ${lib.escapeShellArg withArgs} + ''; +} \ No newline at end of file diff --git a/modules/home-manager/programs/fastfetch/config.nix b/modules/home-manager/my/programs/fastfetch/config.nix similarity index 100% rename from modules/home-manager/programs/fastfetch/config.nix rename to modules/home-manager/my/programs/fastfetch/config.nix diff --git a/modules/home-manager/programs/element/module.nix b/modules/home-manager/my/programs/fastfetch/module.nix similarity index 100% rename from modules/home-manager/programs/element/module.nix rename to modules/home-manager/my/programs/fastfetch/module.nix diff --git a/modules/home-manager/programs/fastfetch/options.nix b/modules/home-manager/my/programs/fastfetch/options.nix similarity index 100% rename from modules/home-manager/programs/fastfetch/options.nix rename to modules/home-manager/my/programs/fastfetch/options.nix diff --git a/modules/home-manager/programs/fd/config.nix b/modules/home-manager/my/programs/fd/config.nix similarity index 100% rename from modules/home-manager/programs/fd/config.nix rename to modules/home-manager/my/programs/fd/config.nix diff --git a/modules/home-manager/programs/fastfetch/module.nix b/modules/home-manager/my/programs/fd/module.nix similarity index 100% rename from modules/home-manager/programs/fastfetch/module.nix rename to modules/home-manager/my/programs/fd/module.nix diff --git a/modules/home-manager/programs/fd/options.nix b/modules/home-manager/my/programs/fd/options.nix similarity index 100% rename from modules/home-manager/programs/fd/options.nix rename to modules/home-manager/my/programs/fd/options.nix diff --git a/modules/home-manager/programs/gnupg/config.nix b/modules/home-manager/my/programs/gnupg/config.nix similarity index 100% rename from modules/home-manager/programs/gnupg/config.nix rename to modules/home-manager/my/programs/gnupg/config.nix diff --git a/modules/home-manager/programs/fd/module.nix b/modules/home-manager/my/programs/gnupg/module.nix similarity index 100% rename from modules/home-manager/programs/fd/module.nix rename to modules/home-manager/my/programs/gnupg/module.nix diff --git a/modules/home-manager/programs/gnupg/options.nix b/modules/home-manager/my/programs/gnupg/options.nix similarity index 100% rename from modules/home-manager/programs/gnupg/options.nix rename to modules/home-manager/my/programs/gnupg/options.nix diff --git a/modules/home-manager/programs/hyperfine/config.nix b/modules/home-manager/my/programs/hyperfine/config.nix similarity index 100% rename from modules/home-manager/programs/hyperfine/config.nix rename to modules/home-manager/my/programs/hyperfine/config.nix diff --git a/modules/home-manager/programs/gnupg/module.nix b/modules/home-manager/my/programs/hyperfine/module.nix similarity index 100% rename from modules/home-manager/programs/gnupg/module.nix rename to modules/home-manager/my/programs/hyperfine/module.nix diff --git a/modules/home-manager/programs/hyperfine/options.nix b/modules/home-manager/my/programs/hyperfine/options.nix similarity index 100% rename from modules/home-manager/programs/hyperfine/options.nix rename to modules/home-manager/my/programs/hyperfine/options.nix diff --git a/modules/home-manager/programs/inxi/config.nix b/modules/home-manager/my/programs/inxi/config.nix similarity index 100% rename from modules/home-manager/programs/inxi/config.nix rename to modules/home-manager/my/programs/inxi/config.nix diff --git a/modules/home-manager/programs/hyperfine/module.nix b/modules/home-manager/my/programs/inxi/module.nix similarity index 100% rename from modules/home-manager/programs/hyperfine/module.nix rename to modules/home-manager/my/programs/inxi/module.nix diff --git a/modules/home-manager/programs/inxi/options.nix b/modules/home-manager/my/programs/inxi/options.nix similarity index 100% rename from modules/home-manager/programs/inxi/options.nix rename to modules/home-manager/my/programs/inxi/options.nix diff --git a/modules/home-manager/programs/inxi/package.nix b/modules/home-manager/my/programs/inxi/package.nix similarity index 100% rename from modules/home-manager/programs/inxi/package.nix rename to modules/home-manager/my/programs/inxi/package.nix diff --git a/modules/home-manager/programs/legcord/config.nix b/modules/home-manager/my/programs/legcord/config.nix similarity index 100% rename from modules/home-manager/programs/legcord/config.nix rename to modules/home-manager/my/programs/legcord/config.nix diff --git a/modules/home-manager/programs/inxi/module.nix b/modules/home-manager/my/programs/legcord/module.nix similarity index 100% rename from modules/home-manager/programs/inxi/module.nix rename to modules/home-manager/my/programs/legcord/module.nix diff --git a/modules/home-manager/programs/legcord/options.nix b/modules/home-manager/my/programs/legcord/options.nix similarity index 100% rename from modules/home-manager/programs/legcord/options.nix rename to modules/home-manager/my/programs/legcord/options.nix diff --git a/modules/home-manager/programs/libreoffice/config.nix b/modules/home-manager/my/programs/libreoffice/config.nix similarity index 94% rename from modules/home-manager/programs/libreoffice/config.nix rename to modules/home-manager/my/programs/libreoffice/config.nix index 96d78b19..402dafb8 100644 --- a/modules/home-manager/programs/libreoffice/config.nix +++ b/modules/home-manager/my/programs/libreoffice/config.nix @@ -19,6 +19,7 @@ in { cfg.package pkgs.corefonts + pkgs.vista-fonts (pkgs.hunspell.withDicts (dict: [ dict.en_CA diff --git a/modules/home-manager/programs/legcord/module.nix b/modules/home-manager/my/programs/libreoffice/module.nix similarity index 100% rename from modules/home-manager/programs/legcord/module.nix rename to modules/home-manager/my/programs/libreoffice/module.nix diff --git a/modules/home-manager/programs/libreoffice/options.nix b/modules/home-manager/my/programs/libreoffice/options.nix similarity index 100% rename from modules/home-manager/programs/libreoffice/options.nix rename to modules/home-manager/my/programs/libreoffice/options.nix diff --git a/modules/home-manager/programs/microsoft-edge/config.nix b/modules/home-manager/my/programs/microsoft-edge/config.nix similarity index 100% rename from modules/home-manager/programs/microsoft-edge/config.nix rename to modules/home-manager/my/programs/microsoft-edge/config.nix diff --git a/modules/home-manager/programs/libreoffice/module.nix b/modules/home-manager/my/programs/microsoft-edge/module.nix similarity index 100% rename from modules/home-manager/programs/libreoffice/module.nix rename to modules/home-manager/my/programs/microsoft-edge/module.nix diff --git a/modules/home-manager/programs/microsoft-edge/options.nix b/modules/home-manager/my/programs/microsoft-edge/options.nix similarity index 100% rename from modules/home-manager/programs/microsoft-edge/options.nix rename to modules/home-manager/my/programs/microsoft-edge/options.nix diff --git a/modules/home-manager/programs/microsoft-edge/package.nix b/modules/home-manager/my/programs/microsoft-edge/package.nix similarity index 100% rename from modules/home-manager/programs/microsoft-edge/package.nix rename to modules/home-manager/my/programs/microsoft-edge/package.nix diff --git a/modules/home-manager/programs/neovim/module.nix b/modules/home-manager/my/programs/neovim/module.nix similarity index 100% rename from modules/home-manager/programs/neovim/module.nix rename to modules/home-manager/my/programs/neovim/module.nix diff --git a/modules/home-manager/programs/neovim/package.nix b/modules/home-manager/my/programs/neovim/package.nix similarity index 100% rename from modules/home-manager/programs/neovim/package.nix rename to modules/home-manager/my/programs/neovim/package.nix diff --git a/modules/home-manager/programs/patool/config.nix b/modules/home-manager/my/programs/patool/config.nix similarity index 100% rename from modules/home-manager/programs/patool/config.nix rename to modules/home-manager/my/programs/patool/config.nix diff --git a/modules/home-manager/programs/microsoft-edge/module.nix b/modules/home-manager/my/programs/patool/module.nix similarity index 100% rename from modules/home-manager/programs/microsoft-edge/module.nix rename to modules/home-manager/my/programs/patool/module.nix diff --git a/modules/home-manager/programs/patool/options.nix b/modules/home-manager/my/programs/patool/options.nix similarity index 100% rename from modules/home-manager/programs/patool/options.nix rename to modules/home-manager/my/programs/patool/options.nix diff --git a/modules/home-manager/programs/patool/package.nix b/modules/home-manager/my/programs/patool/package.nix similarity index 100% rename from modules/home-manager/programs/patool/package.nix rename to modules/home-manager/my/programs/patool/package.nix diff --git a/modules/home-manager/programs/ripgrep/config.nix b/modules/home-manager/my/programs/ripgrep/config.nix similarity index 100% rename from modules/home-manager/programs/ripgrep/config.nix rename to modules/home-manager/my/programs/ripgrep/config.nix diff --git a/modules/home-manager/programs/nix/module.nix b/modules/home-manager/my/programs/ripgrep/module.nix similarity index 100% rename from modules/home-manager/programs/nix/module.nix rename to modules/home-manager/my/programs/ripgrep/module.nix diff --git a/modules/home-manager/programs/ripgrep/options.nix b/modules/home-manager/my/programs/ripgrep/options.nix similarity index 100% rename from modules/home-manager/programs/ripgrep/options.nix rename to modules/home-manager/my/programs/ripgrep/options.nix diff --git a/modules/home-manager/programs/swayosd/config.nix b/modules/home-manager/my/programs/swayosd/config.nix similarity index 100% rename from modules/home-manager/programs/swayosd/config.nix rename to modules/home-manager/my/programs/swayosd/config.nix diff --git a/modules/home-manager/programs/patool/module.nix b/modules/home-manager/my/programs/swayosd/module.nix similarity index 100% rename from modules/home-manager/programs/patool/module.nix rename to modules/home-manager/my/programs/swayosd/module.nix diff --git a/modules/home-manager/programs/swayosd/options.nix b/modules/home-manager/my/programs/swayosd/options.nix similarity index 100% rename from modules/home-manager/programs/swayosd/options.nix rename to modules/home-manager/my/programs/swayosd/options.nix diff --git a/modules/home-manager/programs/swayosd/package.nix b/modules/home-manager/my/programs/swayosd/package.nix similarity index 100% rename from modules/home-manager/programs/swayosd/package.nix rename to modules/home-manager/my/programs/swayosd/package.nix diff --git a/modules/home-manager/programs/thunar/config.nix b/modules/home-manager/my/programs/thunar/config.nix similarity index 100% rename from modules/home-manager/programs/thunar/config.nix rename to modules/home-manager/my/programs/thunar/config.nix diff --git a/modules/home-manager/programs/ripgrep/module.nix b/modules/home-manager/my/programs/thunar/module.nix similarity index 100% rename from modules/home-manager/programs/ripgrep/module.nix rename to modules/home-manager/my/programs/thunar/module.nix diff --git a/modules/home-manager/programs/thunar/options.nix b/modules/home-manager/my/programs/thunar/options.nix similarity index 100% rename from modules/home-manager/programs/thunar/options.nix rename to modules/home-manager/my/programs/thunar/options.nix diff --git a/modules/home-manager/programs/direnv/config.nix b/modules/home-manager/programs/direnv/config.nix deleted file mode 100644 index 2c4ce329..00000000 --- a/modules/home-manager/programs/direnv/config.nix +++ /dev/null @@ -1,33 +0,0 @@ -{ - osConfig, - config, - lib, - pkgs, - ... -}: -let - cfg = config.my.programs.direnv; - - # TODO: why does the NixOS module do this, but home-manager doesn't? - # - # see: https://github.com/NixOS/nixpkgs/blob/ea6374f096899fa72e92d848e87fc7842483284d/nixos/modules/programs/direnv.nix#L74 - # see: https://github.com/nix-community/home-manager/blob/3ec1cd9a0703fbd55d865b7fd2b07d08374f0355/modules/programs/direnv.nix#L107 - nix-direnv' = pkgs.nix-direnv.override { - nix = osConfig.nix.package; - }; -in { - config = lib.mkIf cfg.enable { - programs.direnv = { - inherit (cfg) - enable - package - config - ; - - nix-direnv = { - enable = true; - package = nix-direnv'; - }; - }; - }; -} \ No newline at end of file diff --git a/modules/home-manager/programs/direnv/module.nix b/modules/home-manager/programs/direnv/module.nix index aa5a227b..6468c769 100644 --- a/modules/home-manager/programs/direnv/module.nix +++ b/modules/home-manager/programs/direnv/module.nix @@ -1,9 +1,20 @@ { + config, + lib, ... }: -{ - imports = [ - ./options.nix - ./config.nix +let + cfg = config.programs.direnv; +in { + config = lib.mkMerge [ + { programs.direnv.enable = lib.mkDefault true; } + + (lib.mkIf cfg.enable { + programs.direnv = { + nix-direnv = { + enable = true; + }; + }; + }) ]; } \ No newline at end of file diff --git a/modules/home-manager/programs/direnv/options.nix b/modules/home-manager/programs/direnv/options.nix deleted file mode 100644 index dfd6b95c..00000000 --- a/modules/home-manager/programs/direnv/options.nix +++ /dev/null @@ -1,25 +0,0 @@ -{ - options, - lib, - pkgs, - ... -}: -{ - options = { - my.programs.direnv = { - enable = lib.mkDefaultEnableOption "direnv"; - package = lib.mkOption { - default = pkgs.direnv; - - type = with lib.types; package; - }; - - - config = lib.mkOption { - default = {}; - - type = options.programs.direnv.config.type; - }; - }; - }; -} \ No newline at end of file diff --git a/modules/home-manager/programs/eza/config.nix b/modules/home-manager/programs/eza/config.nix deleted file mode 100644 index 11e6d316..00000000 --- a/modules/home-manager/programs/eza/config.nix +++ /dev/null @@ -1,34 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: -let - cfg = config.my.programs.eza; -in { - config = lib.mkIf cfg.enable { - fonts.fontconfig.enable = lib.mkDefault true; - - home.packages = with pkgs; [ - nerd-fonts.symbols-only - ]; - - - programs.eza = { - inherit (cfg) - enable - package - ; - - extraOptions = [ - "--git" - "--group" - "--group-directories-first" - "--icons" - "--header" - "--octal-permissions" - ]; - }; - }; -} \ No newline at end of file diff --git a/modules/home-manager/programs/eza/module.nix b/modules/home-manager/programs/eza/module.nix index aa5a227b..f5eee440 100644 --- a/modules/home-manager/programs/eza/module.nix +++ b/modules/home-manager/programs/eza/module.nix @@ -1,9 +1,28 @@ { + config, + lib, + pkgs, ... }: -{ - imports = [ - ./options.nix - ./config.nix +let + cfg = config.programs.eza; +in { + config = lib.mkMerge [ + { programs.eza.enable = lib.mkDefault true; } + + (lib.mkIf cfg.enable { + fonts.fontconfig.enable = lib.mkDefault true; + + programs.eza = { + extraOptions = [ + "--git" + "--group" + "--group-directories-first" + "--icons" + "--header" + "--octal-permissions" + ]; + }; + }) ]; } \ No newline at end of file diff --git a/modules/home-manager/programs/eza/options.nix b/modules/home-manager/programs/eza/options.nix deleted file mode 100644 index 4a969af1..00000000 --- a/modules/home-manager/programs/eza/options.nix +++ /dev/null @@ -1,17 +0,0 @@ -{ - lib, - pkgs, - ... -}: -{ - options = { - my.programs.eza = { - enable = lib.mkDefaultEnableOption "eza"; - package = lib.mkOption { - default = pkgs.eza; - - type = with lib.types; package; - }; - }; - }; -} \ No newline at end of file diff --git a/modules/home-manager/programs/git/config.nix b/modules/home-manager/programs/git/config.nix deleted file mode 100644 index 92dd83de..00000000 --- a/modules/home-manager/programs/git/config.nix +++ /dev/null @@ -1,23 +0,0 @@ -{ - config, - lib, - ... -}: -let - cfg = config.my.programs.git; -in { - config = lib.mkIf cfg.enable { - programs.git = { - inherit (cfg) - enable - package - ; - - extraConfig = cfg.config; - - ignores = [ - ".envrc" - ]; - }; - }; -} \ No newline at end of file diff --git a/modules/home-manager/programs/git/module.nix b/modules/home-manager/programs/git/module.nix index aa5a227b..a101d56b 100644 --- a/modules/home-manager/programs/git/module.nix +++ b/modules/home-manager/programs/git/module.nix @@ -1,9 +1,33 @@ { + config, + lib, + pkgs, ... }: -{ - imports = [ - ./options.nix - ./config.nix +let + cfg = config.programs.git; +in { + config = lib.mkMerge [ + { + programs.git = { + enable = lib.mkDefault true; + package = pkgs.gitFull; + }; + } + + (lib.mkIf cfg.enable { + programs.git = { + ignores = [ + ".envrc" + ]; + + extraConfig = { + commit.gpgSign = true; + tag.gpgSign = true; + + init.defaultBranch = "main"; + }; + }; + }) ]; } \ No newline at end of file diff --git a/modules/home-manager/programs/git/options.nix b/modules/home-manager/programs/git/options.nix deleted file mode 100644 index 36db8dcd..00000000 --- a/modules/home-manager/programs/git/options.nix +++ /dev/null @@ -1,25 +0,0 @@ -{ - options, - lib, - pkgs, - ... -}: -{ - options = { - my.programs.git = { - enable = lib.mkDefaultEnableOption "git"; - package = lib.mkOption { - default = pkgs.gitFull; - - type = with lib.types; package; - }; - - - config = lib.mkOption { - default = {}; - - type = options.programs.git.extraConfig.type; - }; - }; - }; -} \ No newline at end of file diff --git a/modules/home-manager/programs/nix-index/config.nix b/modules/home-manager/programs/nix-index/config.nix deleted file mode 100644 index 322f1390..00000000 --- a/modules/home-manager/programs/nix-index/config.nix +++ /dev/null @@ -1,26 +0,0 @@ -{ - config, - lib, - ... -}: -let - cfg = config.my.programs.nix-index; -in { - config = lib.mkIf cfg.enable { - my.persist.directories = [{ - path = "~/.cache/nix-index"; - unique = false; - }]; - - programs = { - command-not-found.enable = lib.mkForce false; - - nix-index = { - inherit (cfg) - enable - package - ; - }; - }; - }; -} \ No newline at end of file diff --git a/modules/home-manager/programs/nix-index/module.nix b/modules/home-manager/programs/nix-index/module.nix index aa5a227b..ffe52d15 100644 --- a/modules/home-manager/programs/nix-index/module.nix +++ b/modules/home-manager/programs/nix-index/module.nix @@ -1,9 +1,23 @@ { + config, + lib, ... }: -{ - imports = [ - ./options.nix - ./config.nix +let + cfg = config.programs.nix-index; +in { + config = lib.mkMerge [ + { programs.nix-index.enable = lib.mkDefault true; } + + (lib.mkIf cfg.enable { + my.persist.directories = [{ + path = "~/.cache/nix-index"; + unique = false; + }]; + + programs.command-not-found = { + enable = lib.mkForce false; + }; + }) ]; } \ No newline at end of file diff --git a/modules/home-manager/programs/nix-index/options.nix b/modules/home-manager/programs/nix-index/options.nix deleted file mode 100644 index 71857f8c..00000000 --- a/modules/home-manager/programs/nix-index/options.nix +++ /dev/null @@ -1,17 +0,0 @@ -{ - lib, - pkgs, - ... -}: -{ - options = { - my.programs.nix-index = { - enable = lib.mkDefaultEnableOption "nix-index"; - package = lib.mkOption { - default = pkgs.nix-index; - - type = with lib.types; package; - }; - }; - }; -} \ No newline at end of file diff --git a/modules/home-manager/programs/nix/options.nix b/modules/home-manager/programs/nix/options.nix deleted file mode 100644 index 524c6786..00000000 --- a/modules/home-manager/programs/nix/options.nix +++ /dev/null @@ -1,14 +0,0 @@ -{ - osConfig, - lib, - ... -}: -{ - options = { - my.programs.nix = { - enable = lib.mkEnableOption "nix" // { - default = osConfig.nix.enable; - }; - }; - }; -} \ No newline at end of file diff --git a/modules/home-manager/programs/obs-studio/module.nix b/modules/home-manager/programs/obs-studio/module.nix new file mode 100644 index 00000000..8cad3e33 --- /dev/null +++ b/modules/home-manager/programs/obs-studio/module.nix @@ -0,0 +1,15 @@ +{ + config, + lib, + ... +}: +let + cfg = config.programs.obs-studio; +in { + config = lib.mkIf cfg.enable { + my.persist.directories = [{ + path = "~/.config/obs-studio"; + unique = true; + }]; + }; +} \ No newline at end of file diff --git a/modules/home-manager/upstream/programs/ssh/module.nix b/modules/home-manager/programs/ssh/module.nix similarity index 100% rename from modules/home-manager/upstream/programs/ssh/module.nix rename to modules/home-manager/programs/ssh/module.nix diff --git a/modules/home-manager/programs/thunar/module.nix b/modules/home-manager/programs/thunar/module.nix deleted file mode 100644 index aa5a227b..00000000 --- a/modules/home-manager/programs/thunar/module.nix +++ /dev/null @@ -1,9 +0,0 @@ -{ - ... -}: -{ - imports = [ - ./options.nix - ./config.nix - ]; -} \ No newline at end of file diff --git a/modules/home-manager/programs/zed-editor/module.nix b/modules/home-manager/programs/zed-editor/module.nix deleted file mode 100644 index 2cf9769e..00000000 --- a/modules/home-manager/programs/zed-editor/module.nix +++ /dev/null @@ -1,21 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: -let - cfg = config.programs.zed-editor; -in { - config = lib.mkIf cfg.enable { - programs.zed-editor = { - package = pkgs.zed-editor.fhs; - }; - - my.persist.directories = [ - "~/.local/share/zed" - # TODO: needed? - # "~/.config/zed" - ]; - }; -} \ No newline at end of file diff --git a/modules/home-manager/programs/zsh/module.nix b/modules/home-manager/programs/zsh/module.nix index 20da55ab..a74b2271 100644 --- a/modules/home-manager/programs/zsh/module.nix +++ b/modules/home-manager/programs/zsh/module.nix @@ -1,5 +1,4 @@ { - osConfig, config, lib, pkgs, @@ -9,11 +8,6 @@ let cfg = config.programs.zsh; in { config = lib.mkIf cfg.enable { - assertions = [{ - assertion = osConfig.programs.zsh.enable; - message = "Please enable programs.zsh to your NixOS configuration."; - }]; - # ZSH tries to atomically replace $HISTFILE, which fails if the file # is a bind-mount. As an alternative, persist the entire directory # around the file instead. @@ -23,7 +17,7 @@ in { }]; programs.zsh = { - # Prevent home-manager from trying to include a _second_ ZSH in my PATH.. + # Prevent home-manager from trying to include a _second_ ZSH in my PATH.. package = pkgs.emptyDirectory; # These are set at system-level @@ -35,6 +29,9 @@ in { history.path = lib.mkIf config.xdg.enable "${config.xdg.dataHome}/zsh/zsh_history"; + + history.save = 10000; + history.size = 10000; }; }; } \ No newline at end of file diff --git a/modules/home-manager/services/pipewire/config.nix b/modules/home-manager/services/pipewire/config.nix deleted file mode 100644 index 61f99e3d..00000000 --- a/modules/home-manager/services/pipewire/config.nix +++ /dev/null @@ -1,22 +0,0 @@ -{ - osConfig, - config, - lib, - ... -}: -let - cfg = config.my.services.pipewire; -in { - config = lib.mkIf cfg.enable { - assertions = [{ - assertion = osConfig.services.pipewire.enable; - message = "Please enable my.services.pipewire in your NixOS configuration"; - }]; - - - my.persist.directories = [{ - path = "~/.local/state/wireplumber"; - unique = true; - }]; - }; -} \ No newline at end of file diff --git a/modules/home-manager/services/pipewire/module.nix b/modules/home-manager/services/pipewire/module.nix deleted file mode 100644 index aa5a227b..00000000 --- a/modules/home-manager/services/pipewire/module.nix +++ /dev/null @@ -1,9 +0,0 @@ -{ - ... -}: -{ - imports = [ - ./options.nix - ./config.nix - ]; -} \ No newline at end of file diff --git a/modules/home-manager/services/pipewire/options.nix b/modules/home-manager/services/pipewire/options.nix deleted file mode 100644 index fd12fdfb..00000000 --- a/modules/home-manager/services/pipewire/options.nix +++ /dev/null @@ -1,14 +0,0 @@ -{ - osConfig, - lib, - ... -}: -{ - options = { - my.services.pipewire = { - enable = lib.mkEnableOption "pipewire" // { - default = osConfig.services.pipewire.enable; - }; - }; - }; -} \ No newline at end of file diff --git a/modules/home-manager/services/yubico/module.nix b/modules/home-manager/services/yubico/module.nix deleted file mode 100644 index aa5a227b..00000000 --- a/modules/home-manager/services/yubico/module.nix +++ /dev/null @@ -1,9 +0,0 @@ -{ - ... -}: -{ - imports = [ - ./options.nix - ./config.nix - ]; -} \ No newline at end of file diff --git a/modules/home-manager/services/yubico/options.nix b/modules/home-manager/services/yubico/options.nix deleted file mode 100644 index 1566c7ef..00000000 --- a/modules/home-manager/services/yubico/options.nix +++ /dev/null @@ -1,14 +0,0 @@ -{ - osConfig, - lib, - ... -}: -{ - options = { - my.services.yubico = { - enable = lib.mkEnableOption "yubico" // { - default = osConfig.my.services.yubico.enable; - }; - }; - }; -} \ No newline at end of file diff --git a/modules/nixos/documentation/man/module.nix b/modules/nixos/documentation/man/module.nix new file mode 100644 index 00000000..4873edb3 --- /dev/null +++ b/modules/nixos/documentation/man/module.nix @@ -0,0 +1,19 @@ +{ + config, + lib, + pkgs, + ... +}: +let + cfg = config.documentation.man; +in { + config = lib.mkIf cfg.enable { + # I find these the man pages from these two to be quite useful to view. + # They usually exist on most other distros, and I'm very used to that + # availability, so let's bring them back here too. + environment.systemPackages = with pkgs; [ + linux-manual + man-pages + ]; + }; +} \ No newline at end of file diff --git a/modules/home-manager/desktops/gnome/config.nix b/modules/nixos/home-manager/my/desktops/gnome/config.nix similarity index 70% rename from modules/home-manager/desktops/gnome/config.nix rename to modules/nixos/home-manager/my/desktops/gnome/config.nix index fa8f6594..f545c07c 100644 --- a/modules/home-manager/desktops/gnome/config.nix +++ b/modules/nixos/home-manager/my/desktops/gnome/config.nix @@ -1,5 +1,4 @@ { - osConfig, config, lib, ... @@ -8,12 +7,6 @@ let cfg = config.my.desktops.gnome; in { config = lib.mkIf cfg.enable { - assertions = [{ - assertion = osConfig.my.desktops.gnome.enable; - message = "Please enable my.desktops.gnome in your NixOS configuration"; - }]; - - # TODO: determine what actually needs to be kept and what doesn't my.persist.directories = [ { diff --git a/modules/nixos/home-manager/my/desktops/gnome/module.nix b/modules/nixos/home-manager/my/desktops/gnome/module.nix new file mode 100644 index 00000000..f2dbf639 --- /dev/null +++ b/modules/nixos/home-manager/my/desktops/gnome/module.nix @@ -0,0 +1,11 @@ +{ + ... +}: +{ + config = { + home-manager.sharedModules = [ + ./options.nix + ./config.nix + ]; + }; +} \ No newline at end of file diff --git a/modules/home-manager/desktops/gnome/options.nix b/modules/nixos/home-manager/my/desktops/gnome/options.nix similarity index 57% rename from modules/home-manager/desktops/gnome/options.nix rename to modules/nixos/home-manager/my/desktops/gnome/options.nix index 86624578..0382cc86 100644 --- a/modules/home-manager/desktops/gnome/options.nix +++ b/modules/nixos/home-manager/my/desktops/gnome/options.nix @@ -1,5 +1,5 @@ { - osConfig, + nixosConfig, lib, ... }: @@ -7,7 +7,9 @@ options = { my.desktops.gnome = { enable = lib.mkEnableOption "gnome" // { - default = osConfig.my.desktops.gnome.enable; + default = nixosConfig.my.desktops.gnome.enable; + + readOnly = true; }; }; }; diff --git a/modules/nixos/home-manager/my/desktops/niri/config.nix b/modules/nixos/home-manager/my/desktops/niri/config.nix new file mode 100644 index 00000000..f9553322 --- /dev/null +++ b/modules/nixos/home-manager/my/desktops/niri/config.nix @@ -0,0 +1,16 @@ +{ + config, + lib, + ... +}: +let + cfg = config.my.desktops.niri; +in { + config = lib.mkIf cfg.enable { + # Since Niri already uses a lot of GNOME things, let's pull the GNOME + # polkit authentication agent as well. + services.polkit-gnome.enable = true; + + xdg.configFile."niri/config.kdl".text = cfg.settings; + }; +} \ No newline at end of file diff --git a/modules/nixos/home-manager/my/desktops/niri/module.nix b/modules/nixos/home-manager/my/desktops/niri/module.nix new file mode 100644 index 00000000..f2dbf639 --- /dev/null +++ b/modules/nixos/home-manager/my/desktops/niri/module.nix @@ -0,0 +1,11 @@ +{ + ... +}: +{ + config = { + home-manager.sharedModules = [ + ./options.nix + ./config.nix + ]; + }; +} \ No newline at end of file diff --git a/modules/nixos/home-manager/my/desktops/niri/options.nix b/modules/nixos/home-manager/my/desktops/niri/options.nix new file mode 100644 index 00000000..716a7a43 --- /dev/null +++ b/modules/nixos/home-manager/my/desktops/niri/options.nix @@ -0,0 +1,20 @@ +{ + nixosConfig, + lib, + ... +}: +{ + options = { + my.desktops.niri = { + enable = lib.mkEnableOption "niri" // { + default = nixosConfig.my.desktops.niri.enable; + + readOnly = true; + }; + + settings = lib.mkOption { + type = with lib.types; lines; + }; + }; + }; +} \ No newline at end of file diff --git a/modules/home-manager/services/yubico/config.nix b/modules/nixos/home-manager/my/services/yubico/config.nix similarity index 51% rename from modules/home-manager/services/yubico/config.nix rename to modules/nixos/home-manager/my/services/yubico/config.nix index 25906624..8e78f551 100644 --- a/modules/home-manager/services/yubico/config.nix +++ b/modules/nixos/home-manager/my/services/yubico/config.nix @@ -1,20 +1,23 @@ { - osConfig, + nixosConfig, config, lib, pkgs, ... }: let - cfg = config.my.services.yubico; + cfg = nixosConfig.my.services.yubico; + + # Temporary extension to `pkgs` to fix an upstream incompatibility between + # `yubikey-manager` and `yubioath-flutter`. + # + # TODO: drop with https://github.com/NixOS/nixpkgs/issues/442315 + pkgs' = pkgs.extend (final: prev: { + # from: https://github.com/NixOS/nixpkgs/blob/3a75333d2d9e9114e0d8223f8bcd9d3b32c6401f/pkgs/by-name/yu/yubikey-manager/package.nix + yubikey-manager = prev.callPackage ./yubikey-manager.nix {}; + }); in { config = lib.mkIf cfg.enable { - assertions = [{ - assertion = osConfig.my.services.yubico.enable; - message = "Please enable my.services.yubico in your NixOS configuration"; - }]; - - my.persist.directories = [ { path = "~/.local/share/com.yubico.yubioath"; @@ -26,7 +29,7 @@ in { } ]; - home.packages = with pkgs; [ + home.packages = with pkgs'; [ yubikey-manager yubioath-flutter ]; diff --git a/modules/nixos/home-manager/my/services/yubico/module.nix b/modules/nixos/home-manager/my/services/yubico/module.nix new file mode 100644 index 00000000..fa54126c --- /dev/null +++ b/modules/nixos/home-manager/my/services/yubico/module.nix @@ -0,0 +1,10 @@ +{ + ... +}: +{ + config = { + home-manager.sharedModules = [ + ./config.nix + ]; + }; +} \ No newline at end of file diff --git a/modules/nixos/home-manager/my/services/yubico/yubikey-manager.nix b/modules/nixos/home-manager/my/services/yubico/yubikey-manager.nix new file mode 100644 index 00000000..1e68a75d --- /dev/null +++ b/modules/nixos/home-manager/my/services/yubico/yubikey-manager.nix @@ -0,0 +1,73 @@ +{ + lib, + stdenv, + fetchFromGitHub, + python3Packages, + installShellFiles, + procps, +}: + +python3Packages.buildPythonPackage rec { + pname = "yubikey-manager"; + version = "5.7.2"; + pyproject = true; + + src = fetchFromGitHub { + owner = "Yubico"; + repo = "yubikey-manager"; + tag = version; + hash = "sha256-dgOi9gJ7jO3+EjZQjHfx+KDsBtj6b4JWR3Bp9xWM6FI="; + }; + + postPatch = '' + substituteInPlace "ykman/pcsc/__init__.py" \ + --replace 'pkill' '${if stdenv.hostPlatform.isLinux then procps else "/usr"}/bin/pkill' + ''; + + nativeBuildInputs = with python3Packages; [ + poetry-core + installShellFiles + ]; + + propagatedBuildInputs = with python3Packages; [ + cryptography + pyscard + fido2 + click + keyring + ]; + + pythonRelaxDeps = [ + "keyring" + ]; + + postInstall = '' + installManPage man/ykman.1 + + installShellCompletion --cmd ykman \ + --bash <(_YKMAN_COMPLETE=bash_source "$out/bin/ykman") \ + --zsh <(_YKMAN_COMPLETE=zsh_source "$out/bin/ykman") \ + --fish <(_YKMAN_COMPLETE=fish_source "$out/bin/ykman") \ + ''; + + nativeCheckInputs = with python3Packages; [ + pytestCheckHook + makefun + ]; + + meta = { + homepage = "https://developers.yubico.com/yubikey-manager"; + changelog = "https://github.com/Yubico/yubikey-manager/releases/tag/${src.tag}"; + description = "Command line tool for configuring any YubiKey over all USB transports"; + + license = lib.licenses.bsd2; + platforms = lib.platforms.unix; + maintainers = with lib.maintainers; [ + benley + lassulus + pinpox + nickcao + ]; + mainProgram = "ykman"; + }; +} \ No newline at end of file diff --git a/modules/home-manager/programs/nix/config.nix b/modules/nixos/home-manager/nix/config.nix similarity index 78% rename from modules/home-manager/programs/nix/config.nix rename to modules/nixos/home-manager/nix/config.nix index 88c36afe..5dd3f660 100644 --- a/modules/home-manager/programs/nix/config.nix +++ b/modules/nixos/home-manager/nix/config.nix @@ -1,10 +1,10 @@ { - config, + nixosConfig, lib, ... }: let - cfg = config.my.programs.nix; + cfg = nixosConfig.nix; in { config = lib.mkIf cfg.enable { my.persist.directories = [{ diff --git a/modules/nixos/home-manager/nix/module.nix b/modules/nixos/home-manager/nix/module.nix new file mode 100644 index 00000000..fa54126c --- /dev/null +++ b/modules/nixos/home-manager/nix/module.nix @@ -0,0 +1,10 @@ +{ + ... +}: +{ + config = { + home-manager.sharedModules = [ + ./config.nix + ]; + }; +} \ No newline at end of file diff --git a/modules/nixos/home-manager/programs/zsh/config.nix b/modules/nixos/home-manager/programs/zsh/config.nix new file mode 100644 index 00000000..6500772b --- /dev/null +++ b/modules/nixos/home-manager/programs/zsh/config.nix @@ -0,0 +1,15 @@ +{ + nixosConfig, + config, + lib, + pkgs, + ... +}: +let + cfg = nixosConfig.programs.zsh; + cfgUser = nixosConfig.users.users.${config.home.username}; +in { + config = lib.mkIf cfg.enable { + programs.zsh.enable = lib.mkForce (cfgUser.shell == pkgs.zsh); + }; +} \ No newline at end of file diff --git a/modules/nixos/home-manager/programs/zsh/module.nix b/modules/nixos/home-manager/programs/zsh/module.nix new file mode 100644 index 00000000..fa54126c --- /dev/null +++ b/modules/nixos/home-manager/programs/zsh/module.nix @@ -0,0 +1,10 @@ +{ + ... +}: +{ + config = { + home-manager.sharedModules = [ + ./config.nix + ]; + }; +} \ No newline at end of file diff --git a/modules/nixos/home-manager/services/gnome/gnome-keyring/config.nix b/modules/nixos/home-manager/services/gnome/gnome-keyring/config.nix new file mode 100644 index 00000000..cf8bb97e --- /dev/null +++ b/modules/nixos/home-manager/services/gnome/gnome-keyring/config.nix @@ -0,0 +1,15 @@ +{ + nixosConfig, + lib, + ... +}: +let + cfg = nixosConfig.services.gnome.gnome-keyring; +in { + config = lib.mkIf cfg.enable { + my.persist.directories = [{ + path = "~/.local/share/keyrings"; + unique = true; + }]; + }; +} \ No newline at end of file diff --git a/modules/nixos/home-manager/services/gnome/gnome-keyring/module.nix b/modules/nixos/home-manager/services/gnome/gnome-keyring/module.nix new file mode 100644 index 00000000..fa54126c --- /dev/null +++ b/modules/nixos/home-manager/services/gnome/gnome-keyring/module.nix @@ -0,0 +1,10 @@ +{ + ... +}: +{ + config = { + home-manager.sharedModules = [ + ./config.nix + ]; + }; +} \ No newline at end of file diff --git a/modules/nixos/my/desktops/niri/config.nix b/modules/nixos/my/desktops/niri/config.nix new file mode 100644 index 00000000..faea64da --- /dev/null +++ b/modules/nixos/my/desktops/niri/config.nix @@ -0,0 +1,52 @@ +{ + config, + lib, + pkgs, + ... +}: +let + cfg = config.my.desktops.niri; +in { + config = lib.mkIf cfg.enable { + networking.networkmanager.enable = true; + services.gnome.gnome-keyring.enable = true; + services.pipewire.enable = true; + + + my.persist.directories = [{ + path = "/var/cache/tuigreet"; + unique = true; + }]; + + services.greetd = { + enable = true; + + settings.default_session = { + command = ''${lib.getExe pkgs.tuigreet} --greeting "Welcome to NixOS (${lib.versions.majorMinor lib.version})!" --time --remember --asterisks''; + }; + }; + + + environment.sessionVariables = { + "NIXOS_OZONE_WL" = 1; + }; + + programs.niri = { + enable = true; + }; + + # This is being overriden from what Niri provides by default so that it can + # support other file-managers besides Nautilus, since the GNOME Portal only + # defaults to Nautilus for the file chooser dialog. + # + # see: https://github.com/YaLTeR/niri/blob/a1dccedbb72da372d2a8a84022f37ccaa4d4a6e6/resources/niri-portals.conf + xdg.portal.config.niri = { + default = [ "gnome" "gtk" ]; + + "org.freedesktop.impl.portal.Access" = [ "gtk" ]; + "org.freedesktop.impl.portal.FileChooser" = [ "gtk" ]; + "org.freedesktop.impl.portal.Notification" = [ "gtk" ]; + "org.freedesktop.impl.portal.Secret" = [ "gnome-keyring" ]; + }; + }; +} \ No newline at end of file diff --git a/modules/home-manager/programs/swayosd/module.nix b/modules/nixos/my/desktops/niri/module.nix similarity index 100% rename from modules/home-manager/programs/swayosd/module.nix rename to modules/nixos/my/desktops/niri/module.nix diff --git a/modules/nixos/my/desktops/niri/options.nix b/modules/nixos/my/desktops/niri/options.nix new file mode 100644 index 00000000..c954727d --- /dev/null +++ b/modules/nixos/my/desktops/niri/options.nix @@ -0,0 +1,11 @@ +{ + lib, + ... +}: +{ + options = { + my.desktops.niri = { + enable = lib.mkEnableOption "niri"; + }; + }; +} \ No newline at end of file diff --git a/modules/nixos/my/desktops/sway/config.nix b/modules/nixos/my/desktops/sway/config.nix deleted file mode 100644 index 3e7badfe..00000000 --- a/modules/nixos/my/desktops/sway/config.nix +++ /dev/null @@ -1,56 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: -let - cfg = config.my.desktops.sway; -in { - config = lib.mkIf cfg.enable { - networking.networkmanager.enable = true; - services.pipewire.enable = true; - - - programs.uwsm = { - enable = true; - - waylandCompositors.sway = { - prettyName = "Sway"; - comment = "Sway compositor managed by UWSM"; - binPath = "/run/current-system/sw/bin/sway"; - }; - }; - - - my.persist.directories = [{ - path = "/var/cache/tuigreet"; - unique = true; - }]; - - services.greetd = { - enable = true; - - settings.default_session = { - command = ''${lib.getExe pkgs.tuigreet} --greeting "Welcome to NixOS (${lib.versions.majorMinor lib.version})!" --time --remember --asterisks''; - }; - }; - - - environment.sessionVariables = { - "NIXOS_OZONE_WL" = 1; - }; - - programs.sway = { - enable = true; - package = cfg.package; - - extraPackages = []; - - wrapperFeatures = { - base = false; - gtk = true; - }; - }; - }; -} \ No newline at end of file diff --git a/modules/nixos/my/desktops/sway/module.nix b/modules/nixos/my/desktops/sway/module.nix deleted file mode 100644 index aa5a227b..00000000 --- a/modules/nixos/my/desktops/sway/module.nix +++ /dev/null @@ -1,9 +0,0 @@ -{ - ... -}: -{ - imports = [ - ./options.nix - ./config.nix - ]; -} \ No newline at end of file diff --git a/modules/nixos/my/desktops/sway/options.nix b/modules/nixos/my/desktops/sway/options.nix deleted file mode 100644 index 1921d73b..00000000 --- a/modules/nixos/my/desktops/sway/options.nix +++ /dev/null @@ -1,19 +0,0 @@ -{ - lib, - pkgs, - ... -}: -{ - options = { - my.desktops.sway = { - enable = lib.mkEnableOption "sway"; - package = lib.mkOption { - default = pkgs.callPackage ./package.nix { - sway = pkgs.swayfx; - }; - - type = with lib.types; package; - }; - }; - }; -} \ No newline at end of file diff --git a/modules/nixos/my/desktops/sway/package.nix b/modules/nixos/my/desktops/sway/package.nix deleted file mode 100644 index 7b0c5a9f..00000000 --- a/modules/nixos/my/desktops/sway/package.nix +++ /dev/null @@ -1,41 +0,0 @@ -{ - symlinkJoin, - - writeTextDir, - sway, - - # see: https://github.com/NixOS/nixpkgs/blob/dc9637876d0dcc8c9e5e22986b857632effeb727/nixos/modules/programs/wayland/sway.nix#L26-L29 - extraSessionCommands ? "", - extraOptions ? [], - withBaseWrapper ? true, - withGtkWrapper ? false, - enableXWayland ? true, - isNixOS ? false, -}: -symlinkJoin { - name = "sway-no-desktop-entry"; - - paths = [ - # Sway provides a default `sway.desktop` which is linked by NixOS to - # allow display managers to recognize Sway as a login target. This conflicts - # with our desire to use UWSM exclusively, as it shows both, and it can - # be confusing/annoying to switch between them. In an effort to prevent - # that from being an issue, we completely wipe the `sway.desktop` file, - # which will prevent it from being registered as valid (at least on tuigreet). - (writeTextDir "/share/wayland-sessions/sway.desktop" "") - (sway.override { - inherit - extraSessionCommands - extraOptions - withBaseWrapper - withGtkWrapper - enableXWayland - isNixOS - ; - }) - ]; - - passthru = { - inherit (sway) providedSessions; - }; -} \ No newline at end of file diff --git a/modules/nixos/my/programs/powertop/package.nix b/modules/nixos/my/programs/powertop/package.nix index e7152f01..299f72d1 100644 --- a/modules/nixos/my/programs/powertop/package.nix +++ b/modules/nixos/my/programs/powertop/package.nix @@ -20,7 +20,7 @@ xorg, }: -stdenv.mkDerivation (finalAttrs: { +stdenv.mkDerivation { pname = "powertop"; version = "2.15-unstable-2025-06-27"; @@ -66,4 +66,4 @@ stdenv.mkDerivation (finalAttrs: { substituteInPlace src/calibrate/calibrate.cpp --replace-fail "/usr/bin/xset" "${lib.getExe xorg.xset}" substituteInPlace src/tuning/bluetooth.cpp --replace-fail "/usr/bin/hcitool" "hcitool" ''; -}) \ No newline at end of file +} \ No newline at end of file diff --git a/modules/nixos/nix/module.nix b/modules/nixos/nix/module.nix index 1a5f71d7..850930c2 100644 --- a/modules/nixos/nix/module.nix +++ b/modules/nixos/nix/module.nix @@ -15,15 +15,23 @@ let }) inputs); in { config = lib.mkIf cfg.enable (lib.mkMerge [ + { + # Overlay nixpkgs to use Lix as our default Nix derivation. + # + # This is a better way to propagate the Nix package change, as many + # derivations internally use `pkgs.nix` in some form. Rather than + # tracking state across the modules, we can overlay it here. + nixpkgs.overlays = [(final: prev: { + nix = final.lixPackageSets.latest.lix; + })]; + } { # Use github:viperML/nh as our "nix wrapper" program. programs.nh.enable = true; # Set the system Nix package to our custom wrapper, which provides # instant access to all `pkgs` and `lib` attributes. - nix.package = pkgs.callPackage ./package.nix { - nix = pkgs.lixPackageSets.latest.lix; - }; + nix.package = pkgs.callPackage ./package.nix {}; } { # Throttle the nix-daemon so it doesn't consume diff --git a/modules/nixos/zramSwap/module.nix b/modules/nixos/zramSwap/module.nix index 1ccc7293..1da1fe1a 100644 --- a/modules/nixos/zramSwap/module.nix +++ b/modules/nixos/zramSwap/module.nix @@ -6,20 +6,24 @@ let cfg = config.zramSwap; in { - config = lib.mkIf cfg.enable { - # Optimizes swap-related kernel tunings for zram usage - # https://wiki.archlinux.org/title/Zram#Optimizing_swap_on_zram - boot.kernel.sysctl = { - "vm.swappiness" = 180; - "vm.watermark_boost_factor" = 0; - "vm.watermark_scale_factor" = 125; - "vm.page-cluster" = 0; - }; + config = lib.mkMerge [ + { zramSwap.enable = true; } - # Configures zram to work higher than any other swap devices. - zramSwap = { - memoryPercent = 150; # https://unix.stackexchange.com/a/596929 - priority = 100; - }; - }; + (lib.mkIf cfg.enable { + # Optimizes swap-related kernel tunings for zram usage + # https://wiki.archlinux.org/title/Zram#Optimizing_swap_on_zram + boot.kernel.sysctl = { + "vm.swappiness" = 180; + "vm.watermark_boost_factor" = 0; + "vm.watermark_scale_factor" = 125; + "vm.page-cluster" = 0; + }; + + # Configures zram to work higher than any other swap devices. + zramSwap = { + memoryPercent = 150; # https://unix.stackexchange.com/a/596929 + priority = 100; + }; + }) + ]; } \ No newline at end of file diff --git a/modules/shared/services/pipewire/config/default.nix b/modules/shared/services/pipewire/config/default.nix new file mode 100644 index 00000000..30f51c51 --- /dev/null +++ b/modules/shared/services/pipewire/config/default.nix @@ -0,0 +1,9 @@ +{ + imports = [ + ./nixos.nix + ]; + + config.home-manager.sharedModules = [ + ./home-manager.nix + ]; +} \ No newline at end of file diff --git a/modules/shared/services/pipewire/config/home-manager.nix b/modules/shared/services/pipewire/config/home-manager.nix new file mode 100644 index 00000000..5aa8b446 --- /dev/null +++ b/modules/shared/services/pipewire/config/home-manager.nix @@ -0,0 +1,15 @@ +{ + nixosConfig, + lib, + ... +}: +let + cfg = nixosConfig.services.pipewire; +in { + config = lib.mkIf cfg.enable { + my.persist.directories = [{ + path = "~/.local/state/wireplumber"; + unique = true; + }]; + }; +} \ No newline at end of file diff --git a/modules/nixos/services/pipewire/module.nix b/modules/shared/services/pipewire/config/nixos.nix similarity index 100% rename from modules/nixos/services/pipewire/module.nix rename to modules/shared/services/pipewire/config/nixos.nix diff --git a/modules/shared/services/pipewire/module.nix b/modules/shared/services/pipewire/module.nix new file mode 100644 index 00000000..fac2ea2e --- /dev/null +++ b/modules/shared/services/pipewire/module.nix @@ -0,0 +1,8 @@ +{ + ... +}: +{ + imports = [ + ./config + ]; +} \ No newline at end of file diff --git a/nix/nixosModules/default.nix b/nix/nixosModules/default.nix index a1a91084..f0fe6251 100644 --- a/nix/nixosModules/default.nix +++ b/nix/nixosModules/default.nix @@ -17,6 +17,7 @@ in { home-manager.nixosModules.default (lib.mkModules ../../modules/common {}) + (lib.mkModules ../../modules/shared {}) (lib.mkModules ../../modules/nixos { inherit inputs; }) diff --git a/pkgs/nixos-clean/src/nixos-clean.sh b/pkgs/nixos-clean/src/nixos-clean.sh index e1e2927c..fab9cb97 100755 --- a/pkgs/nixos-clean/src/nixos-clean.sh +++ b/pkgs/nixos-clean/src/nixos-clean.sh @@ -16,14 +16,13 @@ showUsage() { exit 1 } -if [ "$UID" -eq 0 ]; then - echo "Do not run this script as root." +if [ "$UID" -ne 0 ]; then + echo "Please run this script as root." exit 1 fi origArgs=("$@") systemProfiles=/nix/var/nix/profiles -userProfiles=${XDG_STATE_HOME:-$HOME/.local/state}/nix/profiles dryRun= verbose= cleanStore= @@ -70,30 +69,18 @@ cleanNixOS() { for p in $systemProfiles/system*; do if [ "$(readlink -f $p)" != "$latest" ]; then log "going to delete $p" - run sudo rm -f "$p" + run rm -f "$p" fi done log "regenerating boot entries" - run sudo /run/current-system/bin/switch-to-configuration switch -} - -cleanHomeManager() { - log "cleaning up home-manager generations..." - - local latest="$(readlink -f $userProfiles/home-manager)" - for p in $userProfiles/home-manager*; do - if [ "$(readlink -f $p)" != "$latest" ]; then - log "going to delete $p" - run rm -f "$p" - fi - done + run /run/current-system/bin/switch-to-configuration boot } cleanNix() { log "cleaning up the /nix/store" - run sudo nix-collect-garbage -d + run nix-collect-garbage -d } if [ -f /etc/NIXOS ]; then @@ -101,11 +88,6 @@ if [ -f /etc/NIXOS ]; then cleanStore=1 fi -if [ -L $userProfiles/home-manager ]; then - cleanHomeManager - cleanStore=1 -fi - if [ -n "$cleanStore" ]; then cleanNix fi \ No newline at end of file diff --git a/pkgs/waybar-icon/src/lib.rs b/pkgs/waybar-icon/src/lib.rs index a56955e2..c3687afe 100644 --- a/pkgs/waybar-icon/src/lib.rs +++ b/pkgs/waybar-icon/src/lib.rs @@ -26,7 +26,7 @@ impl Module for Icon { let g_theme = gtk::IconTheme::default().unwrap(); if let Some(info) = g_theme.lookup_icon(&config.icon_name, 24, gtk::IconLookupFlags::FORCE_SVG) { - let scaled_size = 28 * g_image.scale_factor(); + let scaled_size = 34 * g_image.scale_factor(); let pixbuf = gtk::gdk_pixbuf::Pixbuf::from_file_at_size(&info.filename().unwrap(), scaled_size, scaled_size).unwrap(); let surface = pixbuf.create_surface::(g_image.scale_factor(), None).unwrap(); diff --git a/users/frontear/home/default.nix b/users/frontear/home/default.nix index 1c63748f..3d481c1f 100644 --- a/users/frontear/home/default.nix +++ b/users/frontear/home/default.nix @@ -17,29 +17,7 @@ "ssh" = "TERM= ssh"; }; - programs.zsh = { - enable = true; - - history.save = 10000; - history.size = 10000; - - initContent = '' - PS1='%B%F{green}[%n@%m %1~]%(#.#.$)%F{white}%b ' - RPS1='%B%(?.%F{green}.%F{red})%?%f%b' - ''; - - autosuggestion = { - enable = true; - strategy = [ "history" ]; - }; - - syntaxHighlighting = { - enable = true; - highlighters = [ "main" "brackets" ]; - }; - }; - - my.programs = { + programs = { direnv = { enable = true; @@ -53,27 +31,39 @@ }; git = { - enable = true; - - config = { + extraConfig = { user.email = "contact@frontear.dev"; user.name = "Ali Rizvi"; user.signingKey = "4BC247743ACFF25E"; - commit.gpgSign = true; - tag.gpgSign = true; - merge.tool = "nvimdiff3"; # https:/dandavision.github.io/delta core.pager = "${lib.getExe pkgs.delta}"; interactive.diffFilter = "${lib.getExe pkgs.delta} --color-only"; delta.line-numbers = true; + }; + }; - init.defaultBranch = "main"; + zsh = { + initContent = '' + PS1='%B%F{green}[%n@%m %1~]%(#.#.$)%F{white}%b ' + RPS1='%B%(?.%F{green}.%F{red})%?%f%b' + ''; + + autosuggestion = { + enable = true; + strategy = [ "history" ]; + }; + + syntaxHighlighting = { + enable = true; + highlighters = [ "main" "brackets" ]; }; }; + }; + my.programs = { gnupg = { enable = true; diff --git a/users/frontear/home/desktops/default.nix b/users/frontear/home/desktops/default.nix index a85ff84a..01afe2a3 100644 --- a/users/frontear/home/desktops/default.nix +++ b/users/frontear/home/desktops/default.nix @@ -4,6 +4,6 @@ { imports = [ ./gnome - ./sway + ./niri ]; } \ No newline at end of file diff --git a/users/frontear/home/desktops/gnome/default.nix b/users/frontear/home/desktops/gnome/default.nix index d026c4f4..81d981cb 100644 --- a/users/frontear/home/desktops/gnome/default.nix +++ b/users/frontear/home/desktops/gnome/default.nix @@ -9,7 +9,7 @@ in { config = lib.mkIf cfg.enable { my.programs = { microsoft-edge.enable = true; - + legcord.enable = true; libreoffice.enable = true; }; }; diff --git a/users/frontear/home/desktops/niri/default.nix b/users/frontear/home/desktops/niri/default.nix new file mode 100644 index 00000000..61787e2d --- /dev/null +++ b/users/frontear/home/desktops/niri/default.nix @@ -0,0 +1,160 @@ +{ + config, + lib, + pkgs, + ... +}: +let + cfg = config.my.desktops.niri; +in { + imports = [ + ./my + ./programs + ./services + ./stylix + ]; + + config = lib.mkIf cfg.enable { + my.desktops.niri = { + settings = '' + output "eDP-1" { + scale 1.25 + } + + input { + keyboard { + repeat-delay 250 + repeat-rate 25 + } + + touchpad { + accel-profile "adaptive" + click-method "clickfinger" + drag false + dwt + dwtp + // left-handed + // middle-emulation + // natural-scroll + accel-speed 0.0 + scroll-factor 1.0 + scroll-method "two-finger" + tap + tap-button-map "left-middle-right" + } + } + + screenshot-path "~/Pictures/Screenshots/%Y-%m/%Y-%m-%d_%Hh%Mm%Ss.png" + hotkey-overlay { skip-at-startup; } + + cursor { + xcursor-theme "${config.stylix.cursor.name}" + xcursor-size ${toString config.stylix.cursor.size} + } + + switch-events { + lid-close { spawn "swaylock"; } + } + + + spawn-sh-at-startup "${lib.getExe pkgs.wl-clip-persist} --clipboard regular --reconnect-tries 0" + spawn-sh-at-startup "${lib.getExe pkgs.swaybg} -i '${config.stylix.image}' -m '${config.stylix.imageScalingMode}'" + + + // rounded corners always + prefer-no-csd + window-rule { + geometry-corner-radius 8 + clip-to-geometry true + } + + layout { + // emulates inner-gap of 2, and outer-gap of 4 + gaps 2 + struts { left 2; right 2; top 2; bottom 2; } + + focus-ring { off; } + + border { + width 2 + + active-color "#ff000055" + inactive-color "#595959aa" + } + } + + + window-rule { + // matches on any of the following + match app-id="code" + match app-id="Element" + match app-id="legcord" + match app-id="microsoft-edge" + + open-maximized true + } + + + binds { + XF86AudioMute allow-when-locked=true repeat=false { spawn-sh "swayosd-client --output-volume mute-toggle"; } + XF86AudioLowerVolume allow-when-locked=true { spawn-sh "swayosd-client --output-volume -5"; } + XF86AudioRaiseVolume allow-when-locked=true { spawn-sh "swayosd-client --output-volume +5"; } + + XF86MonBrightnessDown allow-when-locked=true { spawn-sh "swayosd-client --brightness -5"; } + XF86MonBrightnessUp allow-when-locked=true { spawn-sh "swayosd-client --brightness +5"; } + + + Print repeat=false { screenshot; } + + + Ctrl+Alt+Delete repeat=false { quit; } + + Mod+BackSpace repeat=false { close-window; } + Mod+Return repeat=false { spawn "footclient"; } + Mod+E repeat=false { spawn-sh "rofi -show drun -run-command 'app2unit -- {cmd}'"; } + Mod+L repeat=false { spawn "swaylock"; } + + F11 repeat=false { fullscreen-window; } + Mod+F repeat=false { maximize-column; } + + Mod+Tab repeat=false { toggle-overview; } + + Mod+Left { focus-column-left; } + Mod+Down { focus-window-or-workspace-down; } + Mod+Up { focus-window-or-workspace-up; } + Mod+Right { focus-column-right; } + + Mod+Shift+Left { move-column-left; } + Mod+Shift+Down { move-window-down-or-to-workspace-down; } + Mod+Shift+Up { move-window-up-or-to-workspace-up; } + Mod+Shift+Right { move-column-right; } + + Mod+1 { focus-workspace 1; } + Mod+2 { focus-workspace 2; } + Mod+3 { focus-workspace 3; } + Mod+4 { focus-workspace 4; } + Mod+5 { focus-workspace 5; } + Mod+6 { focus-workspace 6; } + Mod+7 { focus-workspace 7; } + Mod+8 { focus-workspace 8; } + Mod+9 { focus-workspace 9; } + Mod+0 { focus-workspace 10; } + + Mod+Shift+1 { move-column-to-workspace 1; } + Mod+Shift+2 { move-column-to-workspace 2; } + Mod+Shift+3 { move-column-to-workspace 3; } + Mod+Shift+4 { move-column-to-workspace 4; } + Mod+Shift+5 { move-column-to-workspace 5; } + Mod+Shift+6 { move-column-to-workspace 6; } + Mod+Shift+7 { move-column-to-workspace 7; } + Mod+Shift+8 { move-column-to-workspace 8; } + Mod+Shift+9 { move-column-to-workspace 9; } + Mod+Shift+0 { move-column-to-workspace 10; } + } + ''; + }; + + + my.programs.app2unit.enable = true; + }; +} \ No newline at end of file diff --git a/users/frontear/home/desktops/niri/my/default.nix b/users/frontear/home/desktops/niri/my/default.nix new file mode 100644 index 00000000..766a20e0 --- /dev/null +++ b/users/frontear/home/desktops/niri/my/default.nix @@ -0,0 +1,8 @@ +{ + ... +}: +{ + imports = [ + ./programs + ]; +} \ No newline at end of file diff --git a/users/frontear/home/desktops/niri/my/programs/default.nix b/users/frontear/home/desktops/niri/my/programs/default.nix new file mode 100644 index 00000000..c9c416b7 --- /dev/null +++ b/users/frontear/home/desktops/niri/my/programs/default.nix @@ -0,0 +1,11 @@ +{ + ... +}: +{ + imports = [ + ./element + ./legcord + ./microsoft-edge + ./swayosd + ]; +} \ No newline at end of file diff --git a/users/frontear/home/desktops/niri/my/programs/element/default.nix b/users/frontear/home/desktops/niri/my/programs/element/default.nix new file mode 100644 index 00000000..f75a65b3 --- /dev/null +++ b/users/frontear/home/desktops/niri/my/programs/element/default.nix @@ -0,0 +1,14 @@ +{ + config, + lib, + ... +}: +let + cfg = config.my.desktops.niri; +in { + config = lib.mkIf cfg.enable { + my.programs.element = { + enable = true; + }; + }; +} \ No newline at end of file diff --git a/users/frontear/home/desktops/niri/my/programs/legcord/default.nix b/users/frontear/home/desktops/niri/my/programs/legcord/default.nix new file mode 100644 index 00000000..f0d6b3ad --- /dev/null +++ b/users/frontear/home/desktops/niri/my/programs/legcord/default.nix @@ -0,0 +1,29 @@ +{ + config, + lib, + pkgs, + ... +}: +let + cfg = config.my.desktops.niri; +in { + config = lib.mkIf cfg.enable { + my.programs.legcord.enable = true; + + programs.waybar = { + settings.bottom = { + modules-center = lib.mkOrder 4 [ + "cffi/discord" + ]; + + "cffi/discord" = { + module_path = pkgs.frontear.waybar-icon.lib; + + icon-name = "discord"; + on-click = "app2unit -- legcord.desktop"; + tooltip = false; + }; + }; + }; + }; +} \ No newline at end of file diff --git a/users/frontear/home/desktops/sway/programs/microsoft-edge/default.nix b/users/frontear/home/desktops/niri/my/programs/microsoft-edge/default.nix similarity index 86% rename from users/frontear/home/desktops/sway/programs/microsoft-edge/default.nix rename to users/frontear/home/desktops/niri/my/programs/microsoft-edge/default.nix index 77a32edc..28842f35 100644 --- a/users/frontear/home/desktops/sway/programs/microsoft-edge/default.nix +++ b/users/frontear/home/desktops/niri/my/programs/microsoft-edge/default.nix @@ -5,7 +5,7 @@ ... }: let - cfg = config.my.desktops.sway; + cfg = config.my.desktops.niri; in { config = lib.mkIf cfg.enable { my.programs.microsoft-edge.enable = true; @@ -20,7 +20,7 @@ in { module_path = pkgs.frontear.waybar-icon.lib; icon-name = "com.microsoft.Edge"; - on-click = "uwsm app com.microsoft.Edge.desktop"; + on-click = "app2unit -- com.microsoft.Edge.desktop"; tooltip = false; }; }; diff --git a/users/frontear/home/desktops/niri/my/programs/swayosd/default.nix b/users/frontear/home/desktops/niri/my/programs/swayosd/default.nix new file mode 100644 index 00000000..2974d89d --- /dev/null +++ b/users/frontear/home/desktops/niri/my/programs/swayosd/default.nix @@ -0,0 +1,18 @@ +{ + config, + lib, + pkgs, + ... +}: +let + cfg = config.my.desktops.niri; + fs = pkgs.callPackage ./fs {}; +in { + config = lib.mkIf cfg.enable { + my.programs.swayosd = { + enable = true; + + style = "${fs}/style.css"; + }; + }; +} \ No newline at end of file diff --git a/users/frontear/home/desktops/sway/fs/swayosd/default.nix b/users/frontear/home/desktops/niri/my/programs/swayosd/fs/default.nix similarity index 100% rename from users/frontear/home/desktops/sway/fs/swayosd/default.nix rename to users/frontear/home/desktops/niri/my/programs/swayosd/fs/default.nix diff --git a/users/frontear/home/desktops/sway/fs/swayosd/style.scss b/users/frontear/home/desktops/niri/my/programs/swayosd/fs/style.scss similarity index 100% rename from users/frontear/home/desktops/sway/fs/swayosd/style.scss rename to users/frontear/home/desktops/niri/my/programs/swayosd/fs/style.scss diff --git a/users/frontear/home/desktops/sway/programs/default.nix b/users/frontear/home/desktops/niri/programs/default.nix similarity index 84% rename from users/frontear/home/desktops/sway/programs/default.nix rename to users/frontear/home/desktops/niri/programs/default.nix index 02bd4136..4f2650cd 100644 --- a/users/frontear/home/desktops/sway/programs/default.nix +++ b/users/frontear/home/desktops/niri/programs/default.nix @@ -4,11 +4,11 @@ { imports = [ ./foot - ./microsoft-edge ./mission-center - ./thunar + ./obs-studio ./rofi ./swaylock + ./thunar ./waybar ]; } \ No newline at end of file diff --git a/users/frontear/home/desktops/sway/programs/foot/default.nix b/users/frontear/home/desktops/niri/programs/foot/default.nix similarity index 94% rename from users/frontear/home/desktops/sway/programs/foot/default.nix rename to users/frontear/home/desktops/niri/programs/foot/default.nix index da64aff6..aab04a47 100644 --- a/users/frontear/home/desktops/sway/programs/foot/default.nix +++ b/users/frontear/home/desktops/niri/programs/foot/default.nix @@ -4,7 +4,7 @@ ... }: let - cfg = config.my.desktops.sway; + cfg = config.my.desktops.niri; in { config = lib.mkIf cfg.enable { stylix.targets.foot.enable = true; diff --git a/users/frontear/home/desktops/sway/programs/mission-center/default.nix b/users/frontear/home/desktops/niri/programs/mission-center/default.nix similarity index 81% rename from users/frontear/home/desktops/sway/programs/mission-center/default.nix rename to users/frontear/home/desktops/niri/programs/mission-center/default.nix index 29df06b5..a0f009bf 100644 --- a/users/frontear/home/desktops/sway/programs/mission-center/default.nix +++ b/users/frontear/home/desktops/niri/programs/mission-center/default.nix @@ -5,7 +5,7 @@ ... }: let - cfg = config.my.desktops.sway; + cfg = config.my.desktops.niri; in { config = lib.mkIf cfg.enable { home.packages = with pkgs; [ @@ -23,7 +23,7 @@ in { module_path = pkgs.frontear.waybar-icon.lib; icon-name = "io.missioncenter.MissionCenter"; - on-click = "uwsm app io.missioncenter.MissionCenter.desktop"; + on-click = "app2unit -- io.missioncenter.MissionCenter.desktop"; tooltip = false; }; }; diff --git a/users/frontear/home/desktops/niri/programs/obs-studio/default.nix b/users/frontear/home/desktops/niri/programs/obs-studio/default.nix new file mode 100644 index 00000000..65684ce8 --- /dev/null +++ b/users/frontear/home/desktops/niri/programs/obs-studio/default.nix @@ -0,0 +1,37 @@ +{ + config, + lib, + pkgs, + ... +}: +let + cfg = config.my.desktops.niri; +in { + config = lib.mkIf cfg.enable { + programs.obs-studio.enable = true; + + programs.waybar = { + settings.bottom = { + modules-center = lib.mkOrder 5 [ + "cffi/recorder" + ]; + + "cffi/recorder" = { + module_path = pkgs.frontear.waybar-icon.lib; + + icon-name = "com.obsproject.Studio"; + on-click = "app2unit -- com.obsproject.Studio.desktop"; + tooltip = false; + }; + }; + }; + + xdg.mimeApps = { + enable = true; + + defaultApplications = { + "application/pdf" = [ "com.microsoft.Edge.desktop" ]; + }; + }; + }; +} \ No newline at end of file diff --git a/users/frontear/home/desktops/sway/programs/rofi/default.nix b/users/frontear/home/desktops/niri/programs/rofi/default.nix similarity index 98% rename from users/frontear/home/desktops/sway/programs/rofi/default.nix rename to users/frontear/home/desktops/niri/programs/rofi/default.nix index 51a0745c..fa2df3c4 100644 --- a/users/frontear/home/desktops/sway/programs/rofi/default.nix +++ b/users/frontear/home/desktops/niri/programs/rofi/default.nix @@ -4,7 +4,7 @@ ... }: let - cfg = config.my.desktops.sway; + cfg = config.my.desktops.niri; inherit (config.lib.formats.rasi) mkLiteral; in { diff --git a/users/frontear/home/desktops/sway/programs/swaylock/default.nix b/users/frontear/home/desktops/niri/programs/swaylock/default.nix similarity index 83% rename from users/frontear/home/desktops/sway/programs/swaylock/default.nix rename to users/frontear/home/desktops/niri/programs/swaylock/default.nix index 4d39ddc3..1d56ae5c 100644 --- a/users/frontear/home/desktops/sway/programs/swaylock/default.nix +++ b/users/frontear/home/desktops/niri/programs/swaylock/default.nix @@ -4,7 +4,7 @@ ... }: let - cfg = config.my.desktops.sway; + cfg = config.my.desktops.niri; in { config = lib.mkIf cfg.enable { stylix.targets.swaylock.enable = true; @@ -18,7 +18,7 @@ in { indicator = true; clock = true; - datestr = "%a, %B %d, %Y"; + datestr = "%a, %b %d, %Y"; effect-blur = "16x2"; }; diff --git a/users/frontear/home/desktops/sway/programs/thunar/default.nix b/users/frontear/home/desktops/niri/programs/thunar/default.nix similarity index 84% rename from users/frontear/home/desktops/sway/programs/thunar/default.nix rename to users/frontear/home/desktops/niri/programs/thunar/default.nix index 5b5ed77a..fdb4c922 100644 --- a/users/frontear/home/desktops/sway/programs/thunar/default.nix +++ b/users/frontear/home/desktops/niri/programs/thunar/default.nix @@ -5,7 +5,7 @@ ... }: let - cfg = config.my.desktops.sway; + cfg = config.my.desktops.niri; in { config = lib.mkIf cfg.enable { my.programs = { @@ -22,7 +22,7 @@ in { module_path = pkgs.frontear.waybar-icon.lib; icon-name = "org.xfce.thunar"; - on-click = "uwsm app thunar.desktop"; + on-click = "app2unit -- thunar.desktop"; tooltip = false; }; }; diff --git a/users/frontear/home/desktops/sway/programs/waybar/default.nix b/users/frontear/home/desktops/niri/programs/waybar/default.nix similarity index 92% rename from users/frontear/home/desktops/sway/programs/waybar/default.nix rename to users/frontear/home/desktops/niri/programs/waybar/default.nix index f5cc7b0d..041b8d47 100644 --- a/users/frontear/home/desktops/sway/programs/waybar/default.nix +++ b/users/frontear/home/desktops/niri/programs/waybar/default.nix @@ -1,11 +1,10 @@ { config, lib, - pkgs, ... }: let - cfg = config.my.desktops.sway; + cfg = config.my.desktops.niri; in { imports = [ ./style.nix @@ -25,7 +24,7 @@ in { modules-left = [ - "sway/workspaces" + "niri/workspaces" ]; modules-center = [ @@ -39,8 +38,7 @@ in { ]; - "sway/workspaces" = { - disable-scroll = true; + "niri/workspaces" = { disable-click = true; current-only = true; }; @@ -72,7 +70,7 @@ in { tooltip-format-wifi = "{essid} ({signalStrength}%)"; }; - wireplumber = { + "wireplumber" = { format = "{icon}"; format-muted = "󰝟"; format-icons = [ "󰕿" "󰖀" "󰕾" ]; diff --git a/users/frontear/home/desktops/sway/programs/waybar/style.nix b/users/frontear/home/desktops/niri/programs/waybar/style.nix similarity index 97% rename from users/frontear/home/desktops/sway/programs/waybar/style.nix rename to users/frontear/home/desktops/niri/programs/waybar/style.nix index ddf9235d..52bf47e8 100644 --- a/users/frontear/home/desktops/sway/programs/waybar/style.nix +++ b/users/frontear/home/desktops/niri/programs/waybar/style.nix @@ -4,7 +4,7 @@ ... }: let - cfg = config.my.desktops.sway; + cfg = config.my.desktops.niri; colors = config.lib.stylix.colors.withHashtag; # https://github.com/chriskempson/base16/blob/main/styling.md#styling-guidelines diff --git a/users/frontear/home/desktops/sway/services/default.nix b/users/frontear/home/desktops/niri/services/default.nix similarity index 100% rename from users/frontear/home/desktops/sway/services/default.nix rename to users/frontear/home/desktops/niri/services/default.nix diff --git a/users/frontear/home/desktops/sway/services/dunst/default.nix b/users/frontear/home/desktops/niri/services/dunst/default.nix similarity index 94% rename from users/frontear/home/desktops/sway/services/dunst/default.nix rename to users/frontear/home/desktops/niri/services/dunst/default.nix index b4b9a9c5..7441f206 100644 --- a/users/frontear/home/desktops/sway/services/dunst/default.nix +++ b/users/frontear/home/desktops/niri/services/dunst/default.nix @@ -4,7 +4,7 @@ ... }: let - cfg = config.my.desktops.sway; + cfg = config.my.desktops.niri; colors = config.lib.stylix.colors.withHashtag; in { diff --git a/users/frontear/home/desktops/niri/services/swayidle/default.nix b/users/frontear/home/desktops/niri/services/swayidle/default.nix new file mode 100644 index 00000000..6ef4fbe4 --- /dev/null +++ b/users/frontear/home/desktops/niri/services/swayidle/default.nix @@ -0,0 +1,34 @@ +{ + config, + lib, + pkgs, + ... +}: +let + cfg = config.my.desktops.niri; +in { + config = lib.mkIf cfg.enable { + services.swayidle = { + enable = true; + + events = [ + { + event = "before-sleep"; + command = "${lib.getExe' config.programs.swaylock.package "swaylock"}"; + } + ]; + + timeouts = [ + { + timeout = 60 * 2; + command = "${lib.getExe' config.programs.swaylock.package "swaylock"}"; + } + { + timeout = 60 * 5; + command = "${lib.getExe pkgs.niri} msg output eDP-1 off"; + resumeCommand = "${lib.getExe pkgs.niri} msg output eDP-1 on"; + } + ]; + }; + }; +} \ No newline at end of file diff --git a/users/frontear/home/desktops/sway/fs/sway/backgrounds/bg_dark.jpg b/users/frontear/home/desktops/niri/stylix/assets/bg_dark.jpg similarity index 100% rename from users/frontear/home/desktops/sway/fs/sway/backgrounds/bg_dark.jpg rename to users/frontear/home/desktops/niri/stylix/assets/bg_dark.jpg diff --git a/users/frontear/home/desktops/sway/stylix/default.nix b/users/frontear/home/desktops/niri/stylix/default.nix similarity index 86% rename from users/frontear/home/desktops/sway/stylix/default.nix rename to users/frontear/home/desktops/niri/stylix/default.nix index 7ad24eda..56d44393 100644 --- a/users/frontear/home/desktops/sway/stylix/default.nix +++ b/users/frontear/home/desktops/niri/stylix/default.nix @@ -5,7 +5,7 @@ ... }: let - cfg = config.my.desktops.sway; + cfg = config.my.desktops.niri; in { config = lib.mkIf cfg.enable { stylix = { @@ -22,8 +22,10 @@ in { fonts = { sizes = { - applications = 11; - terminal = 8; + applications = 12; + desktop = 12; + terminal = 10; + popups = 12; }; emoji = { @@ -55,8 +57,7 @@ in { light = "Papirus-Light"; }; - # TODO: move this path to this folder - image = ../fs/sway/backgrounds/bg_dark.jpg; + image = ./assets/bg_dark.jpg; imageScalingMode = "fit"; polarity = "dark"; diff --git a/users/frontear/home/desktops/sway/stylix/theme.yaml b/users/frontear/home/desktops/niri/stylix/theme.yaml similarity index 100% rename from users/frontear/home/desktops/sway/stylix/theme.yaml rename to users/frontear/home/desktops/niri/stylix/theme.yaml diff --git a/users/frontear/home/desktops/sway/default.nix b/users/frontear/home/desktops/sway/default.nix deleted file mode 100644 index dbdd32cc..00000000 --- a/users/frontear/home/desktops/sway/default.nix +++ /dev/null @@ -1,47 +0,0 @@ -{ - config, - lib, - pkgs, - ... -}: -let - cfg = config.my.desktops.sway; - fs = import ./fs { - inherit (pkgs) callPackage; - }; -in { - imports = [ - ./stylix - ./programs - ./services - ]; - - config = lib.mkIf cfg.enable { - my.desktops.sway.config = "${fs.sway}/config"; - - my.programs = { - swayosd = { - enable = true; - - style = "${fs.swayosd}/style.css"; - }; - }; - - - fonts.fontconfig.enable = true; - - home.packages = with pkgs; [ - nerd-fonts.symbols-only - - perlPackages.Apppapersway - wl-clip-persist - ]; - - - my.programs = { - element.enable = true; - - legcord.enable = true; - }; - }; -} \ No newline at end of file diff --git a/users/frontear/home/desktops/sway/fs/bin/screenshot/package.nix b/users/frontear/home/desktops/sway/fs/bin/screenshot/package.nix deleted file mode 100644 index d8080918..00000000 --- a/users/frontear/home/desktops/sway/fs/bin/screenshot/package.nix +++ /dev/null @@ -1,42 +0,0 @@ -{ - lib, - stdenvNoCC, - - coreutils, - grim, - slurp, - wl-clipboard, -}: -stdenvNoCC.mkDerivation { - pname = "screenshot"; - version = "0.1.0"; - - src = ./src; - - installPhase = '' - runHook preInstall - - install -Dm755 $src/screenshot.sh $out/bin/screenshot - - runHook postInstall - ''; - - postInstall = '' - substituteInPlace $out/bin/screenshot \ - --subst-var-by path ${lib.makeBinPath [ - coreutils - grim - slurp - wl-clipboard - ]} - ''; - - meta = with lib; { - description = "Quick and fast script to capture a screenshot for Sway"; - license = licenses.agpl3Plus; - maintainers = with maintainers; [ frontear ]; - platforms = platforms.linux; - - mainProgram = "screenshot"; - }; -} \ No newline at end of file diff --git a/users/frontear/home/desktops/sway/fs/bin/screenshot/src/screenshot.sh b/users/frontear/home/desktops/sway/fs/bin/screenshot/src/screenshot.sh deleted file mode 100644 index c9c20e5c..00000000 --- a/users/frontear/home/desktops/sway/fs/bin/screenshot/src/screenshot.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/usr/bin/env bash - -set -o errexit -set -o nounset -set -o pipefail - -export PATH="@path@:$PATH" - -ss_dir="$HOME/Pictures/Screenshots" -ss_folder=$(date '+%Y-%m') -ss_name=$(date '+%Y-%m-%d_%Hh%Mm%Ss') - -# Ensure folder exists before capturing the screen -mkdir -p "$ss_dir/$ss_folder" - -# Capture the screenshot, save it to the designated path, and copy it to the clipboard. -grim -cg "$(slurp)" - | tee "$ss_dir/$ss_folder/$ss_name.png" | wl-copy \ No newline at end of file diff --git a/users/frontear/home/desktops/sway/fs/default.nix b/users/frontear/home/desktops/sway/fs/default.nix deleted file mode 100644 index 526a6f92..00000000 --- a/users/frontear/home/desktops/sway/fs/default.nix +++ /dev/null @@ -1,14 +0,0 @@ -{ - callPackage, -}: -let - # TODO: move `./bin` to the `pkgs` directory at root. - screenshot = callPackage ./bin/screenshot/package.nix {}; -in { - sway = callPackage ./sway { - inherit screenshot; - }; - - - swayosd = callPackage ./swayosd {}; -} \ No newline at end of file diff --git a/users/frontear/home/desktops/sway/fs/sway/config b/users/frontear/home/desktops/sway/fs/sway/config deleted file mode 100644 index 77952f2d..00000000 --- a/users/frontear/home/desktops/sway/fs/sway/config +++ /dev/null @@ -1,102 +0,0 @@ -exec uwsm finalize - - -output eDP-1 { - scale 1.5 - bg @backgrounds@/bg_dark.jpg fit -} - -client.focused #ff000055 #33333388 #dddddd #00000000 #ff000055 -client.unfocused #595959aa #16161688 #666666 #00000000 #595959aa -titlebar_separator disable - -corner_radius 8 -gaps inner 2 -gaps outer 4 - -exec papersway -exec wl-clip-persist --clipboard regular - -seat * xcursor_theme Bibata-Modern-Classic 16 - -focus_wrapping no -workspace_layout default - -input type:keyboard { - repeat_delay 250 - repeat_rate 25 -} - -input type:touchpad { - accel_profile adaptive - click_method clickfinger - drag disabled - dwt enabled - dwtp enabled - left_handed disabled - middle_emulation disabled - natural_scroll disabled - pointer_accel 0 - scroll_factor 1 - scroll_method two_finger - tap enabled - tap_button_map lrm -} - -bindsym --locked { - --no-repeat XF86AudioMute exec swayosd-client --output-volume mute-toggle - XF86AudioLowerVolume exec swayosd-client --output-volume -5 - XF86AudioRaiseVolume exec swayosd-client --output-volume +5 - - XF86MonBrightnessDown exec swayosd-client --brightness -5 - XF86MonBrightnessUp exec swayosd-client --brightness +5 -} - -bindsym --no-repeat { - Print exec @screenshot@ -} - -set $mod Mod4 -bindsym --no-repeat { - --locked Ctrl+Alt+Delete exec uwsm stop - Ctrl+Alt+R reload - - $mod+BackSpace kill - $mod+Return exec footclient - $mod+E exec rofi -show drun -run-command "uwsm app -- {cmd}" - - F11 fullscreen toggle - $mod+F floating toggle - - $mod+Left exec papersway-msg focus left - $mod+Right exec papersway-msg focus right - $mod+Up focus up - $mod+Down focus down - - $mod+Shift+Left exec papersway-msg move left - $mod+Shift+Right exec papersway-msg move right - $mod+Shift+Up move up - $mod+Shift+Down move down - - $mod+1 workspace number 1 - $mod+2 workspace number 2 - $mod+3 workspace number 3 - $mod+4 workspace number 4 - $mod+5 workspace number 5 - $mod+6 workspace number 6 - $mod+7 workspace number 7 - $mod+8 workspace number 8 - $mod+9 workspace number 9 - $mod+0 workspace number 10 - - $mod+Shift+1 move container to workspace number 1 - $mod+Shift+2 move container to workspace number 2 - $mod+Shift+3 move container to workspace number 3 - $mod+Shift+4 move container to workspace number 4 - $mod+Shift+5 move container to workspace number 5 - $mod+Shift+6 move container to workspace number 6 - $mod+Shift+7 move container to workspace number 7 - $mod+Shift+8 move container to workspace number 8 - $mod+Shift+9 move container to workspace number 9 - $mod+Shift+0 move container to workspace number 10 -} \ No newline at end of file diff --git a/users/frontear/home/desktops/sway/fs/sway/default.nix b/users/frontear/home/desktops/sway/fs/sway/default.nix deleted file mode 100644 index e5bfe83c..00000000 --- a/users/frontear/home/desktops/sway/fs/sway/default.nix +++ /dev/null @@ -1,19 +0,0 @@ -{ - lib, - runCommandNoCCLocal, - - screenshot, -}: -runCommandNoCCLocal "fs-sway" { - src = with lib.fileset; toSource { - root = ./.; - fileset = difference ./. ./default.nix; - }; -} '' - install -Dm644 -t $out/backgrounds $src/backgrounds/* - install -Dm644 {$src,$out}/config - - substituteInPlace $out/config \ - --subst-var-by backgrounds $out/backgrounds \ - --subst-var-by screenshot ${lib.getExe screenshot} -'' \ No newline at end of file diff --git a/users/frontear/home/desktops/sway/services/swayidle/default.nix b/users/frontear/home/desktops/sway/services/swayidle/default.nix deleted file mode 100644 index a2f43aee..00000000 --- a/users/frontear/home/desktops/sway/services/swayidle/default.nix +++ /dev/null @@ -1,26 +0,0 @@ -{ - config, - lib, - ... -}: -let - cfg = config.my.desktops.sway; -in { - config = lib.mkIf cfg.enable { - services.swayidle = { - enable = true; - - timeouts = [ - { - timeout = 60 * 2; - command = "swaylock"; - } - { - timeout = 60 * 5; - command = "swaymsg output * dpms off"; - resumeCommand = "swaymsg output * dpms on"; - } - ]; - }; - }; -} \ No newline at end of file diff --git a/users/frontear/home/programs/default.nix b/users/frontear/home/programs/default.nix index 79da9b8a..b92b2d15 100644 --- a/users/frontear/home/programs/default.nix +++ b/users/frontear/home/programs/default.nix @@ -5,6 +5,5 @@ imports = [ ./neovim ./vscode - ./zed ]; } \ No newline at end of file diff --git a/users/frontear/home/programs/zed/default.nix b/users/frontear/home/programs/zed/default.nix deleted file mode 100644 index 58860df3..00000000 --- a/users/frontear/home/programs/zed/default.nix +++ /dev/null @@ -1,83 +0,0 @@ -{ - config, - pkgs, - ... -}: -{ - config = { - # TODO: extensions install node binaries, which does NOT work on NixOS. - # Figure out a proper fix for this, or else this editor is useless. - # - # see: https://wiki.nixos.org/wiki/Zed#LSP_Support - programs.zed-editor = { - enable = true; - - extensions = [ - "material-icon-theme" - "one-dark-pro" - - "basher" - "java" - "nix" - ]; - - extraPackages = with pkgs; [ - openjdk21 - nixd - ]; - - # https://zed.dev/docs/key-bindings - userKeymaps = [ - { - context = "Editor && vim_mode == normal"; - bindings = { - "ctrl-w" = "pane::CloseActiveItem"; - }; - } - ]; - - # https://zed.dev/docs/configuring-zed - userSettings = { - "auto_update" = false; - "disable_ai" = true; - - "base_keymap" = "VSCode"; - "vim_mode" = true; - - "buffer_font_family" = config.stylix.fonts.monospace.name; - "buffer_font_size" = config.stylix.fonts.sizes.applications; - "ui_font_family" = config.stylix.fonts.sansSerif.name; - "ui_font_size" = config.stylix.fonts.sizes.applications; - - # Disable ligatures as neither of my fonts support it. - "buffer_font_features"."calt" = false; - "ui_font_features"."calt" = false; - - "icon_theme" = "Material Icon Theme"; - "theme" = { - "mode" = "dark"; - "dark" = "One Dark Pro"; - "light" = "One Light"; # necessary to declare apparently.. - }; - - "inlay_hints"."enabled" = true; - - # Mirrored from VSCode - "autosave" = "on_focus_change"; - "minimap"."show" = "never"; - - "cursor_blink" = true; - "cursor_shape" = "bar"; - - "preferred_line_length" = 80; - "soft_wrap" = "bounded"; - - # NOTE: this mimics the `.editorconfig`, may not be necessary - "tab_size" = 2; - "hard_tabs" = false; - "ensure_final_newline_on_save" = false; - "remove_trailing_whitespace_on_save" = true; - }; - }; - }; -} \ No newline at end of file diff --git a/users/frontear/nixos/default.nix b/users/frontear/nixos/default.nix index fee2c0ea..52293190 100644 --- a/users/frontear/nixos/default.nix +++ b/users/frontear/nixos/default.nix @@ -14,8 +14,7 @@ initialHashedPassword = "$y$j9T$gsXwh6NJa62APePZ.7xR00$lLYi86UgQdN1yjOIgqcegfTKsnqkXI4ufQHWdOTiKr6"; extraGroups = [ "wheel" ] ++ - (lib.optional config.networking.networkmanager.enable "networkmanager") ++ - (lib.optional config.my.desktops.sway.enable "input"); + (lib.optional config.networking.networkmanager.enable "networkmanager"); }; }; } \ No newline at end of file