Initial basic setup
This commit is contained in:
		
							
								
								
									
										45
									
								
								modules/common.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								modules/common.nix
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,45 @@
 | 
			
		||||
{ lib, pkgs, inputs, config, options, ... }:
 | 
			
		||||
  let
 | 
			
		||||
    inherit (lib) mkIf mkDefault mkAliasDefinitions;
 | 
			
		||||
    inherit (lib.my) mkOpt;
 | 
			
		||||
  in {
 | 
			
		||||
    options.my = with lib.types; {
 | 
			
		||||
      user = mkOpt (attrsOf anything) {};
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    config =
 | 
			
		||||
      let
 | 
			
		||||
        defaultUsername = "dev";
 | 
			
		||||
        uname = config.my.user.name;
 | 
			
		||||
      in {
 | 
			
		||||
        my.user = rec {
 | 
			
		||||
          name = mkDefault defaultUsername;
 | 
			
		||||
          isNormalUser = true;
 | 
			
		||||
          uid = mkDefault 1000;
 | 
			
		||||
          extraGroups = mkDefault [ "wheel" ];
 | 
			
		||||
          password = mkDefault "hunter2"; # TODO: secrets...
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        time.timeZone = mkDefault "Europe/Dublin";
 | 
			
		||||
 | 
			
		||||
        users.mutableUsers = false;
 | 
			
		||||
        users.users.${uname} = mkAliasDefinitions options.my.user;
 | 
			
		||||
        users.groups.${uname}.gid = mkDefault config.users.users.${uname}.uid;
 | 
			
		||||
 | 
			
		||||
        security = {
 | 
			
		||||
          sudo.enable = mkDefault false;
 | 
			
		||||
          doas = {
 | 
			
		||||
            enable = mkDefault true;
 | 
			
		||||
            wheelNeedsPassword = mkDefault false;
 | 
			
		||||
          };
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        environment.systemPackages = with pkgs; [
 | 
			
		||||
          vim
 | 
			
		||||
          iperf3
 | 
			
		||||
        ];
 | 
			
		||||
 | 
			
		||||
        system.stateVersion = "21.11";
 | 
			
		||||
        system.configurationRevision = with inputs; mkIf (self ? rev) self.rev;
 | 
			
		||||
      };
 | 
			
		||||
  }
 | 
			
		||||
							
								
								
									
										10
									
								
								modules/server.nix
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								modules/server.nix
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,10 @@
 | 
			
		||||
{ config, lib, ... }:
 | 
			
		||||
  let
 | 
			
		||||
    inherit (lib) mkIf;
 | 
			
		||||
    inherit (lib.my) mkBoolOpt;
 | 
			
		||||
  in {
 | 
			
		||||
    options.my.server.enable = mkBoolOpt false;
 | 
			
		||||
    config = mkIf config.my.server.enable {
 | 
			
		||||
      services.getty.autologinUser = config.my.user.name;
 | 
			
		||||
    };
 | 
			
		||||
  }
 | 
			
		||||
		Reference in New Issue
	
	Block a user