From f1d8afcc156b14ce44dde407bd76661bdc821e03 Mon Sep 17 00:00:00 2001 From: Jasper Ras Date: Wed, 13 Nov 2024 22:33:37 +0100 Subject: Use flake-utils-plus and set-up multiple hosts --- compositor.nix | 41 ------------- configuration.nix | 90 --------------------------- flake.lock | 99 +++++++++++++++++------------- flake.nix | 53 ++++++++++------ gaming.nix | 26 -------- hardware-configuration.nix | 40 ------------ home-manager/common.nix | 1 - hosts/hardware-configuration/tarrel.nix | 40 ++++++++++++ hosts/hardware-configuration/work.nix | 41 +++++++++++++ hosts/tarrel.nix | 105 ++++++++++++++++++++++++++++++++ hosts/work.nix | 99 ++++++++++++++++++++++++++++++ keyd.nix | 12 ---- modules/compositor.nix | 41 +++++++++++++ modules/gaming.nix | 5 ++ modules/keyd.nix | 12 ++++ modules/nix-settings.nix | 8 +++ modules/packages.nix | 11 ++++ modules/services.nix | 9 +++ modules/sunshine.nix | 23 +++++++ modules/virt.nix | 7 +++ networking.nix | 28 --------- nvidia.nix | 12 ---- packages.nix | 11 ---- services.nix | 9 --- virt.nix | 7 --- 25 files changed, 494 insertions(+), 336 deletions(-) delete mode 100644 compositor.nix delete mode 100644 configuration.nix delete mode 100644 gaming.nix delete mode 100644 hardware-configuration.nix create mode 100644 hosts/hardware-configuration/tarrel.nix create mode 100644 hosts/hardware-configuration/work.nix create mode 100644 hosts/tarrel.nix create mode 100644 hosts/work.nix delete mode 100644 keyd.nix create mode 100644 modules/compositor.nix create mode 100644 modules/gaming.nix create mode 100644 modules/keyd.nix create mode 100644 modules/nix-settings.nix create mode 100644 modules/packages.nix create mode 100644 modules/services.nix create mode 100644 modules/sunshine.nix create mode 100644 modules/virt.nix delete mode 100644 networking.nix delete mode 100644 nvidia.nix delete mode 100644 packages.nix delete mode 100644 services.nix delete mode 100644 virt.nix diff --git a/compositor.nix b/compositor.nix deleted file mode 100644 index 8226842..0000000 --- a/compositor.nix +++ /dev/null @@ -1,41 +0,0 @@ -# https://wiki.nixos.org/wiki/Sway -{ inputs, pkgs, ... }: -{ - programs.hyprland = { - enable = true; - xwayland.enable = true; - package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland; - portalPackage = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland; - }; - - environment.systemPackages = with pkgs; [ - kitty # Required by Hyprland - waybar - rofi-wayland-unwrapped - rofi-rbw-wayland - ]; - - services.gnome.gnome-keyring.enable = true; - - services.greetd = { - enable = true; - settings = { - default_session = { - command = "${pkgs.hyprland}/bin/hyprland"; - user = "jras"; - }; - }; - }; - - systemd.user.services.kanshi = { - description = "kanshi daemon"; - environment = { - WAYLAND_DISPLAY="wayland-1"; - DISPLAY=":0"; - }; - serviceConfig = { - Type = "simple"; - ExecStart = ''${pkgs.kanshi}/bin/kanshi -c kanshi_config_file''; - }; - }; -} diff --git a/configuration.nix b/configuration.nix deleted file mode 100644 index df59de9..0000000 --- a/configuration.nix +++ /dev/null @@ -1,90 +0,0 @@ -# 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’). - -{ 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" ]; - - # Bootloader. - boot.loader.systemd-boot.enable = true; - boot.loader.efi.canTouchEfiVariables = true; - - security.rtkit.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 console keymap - console.keyMap = "us-acentos"; - - programs.zsh.enable = true; - programs.gnupg = { - agent.enable = true; - }; - - # Define a user account. Don't forget to set a password with ‘passwd’. - users.users.jras = { - isNormalUser = true; - description = "Jasper"; - extraGroups = [ "networkmanager" "wheel" "audio" ]; - shell = pkgs.zsh; - }; - - security.sudo.execWheelOnly = true; - security.sudo.wheelNeedsPassword = false; - - # Allow unfree packages - nixpkgs.config.allowUnfree = true; - - environment.sessionVariables = { - TERMINAL = "alacritty"; - EDITOR = "helix"; - }; - - environment.pathsToLink = [ "/libexec" ]; - - - # 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; - - # 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/flake.lock b/flake.lock index 11325cf..b1a11bb 100644 --- a/flake.lock +++ b/flake.lock @@ -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", diff --git a/flake.nix b/flake.nix index f1542ff..9ff6906 100644 --- a/flake.nix +++ b/flake.nix @@ -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/gaming.nix b/gaming.nix deleted file mode 100644 index 13d2ecb..0000000 --- a/gaming.nix +++ /dev/null @@ -1,26 +0,0 @@ -{ config, pkgs, ... }: - -{ - programs.steam.enable = true; - - services.sunshine = { - enable = true; - autoStart = true; - capSysAdmin = true; - openFirewall = true; - # applications = { - # apps = [ - # { - # name = "Auto Desktop"; - # prep-cmd = [ - # { - # # do = "${pkgs.sway}/bin/swaymsg \"output DP-2 mode --custom \${SUNSHINE_CLIENT_WIDTH}x\${SUNSHINE_CLIENT_HEIGHT}@\${SUNSHINE_CLIENT_FPS}Hz\""; - # do = "${pkgs.zsh}/bin/zsh -c \"${pkgs.sway}/bin/swaymsg \"output DP-2 mode --custom 1920x1080@60Hz\"\""; - # undo = "${pkgs.sway}/bin/swaymsg \"output DP-2 mode 3440x1440\""; - # } - # ]; - # } - # ]; - # }; - }; -} diff --git a/hardware-configuration.nix b/hardware-configuration.nix deleted file mode 100644 index 4604fcd..0000000 --- a/hardware-configuration.nix +++ /dev/null @@ -1,40 +0,0 @@ -# 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" "uas" "sd_mod" ]; - boot.initrd.kernelModules = [ ]; - boot.kernelModules = [ "kvm-intel" ]; - boot.extraModulePackages = [ ]; - - fileSystems."/" = - { device = "/dev/disk/by-uuid/b73c41ec-fe01-4fa5-b50a-fd871e8c2710"; - fsType = "ext4"; - }; - - fileSystems."/boot" = - { device = "/dev/disk/by-uuid/BBB8-1AF8"; - fsType = "vfat"; - options = [ "fmask=0022" "dmask=0022" ]; - }; - - 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.enp4s0.useDHCP = lib.mkDefault true; - # networking.interfaces.wlp0s20f0u9.useDHCP = lib.mkDefault true; - # networking.interfaces.wlp3s0.useDHCP = lib.mkDefault true; - - nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; - hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; -} 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/hosts/hardware-configuration/tarrel.nix b/hosts/hardware-configuration/tarrel.nix new file mode 100644 index 0000000..4604fcd --- /dev/null +++ b/hosts/hardware-configuration/tarrel.nix @@ -0,0 +1,40 @@ +# 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" "uas" "sd_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/b73c41ec-fe01-4fa5-b50a-fd871e8c2710"; + fsType = "ext4"; + }; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/BBB8-1AF8"; + fsType = "vfat"; + options = [ "fmask=0022" "dmask=0022" ]; + }; + + 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.enp4s0.useDHCP = lib.mkDefault true; + # networking.interfaces.wlp0s20f0u9.useDHCP = lib.mkDefault true; + # networking.interfaces.wlp3s0.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} 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..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/hosts/tarrel.nix b/hosts/tarrel.nix new file mode 100644 index 0000000..66279be --- /dev/null +++ b/hosts/tarrel.nix @@ -0,0 +1,105 @@ +# 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’). + +{ pkgs, ... }: + +{ + 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. + 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 console keymap + console.keyMap = "us-acentos"; + + programs.zsh.enable = true; + programs.gnupg = { + agent.enable = true; + }; + + # Define a user account. Don't forget to set a password with ‘passwd’. + users.users.jras = { + isNormalUser = true; + description = "Jasper"; + extraGroups = [ "networkmanager" "wheel" "audio" ]; + shell = pkgs.zsh; + }; + + security.sudo.execWheelOnly = true; + security.sudo.wheelNeedsPassword = false; + + # Allow unfree packages + nixpkgs.config.allowUnfree = true; + + environment.sessionVariables = { + TERMINAL = "alacritty"; + EDITOR = "helix"; + }; + + 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; } ]; + + # programs.mtr.enable = true; + + # List services that you want to enable: + + # Enable the OpenSSH daemon. + # services.openssh.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 = "24.05"; # Did you read the comment? + +} 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/keyd.nix b/keyd.nix deleted file mode 100644 index 6b4e79d..0000000 --- a/keyd.nix +++ /dev/null @@ -1,12 +0,0 @@ -{ ... }: -{ - services.keyd = { - enable = true; - keyboards = { - default = { - ids = [ "*" ]; - settings.main.capslock = "overload(meta, esc)"; - }; - }; - }; -} diff --git a/modules/compositor.nix b/modules/compositor.nix new file mode 100644 index 0000000..8226842 --- /dev/null +++ b/modules/compositor.nix @@ -0,0 +1,41 @@ +# https://wiki.nixos.org/wiki/Sway +{ inputs, pkgs, ... }: +{ + programs.hyprland = { + enable = true; + xwayland.enable = true; + package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland; + portalPackage = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland; + }; + + environment.systemPackages = with pkgs; [ + kitty # Required by Hyprland + waybar + rofi-wayland-unwrapped + rofi-rbw-wayland + ]; + + services.gnome.gnome-keyring.enable = true; + + services.greetd = { + enable = true; + settings = { + default_session = { + command = "${pkgs.hyprland}/bin/hyprland"; + user = "jras"; + }; + }; + }; + + systemd.user.services.kanshi = { + description = "kanshi daemon"; + environment = { + WAYLAND_DISPLAY="wayland-1"; + DISPLAY=":0"; + }; + serviceConfig = { + Type = "simple"; + ExecStart = ''${pkgs.kanshi}/bin/kanshi -c kanshi_config_file''; + }; + }; +} 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/modules/keyd.nix b/modules/keyd.nix new file mode 100644 index 0000000..6b4e79d --- /dev/null +++ b/modules/keyd.nix @@ -0,0 +1,12 @@ +{ ... }: +{ + services.keyd = { + enable = true; + keyboards = { + default = { + ids = [ "*" ]; + settings.main.capslock = "overload(meta, esc)"; + }; + }; + }; +} 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/modules/packages.nix b/modules/packages.nix new file mode 100644 index 0000000..d557a94 --- /dev/null +++ b/modules/packages.nix @@ -0,0 +1,11 @@ +{ pkgs, ... }: +{ + # List packages installed in system profile. To search, run: + # $ nix search wget + environment.systemPackages = with pkgs; [ + helix + alacritty + firefox + git + ]; +} diff --git a/modules/services.nix b/modules/services.nix new file mode 100644 index 0000000..ad4bfc5 --- /dev/null +++ b/modules/services.nix @@ -0,0 +1,9 @@ +{ ... }: +{ + services.pipewire = { + enable = true; + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + }; +} diff --git a/modules/sunshine.nix b/modules/sunshine.nix new file mode 100644 index 0000000..86e68f4 --- /dev/null +++ b/modules/sunshine.nix @@ -0,0 +1,23 @@ +{ ... }: +{ + services.sunshine = { + enable = true; + autoStart = true; + capSysAdmin = true; + openFirewall = true; + # applications = { + # apps = [ + # { + # name = "Auto Desktop"; + # prep-cmd = [ + # { + # # do = "${pkgs.sway}/bin/swaymsg \"output DP-2 mode --custom \${SUNSHINE_CLIENT_WIDTH}x\${SUNSHINE_CLIENT_HEIGHT}@\${SUNSHINE_CLIENT_FPS}Hz\""; + # do = "${pkgs.zsh}/bin/zsh -c \"${pkgs.sway}/bin/swaymsg \"output DP-2 mode --custom 1920x1080@60Hz\"\""; + # undo = "${pkgs.sway}/bin/swaymsg \"output DP-2 mode 3440x1440\""; + # } + # ]; + # } + # ]; + # }; + }; +} diff --git a/modules/virt.nix b/modules/virt.nix new file mode 100644 index 0000000..e378c80 --- /dev/null +++ b/modules/virt.nix @@ -0,0 +1,7 @@ +{ ... }: +{ + virtualisation.docker = { + enable = true; + enableOnBoot = true; + }; +} 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; - }; -} diff --git a/packages.nix b/packages.nix deleted file mode 100644 index d557a94..0000000 --- a/packages.nix +++ /dev/null @@ -1,11 +0,0 @@ -{ pkgs, ... }: -{ - # List packages installed in system profile. To search, run: - # $ nix search wget - environment.systemPackages = with pkgs; [ - helix - alacritty - firefox - git - ]; -} diff --git a/services.nix b/services.nix deleted file mode 100644 index ad4bfc5..0000000 --- a/services.nix +++ /dev/null @@ -1,9 +0,0 @@ -{ ... }: -{ - services.pipewire = { - enable = true; - alsa.enable = true; - alsa.support32Bit = true; - pulse.enable = true; - }; -} diff --git a/virt.nix b/virt.nix deleted file mode 100644 index e378c80..0000000 --- a/virt.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ ... }: -{ - virtualisation.docker = { - enable = true; - enableOnBoot = true; - }; -} -- cgit v1.2.3