add nixos config for utm vm

This commit is contained in:
willemml 2023-02-08 17:19:27 -08:00
parent d9c66b966c
commit 7dd55fbbc6
Signed by: willemml
GPG key ID: C3DE5DF6198DACBD
5 changed files with 155 additions and 51 deletions

View file

@ -12,9 +12,7 @@
outputs = inputs@{ self, nixpkgs, home-manager, darwin, nur, ... }:
let
system = "aarch64-darwin";
pkgs = import nixpkgs {
pkgsfunc = (system: import nixpkgs {
inherit system;
overlays = [
(import ./overlays)
@ -25,38 +23,51 @@
nur = import nur { inherit pkgs; nurpkgs = pkgs; };
};
};
};
});
nurNoPkgs = import nur {
nurpkgs = pkgs;
pkgs = throw "nixpkgs eval";
};
user-config = {
user-config = (pkgs: {
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.extraSpecialArgs = { inherit nurNoPkgs pkgs; inputs = { inherit (inputs); }; };
home-manager.extraSpecialArgs = {
inherit pkgs; inputs = { inherit (inputs); };
nurNoPkgs = import nur {
nurpkgs = pkgs;
pkgs = throw "nixpkgs eval";
};
};
home-manager.sharedModules = [ nur.hmModules.nur ];
home-manager.users.willem = ./home;
users.users.willem = {
home = "/Users/willem";
isHidden = false;
name = "willem";
shell = pkgs.zshInteractive;
};
};
});
in
{
darwinConfigurations = {
zeus = darwin.lib.darwinSystem {
inherit system pkgs inputs;
zeus = darwin.lib.darwinSystem rec {
inherit inputs;
system = "aarch64-darwin";
pkgs = pkgsfunc system;
modules = [
./modules/nix.nix
./system/darwin.nix
home-manager.darwinModules.home-manager
user-config
(user-config pkgs)
];
};
};
nixosConfigurations.zeus-utm-vm = (pkgsfunc "aarch64-linux").lib.nixosSystem rec {
inherit inputs;
system = "aarch64-linux";
pkgs = pkgsfunc system;
modules = [
./modules/nix.nix
./system/utm-arm-vm.nix
home-manager.nixosModules.home-manager
(user-config pkgs)
];
};
};
}

39
system/common.nix Normal file
View file

@ -0,0 +1,39 @@
{ pkgs, ... }:
{
environment.variables.SHELL = "${pkgs.zsh}/bin/zsh";
environment.variables.LANG = "en_US.UTF-8";
nix = {
generateNixPathFromInputs = true;
generateRegistryFromInputs = true;
linkInputs = true;
package = pkgs.nix;
settings.experimental-features = [ "nix-command" "flakes" ];
settings.trusted-users = [ "root" "willem" ];
};
programs.bash.enable = true;
programs.nix-index.enable = true;
programs.zsh.enable = true;
programs.zsh.enableBashCompletion = true;
programs.zsh.promptInit = ''
autoload -U promptinit && promptinit
setopt PROMPTSUBST
_prompt_nix() {
[ -z "$IN_NIX_SHELL" ] || echo "%F{yellow}%B[''${name:+$name}]%b%f "
}
PS1='%F{red}%B%(?..%? )%b%f%# '
RPS1='$(_prompt_nix)%F{green}%~%f'
if [ -n "$IN_NIX_SANDBOX" ]; then
PS1+='%F{red}[sandbox]%f '
fi
'';
time.timeZone = "America/Vancouver";
users.users.willem.shell = pkgs.zshInteractive;
}

View file

@ -1,6 +1,8 @@
{ pkgs, ... }:
{
imports = [ ./common.nix ];
environment.etc."nix/user-sandbox.sb".text = ''
(version 1)
(allow default)
@ -15,8 +17,6 @@
'';
environment.loginShell = "${pkgs.zsh}/bin/zsh -l";
environment.variables.SHELL = "${pkgs.zsh}/bin/zsh";
environment.variables.LANG = "en_US.UTF-8";
environment.systemPackages = with pkgs; [
colima
coreutils
@ -41,25 +41,9 @@
};
};
nix = {
extraOptions = ''
experimental-features = nix-command flakes
extra-trusted-users = willem
'';
generateRegistryFromInputs = true;
generateNixPathFromInputs = true;
linkInputs = true;
package = pkgs.nix;
};
programs.bash.enable = true;
programs.man.enable = true;
programs.nix-index.enable = true;
programs.zsh.enable = true;
programs.zsh.enableBashCompletion = true;
programs.zsh.enableFzfCompletion = true;
programs.zsh.enableFzfGit = true;
programs.zsh.enableFzfHistory = true;
@ -76,18 +60,6 @@
exec /usr/bin/sandbox-exec -f /etc/nix/user-sandbox.sb $SHELL -l
}
'';
programs.zsh.promptInit = ''
autoload -U promptinit && promptinit
setopt PROMPTSUBST
_prompt_nix() {
[ -z "$IN_NIX_SHELL" ] || echo "%F{yellow}%B[''${name:+$name}]%b%f "
}
PS1='%F{red}%B%(?..%? )%b%f%# '
RPS1='$(_prompt_nix)%F{green}%~%f'
if [ -n "$IN_NIX_SANDBOX" ]; then
PS1+='%F{red}[sandbox]%f '
fi
'';
services.nix-daemon.enable = true;
@ -147,4 +119,10 @@
}];
};
};
users.users.willem = {
home = "/Users/willem";
isHidden = false;
name = "willem";
};
}

51
system/nixos.nix Normal file
View file

@ -0,0 +1,51 @@
{ pkgs, ... }: {
imports = [ ./common.nix ];
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
boot.loader.efi.efiSysMountPoint = "/boot/efi";
console.keyMap = "colemak";
i18n.defaultLocale = "en_US.UTF-8";
programs.zsh.loginShellInit = ''
reexec() {
unset __NIX_OS_SET_ENVIRONMENT_DONE
unset __ETC_ZPROFILE_SOURCED __ETC_ZSHENV_SOURCED __ETC_ZSHRC_SOURCED
exec $SHELL -c 'echo >&2 "reexecuting shell: $SHELL" && exec $SHELL -l'
}
'';
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
};
services.printing.enable = true;
services.pulseaudio.enable = false;
security.rtkit.enable = true;
services.xserver = {
enable = true;
displayManager.gdm.enable = true;
desktopManager.gnome.enable = true;
layout = "us";
xkbVariant = "colemak";
};
sound.enable = true;
system.stateVersion = "22.11";
users.users.willem = {
isNormalUser = true;
extraGroups = [ "networkmanager" "wheel" ];
};
}

25
system/utm-arm-vm.nix Normal file
View file

@ -0,0 +1,25 @@
{ pkgs, ... }:
{
imports = [ ./nixos.nix ];
boot.initrd.availableKernelModules = [ "xhci_pci" "virtio_pci" "usbhid" "usb_storage" "sr_mod" ];
boot.initrd.kernelModules = [ ];
boot.extraModulePackages = [ ];
fileSystems."/" = {
device = "/dev/disk/by-uuid/10c8feb5-8fbb-490a-b144-dff00e82f3e9";
fsType = "ext4";
};
fileSystems."/boot/efi" = {
device = "/dev/disk/by-uuid/3D0E-803C";
fsType = "vfat";
};
networking.useDHCP = true;
services.spice-vdagentd.enable = true;
swapDevices = [ ];
}