]> Untitled Git - monorepo.git/commitdiff
update nix directory structure to be more flexible and general
authorPreston Pan <ret2pop@gmail.com>
Tue, 4 Feb 2025 05:27:56 +0000 (21:27 -0800)
committerPreston Pan <ret2pop@gmail.com>
Tue, 4 Feb 2025 05:27:56 +0000 (21:27 -0800)
18 files changed:
config/emacs.org
config/nix.org
nix/flake.nix
nix/modules/configuration.nix
nix/modules/cuda.nix
nix/modules/default.nix
nix/modules/home/user.nix
nix/modules/nvidia.nix
nix/modules/postfix.nix
nix/modules/ssh.nix
nix/modules/xserver.nix
nix/systems/affinity/default.nix
nix/systems/affinity/home.nix [new file with mode: 0644]
nix/systems/continuity/default.nix
nix/systems/continuity/home.nix [new file with mode: 0644]
nix/systems/home.nix [new file with mode: 0644]
nix/systems/spontaneity/default.nix
nix/systems/spontaneity/home.nix [new file with mode: 0644]

index 76f5b9586cd18561fe0e07faca5e7da3aca88c44..6a9b698ec49a473a274679505b659bef57a16ed3 100644 (file)
@@ -41,10 +41,9 @@ Emacs is self documenting, after all!
     (make-backup-files nil "Don't make backups")
     (display-fill-column-indicator-column 150 "Draw a line at 100 characters")
     (line-spacing 2 "Default line spacing")
-
-    ;; Editor comments
     (c-doc-comment-style '((c-mode . doxygen)
                         (c++-mode . doxygen)))
+
     :hook ((text-mode . auto-fill-mode)
         (text-mode . visual-line-mode)
         (prog-mode . auto-fill-mode)
index 59d768b8d7af7c7709496c0d73c6cba2a93b2d78..1ecec87cbd205a5b30cd0c929dbc223529a9aa3f 100644 (file)
@@ -71,7 +71,6 @@ so that adding new configurations that add modifications is made simple.
                sops-nix.nixosModules.sops
                { nixpkgs.overlays = [ nur.overlays.default ]; }
                { home-manager.extraSpecialArgs = attrs; }
-
                ./systems/continuity/default.nix
              ];
            };
@@ -86,7 +85,6 @@ so that adding new configurations that add modifications is made simple.
                sops-nix.nixosModules.sops
                { nixpkgs.overlays = [ nur.overlays.default ]; }
                { home-manager.extraSpecialArgs = attrs; }
-
                ./systems/affinity/default.nix
              ];
            };
@@ -216,10 +214,6 @@ under ~default.nix~ in the ~systems~ folder.
     };
 
     config = {
-      home-manager.users."${config.monorepo.vars.userName}" = {
-           programs.home-manager.enable = config.monorepo.profiles.home.enable;
-      };
-
       environment.systemPackages = lib.mkIf config.monorepo.profiles.documentation.enable (with pkgs; [
            linux-manual
            man-pages
@@ -954,24 +948,6 @@ For my virtual machines.
 }
 #+end_src
 ** Home
-Time for my home user configuration, which is managed by home-manager. First we start off with
-this module to enter us into the home-manager namespace:
-#+begin_src nix :tangle ../nix/modules/home/home.nix
-{ config, sops-nix, ... }:
-{
-  home-manager = {
-    sharedModules = [
-      sops-nix.homeManagerModules.sops
-    ];
-    useGlobalPkgs = true;
-    useUserPackages = true;
-    users."${config.monorepo.vars.userName}" = import ./default.nix;
-  };
-}
-#+end_src
-as you can see, we import default.nix which puts us in the home-manager namespace. Everything
-in the top level from now on will implicitly be located at
-~users."${config.monorepo.vars.userName}".xxxxx~, and we will look at default.nix next.
 *** Default Home Profile
 As you can see, I have my installed home packages installed based on the profiles enabled. Also,
 I have many imports that we'll go through next.
@@ -2610,6 +2586,22 @@ for these configurations.
   }
 #+end_src
 * Systems
+** Home
+This module dynamically imports the correct corresponding home.nix at
+the path.
+#+begin_src nix :tangle ../nix/systems/home.nix
+  { config, sops-nix, ... }:
+  {
+    home-manager = {
+      sharedModules = [
+        sops-nix.homeManagerModules.sops
+      ];
+      useGlobalPkgs = true;
+      useUserPackages = true;
+      users."${config.monorepo.vars.userName}" = import (./. + "/${config.monorepo.vars.hostName}/home.nix");
+    };
+  }
+#+end_src
 ** Continuity
 This is pretty understandable, if you understand all the above.
 #+begin_src nix :tangle ../nix/systems/continuity/default.nix
@@ -2617,8 +2609,19 @@ This is pretty understandable, if you understand all the above.
   {
     imports = [
       ../../modules/default.nix
-      ../../modules/home/home.nix
       ../../modules/sda-simple.nix
+      ../home.nix
+    ];
+  }
+#+end_src
+*** Home
+Each system has a corresponding home configuration in order to set
+monorepo home options.
+#+begin_src nix :tangle ../nix/systems/continuity/home.nix
+  { lib, config, pkgs, ... }:
+  {
+    imports = [
+      ../../modules/home/default.nix
     ];
   }
 #+end_src
@@ -2630,17 +2633,30 @@ as several other useful services.
   {
     imports = [
       ../../modules/default.nix
-      ../../modules/home/home.nix
       ../../modules/nvme-simple.nix
+      ../home.nix
     ];
-    config.monorepo = {
-      profiles = {
-       server.enable = true;
-       cuda.enable = true;
+    config = {
+      monorepo = {
+        profiles = {
+          server.enable = true;
+          cuda.enable = true;
+        };
+        vars.hostName = "affinity";
       };
-      vars.hostName = "affinity";
     };
-    config.home-manager.users."${config.monorepo.vars.userName}".monorepo.profiles.cuda.enable = true;
+  }
+#+end_src
+*** Home
+#+begin_src nix :tangle ../nix/systems/affinity/home.nix
+  { lib, config, pkgs, ... }:
+  {
+    imports = [
+      ../../modules/home/default.nix
+    ];
+    config.monorepo = {
+      profiles.cuda.enable = true;
+    };
   }
 #+end_src
 ** Spontaneity
@@ -2651,17 +2667,27 @@ Spontaneity is my VPS instance.
     imports = [
       ../../modules/default.nix
       ../../modules/vda-simple.nix
+      ../home.nix
     ];
+
     config.monorepo = {
       profiles = {
         server.enable = true;
         ttyonly.enable = true;
-        home.enable = false;
       };
       vars.hostName = "spontaneity";
     };
   }
 #+end_src
+*** Home
+#+begin_src nix :tangle ../nix/systems/spontaneity/home.nix
+  { lib, config, pkgs, ... }:
+  {
+    imports = [
+      ../../modules/home/default.nix
+    ];
+  }
+#+end_src
 ** Installer
 My installer installs my systems almost completely without interaction. You can also make them
 install the exact version of the system that you want it to by pinning the commits to make it
index 950e86a4f8aa6d0a84d49d40d4bd31a48b14469c..39606b4e9746928a4443f37c7f20c1f3e0ea3a27 100644 (file)
@@ -51,7 +51,6 @@
                sops-nix.nixosModules.sops
                { nixpkgs.overlays = [ nur.overlays.default ]; }
                { home-manager.extraSpecialArgs = attrs; }
-
                ./systems/continuity/default.nix
              ];
            };
@@ -66,7 +65,6 @@
                sops-nix.nixosModules.sops
                { nixpkgs.overlays = [ nur.overlays.default ]; }
                { home-manager.extraSpecialArgs = attrs; }
-
                ./systems/affinity/default.nix
              ];
            };
index 97b876497a912e1513672ffc8d53118556734879..62b02f69aec67c22cd60d3ad6ef15072b7299098 100644 (file)
@@ -24,7 +24,7 @@
 
   environment = {
     etc = {
-       securetty.text = ''
+           securetty.text = ''
            # /etc/securetty: list of terminals on which root is allowed to login.
            # See securetty(5) and login(1).
            '';
     coredump.enable = false;
     network.config.networkConfig.IPv6PrivacyExtensions = "kernel";
     tmpfiles.settings = {
-       "restricthome"."/home/*".Z.mode = "~0700";
+           "restricthome"."/home/*".Z.mode = "~0700";
 
-       "restrictetcnixos"."/etc/nixos/*".Z = {
-         mode = "0000";
-         user = "root";
-         group = "root";
-       };
+           "restrictetcnixos"."/etc/nixos/*".Z = {
+             mode = "0000";
+             user = "root";
+             group = "root";
+           };
     };
   };
 
     extraModulePackages = [ ];
 
     initrd = {
-       availableKernelModules = [
-         "xhci_pci"
-         "ahci"
-         "usb_storage"
-         "sd_mod"
-         "nvme"
-         "sd_mod"
-         "ehci_pci"
-         "rtsx_pci_sdmmc"
-         "usbhid"
-       ];
-
-       kernelModules = [ ];
+           availableKernelModules = [
+             "xhci_pci"
+             "ahci"
+             "usb_storage"
+             "sd_mod"
+             "nvme"
+             "sd_mod"
+             "ehci_pci"
+             "rtsx_pci_sdmmc"
+             "usbhid"
+           ];
+
+           kernelModules = [ ];
     };
 
     lanzaboote = {
-       enable = config.monorepo.profiles.secureBoot.enable;
-       pkiBundle = "/etc/secureboot";
+           enable = config.monorepo.profiles.secureBoot.enable;
+           pkiBundle = "/etc/secureboot";
     };
 
     loader = {
-       systemd-boot.enable = lib.mkForce (! config.monorepo.profiles.secureBoot.enable);
-       efi.canTouchEfiVariables = true;
+           systemd-boot.enable = lib.mkForce (! config.monorepo.profiles.secureBoot.enable);
+           efi.canTouchEfiVariables = true;
     };
 
     kernelModules = [
-       "snd-seq"
-       "snd-rawmidi"
-       "xhci_hcd"
-       "kvm_intel"
+           "snd-seq"
+           "snd-rawmidi"
+           "xhci_hcd"
+           "kvm_intel"
     ];
 
     kernelParams = [
-       "debugfs=off"
-       "page_alloc.shuffle=1"
-       "slab_nomerge"
-       "page_poison=1"
-
-       # madaidan
-       "pti=on"
-       "randomize_kstack_offset=on"
-       "vsyscall=none"
-       "module.sig_enforce=1"
-       "lockdown=confidentiality"
-
-       # cpu
-       "spectre_v2=on"
-       "spec_store_bypass_disable=on"
-       "tsx=off"
-       "tsx_async_abort=full,nosmt"
-       "mds=full,nosmt"
-       "l1tf=full,force"
-       "nosmt=force"
-       "kvm.nx_huge_pages=force"
-
-       # hardened
-       "extra_latent_entropy"
-
-       # mineral
-       "init_on_alloc=1"
-       "random.trust_cpu=off"
-       "random.trust_bootloader=off"
-       "intel_iommu=on"
-       "amd_iommu=force_isolation"
-       "iommu=force"
-       "iommu.strict=1"
-       "init_on_free=1"
-       "quiet"
-       "loglevel=0"
+           "debugfs=off"
+           "page_alloc.shuffle=1"
+           "slab_nomerge"
+           "page_poison=1"
+
+           # madaidan
+           "pti=on"
+           "randomize_kstack_offset=on"
+           "vsyscall=none"
+           "module.sig_enforce=1"
+           "lockdown=confidentiality"
+
+           # cpu
+           "spectre_v2=on"
+           "spec_store_bypass_disable=on"
+           "tsx=off"
+           "tsx_async_abort=full,nosmt"
+           "mds=full,nosmt"
+           "l1tf=full,force"
+           "nosmt=force"
+           "kvm.nx_huge_pages=force"
+
+           # hardened
+           "extra_latent_entropy"
+
+           # mineral
+           "init_on_alloc=1"
+           "random.trust_cpu=off"
+           "random.trust_bootloader=off"
+           "intel_iommu=on"
+           "amd_iommu=force_isolation"
+           "iommu=force"
+           "iommu.strict=1"
+           "init_on_free=1"
+           "quiet"
+           "loglevel=0"
     ];
 
     blacklistedKernelModules = [
-       "netrom"
-       "rose"
-
-       "adfs"
-       "affs"
-       "bfs"
-       "befs"
-       "cramfs"
-       "efs"
-       "erofs"
-       "exofs"
-       "freevxfs"
-       "f2fs"
-       "hfs"
-       "hpfs"
-       "jfs"
-       "minix"
-       "nilfs2"
-       "ntfs"
-       "omfs"
-       "qnx4"
-       "qnx6"
-       "sysv"
-       "ufs"
+           "netrom"
+           "rose"
+
+           "adfs"
+           "affs"
+           "bfs"
+           "befs"
+           "cramfs"
+           "efs"
+           "erofs"
+           "exofs"
+           "freevxfs"
+           "f2fs"
+           "hfs"
+           "hpfs"
+           "jfs"
+           "minix"
+           "nilfs2"
+           "ntfs"
+           "omfs"
+           "qnx4"
+           "qnx6"
+           "sysv"
+           "ufs"
     ];
 
     kernel.sysctl = {
-       "kernel.ftrace_enabled" = false;
-       "net.core.bpf_jit_enable" = false;
-       "kernel.kptr_restrict" = 2;
-
-       # madaidan
-       "vm.swappiness" = 1;
-       "vm.unprivileged_userfaultfd" = 0;
-       "dev.tty.ldisc_autoload" = 0;
-       "kernel.kexec_load_disabled" = 1;
-       "kernel.sysrq" = 4;
-       "kernel.perf_event_paranoid" = 3;
-
-       # net
-       "net.ipv4.icmp_echo_ignore_broadcasts" = true;
-
-       "net.ipv4.conf.all.accept_redirects" = false;
-       "net.ipv4.conf.all.secure_redirects" = false;
-       "net.ipv4.conf.default.accept_redirects" = false;
-       "net.ipv4.conf.default.secure_redirects" = false;
-       "net.ipv6.conf.all.accept_redirects" = false;
-       "net.ipv6.conf.default.accept_redirects" = false;
+           "kernel.ftrace_enabled" = false;
+           "net.core.bpf_jit_enable" = false;
+           "kernel.kptr_restrict" = 2;
+
+           # madaidan
+           "vm.swappiness" = 1;
+           "vm.unprivileged_userfaultfd" = 0;
+           "dev.tty.ldisc_autoload" = 0;
+           "kernel.kexec_load_disabled" = 1;
+           "kernel.sysrq" = 4;
+           "kernel.perf_event_paranoid" = 3;
+
+           # net
+           "net.ipv4.icmp_echo_ignore_broadcasts" = true;
+
+           "net.ipv4.conf.all.accept_redirects" = false;
+           "net.ipv4.conf.all.secure_redirects" = false;
+           "net.ipv4.conf.default.accept_redirects" = false;
+           "net.ipv4.conf.default.secure_redirects" = false;
+           "net.ipv6.conf.all.accept_redirects" = false;
+           "net.ipv6.conf.default.accept_redirects" = false;
     };
   };
 
     useDHCP = lib.mkDefault true;
     hostName = config.monorepo.vars.hostName;
     networkmanager = {
-       enable = true;
-       # wifi.macAddress = "";
+           enable = true;
     };
     firewall = {
-       allowedTCPPorts = [ 22 11434 ];
-       allowedUDPPorts = [ ];
+           allowedTCPPorts = [ 22 11434 ];
+           allowedUDPPorts = [ ];
     };
   };
 
   hardware = {
     enableAllFirmware = true;
     cpu.intel.updateMicrocode = true;
-    graphics.enable = true;
+    graphics.enable = ! config.monorepo.profiles.ttyonly.enable;
     pulseaudio.enable = ! config.monorepo.profiles.pipewire.enable;
 
     bluetooth = {
-       enable = true;
-       powerOnBoot = true;
+           enable = true;
+           powerOnBoot = true;
     };
   };
 
   services = {
     chrony = {
-       enable = true;
-       enableNTS = true;
-       servers = [ "time.cloudflare.com" "ptbtime1.ptb.de" "ptbtime2.ptb.de" ];
+           enable = true;
+           enableNTS = true;
+           servers = [ "time.cloudflare.com" "ptbtime1.ptb.de" "ptbtime2.ptb.de" ];
     };
 
     jitterentropy-rngd.enable = true;
 
     # Misc.
     udev = {
-       extraRules = '''';
-       packages = with pkgs; [ 
-         platformio-core
-         platformio-core.udev
-         openocd
-       ];
+           extraRules = '''';
+           packages = with pkgs; [ 
+             platformio-core
+             platformio-core.udev
+             openocd
+           ];
     };
 
     printing.enable = true;
   nixpkgs = {
     hostPlatform = lib.mkDefault "x86_64-linux";
     config = {
-       allowUnfree = true;
-       cudaSupport = lib.mkDefault config.monorepo.profiles.cuda.enable;
+           allowUnfree = true;
+           cudaSupport = lib.mkDefault config.monorepo.profiles.cuda.enable;
     };
   };
 
   security = {
     apparmor = {
-       enable = true;
-       killUnconfinedConfinables = true;
+           enable = true;
+           killUnconfinedConfinables = true;
     };
 
     pam.loginLimits = [
-       { domain = "*"; item = "nofile"; type = "-"; value = "32768"; }
-       { domain = "*"; item = "memlock"; type = "-"; value = "32768"; }
+           { domain = "*"; item = "nofile"; type = "-"; value = "32768"; }
+           { domain = "*"; item = "memlock"; type = "-"; value = "32768"; }
     ];
     rtkit.enable = true;
 
     forcePageTableIsolation = true;
 
     tpm2 = {
-       enable = true;
-       pkcs11.enable = true;
-       tctiEnvironment.enable = true;
+           enable = true;
+           pkcs11.enable = true;
+           tctiEnvironment.enable = true;
     };
 
     auditd.enable = true;
     enable = true;
     wlr.enable = true;
     extraPortals = with pkgs; [
-       xdg-desktop-portal-gtk
-       xdg-desktop-portal
-       xdg-desktop-portal-hyprland
+           xdg-desktop-portal-gtk
+           xdg-desktop-portal
+           xdg-desktop-portal-hyprland
     ];
     config.common.default = "*";
   };
     ];
 
     git = {
-       isSystemUser = true;
-       home = "/srv/git";
-       shell = "${pkgs.git}/bin/git-shell";
+           isSystemUser = true;
+           home = "/srv/git";
+           shell = "${pkgs.git}/bin/git-shell";
     };
     "${config.monorepo.vars.userName}" = {
-       initialPassword = "${config.monorepo.vars.userName}";
-       isNormalUser = true;
-       description = config.monorepo.vars.fullName;
-       extraGroups = [ "networkmanager" "wheel" "video" "docker" "jackaudio" "tss" "dialout" ];
-       shell = pkgs.zsh;
-       packages = [];
+           initialPassword = "${config.monorepo.vars.userName}";
+           isNormalUser = true;
+           description = config.monorepo.vars.fullName;
+           extraGroups = [ "networkmanager" "wheel" "video" "docker" "jackaudio" "tss" "dialout" ];
+           shell = pkgs.zsh;
+           packages = [];
     };
   };
 
index dd5846b060b5af774d2da50a028d7088c3b8348e..d5d9b7cf46ea7470dece47b6c3dbb18bd76e821f 100644 (file)
@@ -1,9 +1,9 @@
 { config, lib, pkgs, ... }:
 {
-  environment.systemPackages = with pkgs; [
+  environment.systemPackages = (if config.monorepo.profiles.cuda.enable then with pkgs; [
        cudatoolkit
        cudaPackages.cudnn
        cudaPackages.libcublas
        linuxPackages.nvidia_x11
-  ];
+  ] else []);
 }
index ad4ccd392dfbb8d68350094976ac5a13b6807651..f520d3b890659c8c37e12016d6fb92b0d6daddce 100644 (file)
@@ -7,36 +7,33 @@
 
   options = {
     monorepo = {
-       profiles = {
-               cuda.enable = lib.mkEnableOption "Enables CUDA support";
-               documentation.enable = lib.mkEnableOption "Enables documentation on system.";
-               secureBoot.enable = lib.mkEnableOption "Enables secure boot. See sbctl.";
-               pipewire.enable = lib.mkEnableOption "Enables pipewire low latency audio setup";
-               tor.enable = lib.mkEnableOption "Enables tor along with torsocks";
-               home.enable = lib.mkEnableOption "Enables home user";
-               server.enable = lib.mkEnableOption "Enables server services";
-       };
+           profiles = {
+                   cuda.enable = lib.mkEnableOption "Enables CUDA support";
+                   documentation.enable = lib.mkEnableOption "Enables documentation on system.";
+                   secureBoot.enable = lib.mkEnableOption "Enables secure boot. See sbctl.";
+                   pipewire.enable = lib.mkEnableOption "Enables pipewire low latency audio setup";
+                   tor.enable = lib.mkEnableOption "Enables tor along with torsocks";
+                   home.enable = lib.mkEnableOption "Enables home user";
+                   server.enable = lib.mkEnableOption "Enables server services";
+        ttyonly.enable = lib.mkEnableOption "TTY only, no xserver";
+           };
     };
   };
 
   config = {
-    home-manager.users."${config.monorepo.vars.userName}" = {
-       programs.home-manager.enable = config.monorepo.profiles.home.enable;
-    };
-
     environment.systemPackages = lib.mkIf config.monorepo.profiles.documentation.enable (with pkgs; [
-       linux-manual
-       man-pages
-       man-pages-posix
+           linux-manual
+           man-pages
+           man-pages-posix
     ]);
 
     monorepo = {
-       profiles = {
-               documentation.enable = lib.mkDefault true;
-               pipewire.enable = lib.mkDefault true;
-               tor.enable = lib.mkDefault true;
-               home.enable = lib.mkDefault true;
-       };
+           profiles = {
+                   documentation.enable = lib.mkDefault true;
+                   pipewire.enable = lib.mkDefault true;
+                   tor.enable = lib.mkDefault true;
+                   home.enable = lib.mkDefault true;
+           };
     };
   };
 }
index 20a57490e36a7c86c2c85147d7d4e8c9e5f1ad11..7c470aa2132f6eab75c3678b36cd48e885a3475e 100644 (file)
@@ -26,6 +26,7 @@
     packages = with pkgs; [
       # wikipedia
       kiwix kiwix-tools
+
       # passwords
       age sops
 
@@ -64,6 +65,7 @@
       acpilight
       pfetch
       libnotify
+      htop
     ];
   };
 
index a1dc8405ff0202768a8468031e210eb0ce80e0c7..2973386ea553611ccaec96d4698510f058bc3db4 100644 (file)
@@ -1,21 +1,22 @@
 { config, lib, pkgs, ... }:
 {
   hardware = {
-    graphics.extraPackages = with pkgs; [
-       vaapiVdpau
-       libvdpau-va-gl
-       nvidia-vaapi-driver
-    ];
+    graphics.extraPackages = (if config.monorepo.profiles.cuda.enable
+                              then with pkgs; [
+                                vaapiVdpau
+                                libvdpau-va-gl
+                                nvidia-vaapi-driver
+                              ] else []);
 
     nvidia = {
-       modesetting.enable = true;
-       powerManagement = {
-               enable = true;
-               finegrained = false;
-       };
-       nvidiaSettings = true;
-       open = false;
-       package = config.boot.kernelPackages.nvidiaPackages.stable;
+           modesetting.enable = lib.mkDefault config.monorepo.profiles.cuda.enable;
+           powerManagement = {
+                   enable = lib.mkDefault config.monorepo.profiles.cuda.enable;
+                   finegrained = false;
+           };
+           nvidiaSettings = lib.mkDefault config.monorepo.profiles.cuda.enable;
+           open = lib.mkDefault false;
+           package = config.boot.kernelPackages.nvidiaPackages.stable;
     };
   };
 }
index 90eb25315e9fd7bc5d6c5b087ef603824c6d1657..35c9e218704974e4ab667d95423c22890a34729f 100644 (file)
@@ -1,7 +1,7 @@
 { config, lib, ... }:
 {
   services.postfix = {
-    enable = true;
+    enable = lib.mkDefault config.monorepo.profiles.server.enable;
     config = {
     };
   };
index 55dc2fb4c18715af476a1bed9c9ffb4d9f5980b9..5c705c9779d1445fd01f52fc42e29a2ba057e3f4 100644 (file)
@@ -5,7 +5,7 @@
     settings = {
       PasswordAuthentication = true;
       AllowUsers = [ config.monorepo.vars.userName ];
-      PermitRootLogin = "no";
+      PermitRootLogin = "prohibit-password";
       KbdInteractiveAuthentication = false;
     };
   };
index 0298f12a2691e94828a11da5c6599b602c22c2b4..aab138ddda295773be94a393e011b21a11d437db 100644 (file)
@@ -3,24 +3,24 @@
   services.xserver = {
     enable = lib.mkDefault true;
     displayManager = {
-       startx.enable = true;
+      startx.enable = true;
     };
 
     windowManager = {
-       i3 = {
-         enable = true;
-         package = pkgs.i3-gaps;
-       };
+           i3 = {
+             enable = ! config.monorepo.profiles.ttyonly.enable;
+             package = pkgs.i3-gaps;
+           };
     };
 
     desktopManager = {
-       runXdgAutostartIfNone = true;
+           runXdgAutostartIfNone = true;
     };
 
     xkb = {
-       layout = "us";
-       variant = "";
-       options = "caps:escape";
+           layout = "us";
+           variant = "";
+           options = "caps:escape";
     };
 
     videoDrivers = (if config.monorepo.profiles.cuda.enable then [ "nvidia" ] else []);
index 44234409a9b46b7e2c6ebd304d51fd07102e89b7..606d9345405d7e610c05d35416d9ffc9be2f9557 100644 (file)
@@ -2,15 +2,16 @@
 {
   imports = [
     ../../modules/default.nix
-    ../../modules/home/home.nix
     ../../modules/nvme-simple.nix
+    ../home.nix
   ];
-  config.monorepo = {
-    profiles = {
-       server.enable = true;
-       cuda.enable = true;
+  config = {
+    monorepo = {
+      profiles = {
+        server.enable = true;
+        cuda.enable = true;
+      };
+      vars.hostName = "affinity";
     };
-    vars.hostName = "affinity";
   };
-  config.home-manager.users."${config.monorepo.vars.userName}".monorepo.profiles.cuda.enable = true;
 }
diff --git a/nix/systems/affinity/home.nix b/nix/systems/affinity/home.nix
new file mode 100644 (file)
index 0000000..7b08138
--- /dev/null
@@ -0,0 +1,9 @@
+{ lib, config, pkgs, ... }:
+{
+  imports = [
+    ../../modules/home/default.nix
+  ];
+  config.monorepo = {
+    profiles.cuda.enable = true;
+  };
+}
index 1bff83ca9652618147cde5bbbc1694feaa88de19..d067581613dfdb9bc3442e0f4c81cd7a1c9f4c7e 100644 (file)
@@ -2,7 +2,7 @@
 {
   imports = [
     ../../modules/default.nix
-    ../../modules/home/home.nix
     ../../modules/sda-simple.nix
+    ../home.nix
   ];
 }
diff --git a/nix/systems/continuity/home.nix b/nix/systems/continuity/home.nix
new file mode 100644 (file)
index 0000000..276ba52
--- /dev/null
@@ -0,0 +1,6 @@
+{ lib, config, pkgs, ... }:
+{
+  imports = [
+    ../../modules/home/default.nix
+  ];
+}
diff --git a/nix/systems/home.nix b/nix/systems/home.nix
new file mode 100644 (file)
index 0000000..af4aa68
--- /dev/null
@@ -0,0 +1,11 @@
+{ config, sops-nix, ... }:
+{
+  home-manager = {
+    sharedModules = [
+      sops-nix.homeManagerModules.sops
+    ];
+    useGlobalPkgs = true;
+    useUserPackages = true;
+    users."${config.monorepo.vars.userName}" = import (./. + "/${config.monorepo.vars.hostName}/home.nix");
+  };
+}
index bc7ba819b7c1125de236905a2a8c896289148f89..5f798553961032ab008179ef02465adae3d2b3c9 100644 (file)
@@ -3,11 +3,13 @@
   imports = [
     ../../modules/default.nix
     ../../modules/vda-simple.nix
+    ../home.nix
   ];
+
   config.monorepo = {
     profiles = {
       server.enable = true;
-      home.enable = false;
+      ttyonly.enable = true;
     };
     vars.hostName = "spontaneity";
   };
diff --git a/nix/systems/spontaneity/home.nix b/nix/systems/spontaneity/home.nix
new file mode 100644 (file)
index 0000000..276ba52
--- /dev/null
@@ -0,0 +1,6 @@
+{ lib, config, pkgs, ... }:
+{
+  imports = [
+    ../../modules/home/default.nix
+  ];
+}