diff --git a/flake.nix b/flake.nix index 6bda9c1..b29db70 100644 --- a/flake.nix +++ b/flake.nix @@ -70,6 +70,7 @@ inherit inputs; nixosConfigurations.noximilien = mkConfig "noximilien" "x86_64-linux" (with nixos-hardware.nixosModules; [ common-pc common-pc-ssd common-cpu-intel ]); nixosConfigurations.bolle = mkConfig "bolle" "x86_64-linux" (with nixos-hardware.nixosModules; [ common-pc common-pc-ssd common-cpu-intel ]); + nixosConfigurations.nord = mkConfig "nord" "x86_64-linux" (with nixos-hardware.nixosModules; [ common-pc common-pc-ssd common-cpu-intel-cpu-only common-gpu-amd ]); homeConfigurations = forAllSystems (system: { pbsds = home-manager.lib.homeManagerConfiguration { pkgs = nixpkgs.legacyPackages.${system}; diff --git a/hosts/nord/default.nix b/hosts/nord/default.nix new file mode 100644 index 0000000..2627867 --- /dev/null +++ b/hosts/nord/default.nix @@ -0,0 +1,215 @@ +{ config, pkgs, lib, ... }: +{ + # Bootloader + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + boot.loader.efi.efiSysMountPoint = "/boot/efi"; + + imports = [ + ./hardware-configuration.nix + + ../../users # home-manager + ../../users/pbsds + + ../../hardware/opengl-intel.nix + + /** / + ../../profiles/web + ../../profiles/web/index + ../../profiles/web/docs + ../../profiles/web/docs/pdoc.nix + ../../profiles/web/docs/python-docs.nix + ../../profiles/web/docs/nixpkgs.nix + ../../profiles/web/docs/linux-docs.nix + ../../profiles/web/docs/yagcd.nix + /**/ + + #../../profiles/domeneshop-dyndns # TODO: olavtr is hardcoded... + #../../profiles/code-remote + #../../profiles/remote-builders # + #../../profiles/autossh-reverse-tunnels + ]; + + + # run/build weird binaries + # TODO: somehow make sure this is in sync with remote-builders + boot.binfmt.emulatedSystems = [ + "wasm32-wasi" + "wasm64-wasi" + "x86_64-windows" + "aarch64-linux" + "riscv64-linux" + #"x86_64-darwin" + #"aarch64-darwin" + ]; + + services.thermald.enable = true; + + # Virtualization + #virtualisation.podman.enable = true; + #virtualisation.podman.dockerCompat = true; # alias docker to podman + #virtualisation.oci-containers.backend = "podman"; + + # Networking + networking.networkmanager.enable = true; + #networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. + networking.interfaces.eno1.ipv4.addresses = [ + { address = "192.168.1.8"; prefixLength = 24; } + ]; + networking.nameservers = [ + "192.168.1.254" + "8.8.8.8" + "1.1.1.1" + ]; + networking.defaultGateway = { + address = "192.168.1.254"; + interface = "eno1"; + }; + #networking.useDHCP = true; + #TODO: avahi? resolved? https://git.pvv.ntnu.no/Drift/pvv-nixos-config/src/main/base.nix#L15-L18 + + # Installed system packages + # TODO: prune this, make home-manager deal with the majority + environment.systemPackages = with pkgs; [ + lsof + lshw + htop + file + tmux + #parallel # already provided by moreutils + pwgen + git + nmap + rsync + bind.dnsutils + graphviz + dialog + cowsay + gnused + gnumake + coreutils-full + moreutils + binutils + diffutils + findutils + usbutils + bash-completion + curl + wget + strace + killall + + zip + unrar + unzip + atool + p7zip + bzip2 + gzip + atool + + micro + aspell aspellDicts.en aspellDicts.nb + vimv + dos2unix + #rmate # TODO: add to nixpkgs + pandoc + cargo + cargo-edit + sqlite + #sshuttle + visidata + + weston + cage + vimix-gtk-themes + flat-remix-icon-theme + xclip + feh + + sshfs + + glances + zenith + tealdeer # tldr + entr + axel aria + bat + xe # xargs alternative + sd # sed alternative + fd # find alternative + silver-searcher # `ag` + ripgrep + jq + yq + htmlq + sysz + du-dust # du alternative + ncdu # Disk usage analyzer with an ncurses interface + + gh + hub + + cachix + nix-output-monitor + nix-prefetch + nix-top + #nix-index + nix-tree + nix-diff + nixfmt + alejandra + + firefox + ]; + + # TODO: remove? Move? + programs.dconf.enable = true; + + # OpenSSH + services.openssh.enable = true; + services.openssh.forwardX11 = true; + + # System fonts + # Nice to have when X-forwading on headless machines + # TODO: move? + fonts.fonts = with pkgs; [ + noto-fonts # includes Cousine + noto-fonts-cjk + noto-fonts-emoji + noto-fonts-extra + dejavu_fonts + ]; + + # GNOME + services.xserver.enable = true; + services.xserver.displayManager.gdm.enable = true; + services.xserver.desktopManager.gnome.enable = true; + #services.printing.enable = true; # CUPS + + # Enable sound with pipewire. + sound.enable = true; + hardware.pulseaudio.enable = false; + security.rtkit.enable = true; + services.pipewire.enable = true; + services.pipewire.alsa.enable = true; + services.pipewire.alsa.support32Bit = true; + #services.pipewire.jack.enable = true; + services.pipewire.pulse.enable = true; + # use the example session manager (no others are packaged yet so this is enabled by default, + # no need to redefine it in your config for now) + #services.pipewire.media-session.enable = true; + + # Enable touchpad support (enabled default in most desktopManager). + # services.xserver.libinput.enable = true; + + + + # This value determines the NixOS release from which the default + # settings for stateful data, like file locations and database versions + # on your system were taken. It's perfectly fine and recommended to leave + # this value at the release version of the first install of this system. + # Before changing this value read the documentation for this option + # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). + system.stateVersion = "22.11"; # Did you read the comment? +} diff --git a/hosts/nord/hardware-configuration.nix b/hosts/nord/hardware-configuration.nix new file mode 100644 index 0000000..5b82011 --- /dev/null +++ b/hosts/nord/hardware-configuration.nix @@ -0,0 +1,41 @@ +# 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 = [ "ehci_pci" "ahci" "xhci_pci" "firewire_ohci" "usb_storage" "usbhid" "sd_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/82049e62-2174-48e1-a321-72f7d224c633"; + fsType = "ext4"; + }; + + fileSystems."/boot/efi" = + { device = "/dev/disk/by-uuid/1698-535F"; + fsType = "vfat"; + }; + + swapDevices = + [ { device = "/dev/disk/by-uuid/cd7b72b7-738a-4399-a887-ad69f6aa6ec9"; } + ]; + + # Enables DHCP on each ethernet and wireless interface. In case of scripted networking + # (the default) this is the recommended approach. When using systemd-networkd it's + # still possible to use this option, but it's recommended to use it in conjunction + # with explicit per-interface declarations with `networking.interfaces..useDHCP`. + networking.useDHCP = lib.mkDefault true; + # networking.interfaces.eno1.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; + # high-resolution display + hardware.video.hidpi.enable = lib.mkDefault true; +}