A modules/hosts/ws/alice/_nixos/default.nix => modules/hosts/ws/alice/_nixos/default.nix +30 -0
@@ 0,0 1,30 @@
+{
+ lib,
+ pkgs,
+ ...
+}: {
+ imports = [
+ ./hardware-configuration.nix
+ ./impermanence.nix
+ ./not-managed-by-modules-yet.nix
+ ];
+
+ boot.kernelPackages = pkgs.linuxPackages_6_17;
+
+ boot.initrd.postResumeCommands = lib.mkAfter ''
+ zfs rollback -r zpool/root@blank
+ '';
+
+ sops.defaultSopsFile = ../../../../../secrets/alice/secrets.yaml;
+ sops.gnupg.sshKeyPaths = ["/persist/etc/ssh/ssh_host_rsa_key"];
+ sops.age.sshKeyPaths = ["/persist/etc/ssh/ssh_host_ed25519_key"];
+
+ networking.hostId = "bc56f04f";
+ networking.networkmanager.enable = true;
+ # TODO: FIXME: make global setting maybe
+ networking.nameservers = ["100.80.2.3"];
+
+ time.timeZone = "Europe/Helsinki";
+
+ system.stateVersion = "24.05";
+}
A modules/hosts/ws/alice/_nixos/hardware-configuration.nix => modules/hosts/ws/alice/_nixos/hardware-configuration.nix +52 -0
@@ 0,0 1,52 @@
+{
+ config,
+ lib,
+ modulesPath,
+ ...
+}: {
+ imports = [
+ (modulesPath + "/installer/scan/not-detected.nix")
+ ];
+
+ boot.loader.systemd-boot.enable = true;
+ boot.loader.systemd-boot.configurationLimit = 9;
+ boot.loader.efi.canTouchEfiVariables = true;
+
+ boot.initrd.availableKernelModules = ["nvme" "xhci_pci" "ahci" "usb_storage" "sd_mod"];
+ boot.initrd.kernelModules = ["zfs"];
+ boot.kernelModules = ["kvm-amd"];
+ boot.supportedFilesystems = ["zfs"];
+
+ fileSystems."/" = {
+ device = "zpool/root";
+ fsType = "zfs";
+ neededForBoot = true;
+ };
+
+ fileSystems."/home" = {
+ device = "zpool/home";
+ fsType = "zfs";
+ neededForBoot = true;
+ };
+
+ fileSystems."/nix" = {
+ device = "zpool/nix";
+ fsType = "zfs";
+ neededForBoot = true;
+ };
+
+ fileSystems."/persist" = {
+ device = "zpool/persist";
+ fsType = "zfs";
+ neededForBoot = true;
+ };
+
+ fileSystems."/boot" = {
+ device = "/dev/disk/by-uuid/3DA8-297C";
+ fsType = "vfat";
+ options = ["fmask=0022" "dmask=0022"];
+ };
+
+ # TODO: fix?
+ hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
+}
A modules/hosts/ws/alice/_nixos/impermanence.nix => modules/hosts/ws/alice/_nixos/impermanence.nix +12 -0
@@ 0,0 1,12 @@
+{
+ environment.persistence."/persist" = {
+ hideMounts = true;
+ directories = [
+ "/etc/nixos"
+ "/etc/ssh"
+ "/var/lib/flatpak"
+ "/var/lib/nixos"
+ "/var/lib/tailscale"
+ ];
+ };
+}
A modules/hosts/ws/alice/_nixos/not-managed-by-modules-yet.nix => modules/hosts/ws/alice/_nixos/not-managed-by-modules-yet.nix +13 -0
@@ 0,0 1,13 @@
+{pkgs, ...}: {
+ environment.systemPackages = with pkgs; [
+ keepassxc
+ firefox
+
+ prismlauncher
+
+ # k8s stuff
+ talosctl
+ kubectl
+ kubernetes-helm
+ ];
+}
A modules/hosts/ws/alice/default.nix => modules/hosts/ws/alice/default.nix +154 -0
@@ 0,0 1,154 @@
+{
+ inputs,
+ lib,
+ ...
+}: let
+ channel = "unstable";
+ system = "x86_64-linux";
+ hostName = "alice";
+in {
+ flake.nixosConfigurations.${hostName} = inputs."nixpkgs-${channel}".lib.nixosSystem {
+ inherit system;
+ specialArgs = {
+ inherit inputs;
+ lib = inputs."nixpkgs-${channel}".lib.extend (
+ final: prev:
+ import ../../../../lib {
+ inherit inputs;
+ lib = final;
+ }
+ );
+ };
+ modules = [
+ {
+ networking.hostName = hostName;
+ }
+
+ ./_nixos
+
+ inputs.impermanence.nixosModules.impermanence
+ inputs.sops-nix.nixosModules.sops
+ inputs."home-manager-${channel}".nixosModules.home-manager
+
+ ({
+ config,
+ pkgs,
+ ...
+ }: let
+ user = "skye";
+ importBoth = module: [
+ inputs.self.modules.nixos.${module}
+ {
+ home-manager.users.${user}.imports = [inputs.self.modules.homeManager.${module}];
+ }
+ ];
+ in {
+ imports = with inputs.self.modules.nixos;
+ [
+ core
+ amdgpu
+ audio
+ nvim
+ nix
+ steam
+ tailscale
+ obs
+ lazygit
+ ssh-agent
+ gnupg
+
+ home-manager
+ {
+ home-manager.users.${user} = {
+ imports = with inputs.self.modules.homeManager;
+ [
+ mangohud
+ git
+ ]
+ ++ [
+ {
+ home.stateVersion = config.system.stateVersion;
+
+ # Not yet in modules or anything.
+ home.packages = with pkgs; [blender];
+
+ services.wpaperd = {
+ enable = true;
+ settings = {
+ DP-3 = {
+ path = "/home/skye/Nextcloud/Wallpapers/forest";
+ duration = "15m";
+ };
+ DP-2 = {
+ path = "/home/skye/Nextcloud/Wallpapers/minimalgals";
+ duration = "15m";
+ };
+ };
+ };
+ }
+
+ # TODO: how to position these configuration extensions
+ {
+ arta.git = {
+ email = "jonni@liljamo.com";
+ name = "Jonni Liljamo";
+ sendemail.enable = true;
+ };
+
+ arta.hyprland.extraConfig = {
+ exec-once = [
+ "waybar"
+ ];
+
+ monitor = [
+ "DP-2,2560x1440@59,0x0,1"
+ "DP-3,3840x2160@60,2560x0,1,bitdepth,10,cm,hdr,sdrbrightness,1.1,sdrsaturation,0.9"
+ ];
+
+ workspace = [
+ "1,monitor:DP-2,default:true"
+ "2,monitor:DP-2"
+ "3,monitor:DP-2"
+ "4,monitor:DP-2"
+ "5,monitor:DP-2"
+ "6,monitor:DP-3,default:true"
+ "7,monitor:DP-3"
+ "8,monitor:DP-3"
+ "9,monitor:DP-3"
+ ];
+ };
+
+ arta.waybar.extraConfig = {
+ output = ["DP-2"];
+
+ modules-left = ["hyprland/workspaces"];
+ modules-right = [
+ "wireplumber"
+ "custom/sep"
+ "disk"
+ "custom/sep"
+ "network"
+ "custom/sep"
+ "clock"
+ "custom/sep"
+ "hyprland/language"
+ "tray"
+ ];
+
+ "network".interface = "enp4s0";
+ };
+ }
+ ];
+ };
+ }
+ ]
+ ++ [inputs.self.modules.nixos.${user}]
+ ++ lib.flatten [
+ (importBoth "hyprland")
+ (importBoth "shell")
+ (importBoth "passmenu")
+ ];
+ })
+ ];
+ };
+}