summaryrefslogtreecommitdiff
path: root/modules/nixos/profiles
diff options
context:
space:
mode:
Diffstat (limited to 'modules/nixos/profiles')
-rw-r--r--modules/nixos/profiles/default.nix33
-rw-r--r--modules/nixos/profiles/dev/containers.nix27
-rw-r--r--modules/nixos/profiles/dev/default.nix19
-rw-r--r--modules/nixos/profiles/headful.nix88
-rw-r--r--modules/nixos/profiles/headless.nix42
5 files changed, 209 insertions, 0 deletions
diff --git a/modules/nixos/profiles/default.nix b/modules/nixos/profiles/default.nix
new file mode 100644
index 0000000..d5ab838
--- /dev/null
+++ b/modules/nixos/profiles/default.nix
@@ -0,0 +1,33 @@
+{
+ config,
+ lib,
+ pkgs,
+ this,
+ ...
+}:
+with lib; let
+ cfg = config.nixfiles.modules.profiles.default;
+in {
+ imports = [
+ ./dev
+ ./headful.nix
+ ./headless.nix
+ ];
+
+ config = mkIf cfg.enable {
+ programs.less = {
+ enable = true;
+ envVariables.LESSHISTFILE = "-";
+ };
+
+ environment.systemPackages = with pkgs; [
+ cryptsetup
+ lshw
+ lsof
+ pciutils
+ psmisc
+ usbutils
+ util-linux
+ ];
+ };
+}
diff --git a/modules/nixos/profiles/dev/containers.nix b/modules/nixos/profiles/dev/containers.nix
new file mode 100644
index 0000000..195b892
--- /dev/null
+++ b/modules/nixos/profiles/dev/containers.nix
@@ -0,0 +1,27 @@
+{
+ config,
+ lib,
+ pkgs,
+ ...
+}:
+with lib; let
+ cfg = config.nixfiles.modules.profiles.dev.containers;
+in {
+ config = mkIf cfg.enable {
+ nixfiles.modules.podman.enable = true;
+
+ hm = {
+ home = {
+ sessionVariables.MINIKUBE_HOME = "${config.dirs.config}/minikube";
+
+ packages = with pkgs; [buildah];
+ };
+
+ xdg.dataFile."minikube/config/config.json".text = generators.toJSON {} {
+ config.Rootless = true;
+ driver = "podman";
+ container-runtime = "cri-o";
+ };
+ };
+ };
+}
diff --git a/modules/nixos/profiles/dev/default.nix b/modules/nixos/profiles/dev/default.nix
new file mode 100644
index 0000000..83d41c0
--- /dev/null
+++ b/modules/nixos/profiles/dev/default.nix
@@ -0,0 +1,19 @@
+{
+ config,
+ lib,
+ pkgs,
+ this,
+ ...
+}:
+with lib; let
+ cfg = config.nixfiles.modules.profiles.dev.default;
+in {
+ config = mkIf cfg.enable {
+ hm.home.language = {
+ collate = "C";
+ messages = "C";
+ };
+
+ my.extraGroups = ["kvm"];
+ };
+}
diff --git a/modules/nixos/profiles/headful.nix b/modules/nixos/profiles/headful.nix
new file mode 100644
index 0000000..01c442e
--- /dev/null
+++ b/modules/nixos/profiles/headful.nix
@@ -0,0 +1,88 @@
+{
+ config,
+ lib,
+ pkgs,
+ this,
+ ...
+}:
+with lib; let
+ cfg = config.nixfiles.modules.profiles.headful;
+in {
+ config = mkIf cfg.enable {
+ nixfiles.modules = {
+ chromium.enable = true;
+ firefox.enable = true;
+ sound.enable = true;
+ x11.enable = true;
+
+ dwm.enable = mkDefault false;
+ kde.enable = mkDefault true;
+ xmonad.enable = mkDefault false;
+ };
+
+ hm = {
+ home.packages = with pkgs; [
+ calibre
+ imv
+ neochat
+ tdesktop
+ tor-browser
+ ];
+
+ programs.bash.shellAliases.open = "${pkgs.xdg-utils}/bin/xdg-open";
+ };
+
+ boot = {
+ # Pretty much placebo but has some nice patches for `-march=native`
+ # optimisations, P-State Zen4 support and Fsync for Wine.
+ kernelPackages = mkDefault pkgs.linuxPackages_xanmod_latest;
+
+ # There are (arguably) not a lot of reasons to keep mitigations enabled
+ # for on machine that is not web-facing. First of all, to completely
+ # mitigate any possible Spectre holes one would need to disable
+ # Hyperthreading altogether which will essentially put one's computer into
+ # the stone age by not being able to to effectively utilise multi-core its
+ # multicore capabilities. Secondly, by enabling mitigations, we introduce
+ # a plethora of performace overheads[1], which, albeit small, but still
+ # contribute to the overall speed of things. This is however still poses a
+ # security risk, which I am willing to take.
+ #
+ # [1]: https://www.phoronix.com/scan.php?page=article&item=spectre-meltdown-2&num=11
+ kernelParams = ["mitigations=off"];
+
+ loader = {
+ efi.canTouchEfiVariables = true;
+
+ systemd-boot = {
+ enable = true;
+ configurationLimit = 10;
+ };
+ };
+ };
+
+ hardware.opengl = {
+ enable = true;
+ driSupport = true;
+ };
+
+ programs = {
+ iftop.enable = true;
+ mtr.enable = true;
+ traceroute.enable = true;
+ };
+
+ services = {
+ # https://github.com/NixOS/nixpkgs/issues/135888
+ upower.enable = true;
+
+ psd.enable = true;
+ };
+
+ environment.systemPackages = with pkgs; [
+ ethtool
+ nethogs
+ ];
+
+ my.extraGroups = ["audio" "video" "input"];
+ };
+}
diff --git a/modules/nixos/profiles/headless.nix b/modules/nixos/profiles/headless.nix
new file mode 100644
index 0000000..9faf531
--- /dev/null
+++ b/modules/nixos/profiles/headless.nix
@@ -0,0 +1,42 @@
+{
+ config,
+ lib,
+ pkgs,
+ this,
+ ...
+}:
+with lib; let
+ cfg = config.nixfiles.modules.profiles.headless;
+in {
+ config = mkIf cfg.enable {
+ nixfiles.modules = {
+ openssh.server.enable = true;
+ endlessh-go.enable = true;
+
+ fail2ban.enable = true;
+
+ node-exporter.enable = true;
+ promtail.enable = true;
+ };
+
+ # Pin version to prevent any surprises.
+ boot.kernelPackages = pkgs.linuxPackages_5_15_hardened;
+
+ nix = {
+ gc = {
+ automatic = true;
+ dates = "weekly";
+ options = "--delete-older-than 30d";
+ };
+
+ optimise = {
+ automatic = true;
+ dates = ["daily"];
+ };
+ };
+
+ services.udisks2.enable = false;
+
+ xdg.sounds.enable = false;
+ };
+}