diff --git a/flake.nix b/flake.nix index f478b06..ff6de6a 100644 --- a/flake.nix +++ b/flake.nix @@ -67,6 +67,9 @@ # work murk = utils.mkHost ./hosts/murk/configuration.nix; + # work desktop + musk = utils.mkHost ./hosts/musk/configuration.nix; + # lenovo muvo = utils.mkHost ./hosts/muvo/configuration.nix; diff --git a/hosts/musk/configuration.nix b/hosts/musk/configuration.nix new file mode 100644 index 0000000..b9868c3 --- /dev/null +++ b/hosts/musk/configuration.nix @@ -0,0 +1,117 @@ +{ + config, + lib, + pkgs, + inputs, + system, + sources, + modulesPath, + ... +}: let + cfg = config.mods; + keys = [ + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKEio+Y5wBVD1wILaH2R3wV10FvVjiqy/4gGBWHOITTB muon@muon" + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKevYmkH7xvYoquBjnYZ7PJiVqf+GOh9fxAJBN6wZGBB gin4@hi.is" + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAILmAOd9VbhyJeibt6Vrb101MNTk5W8+rh94Djv/C+pyu muon@muho" + ]; +in { + # Hardware + imports = [ + ./hardware-configuration.nix + "${ + builtins.fetchTarball { + url = "https://github.com/nix-community/disko/archive/refs/tags/v1.12.0.tar.gz"; + sha256 = "0wbx518d2x54yn4xh98cgm65wvj0gpy6nia6ra7ns4j63hx14fkq"; + } + }/module.nix" + ./disk-config.nix + # (inputs.nixpkgs + # + "/nixos/modules/installer/cd-dvd/installation-cd-minimal.nix") + ]; + + environment.systemPackages = with inputs.nix-alien.packages.${system}; [ + nix-alien + pkgs.libratbag + pkgs.piper + pkgs.libpq + pkgs.qmk + pkgs.jq + pkgs.wireguard-tools + pkgs.opencode + ]; + + boot.binfmt = { + emulatedSystems = ["aarch64-linux"]; + preferStaticEmulators = true; # Make it work with Docker + }; + + # System + mods.user.name = "muon"; + networking.hostName = "musk"; + networking.hostId = "a2309091"; + mods.home.file = ./home.nix; + nix.settings.trusted-users = ["root" "muon"]; + users.users.muon.extraGroups = ["docker"]; + + # Modules + mods.desktop.enable = true; + mods.boot.enable = true; + + mods.theme.enable = true; + mods.theme.scheme = "woodland"; + mods.theme.wallpaper = ./wallpaper.png; + + services.xserver.windowManager.i3.enable = true; + # mods.desktop.wayland.enable = true; + + mods.impermanence.enable = true; + + virtualisation.docker.enable = true; + + users.users.muon.openssh.authorizedKeys.keys = keys; + users.users.root.openssh.authorizedKeys.keys = keys; + + # Persist + environment.persistence."/persist" = { + directories = ["/etc/NetworkManager" "/var/lib/NetworkManager"]; + }; + + # Hardware preferences + environment.variables = { + WINIT_HIDPI_FACTOR = "1"; + WINIT_X11_SCALE_FACTOR = "1"; + }; + + ## Monitors + mods.monitors = { + primary = { + name = "DP-1"; + config = { + enable = true; + mode = "2560x1440"; + position = "0x0"; + rate = "60.00"; + dpi = 72; + }; + }; + right = { + name = "HDMI-1"; + config = { + enable = true; + mode = "2560x1440"; + position = "2560x0"; + rate = "60.00"; + dpi = 72; + }; + }; + }; + + ## Mouse + services.libinput.mouse.accelProfile = "flat"; + + ## Keyboard + hardware.keyboard.qmk.enable = true; + + # Version of first install + system.stateVersion = "23.05"; +} diff --git a/hosts/musk/disk-config.nix b/hosts/musk/disk-config.nix new file mode 100644 index 0000000..05a9f01 --- /dev/null +++ b/hosts/musk/disk-config.nix @@ -0,0 +1,72 @@ +{ + disko.devices = { + disk = { + main = { + type = "disk"; + device = "/dev/sda"; + content = { + type = "gpt"; + partitions = { + ESP = { + size = "512M"; + type = "EF00"; + content = { + type = "filesystem"; + format = "vfat"; + mountpoint = "/boot"; + mountOptions = [ "umask=0077" ]; + }; + }; + luks = { + size = "100%"; + content = { + type = "luks"; + name = "crypted"; + # disable settings.keyFile if you want to use interactive password entry + #passwordFile = "/tmp/secret.key"; # Interactive + # settings = { + # allowDiscards = true; + # keyFile = "/tmp/secret.key"; + # }; + # additionalKeyFiles = [ "/tmp/additionalSecret.key" ]; + content = { + type = "btrfs"; + extraArgs = [ "-f" ]; + subvolumes = { + "/root" = { + mountpoint = "/"; + mountOptions = [ "compress=zstd" "noatime" ]; + }; + "/home" = { + mountpoint = "/home"; + mountOptions = [ "compress=zstd" "noatime" ]; + }; + "/nix" = { + mountpoint = "/nix"; + mountOptions = [ "compress=zstd" "noatime" ]; + }; + "/persist" = { + mountpoint = "/persist"; + mountOptions = [ "compress=zstd" "noatime" ]; + }; + "/log" = { + mountpoint = "/var/log"; + mountOptions = [ "compress=zstd" "noatime" ]; + }; + "/swap" = { + mountpoint = "/swap"; + swap.swapfile.size = "4G"; + }; + }; + }; + }; + }; + }; + }; + }; + }; + }; + + fileSystems."/persist".neededForBoot = true; + fileSystems."/var/log".neededForBoot = true; +} diff --git a/hosts/musk/hardware-configuration.nix b/hosts/musk/hardware-configuration.nix new file mode 100644 index 0000000..332920b --- /dev/null +++ b/hosts/musk/hardware-configuration.nix @@ -0,0 +1,18 @@ +# Do not modify this file! It was generated by ‘nixos-generate-config’ +# and may be overwritten by future invocations. Please make changes +# to /etc/nixos/configuration.nix instead. +{ config, lib, pkgs, modulesPath, ... }: + +{ + imports = + [ (modulesPath + "/installer/scan/not-detected.nix") + ]; + + boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usbhid" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ ]; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/hosts/musk/home.nix b/hosts/musk/home.nix new file mode 100644 index 0000000..5a2edf8 --- /dev/null +++ b/hosts/musk/home.nix @@ -0,0 +1,82 @@ +{ + pkgs, + lib, + config, + osConfig, + inputs, + ... +}: let + cfg = osConfig.mods; +in { + # Modules + mods.xdg.enable = true; + mods.i3.enable = true; + # mods.hyprland.enable = true; + mods.terminal.zsh.enable = true; + mods.terminal.emulator.enable = true; + mods.terminal.development.enable = true; + mods.terminal.tools.enable = true; + mods.desktop.development.enable = true; + mods.desktop.productivity.enable = false; + mods.zen.enable = true; + + home.packages = with pkgs; + [ + thunderbird + pulseaudio + pavucontrol + alsa-utils + rustdesk-flutter + + # tools + docker + fish + devenv + dbeaver-bin + ruff + just + go + rainfrog + tealdeer + gh + (callPackage ./packages/mender-cli.nix {}) + ] + # Non-free