about summary refs log tree commit diff
path: root/modules/profiles/headful/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'modules/profiles/headful/default.nix')
-rw-r--r--modules/profiles/headful/default.nix190
1 files changed, 190 insertions, 0 deletions
diff --git a/modules/profiles/headful/default.nix b/modules/profiles/headful/default.nix
new file mode 100644
index 0000000..ec43d20
--- /dev/null
+++ b/modules/profiles/headful/default.nix
@@ -0,0 +1,190 @@
+{
+  config,
+  inputs,
+  lib,
+  pkgs,
+  this,
+  ...
+}:
+let
+  cfg = config.nixfiles.modules.profiles.headful;
+in
+{
+  imports = lib.modulesIn ./. |> lib.attrValues;
+
+  options.nixfiles.modules.profiles.headful.enable = lib.mkEnableOption "headful profile" // {
+    default = this.isHeadful;
+  };
+
+  config = lib.mkIf cfg.enable {
+    nixfiles.modules = {
+      common.xdg.defaultApplications."org.telegram.desktop" = [ "x-scheme-handler/tg" ];
+
+      profiles.dev.enable = true;
+
+      alacritty.enable = true;
+      aria2.enable = true;
+      bat.enable = true;
+      chromium.enable = true;
+      emacs.enable = true;
+      eza.enable = true;
+      firefox.enable = true;
+      foot.enable = true;
+      kde.enable = true;
+      mpv.enable = true;
+      nullmailer.enable = true;
+      openssh.client.enable = true;
+      password-store.enable = true;
+      sound.enable = true;
+      thunderbird.enable = true;
+      vscode.enable = false;
+      wayland.enable = true;
+      x11.enable = true;
+      yubikey.enable = true;
+      zathura.enable = true;
+    };
+
+    hm = {
+      imports = [ inputs.nix-index-database.hmModules.nix-index ];
+
+      home = {
+        file.".digrc".text = ''
+          +answer
+          +multiline
+          +recurse
+        '';
+
+        packages = with pkgs; [
+          anki
+          audacity
+          bitwarden-cli
+          bitwarden-desktop
+          eaglemode
+          easyeffects
+          element-desktop
+          fd
+          gimp
+          helvum
+          imv
+          libreoffice-fresh
+          mumble
+          obs-studio
+          qbittorrent
+          ripgrep
+          sd
+          telegram-desktop
+          tldr
+          tor-browser-bundle-bin
+          vesktop
+        ];
+      };
+
+      programs = {
+        bash.shellAliases.open = "xdg-open";
+
+        nix-index-database.comma.enable = true;
+      };
+    };
+
+    boot = {
+      kernelPackages = lib.mkDefault (
+        if config.boot.zfs.enabled then
+          pkgs.linuxKernel.packages
+          |> lib.filterAttrs (
+            n: v:
+            (builtins.match "linux_[0-9]+_[0-9]+" n) != null
+            && (builtins.tryEval v).success
+            && (!v.${config.boot.zfs.package.kernelModuleAttribute}.meta.broken)
+          )
+          |> builtins.attrValues
+          |> lib.sort (n: v: lib.versionOlder n.kernel.version v.kernel.version)
+          |> lib.last
+        else
+          pkgs.linuxPackages_latest
+      );
+
+      kernelParams = [
+        # https://wiki.archlinux.org/title/improving_performance#Watchdogs
+        "nowatchdog"
+        "kernel.nmi_watchdog=0"
+        # A security risk I'm willing to take for a reason[1].
+        #
+        # [1]: https://www.phoronix.com/scan.php?page=article&item=spectre-meltdown-2&num=11
+        "mitigations=off"
+      ];
+
+      loader = {
+        efi.canTouchEfiVariables = true;
+
+        systemd-boot = {
+          enable = true;
+          editor = false;
+          configurationLimit = 10;
+        };
+      };
+    };
+
+    hardware.graphics.enable = true;
+
+    nix = {
+      daemonCPUSchedPolicy = "idle";
+      daemonIOSchedClass = "idle";
+      daemonIOSchedPriority = 7;
+
+      gc.automatic = false;
+      optimise.automatic = false;
+    };
+
+    programs = {
+      dconf.enable = true;
+
+      iftop.enable = true;
+
+      mtr.enable = true;
+    };
+
+    services = {
+      fwupd.enable = true;
+
+      libinput.enable = true;
+
+      upower.enable = true;
+
+      languagetool = {
+        enable = true;
+        port = 8081;
+        allowOrigin = "*";
+      };
+    };
+
+    time.timeZone = "Europe/Moscow";
+
+    environment.systemPackages = with pkgs; [
+      brightnessctl
+      lm_sensors
+      usbutils
+      wirelesstools
+    ];
+
+    my.extraGroups = [
+      "audio"
+      "input"
+      "render"
+      "video"
+    ];
+
+    nix.settings.system-features = [
+      "benchmark"
+      "kvm"
+      "nixos-test"
+    ];
+
+    # https://github.com/NixOS/nix/issues/3995#issuecomment-2081164515
+    system.extraDependencies =
+      let
+        collectFlakeInputs =
+          input: [ input ] ++ (lib.attrValues (input.inputs or { }) |> lib.concatMap collectFlakeInputs);
+      in
+      lib.concatMap collectFlakeInputs (lib.attrValues inputs);
+  };
+}

Consider giving Nix/NixOS a try! <3