zaphyra's git: nixfiles

zaphyra's nixfiles

commit f3b1603e4b0522107a02c6f8d9e1e8175f988398
parent 4891716c441779c731d37850f7e5ff70e6380b00
Author: Katja Ramona Sophie Kwast (zaphyra) <git@zaphyra.eu>
Date: Wed, 22 Jul 2026 22:13:17 +0200

nixos/common/profiles/base: add `system.nixos.versionSuffix` and `system.nixos.revision`
1 file changed, 83 insertions(+), 70 deletions(-)
M
nixosModules/common/profiles/base.nix
|
153
+++++++++++++++++++++++++++++++++++++++++++------------------------------------
diff --git a/nixosModules/common/profiles/base.nix b/nixosModules/common/profiles/base.nix
@@ -1,4 +1,5 @@
 {
+  self,
   pkgs,
   lib,
   config,

@@ -10,94 +11,106 @@
 
   options.common.profiles.base.enable = lib.mkEnableOption "base profile";
 
-  config = lib.mkIf config.common.profiles.base.enable {
-    boot.kernel.sysctl."kernel.sysrq" = lib.mkDefault 1;
+  config = lib.mkIf config.common.profiles.base.enable (
+    let
+      nixpkgsSrc = if machineConfig.nixpkgsStable then self.npins.nixpkgs else self.npins.nixpkgsUnstable;
 
-    # make things more declerative
-    services.userborn.enable = lib.mkDefault true;
-    #users.mutableUsers = lib.mkForce false;
+    in
+    {
 
-    networking = {
-      hostId = builtins.substring 0 8 (builtins.hashString "sha256" machineConfig.machineName);
-      hostName = machineConfig.machineName;
-      domain = lib.mkDefault machineConfig.domain;
+      boot.kernel.sysctl."kernel.sysrq" = lib.mkDefault 1;
 
-      useNetworkd = lib.mkDefault true;
-      useDHCP = lib.mkDefault false;
+      # make things more declerative
+      services.userborn.enable = lib.mkDefault true;
+      users.mutableUsers = lib.mkForce false;
+      system.nixos-init.enable = true;
+      system.etc.overlay.enable = true;
 
-      nftables.enable = lib.mkDefault true;
-      firewall.enable = lib.mkDefault true;
-    };
+      networking = {
+        hostId = builtins.substring 0 8 (builtins.hashString "sha256" machineConfig.machineName);
+        hostName = machineConfig.machineName;
+        domain = lib.mkDefault machineConfig.domain;
 
-    hardware.enableRedistributableFirmware = true;
+        useNetworkd = lib.mkDefault true;
+        useDHCP = lib.mkDefault false;
 
-    common = {
-      profiles = {
-        amdCpu.enable = lib.mkDefault (machineConfig.hardware.cpuVendor == "amd");
-        intelCpu.enable = lib.mkDefault (machineConfig.hardware.cpuVendor == "intel");
+        nftables.enable = lib.mkDefault true;
+        firewall.enable = lib.mkDefault true;
       };
 
-      configure = {
-        boot.enable = lib.mkDefault true;
+      hardware.enableRedistributableFirmware = true;
 
-        locale.enable = lib.mkDefault true;
-        sops.enable = lib.mkDefault true;
+      common = {
+        profiles = {
+          amdCpu.enable = lib.mkDefault (machineConfig.hardware.cpuVendor == "amd");
+          intelCpu.enable = lib.mkDefault (machineConfig.hardware.cpuVendor == "intel");
+        };
 
-        nix.enable = true;
-      };
+        configure = {
+          boot.enable = lib.mkDefault true;
 
-      services = {
-        openssh.enable = true;
-      };
+          locale.enable = lib.mkDefault true;
+          sops.enable = lib.mkDefault true;
+
+          nix.enable = true;
+        };
+
+        services = {
+          openssh.enable = true;
+        };
 
-      security = {
-        nix.enable = lib.mkDefault true;
-        kernel.enable = lib.mkDefault true;
-        networking.enable = lib.mkDefault true;
+        security = {
+          nix.enable = lib.mkDefault true;
+          kernel.enable = lib.mkDefault true;
+          networking.enable = lib.mkDefault true;
+        };
+
+        programs = {
+          shellUtilities.enable = lib.mkDefault true;
+          systemUtilities.enable = lib.mkDefault true;
+          networkUtilities.enable = lib.mkDefault true;
+
+          fish.enable = lib.mkDefault true;
+        };
       };
 
       programs = {
-        shellUtilities.enable = lib.mkDefault true;
-        systemUtilities.enable = lib.mkDefault true;
-        networkUtilities.enable = lib.mkDefault true;
+        command-not-found.enable = false; # Not usable without channels; use nix-index instead.
+      };
 
-        fish.enable = lib.mkDefault true;
+      services = {
+        dbus.implementation = "broker";
       };
-    };
-
-    programs = {
-      command-not-found.enable = false; # Not usable without channels; use nix-index instead.
-    };
-
-    services = {
-      dbus.implementation = "broker";
-    };
-
-    security.sudo.extraConfig = "Defaults lecture=\"never\""; # "We trust you have received the usual lecture from the local System Administrator."
-
-    system = {
-      stateVersion = lib.mkDefault "25.11";
-
-      # thanks piegames (https://git.darmstadt.ccc.de/piegames/home-config/-/blob/master/modules/generic.nix#L84)
-      activationScripts = {
-        diff = {
-          supportsDryActivation = true;
-          text = ''
-            ${pkgs.nvd}/bin/nvd --color=always --nix-bin-dir=${pkgs.nix}/bin diff "$(readlink /run/current-system)" "$systemConfig"
-            # Ignore "failures" because these tools have weird exit codes
-            ${pkgs.colordiff}/bin/colordiff --nobanner --fakeexitcode --color=always -ur -I '\/nix\/store' \
-              -- "$(readlink /run/current-system)/activate" "$systemConfig/activate" | ${pkgs.gnugrep}/bin/grep -v "^Binary files" || true
-            ${pkgs.colordiff}/bin/colordiff --nobanner --fakeexitcode --color=always -ur -I '\/nix\/store' \
-              -x "os-release" -x "issue" \
-              -- "$(readlink /run/current-system)/etc" "$systemConfig/etc" | ${pkgs.gnugrep}/bin/grep -v "^Binary files" || true
-            ${pkgs.colordiff}/bin/colordiff --nobanner --fakeexitcode --color=always -ur -I '\/nix\/store' \
-              -x "environment.d" \
-              -x "hwdb.d" \
-              -- "$(readlink /run/current-system)/systemd" "$systemConfig/systemd" | ${pkgs.gnugrep}/bin/grep -v "^Binary files" || true
-          '';
+
+      security.sudo.extraConfig = "Defaults lecture=\"never\""; # "We trust you have received the usual lecture from the local System Administrator."
+
+      system = {
+        stateVersion = lib.mkDefault "25.11";
+
+        nixos.revision = nixpkgsSrc.revision;
+        nixos.versionSuffix = "-${lib.substring 0 8 (nixpkgsSrc.revision)}";
+
+        # thanks piegames (https://git.darmstadt.ccc.de/piegames/home-config/-/blob/master/modules/generic.nix#L84)
+        activationScripts = {
+          diff = {
+            supportsDryActivation = true;
+            text = ''
+              ${pkgs.nvd}/bin/nvd --color=always --nix-bin-dir=${pkgs.nix}/bin diff "$(readlink /run/current-system)" "$systemConfig"
+              # Ignore "failures" because these tools have weird exit codes
+              ${pkgs.colordiff}/bin/colordiff --nobanner --fakeexitcode --color=always -ur -I '\/nix\/store' \
+                -- "$(readlink /run/current-system)/activate" "$systemConfig/activate" | ${pkgs.gnugrep}/bin/grep -v "^Binary files" || true
+              ${pkgs.colordiff}/bin/colordiff --nobanner --fakeexitcode --color=always -ur -I '\/nix\/store' \
+                -x "os-release" -x "issue" \
+                -- "$(readlink /run/current-system)/etc" "$systemConfig/etc" | ${pkgs.gnugrep}/bin/grep -v "^Binary files" || true
+              ${pkgs.colordiff}/bin/colordiff --nobanner --fakeexitcode --color=always -ur -I '\/nix\/store' \
+                -x "environment.d" \
+                -x "hwdb.d" \
+                -- "$(readlink /run/current-system)/systemd" "$systemConfig/systemd" | ${pkgs.gnugrep}/bin/grep -v "^Binary files" || true
+            '';
+          };
         };
       };
-    };
-  };
+    }
+  );
 
 }