diff --git a/common/home/default.nix b/common/home/default.nix index 34dfd65..8b18bc8 100644 --- a/common/home/default.nix +++ b/common/home/default.nix @@ -10,12 +10,11 @@ displays ? [ ], # is there any extra specific config necessary (like nvidia on lambdaOS) extraConfig ? { }, - # inputs of this flake - local_inputs, }: { config, pkgs, + inputs, lib, ... }: @@ -76,8 +75,8 @@ in ] # FLURRY AND TSUNAMI :3 (I made these) ++ lib.optionals enableFlut [ - local_inputs.flurry.packages.${system}.default - local_inputs.tsunami.packages.${system}.default + inputs.flurry.packages.${system}.default + inputs.tsunami.packages.${system}.default ] # and ofc the things that are only logical with graphics ++ lib.optionals enableGraphical [ @@ -148,8 +147,8 @@ in configFile = lib.mkIf enableGraphical { "niri/config.kdl".source = import ../../packages/niri-config/default.nix { inherit pkgs displays; - inputs = local_inputs; - self-pkgs = local_inputs.self.packages.${pkgs.system}; + inputs = inputs; + self-pkgs = inputs.self.packages.${pkgs.system}; }; }; }; @@ -298,8 +297,8 @@ in let display-shader = pkgs.substituteAll { src = ../../modules/automapaper/display-with_vars.glsl; - background = local_inputs.nix-colors.lib.conversions.hexToGLSLVec "0a000a"; - foreground = local_inputs.nix-colors.lib.conversions.hexToGLSLVec "192291"; + background = inputs.nix-colors.lib.conversions.hexToGLSLVec "0a000a"; + foreground = inputs.nix-colors.lib.conversions.hexToGLSLVec "192291"; }; state-shader = ../../modules/automapaper/state-game_of_life.glsl; init-shader = ../../modules/automapaper/init.glsl; @@ -336,7 +335,7 @@ in Service = { ExecStart = "${ - local_inputs.automapaper.packages.${pkgs.system}.automapaper + inputs.automapaper.packages.${pkgs.system}.automapaper }/bin/automapaper -C ${display_config}/config.toml"; Restart = "on-failure"; RestartSec = 15; diff --git a/flake.lock b/flake.lock index fa60a56..033b4bf 100644 --- a/flake.lock +++ b/flake.lock @@ -147,11 +147,11 @@ "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1743160145, - "narHash": "sha256-9DYlhUx9YS2JNkZzUJvVk/qt0n4W+pJtd29od0olwmg=", + "lastModified": 1743246566, + "narHash": "sha256-arEFUDLjADYIZ7T6PZX1yLOnfMoZ1ByebtmPuvV98+s=", "owner": "lilyinstarlight", "repo": "nixos-cosmic", - "rev": "977ebffd4a29f341139e2a80a7b1a9938fdfc2ba", + "rev": "c709db4b95e58f410978bb49c87cb74214d03e78", "type": "github" }, "original": { @@ -712,11 +712,11 @@ ] }, "locked": { - "lastModified": 1743136572, - "narHash": "sha256-uwaVrKgi6g1TUq56247j6QvvFtYHloCkjCrEpGBvV54=", + "lastModified": 1743267068, + "narHash": "sha256-G7866vbO5jgqMcYJzgbxej40O6mBGQMGt6gM0himjoA=", "owner": "nix-community", "repo": "home-manager", - "rev": "1efd2503172016a6742c87b47b43ca2c8145607d", + "rev": "b431496538b0e294fbe44a1441b24ae8195c63f0", "type": "github" }, "original": { @@ -804,11 +804,11 @@ "pre-commit-hooks": "pre-commit-hooks" }, "locked": { - "lastModified": 1743192532, - "narHash": "sha256-7KjHia6J1/DlH5qVirINMwsR6NiCXAXZYAc+4QyInT0=", + "lastModified": 1743274305, + "narHash": "sha256-gsPA3AAGi3pucRpzJbhWWyyOBv2/2OjAjU/SlcSE8Vc=", "ref": "refs/heads/main", - "rev": "a6adaab2bcb87ce5f71ad6c78dd6c03c920f159a", - "revCount": 17744, + "rev": "d169c092fc28838a253be136d17fe7de1292c728", + "revCount": 17746, "type": "git", "url": "https://git.lix.systems/lix-project/lix.git" }, @@ -872,11 +872,11 @@ "rust-overlay": "rust-overlay_3" }, "locked": { - "lastModified": 1743236791, - "narHash": "sha256-wY/szwIWE8qq4cXrDK6cV/dq+h2RNVDXu1Wk2oOgRIk=", + "lastModified": 1743260207, + "narHash": "sha256-AtizkeSqu7AeMe/JjN8CjENfTKgMGifDW0U2z+S0ygA=", "owner": "YaLTeR", "repo": "niri", - "rev": "d639eb0032a1022f4c76b40646cc7e501e568f35", + "rev": "b2c34e7fe94a12a65083ac73759672427ea2ccbf", "type": "github" }, "original": { @@ -1150,11 +1150,11 @@ }, "nixpkgs_8": { "locked": { - "lastModified": 1743237023, - "narHash": "sha256-vkcV94jtyepUy5b0+eG5MUHIHV18gA/tv7RDOQ1ySkY=", + "lastModified": 1743283310, + "narHash": "sha256-wbYZwu9QFkxYHokRDKRiXcvReAhMdRGDyZKgoAFZm6w=", "owner": "nixos", "repo": "nixpkgs", - "rev": "badbebc62173249c628f2ea3f2e26199c425e886", + "rev": "9e83f2a9f76d8fd69f2b1b1173820d297875d0ae", "type": "github" }, "original": { @@ -1258,11 +1258,11 @@ ] }, "locked": { - "lastModified": 1743129211, - "narHash": "sha256-gE8t+U9miTwm2NYWS9dFY8H1/QB4ifaFDq1KdV9KEqo=", + "lastModified": 1743215516, + "narHash": "sha256-52qbrkG65U1hyrQWltgHTgH4nm0SJL+9TWv2UDCEPNI=", "owner": "oxalica", "repo": "rust-overlay", - "rev": "f93da1d26ba9963f34f94a6872b67a7939699543", + "rev": "524463199fdee49338006b049bc376b965a2cfed", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 014aa0d..7b46c09 100644 --- a/flake.nix +++ b/flake.nix @@ -131,40 +131,19 @@ ./hosts/muos/configuration.nix ]; }; + zelden = nixpkgs.lib.nixosSystem { + specialArgs = { + inherit inputs; + }; + modules = [ + inputs.home-manager.nixosModules.default + ./hosts/zelden/configuration.nix + ]; + }; }; nixosModules = { automapaper = ./modules/automapaper; }; - homeManagerModules = { - "noa@zelden" = - let - pkgs = nixpkgs.legacyPackages.x86_64-linux; - in - (import ./common/home { - enableGraphical = true; - enableFlut = false; - enableGames = false; - displays = [ - { - name = "DP-6"; - horizontal = 3840; - vertical = 1200; - horizontal-offset = 0; - vertical-offset = 0; - refresh-rate = 100; - scale = "1"; - } - ]; - local_inputs = inputs; - extraConfig = { - programs.btop.package = pkgs.btop.overrideAttrs (oldAttrs: { - cmakeFlags = (oldAttrs.cmakeFlags or [ ]) ++ [ - "-DBTOP_GPU=ON" - ]; - }); - }; - }); - }; packages = import ./packages { inherit nixpkgs; }; }; } diff --git a/hosts/zelden/configuration.nix b/hosts/zelden/configuration.nix index 7d499b1..2e4e0a2 100644 --- a/hosts/zelden/configuration.nix +++ b/hosts/zelden/configuration.nix @@ -1,230 +1,153 @@ -# Edit this configuration file to define what should be installed on -# your system.Help is available in the configuration.nix(5) man page -# and in the NixOS manual (accessible by running ‘nixos-help’). - { config, + lib, pkgs, inputs, nix-colors, ... }: { - imports = [ - # Include the results of the hardware scan. - ./hardware-configuration.nix - ../../modules/games/steam.nix - ../../modules/plasma + imports = [ ./hardware-configuration.nix ]; - ../../common - ../../common/configuration.nix - - ./rescue.nix - ./restic.nix - ]; - - age.identityPaths = [ "${config.users.users.noa.home}/.ssh/id_ed25519" ]; - - hardware.nvidia = { - modesetting.enable = true; - powerManagement = { + boot.loader = { + systemd-boot.enable = false; + efi.canTouchEfiVariables = true; + grub = { enable = true; + efiSupport = true; + useOSProber = true; + device = "nodev"; }; - open = true; - nvidiaSettings = true; - package = config.boot.kernelPackages.nvidiaPackages.beta; }; - nixpkgs.config = { - nvidia.acceptLicense = true; - cudaSupport = true; - }; - - networking = { - hostName = "zelden"; # Define your hostname. - firewall.allowedTCPPorts = [ - ]; - firewall.allowedUDPPorts = [ - ]; - }; - - users = { - defaultUserShell = pkgs.zsh; - users = { - wim = { - isNormalUser = true; - description = "Wim"; - extraGroups = [ - "networkmanager" - "wheel" - "docker" - "wireshark" - "dialout" - ]; - hashedPassword = "$6$rounds=512400$Zip3xoK2zcoR4qEL$N13YTHO5tpWfx2nKb1sye.ZPwfoRtMQ5f3YrMZqKzzoFoSSHHJ.l5ulCEa9HygFxZmBtPnwlseFEtl8ERnwF50"; - openssh.authorizedKeys.keys = [ ]; - }; + hardware = { + enableRedistributableFirmware = true; + graphics.enable = true; + nvidia = { + modesetting.enable = true; + powerManagement.enable = true; + open = true; + nvidiaSettings = true; + package = config.boot.kernelPackages.nvidiaPackages.stable; }; }; home-manager = { + extraSpecialArgs = { + inherit inputs nix-colors; + }; users = { - "wim" = (import ../../common/home) { - enableGraphical = true; - enableFlut = false; - enableGames = true; - displays = [ - { - # TODO: find display name and resolution - name = "DP-3"; - horizontal = 2560; - vertical = 1440; - horizontal-offset = 2560; - vertical-offset = 0; - refresh-rate = 360; - scale = "1"; - } - ]; - extraConfig = { - programs.btop.package = pkgs.btop.overrideAttrs (oldAttrs: { - cmakeFlags = (oldAttrs.cmakeFlags or [ ]) ++ [ - "-DBTOP_GPU=ON" - ]; - }); - }; - }; - "noa" = (import ../../common/home) { - enableGraphical = true; - enableFlut = false; - enableGames = true; - displays = [ - { - # TODO: find display name and resolution - name = "DP-3"; - horizontal = 2560; - vertical = 1440; - horizontal-offset = 2560; - vertical-offset = 0; - refresh-rate = 360; - scale = "1"; - } - ]; - extraConfig = { - programs.btop.package = pkgs.btop.overrideAttrs (oldAttrs: { - cmakeFlags = (oldAttrs.cmakeFlags or [ ]) ++ [ - "-DBTOP_GPU=ON" - ]; - }); - }; - }; - "root" = import ./root.nix; - }; - }; - - modules = { - plasma.enable = false; - }; - - boot.kernelModules = [ - "nvidia_uvm" - ]; - - services = { - postgresql = { - enable = false; - ensureDatabases = [ "noa" ]; - ensureUsers = [ - { - name = "noa"; - ensureDBOwnership = true; + "noa" = ( + import ./common/home { + enableGraphical = true; + enableFlut = false; + enableGames = false; + displays = [ + { + name = "DP-6"; + horizontal = 3840; + vertical = 1200; + horizontal-offset = 0; + vertical-offset = 0; + refresh-rate = 100; + scale = "1"; + } + ]; + local_inputs = inputs; + extraConfig = { + programs.btop.package = pkgs.btop.overrideAttrs (oldAttrs: { + cmakeFlags = (oldAttrs.cmakeFlags or [ ]) ++ [ + "-DBTOP_GPU=ON" + ]; + }); + }; } - ]; - }; - ollama = { - enable = true; - acceleration = "cuda"; - openFirewall = true; - }; - fail2ban.enable = true; - hardware = { - openrgb = { - enable = true; - }; + ); + "wim" = (import ./wim.nix); }; }; - systemd = { - user.services.polkit-gnome-authentication-agent-1 = { - description = "polkit-gnome-authentication-agent-1"; - wantedBy = [ "graphical-session.target" ]; - wants = [ "graphical-session.target" ]; - after = [ "graphical-session.target" ]; - serviceConfig = { - Type = "simple"; - ExecStart = "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1"; - Restart = "on-failure"; - RestartSec = 1; - TimeoutStopSec = 10; - }; - }; - timers."update-from-flake" = { - wantedBy = [ "timers.target" ]; - timerConfig = { - OnCalendar = "*-*-* 05:00:00"; - Persistent = true; - }; - }; - services = { - "update-from-flake" = { - path = with pkgs; [ - nixos-rebuild - git - ]; - script = '' - nixos-rebuild boot --flake github:itepastra/nixconf#nuOS - shutdown -r +5 "System will reboot in 5 minutes" - ''; - serviceConfig = { - Type = "oneshot"; - User = "root"; - }; - wants = [ - "network-online.target" - ]; - after = [ - "network-online.target" - ]; - restartIfChanged = false; - }; - }; - }; - - # List packages installed in system profile. To search by name, run: - # $ nix-env -qaP | grep wget - environment.systemPackages = with pkgs; [ - pciutils - file - - gnumake - gcc - - cudatoolkit - ]; - - services.xserver.videoDrivers = [ "nvidia" ]; - - systemd.services.nvidia-control-devices = { - wantedBy = [ "multi-user.target" ]; - serviceConfig.ExecStart = "${pkgs.linuxPackages.nvidia_x11.bin}/bin/nvidia-smi"; + networking = { + hostName = "zelden"; + firewall.allowedTCPPorts = [ ]; + firewall.allowedUDPPorts = [ ]; }; nixpkgs.config.allowUnfree = 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 = "23.11"; # Did you read the comment? + programs = { + gnupg.agent = { + enable = true; + enableSSHSupport = true; + pinentryPackage = pkgs.pinentry-qt; + }; + + niri = { + enable = true; + package = inputs.niri.packages.${pkgs.system}.niri; + }; + + zsh.enable = true; + }; + + services = { + desktopManager.plasma6.enable = true; + displayManager.sddm = { + enable = true; + wayland.enable = true; + }; + xserver.videoDrivers = [ "nvidia" ]; + pipewire = { + enable = true; + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + jack.enable = true; + }; + thermald.enable = true; + }; + + security = { + rtkit.enable = true; + polkit.enable = true; + sudo.execWheelOnly = true; + }; + + system = { + switch.enableNg = true; + rebuild.enableNg = true; + stateVersion = "25.05"; + }; + + users.users = { + wim = { + isNormalUser = true; + description = "Wim"; + extraGroups = [ + "wheel" + ]; + }; + noa = { + isNormalUser = true; + description = "Noa Aarts"; + extraGroups = [ + "networkmanager" + "wheel" + "docker" + "wireshark" + "dialout" + ]; + hashedPassword = "$6$rounds=512400$Zip3xoK2zcoR4qEL$N13YTHO5tpWfx2nKb1sye.ZPwfoRtMQ5f3YrMZqKzzoFoSSHHJ.l5ulCEa9HygFxZmBtPnwlseFEtl8ERnwF50"; + openssh.authorizedKeys.keys = (import ../../common/ssh-keys.nix); + }; + }; + + virtualisation.docker = { + enable = true; + package = pkgs.docker_27; + rootless = { + enable = true; + setSocketVariable = true; + }; + }; } diff --git a/hosts/zelden/hardware-configuration.nix b/hosts/zelden/hardware-configuration.nix new file mode 100644 index 0000000..fde3344 --- /dev/null +++ b/hosts/zelden/hardware-configuration.nix @@ -0,0 +1,35 @@ +{ + config, + lib, + modulesPath, + ... +}: +{ + imports = [ + (modulesPath + "/installer/scan/not-detected.nix") + ]; + + boot = { + initrd.availableKernelModules = [ + "nvme" + "xhci_pci" + "ahci" + "usb_storage" + "usbhid" + "sd_mon" + ]; + initrd.kernelModules = [ ]; + kernelModules = [ "kvm-amd" ]; + extraModulePackages = [ ]; + }; + + fileSystems."/" = { + device = "/dev/disk/by-uuid/421f2811-e8eb-4a8e-8f09-a5e11b71fdcd"; + fsType = "ext4"; + }; + + networking.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/hosts/zelden/wim.nix b/hosts/zelden/wim.nix new file mode 100644 index 0000000..7ffe405 --- /dev/null +++ b/hosts/zelden/wim.nix @@ -0,0 +1,52 @@ +{ + pkgs, + ... +}: +{ + home = { + homeDirectory = "/home/wim"; + packages = with pkgs; [ + # Add programs you want installed here if they don't have a `programs` entry + firefox + mtr + ]; + preferXdgDirectories = true; + stateVersion = "23.11"; + username = "wim"; + }; + + xdg = { + enable = true; + portal = { + enable = true; + extraPortals = [ pkgs.kdePackages.xdg-desktop-portal-kde ]; + config.common.default = "*"; + }; + userDirs = { + enable = true; + createDirectories = true; + }; + }; + + nixpkgs.config.allowUnfree = true; + + programs = { + home-manager.enable = true; + man.enable = true; + ssh = { + enable = true; + compression = true; + # you can add matchBlocks from the ssh config here to your liking + matchBlocks = { + # "github" = { + # host = "github.com"; + # hostname = "github.com"; + # identityFile = "~/.ssh/id_rsa_yubikey.pub"; + # identitiesOnly = true; + # port = 22; + # user = "git"; + # }; + }; + }; + }; +}