about summary refs log tree commit diff stats
path: root/modules/common
diff options
context:
space:
mode:
authorBenedikt Peetz <benedikt.peetz@b-peetz.de>2025-05-17 13:39:56 +0200
committerBenedikt Peetz <benedikt.peetz@b-peetz.de>2025-05-17 13:39:56 +0200
commitde11e018dca18d11499debb8102ba6151cc21834 (patch)
tree22c06529d68394cd19ec7792f5e71c6f2a230b4a /modules/common
parentpkgs/default.nix: Migrate to the package arguments (diff)
downloadnixos-config-de11e018dca18d11499debb8102ba6151cc21834.zip
modules/nixos-shell: Init
A VM at your disposal.

This is based on: https://github.com/Mic92/nixos-shell
Diffstat (limited to '')
-rw-r--r--modules/common/default.nix59
-rw-r--r--modules/common/nixos_shell_configuration.nix68
2 files changed, 123 insertions, 4 deletions
diff --git a/modules/common/default.nix b/modules/common/default.nix
index 690385b1..e4225e95 100644
--- a/modules/common/default.nix
+++ b/modules/common/default.nix
@@ -13,6 +13,15 @@
   config,
   pkgs,
   lib,
+  # Needed for nixos-shell
+  libraries,
+  modules,
+  openPRsNixpkgs,
+  packageSets,
+  system,
+  self,
+  externalDependencies,
+  externalBinaries,
   ...
 }: {
   soispha = {
@@ -35,6 +44,48 @@
         "/var/lib/systemd"
       ];
     };
+
+    nixos-shell = {
+      enable = lib.mkDefault true;
+      configuration = {
+        specialArgs = {
+          inherit
+            libraries
+            modules
+            ;
+        };
+        value = lib.mkMerge [
+          {
+            _module.args = {
+              inherit
+                # extra package sources
+                openPRsNixpkgs
+                packageSets
+                # extra information
+                system
+                # nix registry
+                self
+                externalDependencies
+                # bins
+                # TODO: Integrate these into `pkgs/by-name` <2024-05-22>
+                externalBinaries
+                ;
+            };
+          }
+
+          {
+            require = [
+              ./nixos_shell_configuration.nix
+
+              ../../modules
+              ../../modules/common
+            ];
+          }
+        ];
+      };
+      mounts = {};
+    };
+
     polkit.enable = true;
     power.enable = true;
     xdg.enable = true;
@@ -46,11 +97,11 @@
       };
       backup = {
         storagebox = {
-          enable = true;
+          enable = lib.mkDefault true;
           user = "u459143-sub1";
         };
         local = {
-          enable = true;
+          enable = lib.mkDefault true;
         };
       };
       fwupd.enable = true;
@@ -78,7 +129,7 @@
       water-reminder.enable = true;
       systemDiff.enable = true;
       unison = {
-        enable = true;
+        enable = lib.mkDefault true;
 
         foreign.userName = "soispha";
         dataDir = "${config.home-manager.users.soispha.xdg.dataHome}/unison";
@@ -140,7 +191,7 @@
       lf.enable = true;
       gpg.enable = true;
       river = {
-        enable = true;
+        enable = lib.mkDefault true;
         init = {
           rules = [
             {
diff --git a/modules/common/nixos_shell_configuration.nix b/modules/common/nixos_shell_configuration.nix
new file mode 100644
index 00000000..bbaa8477
--- /dev/null
+++ b/modules/common/nixos_shell_configuration.nix
@@ -0,0 +1,68 @@
+# nixos-config - My current NixOS configuration
+#
+# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+# SPDX-License-Identifier: GPL-3.0-or-later
+#
+# This file is part of my nixos-config.
+#
+# You should have received a copy of the License along with this program.
+# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
+{...}: {
+  soispha = {
+    networking = {
+      enable = true;
+      hostName = "lahmu";
+      mode = "systemd-networkd";
+    };
+
+    nixos-shell.enable = false;
+
+    nixpkgs = {
+      enable = true;
+      systemName = "x86_64-linux";
+    };
+
+    services = {
+      unison.enable = false;
+      backup = {
+        storagebox.enable = false;
+        local.enable = false;
+      };
+    };
+
+    programs = {
+      river.enable = false;
+
+      # We don't have access to the age secrets.
+      atuin.enableAge = false;
+      taskwarrior.enableAge = false;
+    };
+
+    locale = {
+      enable = true;
+      keyMap = "us";
+    };
+
+    users = {
+      enable = true;
+      enableDeprecatedPlugdev = true;
+
+      # Make logging in impossible.
+      # (This also removes root a obvious access-point from the virtual machine)
+      hashedPassword = "";
+    };
+  };
+
+  soispha = {
+    hardware = {
+      enable = false;
+      enableGraphics = false;
+      cpuType = "vm";
+    };
+
+    disks.enable = false;
+  };
+
+  # We run without state
+  # system.stateVersion = null;
+}