diff options
-rw-r--r-- | flake.lock | 99 | ||||
-rw-r--r-- | flake.nix | 53 | ||||
-rw-r--r-- | home-manager/common.nix | 1 | ||||
-rw-r--r-- | hosts/hardware-configuration/tarrel.nix (renamed from hardware-configuration.nix) | 0 | ||||
-rw-r--r-- | hosts/hardware-configuration/work.nix | 41 | ||||
-rw-r--r-- | hosts/tarrel.nix (renamed from configuration.nix) | 39 | ||||
-rw-r--r-- | hosts/work.nix | 99 | ||||
-rw-r--r-- | modules/compositor.nix (renamed from compositor.nix) | 0 | ||||
-rw-r--r-- | modules/gaming.nix | 5 | ||||
-rw-r--r-- | modules/keyd.nix (renamed from keyd.nix) | 0 | ||||
-rw-r--r-- | modules/nix-settings.nix | 8 | ||||
-rw-r--r-- | modules/packages.nix (renamed from packages.nix) | 0 | ||||
-rw-r--r-- | modules/services.nix (renamed from services.nix) | 0 | ||||
-rw-r--r-- | modules/sunshine.nix (renamed from gaming.nix) | 5 | ||||
-rw-r--r-- | modules/virt.nix (renamed from virt.nix) | 0 | ||||
-rw-r--r-- | networking.nix | 28 | ||||
-rw-r--r-- | nvidia.nix | 12 |
17 files changed, 274 insertions, 116 deletions
@@ -82,6 +82,24 @@ "type": "github" } }, + "flake-utils_2": { + "inputs": { + "systems": "systems_3" + }, + "locked": { + "lastModified": 1694529238, + "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, "gitignore": { "inputs": { "nixpkgs": [ @@ -112,11 +130,11 @@ "rust-overlay": "rust-overlay" }, "locked": { - "lastModified": 1731295855, - "narHash": "sha256-PpkEexKnFxd72Z+bRnZqYmaSlNF0ztOIjY+aa/5PKak=", + "lastModified": 1731479417, + "narHash": "sha256-NZ+Jc9XecxUIC6RBE5TdDo8hKzI704fMBKTz6lEH32w=", "owner": "helix-editor", "repo": "helix", - "rev": "10c3502a89d51e2d074d0d2ca62f85241d6e8c0f", + "rev": "6cca98264fe308bd6a4f7f85be2d821b58f60b4a", "type": "github" }, "original": { @@ -190,11 +208,11 @@ "xdph": "xdph" }, "locked": { - "lastModified": 1731340175, - "narHash": "sha256-qhkP+XRa1AuKkVrxKDLdK4gby363vH6wEie5tb6rz2E=", + "lastModified": 1731425185, + "narHash": "sha256-/v5mz2LKOsBjwW9M+2kg0jVhpkFNIAvM/fUDy3OiOj4=", "owner": "hyprwm", "repo": "Hyprland", - "rev": "f5fa84554ffe55e29a397014964238be89ffa54d", + "rev": "bb160cfe377da2d2b2e4431a3399fa60114f3911", "type": "github" }, "original": { @@ -371,22 +389,6 @@ "type": "github" } }, - "nixpkgs_4": { - "locked": { - "lastModified": 1727348695, - "narHash": "sha256-J+PeFKSDV+pHL7ukkfpVzCOO7mBSrrpJ3svwBFABbhI=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "1925c603f17fc89f4c8f6bf6f631a802ad85d784", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, "pre-commit-hooks": { "inputs": { "flake-compat": "flake-compat", @@ -417,7 +419,7 @@ "home-manager": "home-manager", "hyprland": "hyprland", "nixpkgs": "nixpkgs_3", - "zen-browser": "zen-browser" + "utils": "utils" } }, "rust-overlay": { @@ -471,6 +473,39 @@ "type": "github" } }, + "systems_3": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "utils": { + "inputs": { + "flake-utils": "flake-utils_2" + }, + "locked": { + "lastModified": 1722363685, + "narHash": "sha256-XCf2PIAT6lH7BwytgioPmVf/wkzXjSKScC4KzcZgb64=", + "owner": "gytis-ivaskevicius", + "repo": "flake-utils-plus", + "rev": "6b10f51ff73a66bb29f3bc8151a59d217713f496", + "type": "github" + }, + "original": { + "owner": "gytis-ivaskevicius", + "repo": "flake-utils-plus", + "type": "github" + } + }, "xdph": { "inputs": { "hyprland-protocols": [ @@ -511,24 +546,6 @@ "repo": "xdg-desktop-portal-hyprland", "type": "github" } - }, - "zen-browser": { - "inputs": { - "nixpkgs": "nixpkgs_4" - }, - "locked": { - "lastModified": 1727721329, - "narHash": "sha256-QYlWZwUSwrM7BuO+dXclZIwoPvBIuJr6GpFKv9XKFPI=", - "owner": "MarceColl", - "repo": "zen-browser-flake", - "rev": "e6ab73f405e9a2896cce5956c549a9cc359e5fcc", - "type": "github" - }, - "original": { - "owner": "MarceColl", - "repo": "zen-browser-flake", - "type": "github" - } } }, "root": "root", @@ -1,31 +1,44 @@ { - description = "My NixOS Flake"; + description = "NixOS Flake"; inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-24.05"; home-manager.url = "github:nix-community/home-manager/release-24.05"; home-manager.inputs.nixpkgs.follows = "nixpkgs"; helix.url = "github:helix-editor/helix/master"; - zen-browser.url = "github:MarceColl/zen-browser-flake"; hyprland.url = "github:hyprwm/Hyprland"; + utils.url = "github:gytis-ivaskevicius/flake-utils-plus"; }; - outputs = { nixpkgs, home-manager, ... }@inputs: { - nixosConfigurations.tarrel = nixpkgs.lib.nixosSystem { - specialArgs = { inherit inputs; }; - - modules = [ - ./configuration.nix - ./hardware-configuration.nix - ./gaming.nix - ./networking.nix - ./keyd.nix - ./services.nix - ./packages.nix - ./compositor.nix - ./nvidia.nix - ./virt.nix + outputs = { self, nixpkgs, utils, home-manager, helix, hyprland }@inputs: + utils.lib.mkFlake { + inherit self inputs; + channelsConfig.allowUnfree = true; + + hostDefaults.modules = [ + ./modules/compositor.nix + ./modules/keyd.nix + ./modules/services.nix + ./modules/packages.nix + ./modules/nix-settings.nix + ]; + + hosts.work.modules = [ + home-manager.nixosModules.home-manager + { + home-manager.useGlobalPkgs = true; + home-manager.useUserPackages = true; + home-manager.users.jras = import ./home-manager/entrypoints/work.nix; + + home-manager.extraSpecialArgs = { inherit inputs; }; + } + + ./hosts/work.nix + ./modules/gaming.nix + ]; + + hosts.tarrel.modules = [ home-manager.nixosModules.home-manager { home-manager.useGlobalPkgs = true; @@ -34,7 +47,11 @@ home-manager.extraSpecialArgs = { inherit inputs; }; } + + ./hosts/tarrel.nix + ./modules/gaming.nix + ./modules/virt.nix + ./modules/sunshine.nix ]; }; - }; } diff --git a/home-manager/common.nix b/home-manager/common.nix index 3fd0327..738b250 100644 --- a/home-manager/common.nix +++ b/home-manager/common.nix @@ -7,7 +7,6 @@ # '') home.packages = [ pkgs.gnumake - inputs.zen-browser.packages.${pkgs.system}.specific pkgs.git-crypt pkgs.maim pkgs.xkcdpass diff --git a/hardware-configuration.nix b/hosts/hardware-configuration/tarrel.nix index 4604fcd..4604fcd 100644 --- a/hardware-configuration.nix +++ b/hosts/hardware-configuration/tarrel.nix diff --git a/hosts/hardware-configuration/work.nix b/hosts/hardware-configuration/work.nix new file mode 100644 index 0000000..9c8c4b1 --- /dev/null +++ b/hosts/hardware-configuration/work.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 = [ "nvme" "xhci_pci" "thunderbolt" "usb_storage" "sd_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-amd" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/df469cf1-1acc-4bf4-86e1-ec368e5a96a1"; + fsType = "ext4"; + }; + + boot.initrd.luks.devices."luks-0f6e3603-084c-4438-9749-36b31b6f226a".device = "/dev/disk/by-uuid/0f6e3603-084c-4438-9749-36b31b6f226a"; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/F0E6-4DF3"; + 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.<interface>.useDHCP`. + networking.useDHCP = lib.mkDefault true; + # networking.interfaces.enp1s0f0.useDHCP = lib.mkDefault true; + # networking.interfaces.wlp2s0.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/configuration.nix b/hosts/tarrel.nix index df59de9..66279be 100644 --- a/configuration.nix +++ b/hosts/tarrel.nix @@ -5,17 +5,27 @@ { pkgs, ... }: { - nix.settings = { - substituters = ["https://hyprland.cachix.org"]; - trusted-public-keys = ["hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="]; - }; - - nix.settings.experimental-features = [ "nix-command" "flakes" ]; + imports = + [ # Include the results of the hardware scan. + ./hardware-configuration/tarrel.nix + ]; # Bootloader. boot.loader.systemd-boot.enable = true; boot.loader.efi.canTouchEfiVariables = true; + networking.hostName = "tarrel"; + + hardware.opengl.enable = true; + services.xserver.videoDrivers = ["nvidia"]; + hardware.nvidia = { + modesetting.enable = true; + nvidiaSettings = true; + nvidiaPersistenced = true; + + package = config.boot.kernelPackages.nvidiaPackages.stable; + }; + security.rtkit.enable = true; # Set your time zone. @@ -65,14 +75,19 @@ environment.pathsToLink = [ "/libexec" ]; + services.unifi = { + enable = true; + unifiPackage = pkgs.unifi8; + }; + + # from: https://help.ui.com/hc/en-us/articles/218506997-Required-Ports-Reference + # best put it in a var somewhere + networking.networkmanager.enable = true; + networking.firewall.allowedTCPPorts = [ 53 8080 8000 443 8443 8880 8843 6789 27117 ]; + networking.firewall.allowedUDPPorts = [ 53 3478 5514 10001 1900 123]; + networking.firewall.allowedUDPPortRanges = [ { from = 5656; to = 5699; } ]; - # 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: diff --git a/hosts/work.nix b/hosts/work.nix new file mode 100644 index 0000000..db55f87 --- /dev/null +++ b/hosts/work.nix @@ -0,0 +1,99 @@ +# 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, pkgs, ... }: + +{ + imports = + [ # Include the results of the hardware scan. + ./hardware-configuration/work.nix + ]; + + hardware.bluetooth.enable = true; + hardware.bluetooth.powerOnBoot = true; + + # Bootloader. + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + + networking.hostName = "work"; # Define your hostname. + # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. + + # Configure network proxy if necessary + # networking.proxy.default = "http://user:password@proxy:port/"; + # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain"; + + # Enable networking + networking.networkmanager.enable = true; + + # Set your time zone. + time.timeZone = "Europe/Amsterdam"; + + # Select internationalisation properties. + i18n.defaultLocale = "en_US.UTF-8"; + + i18n.extraLocaleSettings = { + LC_ADDRESS = "nl_NL.UTF-8"; + LC_IDENTIFICATION = "nl_NL.UTF-8"; + LC_MEASUREMENT = "nl_NL.UTF-8"; + LC_MONETARY = "nl_NL.UTF-8"; + LC_NAME = "nl_NL.UTF-8"; + LC_NUMERIC = "nl_NL.UTF-8"; + LC_PAPER = "nl_NL.UTF-8"; + LC_TELEPHONE = "nl_NL.UTF-8"; + LC_TIME = "nl_NL.UTF-8"; + }; + + # Configure keymap in X11 + services.xserver.xkb = { + layout = "us"; + variant = ""; + }; + + # Define a user account. Don't forget to set a password with ‘passwd’. + users.users.jras = { + isNormalUser = true; + description = "Jasper Ras"; + extraGroups = [ "networkmanager" "wheel" ]; + packages = with pkgs; [ git helix ]; + }; + + # Allow unfree packages + nixpkgs.config.allowUnfree = true; + + # 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 + ]; + + # 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; + + # Open ports in the firewall. + # networking.firewall.allowedTCPPorts = [ ... ]; + # networking.firewall.allowedUDPPorts = [ ... ]; + # Or disable the firewall altogether. + # networking.firewall.enable = false; + + # 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 = "24.05"; # Did you read the comment? + +} diff --git a/compositor.nix b/modules/compositor.nix index 8226842..8226842 100644 --- a/compositor.nix +++ b/modules/compositor.nix diff --git a/modules/gaming.nix b/modules/gaming.nix new file mode 100644 index 0000000..781e12e --- /dev/null +++ b/modules/gaming.nix @@ -0,0 +1,5 @@ +{ config, pkgs, ... }: + +{ + programs.steam.enable = true; +} diff --git a/keyd.nix b/modules/keyd.nix index 6b4e79d..6b4e79d 100644 --- a/keyd.nix +++ b/modules/keyd.nix diff --git a/modules/nix-settings.nix b/modules/nix-settings.nix new file mode 100644 index 0000000..8db69ad --- /dev/null +++ b/modules/nix-settings.nix @@ -0,0 +1,8 @@ +{ ... }: +{ + nix.settings = { + experimental-features = [ "nix-command" "flakes" ]; + substituters = ["https://hyprland.cachix.org"]; + trusted-public-keys = ["hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="]; + }; +} diff --git a/packages.nix b/modules/packages.nix index d557a94..d557a94 100644 --- a/packages.nix +++ b/modules/packages.nix diff --git a/services.nix b/modules/services.nix index ad4bfc5..ad4bfc5 100644 --- a/services.nix +++ b/modules/services.nix diff --git a/gaming.nix b/modules/sunshine.nix index 13d2ecb..86e68f4 100644 --- a/gaming.nix +++ b/modules/sunshine.nix @@ -1,8 +1,5 @@ -{ config, pkgs, ... }: - +{ ... }: { - programs.steam.enable = true; - services.sunshine = { enable = true; autoStart = true; diff --git a/virt.nix b/modules/virt.nix index e378c80..e378c80 100644 --- a/virt.nix +++ b/modules/virt.nix diff --git a/networking.nix b/networking.nix deleted file mode 100644 index 9013a3e..0000000 --- a/networking.nix +++ /dev/null @@ -1,28 +0,0 @@ -{ config, pkgs, ... }: -{ - # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. - # Configure network proxy if necessary - # networking.proxy.default = "http://user:password@proxy:port/"; - # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain"; - - - # Open ports in the firewall. - # networking.firewall.allowedTCPPorts = [ ... ]; - # networking.firewall.allowedUDPPorts = [ ... ]; - # Or disable the firewall altogether. - # networking.firewall.enable = false; - - networking.networkmanager.enable = true; - networking.hostName = "tarrel"; - - services.unifi = { - enable = true; - unifiPackage = pkgs.unifi8; - }; - - # from: https://help.ui.com/hc/en-us/articles/218506997-Required-Ports-Reference - # best put it in a var somewhere - networking.firewall.allowedTCPPorts = [ 53 8080 8000 443 8443 8880 8843 6789 27117 ]; - networking.firewall.allowedUDPPorts = [ 53 3478 5514 10001 1900 123]; - networking.firewall.allowedUDPPortRanges = [ { from = 5656; to = 5699; } ]; -} diff --git a/nvidia.nix b/nvidia.nix deleted file mode 100644 index dde5fc5..0000000 --- a/nvidia.nix +++ /dev/null @@ -1,12 +0,0 @@ -{ config, ... }: -{ - hardware.opengl.enable = true; - services.xserver.videoDrivers = ["nvidia"]; - hardware.nvidia = { - modesetting.enable = true; - nvidiaSettings = true; - nvidiaPersistenced = true; - - package = config.boot.kernelPackages.nvidiaPackages.stable; - }; -} |