diff --git a/flake.nix b/flake.nix index 1da1266..409f81e 100644 --- a/flake.nix +++ b/flake.nix @@ -78,11 +78,11 @@ mkHomes = machines: extraArgs: nixlib.genAttrs machines (machine: mkHome ({inherit machine; } // extraArgs)); - allMachines = [ "laptop" "desktop" "headless" "pvv-terminal" ]; + allMachines = [ "laptop" "desktop" "headless" "pvv-terminal" "ikari" ]; in { - homeConfigurations = mkHomes [ "laptop" "headless" ] { } + homeConfigurations = mkHomes [ "laptop" "headless" "ikari" ] { } // mkHomes [ "desktop" ] { username = "dan"; } // mkHomes [ "pvv-terminal" ] { username = "danio"; homeDirectory = "/home/pvv/d/danio"; }; @@ -107,6 +107,16 @@ ./hosts/soryu/configuration.nix ]; }; + + ikari = nixpkgs.lib.nixosSystem { + system = "x86_64-linux"; + specialArgs = { + inherit inputs; + }; + modules = [ + ./hosts/ikari/configuration.nix + ]; + }; }; nixosModules = { diff --git a/home/machines/ikari.nix b/home/machines/ikari.nix new file mode 100644 index 0000000..a7b324e --- /dev/null +++ b/home/machines/ikari.nix @@ -0,0 +1,25 @@ +{ config, lib, pkgs, overlays, ... }: +{ + nixpkgs.overlays = overlays; + nixpkgs.config.allowUnfreePredicate = (pkg: true); + nixpkgs.config.allowUnfree = true; + + imports = [ ../profiles ]; + + machine = { + name = "ikari"; + eth = "eno1"; + wlan = null; + }; + profiles.base.enable = true; + profiles.base.plus = true; + profiles.xsession.enable = true; + profiles.audio.fancy = true; + profiles.zsh.enable = true; + + profiles.games.enable = true; + + home.packages = [ + pkgs.unstable.osu-lazer + ]; +} diff --git a/hosts/ikari/configuration.nix b/hosts/ikari/configuration.nix new file mode 100644 index 0000000..26ca3c6 --- /dev/null +++ b/hosts/ikari/configuration.nix @@ -0,0 +1,172 @@ +# Edit this configuration file to define what should be installed on +# your system. Help is available in the configuration.nix(5) man page, on +# https://search.nixos.org/options and in the NixOS manual (`nixos-help`). + +{ config, lib, pkgs, ... }: + +{ + imports = + [ # Include the results of the hardware scan. + ./hardware-configuration.nix + ]; + + services.postgresql.enable = true; + services.postgresql.package = pkgs.postgresql_15; + services.postgresql.authentication = '' + host all all 192.168.10.0/24 md5 + ''; + + nixpkgs.config.allowUnfreePredicate = pkg: + builtins.elem (lib.getName pkg) [ + # Add additional package names here + "nvidia-x11" + "nvidia-settings" + "nvidia-persistenced" + + "steam" + "steam-original" + "steam-run" + "steam-unwrapped" + ]; + + + services.xserver.videoDrivers = ["nvidia"]; + hardware.nvidia = { + package = config.boot.kernelPackages.nvidiaPackages.stable; + modesetting.enable = true; + nvidiaSettings = true; + powerManagement.finegrained = false; + open = false; + }; + #hardware.graphics.enable = true; + hardware.opengl.driSupport32Bit = true; + + + programs.steam = { + enable = true; + remotePlay.openFirewall = false; + dedicatedServer.openFirewall = false; + }; + + # Use the systemd-boot EFI boot loader. + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + + networking.hostName = "ikari"; # Define your hostname. + # Pick only one of the below networking options. + # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. + # networking.networkmanager.enable = true; # Easiest to use and most distros use this by default. + + services.tailscale.enable = true; + + # Set your time zone. + time.timeZone = "Europe/Oslo"; + + # Configure network proxy if necessary + # networking.proxy.default = "http://user:password@proxy:port/"; + # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain"; + + # Select internationalisation properties. + i18n.supportedLocales = [ "en_US.UTF-8/UTF-8" "nb_NO.UTF-8/UTF-8" ]; + i18n.defaultLocale = "en_US.UTF-8"; + i18n.extraLocaleSettings = { + LC_TIME = "nb_NO.UTF-8"; + LC_PAPER = "nb_NO.UTF-8"; + LC_NAME = "nb_NO.UTF-8"; + LC_ADDRESS = "nb_NO.UTF-8"; + LC_TELEPHONE = "nb_NO.UTF-8"; + LC_MEASUREMENT = "nb_NO.UTF-8"; + LC_IDENTIFICATION = "nb_NO.UTF-8"; + }; + console = { + font = "Lat2-Terminus16"; + useXkbConfig = true; # use xkb.options in tty. + }; + + + services.displayManager.defaultSession = "xsession"; + # Enable the X11 windowing system. + services.xserver.enable = true; + services.xserver.displayManager = { + session = [ + { + manage = "desktop"; + name = "xsession"; + start = "exec $HOME/.xsession"; + } + ]; + }; + + services.dbus.packages = with pkgs; [ pkgs.dconf ]; + programs.dconf.enable = true; + + + + # Configure keymap in X11 + services.xserver.xkb.layout = "no"; + + # Enable CUPS to print documents. + # services.printing.enable = true; + + # Enable sound. + security.rtkit.enable = true; + services.pipewire = { + enable = true; + pulse.enable = true; + alsa.enable = true; + alsa.support32Bit = true; + jack.enable = true; + }; + + + programs.zsh.enable = true; + + # Define a user account. Don't forget to set a password with ‘passwd’. + users.users.daniel = { + isNormalUser = true; + extraGroups = [ "wheel" ]; # Enable ‘sudo’ for the user. + shell = pkgs.zsh; + openssh.authorizedKeys.keys = [ + "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCp8iMOx3eTiG5AmDh2KjKcigf7xdRKn9M7iZQ4RqP0np0UN2NUbu+VAMJmkWFyi3JpxmLuhszU0F1xY+3qM3ARduy1cs89B/bBE85xlOeYhcYVmpcgPR5xduS+TuHTBzFAgp+IU7/lgxdjcJ3PH4K0ruGRcX1xrytmk/vdY8IeSk3GVWDRrRbH6brO4cCCFjX0zJ7G6hBQueTPQoOy3jrUvgpRkzZY4ZCuljXtxbuX5X/2qWAkp8ca0iTQ5FzNA5JUyj+DWeEzjIEz6GrckOdV2LjWpT9+CtOqoPZOUudE1J9mJk4snNlMQjE06It7Kr50bpwoPqnxjo7ZjlHFLezl" + ]; + }; + + # List packages installed in system profile. To search, run: + # $ nix search wget + environment.systemPackages = with pkgs; [ + vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default. + wget + git + ]; + + # Some programs need SUID wrappers, can be configured further or are + # started in user sessions. + # programs.mtr.enable = true; + # programs.gnupg.agent = { + # enable = true; + # enableSSHSupport = true; + # }; + + # List services that you want to enable: + + # Enable the OpenSSH daemon. + services.openssh.enable = true; + services.openssh.openFirewall = false; + + networking.firewall.interfaces."tailscale0" = let + all = { from = 0; to = 65535; }; + in { + allowedUDPPortRanges = [ all ]; + allowedTCPPortRanges = [ all ]; + }; + + networking.firewall.trustedInterfaces = [ "eno1" ]; + + nix.settings.trusted-users = [ "daniel" ]; + nix.settings.experimental-features = [ "nix-command" "flakes" ]; + + + + system.stateVersion = "24.05"; # Did you read the comment? +} + diff --git a/hosts/ikari/hardware-configuration.nix b/hosts/ikari/hardware-configuration.nix new file mode 100644 index 0000000..d59f508 --- /dev/null +++ b/hosts/ikari/hardware-configuration.nix @@ -0,0 +1,38 @@ +# 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" "ehci_pci" "ahci" "usbhid" "usb_storage" "sd_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/92bec2f5-9ae6-40c1-9c7b-a7b03ef8b79f"; + fsType = "ext4"; + }; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/8FB1-1C05"; + fsType = "vfat"; + options = [ "fmask=0077" "dmask=0077" ]; + }; + + swapDevices = [ ]; + + # 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; +}