From 48f8ac7b1958ec4fe1205a0d7c9e236cb486dfd9 Mon Sep 17 00:00:00 2001 From: Dragyx <66752602+Dragyx@users.noreply.github.com> Date: Fri, 12 Apr 2024 22:03:29 +0200 Subject: [PATCH 1/7] rename myOptions to modules --- flake.lock | 390 +++++++++++++++++- hosts/default.nix | 11 + hosts/dragyx/common/packages.nix | 65 +++ hosts/dragyx/flocke/configuration.nix | 163 ++++++++ hosts/dragyx/flocke/default.nix | 8 + .../dragyx/flocke/hardware-configuration.nix | 35 ++ hosts/dragyx/flocke/packages.nix | 56 +++ hosts/lars/default.nix | 2 +- hosts/lars/dyonisos/configuration.nix | 2 +- hosts/lars/dyonisos/programs.nix | 2 +- hosts/lars/hyprland.nix | 8 +- hosts/lars/kronos/configuration.nix | 2 +- hosts/lars/kronos/programs.nix | 2 +- hosts/lars/programs.nix | 2 +- hosts/vali/mars/awesome.nix | 4 +- hosts/vali/mars/configuration.nix | 2 +- hosts/vali/mars/hypr/land.nix | 8 +- hosts/vali/mars/hypr/lock.nix | 6 +- hosts/vali/mars/i3.nix | 4 +- hosts/vali/mars/programs.nix | 2 +- modules/cli/git.nix | 6 +- modules/cli/starship.nix | 8 +- modules/cli/zsh.nix | 10 +- modules/gui/WM/default.nix | 5 + modules/gui/WM/hyprland.nix | 185 +++++++++ modules/gui/cursor.nix | 6 +- modules/gui/default.nix | 1 + modules/gui/foot.nix | 6 +- modules/gui/gtk.nix | 6 +- modules/gui/mpv.nix | 6 +- modules/gui/obs.nix | 6 +- modules/gui/qt.nix | 6 +- modules/gui/schizofox.nix | 6 +- modules/gui/vesktop.nix | 6 +- modules/gui/vivado2.nix | 6 +- modules/gui/zathura.nix | 6 +- modules/other/displaymanager.nix | 4 +- modules/other/home-manager.nix | 6 +- modules/other/system.nix | 4 +- modules/other/xdg.nix | 4 +- modules/services/pipewire.nix | 4 +- modules/tui/btop.nix | 6 +- modules/tui/neovim.nix | 6 +- options/common/networking.nix | 2 +- options/desktop/monitors.nix | 69 ++++ 45 files changed, 1065 insertions(+), 89 deletions(-) create mode 100644 hosts/dragyx/common/packages.nix create mode 100644 hosts/dragyx/flocke/configuration.nix create mode 100644 hosts/dragyx/flocke/default.nix create mode 100644 hosts/dragyx/flocke/hardware-configuration.nix create mode 100644 hosts/dragyx/flocke/packages.nix create mode 100644 modules/gui/WM/default.nix create mode 100644 modules/gui/WM/hyprland.nix create mode 100644 options/desktop/monitors.nix diff --git a/flake.lock b/flake.lock index bd91b52..1c1e138 100644 --- a/flake.lock +++ b/flake.lock @@ -21,6 +21,27 @@ "type": "github" } }, + "anyrun": { + "inputs": { + "flake-parts": "flake-parts", + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1712136515, + "narHash": "sha256-LpjQJYC24S5P5XhJsZX6HqsQT1pohcFzM6N42I6qo/U=", + "owner": "Kirottu", + "repo": "anyrun", + "rev": "be6728884d543665e7bd137bbef62dc1d04a210b", + "type": "github" + }, + "original": { + "owner": "Kirottu", + "repo": "anyrun", + "type": "github" + } + }, "crane": { "inputs": { "nixpkgs": [ @@ -87,6 +108,21 @@ } }, "flake-compat": { + "locked": { + "lastModified": 1688025799, + "narHash": "sha256-ktpB4dRtnksm9F5WawoIkEneh1nrEvuxb5lJFt1iOyw=", + "owner": "nix-community", + "repo": "flake-compat", + "rev": "8bf105319d44f6b9f0d764efa4fdef9f1cc9ba1c", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_2": { "flake": false, "locked": { "lastModified": 1696426674, @@ -103,6 +139,49 @@ } }, "flake-parts": { + "inputs": { + "nixpkgs-lib": [ + "anyrun", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1696343447, + "narHash": "sha256-B2xAZKLkkeRFG5XcHHSXXcP7To9Xzr59KXeZiRf4vdQ=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "c9afaba3dfa4085dbd2ccb38dfade5141e33d9d4", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_2": { + "inputs": { + "nixpkgs-lib": [ + "nixpkgs-wayland", + "nix-eval-jobs", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1701473968, + "narHash": "sha256-YcVE5emp1qQ8ieHUnxt1wCZCC3ZfAS+SRRWZ2TMda7E=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "34fed993f1674c8d06d58b37ce1e0fe5eebcb9f5", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts_3": { "inputs": { "nixpkgs-lib": [ "schizofox", @@ -123,9 +202,9 @@ "type": "github" } }, - "flake-parts_2": { + "flake-parts_4": { "inputs": { - "nixpkgs-lib": "nixpkgs-lib" + "nixpkgs-lib": "nixpkgs-lib_2" }, "locked": { "lastModified": 1698882062, @@ -141,6 +220,24 @@ "type": "github" } }, + "flake-utils": { + "inputs": { + "systems": "systems_5" + }, + "locked": { + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, "hercules-ci-effects": { "inputs": { "flake-parts": [ @@ -335,6 +432,127 @@ "type": "github" } }, + "hyprlang_2": { + "inputs": { + "nixpkgs": [ + "hyprlock", + "nixpkgs" + ], + "systems": "systems_3" + }, + "locked": { + "lastModified": 1711250455, + "narHash": "sha256-LSq1ZsTpeD7xsqvlsepDEelWRDtAhqwetp6PusHXJRo=", + "owner": "hyprwm", + "repo": "hyprlang", + "rev": "b3e430f81f3364c5dd1a3cc9995706a4799eb3fa", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprlang", + "type": "github" + } + }, + "hyprlock": { + "inputs": { + "hyprlang": "hyprlang_2", + "nixpkgs": [ + "nixpkgs" + ], + "systems": "systems_4" + }, + "locked": { + "lastModified": 1712861866, + "narHash": "sha256-7ISUD6Z8FivTw/Db8tGJdiJeqpvJs7CSCwadopb1oro=", + "owner": "hyprwm", + "repo": "hyprlock", + "rev": "6fa65e1172d633e61ed957a49e7cf96010432623", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprlock", + "type": "github" + } + }, + "lib-aggregate": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs-lib": "nixpkgs-lib" + }, + "locked": { + "lastModified": 1712491724, + "narHash": "sha256-E5EcBzf/zaR3hD8g1CDtqqwXXebSWtqOvoaR+LDjTME=", + "owner": "nix-community", + "repo": "lib-aggregate", + "rev": "2737d0204685c3274390229a09eb8f7eaa1a9e89", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "lib-aggregate", + "type": "github" + } + }, + "nix-eval-jobs": { + "inputs": { + "flake-parts": "flake-parts_2", + "nix-github-actions": "nix-github-actions", + "nixpkgs": "nixpkgs_3", + "treefmt-nix": "treefmt-nix" + }, + "locked": { + "lastModified": 1705242886, + "narHash": "sha256-TLj334vRwFtSym3m+NnKcNCnKKPNoTC/TDZL40vmOso=", + "owner": "nix-community", + "repo": "nix-eval-jobs", + "rev": "6b03a93296faf174b97546fd573c8b379f523a8d", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nix-eval-jobs", + "type": "github" + } + }, + "nix-filter": { + "locked": { + "lastModified": 1693833173, + "narHash": "sha256-hlMABKrGbEiJD5dwUSfnw1CQ3bG7KKwDV+Nx3bEZd7U=", + "owner": "numtide", + "repo": "nix-filter", + "rev": "ac030bd9ba98e318e1f4c4328d60766ade8ebe8b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "nix-filter", + "type": "github" + } + }, + "nix-github-actions": { + "inputs": { + "nixpkgs": [ + "nixpkgs-wayland", + "nix-eval-jobs", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1701208414, + "narHash": "sha256-xrQ0FyhwTZK6BwKhahIkUVZhMNk21IEI1nUcWSONtpo=", + "owner": "nix-community", + "repo": "nix-github-actions", + "rev": "93e39cc1a087d65bcf7a132e75a650c44dd2b734", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nix-github-actions", + "type": "github" + } + }, "nixpak": { "inputs": { "flake-parts": [ @@ -378,6 +596,21 @@ } }, "nixpkgs-lib": { + "locked": { + "lastModified": 1712450863, + "narHash": "sha256-K6IkdtMtq9xktmYPj0uaYc8NsIqHuaAoRBaMgu9Fvrw=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "3c62b6a12571c9a7f65ab037173ee153d539905f", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, + "nixpkgs-lib_2": { "locked": { "dir": "lib", "lastModified": 1698611440, @@ -395,6 +628,27 @@ "type": "github" } }, + "nixpkgs-wayland": { + "inputs": { + "flake-compat": "flake-compat", + "lib-aggregate": "lib-aggregate", + "nix-eval-jobs": "nix-eval-jobs", + "nixpkgs": "nixpkgs_4" + }, + "locked": { + "lastModified": 1712942143, + "narHash": "sha256-pTpvq5EXPD9noOBkmTEa7mkwMpeda8+8u3anmjxhRAI=", + "owner": "nix-community", + "repo": "nixpkgs-wayland", + "rev": "8ed6e0db00db83e5a598afa6cdf32c9b41f083bd", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs-wayland", + "type": "github" + } + }, "nixpkgs_2": { "locked": { "lastModified": 1712791164, @@ -411,6 +665,38 @@ "type": "github" } }, + "nixpkgs_3": { + "locked": { + "lastModified": 1703134684, + "narHash": "sha256-SQmng1EnBFLzS7WSRyPM9HgmZP2kLJcPAz+Ug/nug6o=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "d6863cbcbbb80e71cecfc03356db1cda38919523", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_4": { + "locked": { + "lastModified": 1712791164, + "narHash": "sha256-3sbWO1mbpWsLepZGbWaMovSO7ndZeFqDSdX0hZ9nVyw=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "1042fd8b148a9105f3c0aca3a6177fd1d9360ba5", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, "nur": { "locked": { "lastModified": 1712918680, @@ -429,12 +715,16 @@ "root": { "inputs": { "agenix": "agenix", + "anyrun": "anyrun", "fenix": "fenix", "home-manager": "home-manager_2", "hyprland": "hyprland", + "hyprlock": "hyprlock", "nixpkgs": "nixpkgs_2", + "nixpkgs-wayland": "nixpkgs-wayland", "nur": "nur", - "schizofox": "schizofox" + "schizofox": "schizofox", + "split-monitor-workspaces": "split-monitor-workspaces" } }, "rust-analyzer-src": { @@ -456,8 +746,8 @@ }, "schizofox": { "inputs": { - "flake-compat": "flake-compat", - "flake-parts": "flake-parts", + "flake-compat": "flake-compat_2", + "flake-parts": "flake-parts_3", "home-manager": "home-manager_3", "nixpak": "nixpak", "nixpkgs": [ @@ -482,7 +772,7 @@ "searx-randomizer": { "inputs": { "crane": "crane", - "flake-parts": "flake-parts_2", + "flake-parts": "flake-parts_4", "nixpkgs": [ "schizofox", "nixpkgs" @@ -502,6 +792,27 @@ "type": "github" } }, + "split-monitor-workspaces": { + "inputs": { + "hyprland": [ + "hyprland" + ], + "nix-filter": "nix-filter" + }, + "locked": { + "lastModified": 1712527107, + "narHash": "sha256-stmJqifOWf8oXxKwHvCo3RaVapXSk1n/+Sf9nKNENEA=", + "owner": "Duckonaut", + "repo": "split-monitor-workspaces", + "rev": "c5696000777f6586aaa255bd0a9b0627d5da911f", + "type": "github" + }, + "original": { + "owner": "Duckonaut", + "repo": "split-monitor-workspaces", + "type": "github" + } + }, "systems": { "locked": { "lastModified": 1681028828, @@ -532,6 +843,73 @@ "type": "github" } }, + "systems_3": { + "locked": { + "lastModified": 1689347949, + "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", + "owner": "nix-systems", + "repo": "default-linux", + "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default-linux", + "type": "github" + } + }, + "systems_4": { + "locked": { + "lastModified": 1689347949, + "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", + "owner": "nix-systems", + "repo": "default-linux", + "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default-linux", + "type": "github" + } + }, + "systems_5": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, + "treefmt-nix": { + "inputs": { + "nixpkgs": [ + "nixpkgs-wayland", + "nix-eval-jobs", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1702979157, + "narHash": "sha256-RnFBbLbpqtn4AoJGXKevQMCGhra4h6G2MPcuTSZZQ+g=", + "owner": "numtide", + "repo": "treefmt-nix", + "rev": "2961375283668d867e64129c22af532de8e77734", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "treefmt-nix", + "type": "github" + } + }, "wlroots": { "flake": false, "locked": { diff --git a/hosts/default.nix b/hosts/default.nix index 79af885..bc46ddb 100644 --- a/hosts/default.nix +++ b/hosts/default.nix @@ -37,4 +37,15 @@ in { inputs.agenix.nixosModules.default ]; }; + + flocke = lib.nixosSystem { + system = "x86_64-linux"; + specialArgs = { inherit lib inputs self; }; + modules = [ + ./dragyx/flocke + ../modules + inputs.home-manager.nixosModules.home-manager + inputs.agenix.nixosModules.default + ]; + }; } diff --git a/hosts/dragyx/common/packages.nix b/hosts/dragyx/common/packages.nix new file mode 100644 index 0000000..6289173 --- /dev/null +++ b/hosts/dragyx/common/packages.nix @@ -0,0 +1,65 @@ +# which default packages to use for the system +{ inputs, outputs, profile-config, pkgs, ...}: + +let + python-packages = ps: with ps; [ + pandas + numpy + opencv4 + ipython + ]; +in +{ + # List packages installed in system profile. To search, run: + # $ nix search wget + environment.systemPackages = with pkgs; [ + (python3.withPackages python-packages) + vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default. + neovim + eza # exa is unmaintained + hwinfo + zsh + git + broot + unzip + rsync + # neofetch + # fastfetch has the option to set a timeout for + # for each module, which makes it dramatically faster + # as counting the number of packages takes over 800 (!!!) ms, + # which makes it very unpleasant to use as default thing + # to display when starting a terminal + fastfetch + alacritty + wget + gnumake + zoxide + python3 + nodejs + gcc + cargo + rustc + rust-analyzer + clippy + lsof + htop + okular + smartmontools + networkmanager + pkg-config + sof-firmware # audio + nix-index + # --------- optional + gnome.eog + sherlock + xfce.thunar + + plocate + alsa-utils + + # partition management + parted + gnufdisk + lapce + ]; +} diff --git a/hosts/dragyx/flocke/configuration.nix b/hosts/dragyx/flocke/configuration.nix new file mode 100644 index 0000000..8e4f41d --- /dev/null +++ b/hosts/dragyx/flocke/configuration.nix @@ -0,0 +1,163 @@ +{ config, pkgs, ... }: + +{ + imports = [ + ../../../options/common/pin-registry.nix + ../../../options/common/preserve-system.nix + ../../../options/desktop/fonts.nix + ]; + + + nixpkgs.config.allowUnfree = true; + time.timeZone = "Europe/Zurich"; + security.sudo.package = pkgs.sudo.override { withInsults = true; }; + + services.xserver = { + enable = true; + displayManager = { + sessionPackages = [ pkgs.hyprland ]; # pkgs.gnome.gnome-session.sessions ]; + defaultSession = "hyprland"; + sddm = { + enable = true; + }; + }; + windowManager.hypr.enable = true; + }; + + hardware.bluetooth.enable = true; + hardware.bluetooth.powerOnBoot = true; + + hardware.opengl.driSupport = true; + hardware.opengl.driSupport32Bit = true; + hardware.opengl.enable = true; + + services.logrotate.checkConfig = false; + + networking.hostName = "flocke"; # Define your hostname. + networking.hostId = "adf23c31"; + networking.interfaces.wlp1s0.useDHCP = true; + networking.networkmanager.enable = true; + environment.systemPackages = with pkgs; [ networkmanager ]; # cli tool for managing connections + + boot = { + kernelParams = [ ]; + initrd.supportedFilesystems = [ "ext4" ]; + supportedFilesystems = [ "ext4" ]; + loader = { + efi.efiSysMountPoint = "/boot"; + efi.canTouchEfiVariables = true; + grub = { + enable = true; + device = "nodev"; + efiSupport = true; + enableCryptodisk = true; + }; + }; + initrd.luks.devices = { + cryptroot = { + device = "/dev/disk/by-uuid/ec5ff3a1-9b39-4ba5-aa0f-19e898b4f6e8"; + preLVM = true; + }; + }; + }; + + # see https://nixos.wiki/wiki/AMD_GPU + services.xserver.videoDrivers = [ "amdgpu" ]; + systemd.tmpfiles.rules = [ + "L+ /opt/rocm/hip - - - - ${pkgs.rocmPackages.clr}" + ]; + hardware.opengl.extraPackages = with pkgs; [ + rocmPackages.clr.icd + ]; + + services.power-profiles-daemon.enable = false; + + # stock nixos power management + powerManagement.enable = true; + + services.tlp = { + enable = true; + settings = { + CPU_SCALING_GOVERNOR_ON_AC = "performance"; + CPU_SCALING_GOVERNOR_ON_BAT = "powersave"; + + CPU_ENERGY_PERF_POLICY_ON_BAT = "power"; + CPU_ENERGY_PERF_POLICY_ON_AC = "performance"; + + CPU_MIN_PERF_ON_AC = 0; + CPU_MAX_PERF_ON_AC = 100; + CPU_MIN_PERF_ON_BAT = 0; + CPU_MAX_PERF_ON_BAT = 20; + + #Optional helps save long term battery health + START_CHARGE_THRESH_BAT0 = 40; # 40 and bellow it starts to charge + STOP_CHARGE_THRESH_BAT0 = 85; # 80 and above it stops charging + + }; +}; + + swapDevices = [ { + device = "/var/lib/swapfile"; + size = 32*1024; + } ]; + + + # be nice to your ssds + services.fstrim.enable = true; + # services.xserver.enable = pkgs.lib.mkForce false; + + security.polkit.enable = true; + + modules = { + other = { + system = { + hostname = "flocke"; + username = "dragyx"; + monitors = { + name = "LaptopMain"; + resolution = { + x = 2256; + y = 1504; + }; + scale = 1.0; + refresh_rate = 60; + }; + }; + home-manager = { + enable = true; + enableDirenv = true; + }; + }; + programs = { + vesktop.enable = true; + btop.enable = true; + mpv.enable = true; + schizofox.enable = true; + obs.enable = true; + neovim.enable = true; + git = { + enable = true; + userName = "Dragyx"; + userEmail = "66752602+Dragyx@users.noreply.github.com"; + defaultBranch = "main"; + }; + starship.enable = true; + zsh = { + enable = true; + profiling = false; + }; + # badneovim.enable = true; + }; + services = { + pipewire.enable = true; + }; + WM.hyprland.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 = "21.11"; # Did you read the comment? +} diff --git a/hosts/dragyx/flocke/default.nix b/hosts/dragyx/flocke/default.nix new file mode 100644 index 0000000..8401175 --- /dev/null +++ b/hosts/dragyx/flocke/default.nix @@ -0,0 +1,8 @@ +_: { + imports = [ + ../../../options/desktop/monitors.nix + ./configuration.nix + ./hardware-configuration.nix + # ./packages.nix + ]; +} diff --git a/hosts/dragyx/flocke/hardware-configuration.nix b/hosts/dragyx/flocke/hardware-configuration.nix new file mode 100644 index 0000000..f4e236c --- /dev/null +++ b/hosts/dragyx/flocke/hardware-configuration.nix @@ -0,0 +1,35 @@ +{ 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 = [ "amdgpu" ]; + boot.kernelModules = [ "kvm-amd" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/2aaba0f2-e8dc-4583-a81e-2d35cc238e79"; + fsType = "ext4"; + }; + + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/9D34-36F8"; + fsType = "vfat"; + }; + + 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.wlp1s0.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/hosts/dragyx/flocke/packages.nix b/hosts/dragyx/flocke/packages.nix new file mode 100644 index 0000000..a4a4afe --- /dev/null +++ b/hosts/dragyx/flocke/packages.nix @@ -0,0 +1,56 @@ +# which default packages to use for the system +{ inputs, outputs, profile-config, pkgs, ...}: + +let + python-packages = ps: with ps; [ + pandas + numpy + opencv4 + ipython + ]; +in +{ + + imports = [ + ../common/packages.nix + ]; + # List packages installed in system profile. To search, run: + # $ nix search wget + environment.systemPackages = with pkgs; [ + + # security audits + lynis + element-desktop + jetbrains.idea-community + baobab + amdvlk + texlive.combined.scheme-full + android-tools + signal-desktop + nextcloud-client + etcher + vlc + audacity + thunderbird + eclipses.eclipse-java + openjdk + firefox + # pkgs.nordvpn # nur.repos.LuisChDev.nordvpn + material-icons + material-design-icons + libreoffice + gimp + spotify + okular + # minecraft + prismlauncher-unwrapped + glfw-wayland-minecraft + glxinfo + # window manager + flameshot + feh + # Animeeeeee! + ani-cli # The stable version is very outdated + ]; + +} diff --git a/hosts/lars/default.nix b/hosts/lars/default.nix index 4d9dc8f..da685ac 100644 --- a/hosts/lars/default.nix +++ b/hosts/lars/default.nix @@ -5,7 +5,7 @@ security.sudo.package = pkgs.sudo.override { withInsults = true; }; security.polkit.enable = true; programs.kdeconnect.enable = true; - myOptions = { + modules = { other = { system = { gitPath = "/home/lars/nichts"; diff --git a/hosts/lars/dyonisos/configuration.nix b/hosts/lars/dyonisos/configuration.nix index 1bc5392..95cb45a 100644 --- a/hosts/lars/dyonisos/configuration.nix +++ b/hosts/lars/dyonisos/configuration.nix @@ -1,6 +1,6 @@ { config, inputs, pkgs, ... }: { - myOptions = { + modules = { other = { system = { hostname = "dyonisos"; diff --git a/hosts/lars/dyonisos/programs.nix b/hosts/lars/dyonisos/programs.nix index 89e5314..631e805 100644 --- a/hosts/lars/dyonisos/programs.nix +++ b/hosts/lars/dyonisos/programs.nix @@ -1,6 +1,6 @@ { config, inputs, pkgs, ... }: let - username = config.myOptions.other.system.username; + username = config.modules.other.system.username; in { home-manager.users.${username} = { home.packages = let diff --git a/hosts/lars/hyprland.nix b/hosts/lars/hyprland.nix index 1404c6d..0c1f219 100644 --- a/hosts/lars/hyprland.nix +++ b/hosts/lars/hyprland.nix @@ -1,10 +1,10 @@ { config, lib, inputs, pkgs, ... }: with lib; let - username = config.myOptions.other.system.username; - cfg = config.myOptions.hyprland; + username = config.modules.other.system.username; + cfg = config.modules.hyprland; in { - options.myOptions.hyprland.nvidia.enable = mkEnableOption "nvidia"; - options.myOptions.hyprland = { + options.modules.hyprland.nvidia.enable = mkEnableOption "nvidia"; + options.modules.hyprland = { enable = mkEnableOption "hyprland"; monitor = mkOption { description = "hyprland monitor config"; diff --git a/hosts/lars/kronos/configuration.nix b/hosts/lars/kronos/configuration.nix index 3cc0d21..0189d05 100644 --- a/hosts/lars/kronos/configuration.nix +++ b/hosts/lars/kronos/configuration.nix @@ -1,6 +1,6 @@ { config, inputs, pkgs, ... }: { - myOptions = { + modules = { other = { system = { hostname = "kronos"; diff --git a/hosts/lars/kronos/programs.nix b/hosts/lars/kronos/programs.nix index 89e5314..631e805 100644 --- a/hosts/lars/kronos/programs.nix +++ b/hosts/lars/kronos/programs.nix @@ -1,6 +1,6 @@ { config, inputs, pkgs, ... }: let - username = config.myOptions.other.system.username; + username = config.modules.other.system.username; in { home-manager.users.${username} = { home.packages = let diff --git a/hosts/lars/programs.nix b/hosts/lars/programs.nix index 46cac30..52a1141 100644 --- a/hosts/lars/programs.nix +++ b/hosts/lars/programs.nix @@ -1,6 +1,6 @@ { config, inputs, pkgs, ... }: let - username = config.myOptions.other.system.username; + username = config.modules.other.system.username; in { home-manager.users.${username} = { home.packages = let diff --git a/hosts/vali/mars/awesome.nix b/hosts/vali/mars/awesome.nix index fdf180c..ad418a0 100644 --- a/hosts/vali/mars/awesome.nix +++ b/hosts/vali/mars/awesome.nix @@ -1,8 +1,8 @@ { pkgs, lib, config, ... }: with lib; let - cfg = config.myOptions.programs.awesome; + cfg = config.modules.programs.awesome; in { - options.myOptions.programs.awesome.enable = mkEnableOption "awesome"; + options.modules.programs.awesome.enable = mkEnableOption "awesome"; config = mkIf cfg.enable { services.xserver = { diff --git a/hosts/vali/mars/configuration.nix b/hosts/vali/mars/configuration.nix index fa98be9..9ee06dd 100644 --- a/hosts/vali/mars/configuration.nix +++ b/hosts/vali/mars/configuration.nix @@ -6,7 +6,7 @@ security.sudo.package = pkgs.sudo.override { withInsults = true; }; security.polkit.enable = true; programs.kdeconnect.enable = true; - myOptions = { + modules = { other = { system = { hostname = "mars"; diff --git a/hosts/vali/mars/hypr/land.nix b/hosts/vali/mars/hypr/land.nix index 475d78c..9816796 100644 --- a/hosts/vali/mars/hypr/land.nix +++ b/hosts/vali/mars/hypr/land.nix @@ -2,8 +2,8 @@ with lib; let - cfg = config.myOptions.programs.hypr.land; - username = config.myOptions.other.system.username; + cfg = config.modules.programs.hypr.land; + username = config.modules.other.system.username; hmCfg = config.home-manager.users.${username}; smwPresent = elem inputs.split-monitor-workspaces.packages.${pkgs.system}.split-monitor-workspaces cfg.extraPlugins; @@ -13,7 +13,7 @@ with lib; let inherit (inputs.hyprland.packages.${pkgs.system}) hyprland; inherit (inputs.hyprlock.packages.${pkgs.system}) hyprlock; in { - options.myOptions.programs.hypr.land = { + options.modules.programs.hypr.land = { enable = mkEnableOption "huperland"; startupSound = mkOption { type = with types; nullOr path; @@ -359,7 +359,7 @@ in { "[workspace special:rog silent;tile] ${config.services.asusd.package}/bin/rog-control-center") "[workspace special:keepassxc silent;tile] ${pkgs.keepassxc}/bin/keepassxc" - (if config.myOptions.programs.foot.server then "sleep 0.5 && ${pkgs.systemd}/bin/systemctl --user restart foot.service" else ";") + (if config.modules.programs.foot.server then "sleep 0.5 && ${pkgs.systemd}/bin/systemctl --user restart foot.service" else ";") "${hyprland}/bin/hyprctl setcursor Bibata-Modern-Classic 24" diff --git a/hosts/vali/mars/hypr/lock.nix b/hosts/vali/mars/hypr/lock.nix index d622ef8..25c65ca 100644 --- a/hosts/vali/mars/hypr/lock.nix +++ b/hosts/vali/mars/hypr/lock.nix @@ -5,12 +5,12 @@ pkgs, ... }: with lib; let - cfg = config.myOptions.programs.hypr.lock; - username = config.myOptions.other.system.username; + cfg = config.modules.programs.hypr.lock; + username = config.modules.other.system.username; text_color = "rgba(eae0e4FF)"; in { - options.myOptions.programs.hypr.lock = { + options.modules.programs.hypr.lock = { enable = mkEnableOption "hiper zamek"; extraSettings = mkOption { type = types.attrs; diff --git a/hosts/vali/mars/i3.nix b/hosts/vali/mars/i3.nix index 6da1180..9d10566 100644 --- a/hosts/vali/mars/i3.nix +++ b/hosts/vali/mars/i3.nix @@ -1,8 +1,8 @@ { pkgs, lib, config, callPackage, ... }: with lib; let - cfg = config.myOptions.programs.i3; + cfg = config.modules.programs.i3; in { - options.myOptions.programs.i3.enable = mkEnableOption "i3"; + options.modules.programs.i3.enable = mkEnableOption "i3"; config = mkIf cfg.enable { services.xserver = { diff --git a/hosts/vali/mars/programs.nix b/hosts/vali/mars/programs.nix index 44dfaab..1dd2e71 100644 --- a/hosts/vali/mars/programs.nix +++ b/hosts/vali/mars/programs.nix @@ -1,6 +1,6 @@ { config, inputs, pkgs, ... }: let - username = config.myOptions.other.system.username; + username = config.modules.other.system.username; in { home-manager.users.${username} = { home.packages = let diff --git a/modules/cli/git.nix b/modules/cli/git.nix index f9d4429..6d65c2c 100644 --- a/modules/cli/git.nix +++ b/modules/cli/git.nix @@ -4,10 +4,10 @@ pkgs, ... }: with lib; let - cfg = config.myOptions.programs.git; - username = config.myOptions.other.system.username; + cfg = config.modules.programs.git; + username = config.modules.other.system.username; in { - options.myOptions.programs.git = { + options.modules.programs.git = { enable = mkEnableOption "git"; userName = mkOption { type = types.str; diff --git a/modules/cli/starship.nix b/modules/cli/starship.nix index 09ae8af..60acfdc 100644 --- a/modules/cli/starship.nix +++ b/modules/cli/starship.nix @@ -3,16 +3,16 @@ lib, ... }: with lib; let - cfg = config.myOptions.programs.starship; - username = config.myOptions.other.system.username; + cfg = config.modules.programs.starship; + username = config.modules.other.system.username; in { - options.myOptions.programs.starship.enable = mkEnableOption "starship"; + options.modules.programs.starship.enable = mkEnableOption "starship"; config = mkIf cfg.enable { home-manager.users.${username} = { programs.starship = { enable = true; - enableZshIntegration = config.myOptions.programs.zsh.enable; + enableZshIntegration = config.modules.programs.zsh.enable; settings = { add_newline = false; command_timeout = 1000; diff --git a/modules/cli/zsh.nix b/modules/cli/zsh.nix index 93f0910..cb02c19 100644 --- a/modules/cli/zsh.nix +++ b/modules/cli/zsh.nix @@ -1,11 +1,11 @@ { config, lib, pkgs, ... }: with lib; let - cfg = config.myOptions.programs.zsh; - username = config.myOptions.other.system.username; - hostname = config.myOptions.other.system.hostname; - gitPath = config.myOptions.other.system.gitPath; + cfg = config.modules.programs.zsh; + username = config.modules.other.system.username; + hostname = config.modules.other.system.hostname; + gitPath = config.modules.other.system.gitPath; in { - options.myOptions.programs.zsh = { + options.modules.programs.zsh = { enable = mkEnableOption "zsh"; extraAliases = mkOption { type = types.attrs; diff --git a/modules/gui/WM/default.nix b/modules/gui/WM/default.nix new file mode 100644 index 0000000..90f980b --- /dev/null +++ b/modules/gui/WM/default.nix @@ -0,0 +1,5 @@ +_: { + imports = [ + ./hyprland.nix + ]; +} diff --git a/modules/gui/WM/hyprland.nix b/modules/gui/WM/hyprland.nix new file mode 100644 index 0000000..c65b784 --- /dev/null +++ b/modules/gui/WM/hyprland.nix @@ -0,0 +1,185 @@ +{ config, lib, pkgs, ... }: + +with lib; +let + cfg = config.modules.WM.hyprland; + username = config.modules.other.system.username; + monitors = config.modules.other.system.monitors; +in +{ + options.modules.WM.hyprland = { + enable = mkEnableOption "hyprland"; + gnome-keyring = mkEnableOption "gnome-keyring"; + }; + + + config = mkIf cfg.enable { + programs.xwayland.enable = true; + /* + programs.hyprland = { + enable = true; + xwayland = true; + }; + */ + services.gnome.gnome-keyring.enable = mkDefault cfg.gnome-keyring; + systemd.user.services.polkit-gnome-authentication-agent-1 = mkIf cfg.gnome-keyring { + 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; + }; + }; + + home-manager.users.${username} = { + home.packages = with pkgs; [ + rofi + waybar + hyprpaper + hyprlock + hyprland + hyprshade + lxqt.lxqt-openssh-askpass + + dunst + # wireplumber + unstable.xwayland + pciutils # lspci is needed by hyprland + # from some obscure tutorial on youtube + # xorg.libxcb + # mesa + libglvnd + egl-wayland + libdrm + vulkan-tools + dunst + swww + flameshot + bluetuith + brightnessctl + # needed for wayland copy / paste support in neovim + wl-clipboard + ]; + + programs.hyprland = { + enable = true; + settings = { + exec-once = mkIf cfg.gnome-keyring "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1"; + monitor = map ( + m: "${m.device},${m.resolution.x}x${m.resolution.y}@${m.refresh_rate},${m.position.x}x${m.position.y},${m.scale},transform,${m.transform}" + ) monitors; #TODO: default value + input = { + kb_layout = console.keyMap; + natural_scroll = true; + sensitivity = 0; + }; + general = { + gaps_in = 2; + gaps_out = 1; + border_size = 1; + col.active_border = "rgba(33ccffee) rgba(00ff99ee) 45deg"; + col.inactive_border = "rgba(595959aa)"; + layout = dwindle; + }; + decoration.rounding = 5; + misc.disable_hyprland_logo = true; + animations = { + enabled = true; + # Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more + + bezier = ["myBezier, 0.05, 0.9, 0.1, 1.05"]; + + animation = [ + "windowsOut, 1, 7, default, popin 80%" + "border, 1, 10, default" + "borderangle, 1, 8, default" + "fade, 1, 7, default" + "workspaces, 1, 6, default" + "windows, 1, 7, myBezier" + ]; + }; + gestures.workspace_swipe = true; + debug.enable_stdout_logs = true; + bind = [ + + + # Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more + "SUPER, RETURN, exec, alacritty" + "SUPER SHIFT, RETURN, exec, rofi -show drun" + "SUPER SHIFT, Q, killactive," + "SUPER, M, exit, " + "SUPER, B, exec, firefox" + "SUPER, f, fullscreen" + "SUPER, E, exec, nautilus --new-window " + "SUPER, V, togglefloating, " + "SUPER, P, pseudo, # dwindle" + "SUPER, S, togglesplit, # dwindle" + "SUPER, C, exec, /home/vali/.config/wallpaper/colorscheme-setter" + ",PRINT, exec, flameshot" + + "binde = ,XF86MonBrightnessUp, exec, brightnessctl set 10%+" + "binde = ,XF86MonBrightnessDown, exec, brightnessctl set 10%-" + + # Example volume button that allows press and hold, volume limited to 150%" + "binde = ,XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%+" + # Example volume button that will activate even while an input inhibitor is active" + "binde = ,XF86AudioLowerVolume, exec, wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%-" + ",XF86AudioMute, exec, $ wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" + + # Move focus with mainMod + arrow keys" + "SUPER, h, movefocus, l" + "SUPER, l, movefocus, r" + "SUPER, k, movefocus, u" + "SUPER, j, movefocus, d" + + # move window to next / previous workspace" + "SUPER CTRL, h, movetoworkspace, -1" + "SUPER CTRL, l, movetoworkspace, +1" + + # move to next / previous workspace" + "SUPER CTRL, h, workspace, -1" + "SUPER CTRL, l, workspace, +1" + + + # Switch workspaces with mainMod + [0-9]" + "SUPER, 1, workspace, 1" + "SUPER, 2, workspace, 2" + "SUPER, 3, workspace, 3" + "SUPER, 4, workspace, 4" + "SUPER, 5, workspace, 5" + "SUPER, 6, workspace, 6" + "SUPER, 7, workspace, 7" + "SUPER, 8, workspace, 8" + "SUPER, 9, workspace, 9" + "SUPER, 0, workspace, 10" + + # Move active window to a workspace with mainMod + SHIFT + [0-9]" + "SUPER SHIFT, 1, movetoworkspace, 1" + "SUPER SHIFT, 2, movetoworkspace, 2" + "SUPER SHIFT, 3, movetoworkspace, 3" + "SUPER SHIFT, 4, movetoworkspace, 4" + "SUPER SHIFT, 5, movetoworkspace, 5" + "SUPER SHIFT, 6, movetoworkspace, 6" + "SUPER SHIFT, 7, movetoworkspace, 7" + "SUPER SHIFT, 8, movetoworkspace, 8" + "SUPER SHIFT, 9, movetoworkspace, 9" + "SUPER SHIFT, 0, movetoworkspace, 10" + + # Scroll through existing workspaces with mainMod + scroll" + "SUPER, mouse_down, workspace, e+1" + "SUPER, mouse_up, workspace, e-1" + " + # Move/resize windows with mainMod + LMB/RMB and dragging" + #bindm = SUPER, mouse:272, movewindow" + #bindm = SUPER, mouse:273, resizewindow" + ]; + }; + }; + }; + }; +} diff --git a/modules/gui/cursor.nix b/modules/gui/cursor.nix index 6b3a454..1f39448 100644 --- a/modules/gui/cursor.nix +++ b/modules/gui/cursor.nix @@ -3,10 +3,10 @@ lib, ... }: with lib; let - cfg = config.myOptions.themes.cursor; - username = config.myOptions.other.system.username; + cfg = config.modules.themes.cursor; + username = config.modules.other.system.username; in { - options.myOptions.themes.cursor = { + options.modules.themes.cursor = { enable = mkEnableOption "cursor theming"; package = mkOption { description = "cursor theme package"; diff --git a/modules/gui/default.nix b/modules/gui/default.nix index 0821731..d4cd205 100644 --- a/modules/gui/default.nix +++ b/modules/gui/default.nix @@ -10,5 +10,6 @@ _: { ./obs.nix ./foot.nix # ./vivado.nix + ./WM ]; } diff --git a/modules/gui/foot.nix b/modules/gui/foot.nix index d94b898..6d72aab 100644 --- a/modules/gui/foot.nix +++ b/modules/gui/foot.nix @@ -5,10 +5,10 @@ pkgs, ... }: with lib; let - cfg = config.myOptions.programs.foot; - username = config.myOptions.other.system.username; + cfg = config.modules.programs.foot; + username = config.modules.other.system.username; in { - options.myOptions.programs.foot = { + options.modules.programs.foot = { enable = mkEnableOption "foot"; server = mkEnableOption "foot server mode"; }; diff --git a/modules/gui/gtk.nix b/modules/gui/gtk.nix index df5b0db..a8f9a7e 100644 --- a/modules/gui/gtk.nix +++ b/modules/gui/gtk.nix @@ -3,11 +3,11 @@ lib, ... }: with lib; let - cfg = config.myOptions.themes.gtk; - username = config.myOptions.other.system.username; + cfg = config.modules.themes.gtk; + username = config.modules.other.system.username; hmCfg = config.home-manager.users.${username}; in { - options.myOptions.themes.gtk = { + options.modules.themes.gtk = { enable = mkEnableOption "gtk theming"; name = mkOption { description = "gtk theme name"; diff --git a/modules/gui/mpv.nix b/modules/gui/mpv.nix index 0e3ba5d..cbe606e 100644 --- a/modules/gui/mpv.nix +++ b/modules/gui/mpv.nix @@ -4,10 +4,10 @@ pkgs, ... }: with lib; let - cfg = config.myOptions.programs.mpv; - username = config.myOptions.other.system.username; + cfg = config.modules.programs.mpv; + username = config.modules.other.system.username; in { - options.myOptions.programs.mpv.enable = mkEnableOption "mpv"; + options.modules.programs.mpv.enable = mkEnableOption "mpv"; config = mkIf cfg.enable { home-manager.users.${username} = { diff --git a/modules/gui/obs.nix b/modules/gui/obs.nix index d5c7bcf..f979cfb 100644 --- a/modules/gui/obs.nix +++ b/modules/gui/obs.nix @@ -1,9 +1,9 @@ { config, lib, pkgs, ... }: with lib; let - cfg = config.myOptions.programs.obs; - username = config.myOptions.other.system.username; + cfg = config.modules.programs.obs; + username = config.modules.other.system.username; in { - options.myOptions.programs.obs.enable = mkEnableOption "obs"; + options.modules.programs.obs.enable = mkEnableOption "obs"; config = mkIf cfg.enable { home-manager.users.${username} = { diff --git a/modules/gui/qt.nix b/modules/gui/qt.nix index a448f55..eac9ef2 100644 --- a/modules/gui/qt.nix +++ b/modules/gui/qt.nix @@ -4,10 +4,10 @@ pkgs, ... }: with lib; let - cfg = config.myOptions.themes.qt; - username = config.myOptions.other.system.username; + cfg = config.modules.themes.qt; + username = config.modules.other.system.username; in { - options.myOptions.themes.qt = { + options.modules.themes.qt = { enable = mkEnableOption "qt theming"; name = mkOption { description = "qt theme name"; diff --git a/modules/gui/schizofox.nix b/modules/gui/schizofox.nix index 561d668..9727041 100644 --- a/modules/gui/schizofox.nix +++ b/modules/gui/schizofox.nix @@ -1,9 +1,9 @@ { config, inputs, lib, ... }: with lib; let - cfg = config.myOptions.programs.schizofox; - username = config.myOptions.other.system.username; + cfg = config.modules.programs.schizofox; + username = config.modules.other.system.username; in { - options.myOptions.programs.schizofox = { + options.modules.programs.schizofox = { enable = mkEnableOption "schizofox"; }; diff --git a/modules/gui/vesktop.nix b/modules/gui/vesktop.nix index ab8eb18..044ec77 100644 --- a/modules/gui/vesktop.nix +++ b/modules/gui/vesktop.nix @@ -4,10 +4,10 @@ pkgs, ... }: with lib; let - cfg = config.myOptions.programs.vesktop; - username = config.myOptions.other.system.username; + cfg = config.modules.programs.vesktop; + username = config.modules.other.system.username; in { - options.myOptions.programs.vesktop = { + options.modules.programs.vesktop = { enable = mkEnableOption "vesktop"; }; diff --git a/modules/gui/vivado2.nix b/modules/gui/vivado2.nix index c73846f..0e5417e 100644 --- a/modules/gui/vivado2.nix +++ b/modules/gui/vivado2.nix @@ -6,11 +6,11 @@ let desktopName = "Vivado"; exec = "${pkgs.nur.repos.lschuermann.vivado-2022_2}/bin/vivado"; }; - cfg = with lib; [ config.myOptions.programs.vivado ]; - username = with lib; [ config.myOptions.other.system.username ]; + cfg = with lib; [ config.modules.programs.vivado ]; + username = with lib; [ config.modules.other.system.username ]; in { - options.myOptions.programs.vivado.enable = mkEnableOption "vivado"; + options.modules.programs.vivado.enable = mkEnableOption "vivado"; config = mkIf cfg.enable { home-manager.users.${username} = { diff --git a/modules/gui/zathura.nix b/modules/gui/zathura.nix index 74082fb..26c67aa 100644 --- a/modules/gui/zathura.nix +++ b/modules/gui/zathura.nix @@ -4,10 +4,10 @@ pkgs, ... }: with lib; let - cfg = config.myOptions.programs.zathura; - username = config.myOptions.other.system.username; + cfg = config.modules.programs.zathura; + username = config.modules.other.system.username; in { - options.myOptions.programs.zathura.enable = mkEnableOption "zathura"; + options.modules.programs.zathura.enable = mkEnableOption "zathura"; config = mkIf cfg.enable { home-manager.users.${username} = { diff --git a/modules/other/displaymanager.nix b/modules/other/displaymanager.nix index a3caa8e..02f3ffe 100644 --- a/modules/other/displaymanager.nix +++ b/modules/other/displaymanager.nix @@ -1,8 +1,8 @@ {pkgs, lib, config, ...}: with lib; let - cfg = config.myOptions.programs.displaymanager; + cfg = config.modules.programs.displaymanager; in { - options.myOptions.programs.displaymanager.enable = mkEnableOption "displaymanager"; + options.modules.programs.displaymanager.enable = mkEnableOption "displaymanager"; config = mkIf cfg.enable { services.xserver.displayManager = { diff --git a/modules/other/home-manager.nix b/modules/other/home-manager.nix index 78f2cdb..ef5de08 100644 --- a/modules/other/home-manager.nix +++ b/modules/other/home-manager.nix @@ -5,10 +5,10 @@ self, ... }: with lib; let - cfg = config.myOptions.other.home-manager; - username = config.myOptions.other.system.username; + cfg = config.modules.other.home-manager; + username = config.modules.other.system.username; in { - options.myOptions.other.home-manager = { + options.modules.other.home-manager = { enable = mkEnableOption "home-manager"; enableDirenv = mkEnableOption "direnv"; }; diff --git a/modules/other/system.nix b/modules/other/system.nix index e4d1328..ab21d91 100644 --- a/modules/other/system.nix +++ b/modules/other/system.nix @@ -3,9 +3,9 @@ lib, ... }: with lib; let - cfg = config.myOptions.other.system; + cfg = config.modules.other.system; in { - options.myOptions.other.system = { + options.modules.other.system = { hostname = mkOption { description = "hostname for this system"; type = types.str; diff --git a/modules/other/xdg.nix b/modules/other/xdg.nix index c20b7b4..ac53692 100644 --- a/modules/other/xdg.nix +++ b/modules/other/xdg.nix @@ -2,7 +2,7 @@ config, ... }: let - username = config.myOptions.other.system.username; + username = config.modules.other.system.username; hmCfg = config.home-manager.users.${username}; primary_browser = "firefox-schizo.desktop"; @@ -31,7 +31,7 @@ in { XAUTHORITY = "\$XDG_RUNTIME_DIR/Xauthority"; }; */ - myOptions.programs.zsh.extraAliases = { + modules.programs.zsh.extraAliases = { gdb = "gdb -n -x ${hmCfg.xdg.configHome}/gdb/init"; pidgin = "pidgin --config=${hmCfg.xdg.dataHome}/purple"; svn = "svn --config-dir ${hmCfg.xdg.configHome}/subversion"; diff --git a/modules/services/pipewire.nix b/modules/services/pipewire.nix index c3845c7..3de50d7 100644 --- a/modules/services/pipewire.nix +++ b/modules/services/pipewire.nix @@ -1,8 +1,8 @@ { config, lib, ... }: with lib; let - cfg = config.myOptions.services.pipewire; + cfg = config.modules.services.pipewire; in { - options.myOptions.services.pipewire.enable = mkEnableOption "pipewire"; + options.modules.services.pipewire.enable = mkEnableOption "pipewire"; config = mkIf cfg.enable { hardware.pulseaudio.enable = false; diff --git a/modules/tui/btop.nix b/modules/tui/btop.nix index 332d0f7..105b008 100644 --- a/modules/tui/btop.nix +++ b/modules/tui/btop.nix @@ -1,9 +1,9 @@ { config, lib, ... }: with lib; let - cfg = config.myOptions.programs.btop; - username = config.myOptions.other.system.username; + cfg = config.modules.programs.btop; + username = config.modules.other.system.username; in { - options.myOptions.programs.btop.enable = mkEnableOption "btop"; + options.modules.programs.btop.enable = mkEnableOption "btop"; config = mkIf cfg.enable { home-manager.users.${username} = { diff --git a/modules/tui/neovim.nix b/modules/tui/neovim.nix index d3b81fe..b19c255 100644 --- a/modules/tui/neovim.nix +++ b/modules/tui/neovim.nix @@ -5,10 +5,10 @@ pkgs, ... }: with lib; let - cfg = config.myOptions.programs.neovim; - username = config.myOptions.other.system.username; + cfg = config.modules.programs.neovim; + username = config.modules.other.system.username; in { - options.myOptions.programs.neovim.enable = mkEnableOption "neovim"; + options.modules.programs.neovim.enable = mkEnableOption "neovim"; config = mkIf cfg.enable { nixpkgs.overlays = [ inputs.neovim-nightly-overlay.overlay ]; diff --git a/options/common/networking.nix b/options/common/networking.nix index 9023909..bb6c715 100644 --- a/options/common/networking.nix +++ b/options/common/networking.nix @@ -1,6 +1,6 @@ { config, lib, ... }: let - username = config.myOptions.other.system.username; + username = config.modules.other.system.username; in { networking = { networkmanager = { diff --git a/options/desktop/monitors.nix b/options/desktop/monitors.nix new file mode 100644 index 0000000..a9036e7 --- /dev/null +++ b/options/desktop/monitors.nix @@ -0,0 +1,69 @@ +{ config, lib, ... }: + +with lib; +{ + options.modules.other.system.monitors = mkOption { + description = " + List of monitors to use + "; + default = []; + type = with types; listOf submodule { + name = mkOption { + type = types.str; + description = "Give your monitor a cute name"; + default = "monitor0(I am lazy)"; + }; + device = mkOption { + type = types.str; + description = "The actual device name of the monitor"; + }; + resolution = mkOption { + type = types.submodule { + width = mkOption { + type = types.int; + description = "monitor width"; + default = "1920"; + }; + height = mkOption { + type = types.int; + description = "monitor height"; + default = "1080"; + }; + }; + }; + scale = mkOption { + type = types.number; + description = "monitor scale"; + default = 1.0; + }; + refresh_rate = mkOption { + type = types.int; + description = "monitor refresh rate (in Hz)"; + default = 60; + }; + position = mkOption { + type = types.submodule { + x = mkOption { + type = types.int; + default = 0; + }; + y = mkOption { + type = types.int; + default = 0; + }; + }; + description = "absolute monitor posititon"; + default = { + x = 0; + y = 0; + }; + }; + transform = mkOption { + type = types.ints.between 0 3; + description = "Rotation of the monitor counterclockwise"; + default = 0; + }; + }; + }; + +} From 92f0ed1082ed8bb07ccb26122fca3a69f60a8a19 Mon Sep 17 00:00:00 2001 From: LarsZauberer Date: Sat, 13 Apr 2024 09:32:56 +0200 Subject: [PATCH 2/7] Simple hyprland config changed --- hosts/lars/hyprland.nix | 3 +++ hosts/lars/programs.nix | 2 ++ 2 files changed, 5 insertions(+) diff --git a/hosts/lars/hyprland.nix b/hosts/lars/hyprland.nix index 24afae1..16d7b37 100644 --- a/hosts/lars/hyprland.nix +++ b/hosts/lars/hyprland.nix @@ -49,6 +49,9 @@ in { "$mod, Q, killactive" "$mod, return, exec, alacritty" "$mod SHIFT, return, exec, firefox" + + # Application + "$mod SHIFT, c, exec, code" # Monitor management "$mod SHIFT, k, movecurrentworkspacetomonitor, DP-2" diff --git a/hosts/lars/programs.nix b/hosts/lars/programs.nix index 97a5b03..633eb9a 100644 --- a/hosts/lars/programs.nix +++ b/hosts/lars/programs.nix @@ -48,6 +48,8 @@ in { tmux firefox kitty + nextcloud-client + vscode ]; }; } From dd4982d56f4397c3439f6735924c489026905556 Mon Sep 17 00:00:00 2001 From: LarsZauberer Date: Sat, 13 Apr 2024 10:34:50 +0200 Subject: [PATCH 3/7] Hyprlock update --- flake.lock | 153 +++++++++++++++++------------------------------------ 1 file changed, 49 insertions(+), 104 deletions(-) diff --git a/flake.lock b/flake.lock index 1c1e138..319d786 100644 --- a/flake.lock +++ b/flake.lock @@ -222,7 +222,7 @@ }, "flake-utils": { "inputs": { - "systems": "systems_5" + "systems": "systems_2" }, "locked": { "lastModified": 1710146030, @@ -330,14 +330,17 @@ "hyprcursor": { "inputs": { "hyprlang": [ + "split-monitor-workspaces", "hyprland", "hyprlang" ], "nixpkgs": [ + "split-monitor-workspaces", "hyprland", "nixpkgs" ], "systems": [ + "split-monitor-workspaces", "hyprland", "systems" ] @@ -361,19 +364,17 @@ "hyprcursor": "hyprcursor", "hyprland-protocols": "hyprland-protocols", "hyprlang": "hyprlang", - "nixpkgs": [ - "nixpkgs" - ], - "systems": "systems_2", + "nixpkgs": "nixpkgs_5", + "systems": "systems_3", "wlroots": "wlroots", "xdph": "xdph" }, "locked": { - "lastModified": 1712877538, - "narHash": "sha256-FK4Rhq9mEf8wpS3/K/ueB5Sql2XOeCQX/SzCe/QySNk=", + "lastModified": 1712969717, + "narHash": "sha256-vAtfM8lHOLjuHh/CTzSFUaCJp0qlAWttWimin3KoDXM=", "owner": "hyprwm", "repo": "Hyprland", - "rev": "b1a94302897ae559c877471f7d365651bcd24ad4", + "rev": "582d6233c802327fea45a14d146e7cbab5fe4b1e", "type": "github" }, "original": { @@ -385,10 +386,12 @@ "hyprland-protocols": { "inputs": { "nixpkgs": [ + "split-monitor-workspaces", "hyprland", "nixpkgs" ], "systems": [ + "split-monitor-workspaces", "hyprland", "systems" ] @@ -410,10 +413,12 @@ "hyprlang": { "inputs": { "nixpkgs": [ + "split-monitor-workspaces", "hyprland", "nixpkgs" ], "systems": [ + "split-monitor-workspaces", "hyprland", "systems" ] @@ -432,50 +437,6 @@ "type": "github" } }, - "hyprlang_2": { - "inputs": { - "nixpkgs": [ - "hyprlock", - "nixpkgs" - ], - "systems": "systems_3" - }, - "locked": { - "lastModified": 1711250455, - "narHash": "sha256-LSq1ZsTpeD7xsqvlsepDEelWRDtAhqwetp6PusHXJRo=", - "owner": "hyprwm", - "repo": "hyprlang", - "rev": "b3e430f81f3364c5dd1a3cc9995706a4799eb3fa", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "hyprlang", - "type": "github" - } - }, - "hyprlock": { - "inputs": { - "hyprlang": "hyprlang_2", - "nixpkgs": [ - "nixpkgs" - ], - "systems": "systems_4" - }, - "locked": { - "lastModified": 1712861866, - "narHash": "sha256-7ISUD6Z8FivTw/Db8tGJdiJeqpvJs7CSCwadopb1oro=", - "owner": "hyprwm", - "repo": "hyprlock", - "rev": "6fa65e1172d633e61ed957a49e7cf96010432623", - "type": "github" - }, - "original": { - "owner": "hyprwm", - "repo": "hyprlock", - "type": "github" - } - }, "lib-aggregate": { "inputs": { "flake-utils": "flake-utils", @@ -697,6 +658,22 @@ "type": "github" } }, + "nixpkgs_5": { + "locked": { + "lastModified": 1712439257, + "narHash": "sha256-aSpiNepFOMk9932HOax0XwNxbA38GOUVOiXfUVPOrck=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "ff0dbd94265ac470dda06a657d5fe49de93b4599", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, "nur": { "locked": { "lastModified": 1712918680, @@ -718,8 +695,6 @@ "anyrun": "anyrun", "fenix": "fenix", "home-manager": "home-manager_2", - "hyprland": "hyprland", - "hyprlock": "hyprlock", "nixpkgs": "nixpkgs_2", "nixpkgs-wayland": "nixpkgs-wayland", "nur": "nur", @@ -794,9 +769,7 @@ }, "split-monitor-workspaces": { "inputs": { - "hyprland": [ - "hyprland" - ], + "hyprland": "hyprland", "nix-filter": "nix-filter" }, "locked": { @@ -830,16 +803,16 @@ }, "systems_2": { "locked": { - "lastModified": 1689347949, - "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", "owner": "nix-systems", - "repo": "default-linux", - "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { "owner": "nix-systems", - "repo": "default-linux", + "repo": "default", "type": "github" } }, @@ -858,36 +831,6 @@ "type": "github" } }, - "systems_4": { - "locked": { - "lastModified": 1689347949, - "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", - "owner": "nix-systems", - "repo": "default-linux", - "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default-linux", - "type": "github" - } - }, - "systems_5": { - "locked": { - "lastModified": 1681028828, - "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", - "owner": "nix-systems", - "repo": "default", - "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", - "type": "github" - }, - "original": { - "owner": "nix-systems", - "repo": "default", - "type": "github" - } - }, "treefmt-nix": { "inputs": { "nixpkgs": [ @@ -913,37 +856,39 @@ "wlroots": { "flake": false, "locked": { - "host": "gitlab.freedesktop.org", - "lastModified": 1709983277, - "narHash": "sha256-wXWIJLd4F2JZeMaihWVDW/yYXCLEC8OpeNJZg9a9ly8=", - "owner": "wlroots", - "repo": "wlroots", - "rev": "50eae512d9cecbf0b3b1898bb1f0b40fa05fe19b", - "type": "gitlab" + "lastModified": 1712935342, + "narHash": "sha256-zzIbTFNFd/as42jyGx23fil2uBDYYv+8GA5JmRq5y9c=", + "owner": "hyprwm", + "repo": "wlroots-hyprland", + "rev": "62eeffbe233d199f520a5755c344e85f8eab7940", + "type": "github" }, "original": { - "host": "gitlab.freedesktop.org", - "owner": "wlroots", - "repo": "wlroots", - "rev": "50eae512d9cecbf0b3b1898bb1f0b40fa05fe19b", - "type": "gitlab" + "owner": "hyprwm", + "repo": "wlroots-hyprland", + "rev": "62eeffbe233d199f520a5755c344e85f8eab7940", + "type": "github" } }, "xdph": { "inputs": { "hyprland-protocols": [ + "split-monitor-workspaces", "hyprland", "hyprland-protocols" ], "hyprlang": [ + "split-monitor-workspaces", "hyprland", "hyprlang" ], "nixpkgs": [ + "split-monitor-workspaces", "hyprland", "nixpkgs" ], "systems": [ + "split-monitor-workspaces", "hyprland", "systems" ] From cfebfbd7463d5ab040d5eee4c13110deadf635f1 Mon Sep 17 00:00:00 2001 From: LarsZauberer Date: Sat, 13 Apr 2024 10:34:59 +0200 Subject: [PATCH 4/7] hyprland monitor fix --- hosts/lars/hyprland.nix | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/hosts/lars/hyprland.nix b/hosts/lars/hyprland.nix index 6dbcc8b..f9178a7 100644 --- a/hosts/lars/hyprland.nix +++ b/hosts/lars/hyprland.nix @@ -9,7 +9,7 @@ in { monitor = mkOption { description = "hyprland monitor config"; default = ",preferred,auto,1"; - type = types.listof(types.str); + type = types.listOf(types.str); }; }; @@ -41,6 +41,9 @@ in { wayland.windowManager.hyprland = { enable = true; settings = { + # Monitor config + monitor = cfg.monitor; + "$mod" = "SUPER"; input = { @@ -51,9 +54,10 @@ in { "$mod, Q, killactive" "$mod, return, exec, alacritty" "$mod SHIFT, return, exec, firefox" + "$mod SHIFT, m, exit" # Application - "$mod SHIFT, c, exec, code" + "$mod SHIFT, c, exec, code --enable-features=UseOzonePlatform --ozone-platform=wayland --disable-gpu" # Monitor management "$mod SHIFT, k, movecurrentworkspacetomonitor, DP-2" From 064b8d964ad8ef7ef3e4541010a7be766c295c3f Mon Sep 17 00:00:00 2001 From: Dragyx <66752602+Dragyx@users.noreply.github.com> Date: Sat, 13 Apr 2024 13:47:36 +0200 Subject: [PATCH 5/7] Initial flocke configuration (warning: may break other systems, will fix shortly) --- hosts/dragyx/flocke/configuration.nix | 35 +++--- hosts/dragyx/flocke/packages.nix | 2 +- modules/gui/WM/hyprland.nix | 172 +++++++++++++------------- options/desktop/monitors.nix | 106 ++++++++-------- 4 files changed, 159 insertions(+), 156 deletions(-) diff --git a/hosts/dragyx/flocke/configuration.nix b/hosts/dragyx/flocke/configuration.nix index 8e4f41d..c626128 100644 --- a/hosts/dragyx/flocke/configuration.nix +++ b/hosts/dragyx/flocke/configuration.nix @@ -5,6 +5,7 @@ ../../../options/common/pin-registry.nix ../../../options/common/preserve-system.nix ../../../options/desktop/fonts.nix + ./packages.nix ]; @@ -12,18 +13,16 @@ time.timeZone = "Europe/Zurich"; security.sudo.package = pkgs.sudo.override { withInsults = true; }; - services.xserver = { - enable = true; - displayManager = { + services.displayManager = { sessionPackages = [ pkgs.hyprland ]; # pkgs.gnome.gnome-session.sessions ]; defaultSession = "hyprland"; sddm = { enable = true; - }; + wayland.enable = true; }; - windowManager.hypr.enable = true; }; + hardware.bluetooth.enable = true; hardware.bluetooth.powerOnBoot = true; @@ -110,18 +109,22 @@ modules = { other = { - system = { + system = rec { hostname = "flocke"; username = "dragyx"; - monitors = { - name = "LaptopMain"; - resolution = { - x = 2256; - y = 1504; - }; - scale = 1.0; - refresh_rate = 60; - }; + gitPath = "/home/${username}/repos/nichts"; + monitors = [ + { + name = "LaptopMain"; + device = "eDP-1"; + resolution = { + x = 2256; + y = 1504; + }; + scale = 1.175; + refresh_rate = 60; + } + ]; }; home-manager = { enable = true; @@ -134,7 +137,7 @@ mpv.enable = true; schizofox.enable = true; obs.enable = true; - neovim.enable = true; + # neovim.enable = true; git = { enable = true; userName = "Dragyx"; diff --git a/hosts/dragyx/flocke/packages.nix b/hosts/dragyx/flocke/packages.nix index a4a4afe..4c43613 100644 --- a/hosts/dragyx/flocke/packages.nix +++ b/hosts/dragyx/flocke/packages.nix @@ -28,7 +28,7 @@ in android-tools signal-desktop nextcloud-client - etcher + # etcher vlc audacity thunderbird diff --git a/modules/gui/WM/hyprland.nix b/modules/gui/WM/hyprland.nix index c65b784..a3a45ae 100644 --- a/modules/gui/WM/hyprland.nix +++ b/modules/gui/WM/hyprland.nix @@ -15,12 +15,9 @@ in config = mkIf cfg.enable { programs.xwayland.enable = true; - /* programs.hyprland = { - enable = true; - xwayland = true; + enable = true; }; - */ services.gnome.gnome-keyring.enable = mkDefault cfg.gnome-keyring; systemd.user.services.polkit-gnome-authentication-agent-1 = mkIf cfg.gnome-keyring { description = "polkit-gnome-authentication-agent-1"; @@ -48,15 +45,8 @@ in dunst # wireplumber - unstable.xwayland + xwayland pciutils # lspci is needed by hyprland - # from some obscure tutorial on youtube - # xorg.libxcb - # mesa - libglvnd - egl-wayland - libdrm - vulkan-tools dunst swww flameshot @@ -66,15 +56,20 @@ in wl-clipboard ]; - programs.hyprland = { + wayland.windowManager.hyprland = { enable = true; + systemd.enable = true; + xwayland.enable = true; settings = { - exec-once = mkIf cfg.gnome-keyring "${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1"; + exec-once = [ + "waybar" + ] ++ (if cfg.gnome-keyring then ["${pkgs.polkit_gnome}/libexec/polkit-gnome-authentication-agent-1"] + else []); monitor = map ( - m: "${m.device},${m.resolution.x}x${m.resolution.y}@${m.refresh_rate},${m.position.x}x${m.position.y},${m.scale},transform,${m.transform}" + m: "${m.device},${builtins.toString m.resolution.x}x${builtins.toString m.resolution.y}@${builtins.toString m.refresh_rate},${builtins.toString m.position.x}x${builtins.toString m.position.y},${builtins.toString m.scale},transform,${builtins.toString m.transform}" ) monitors; #TODO: default value input = { - kb_layout = console.keyMap; + kb_layout = "us"; natural_scroll = true; sensitivity = 0; }; @@ -82,9 +77,9 @@ in gaps_in = 2; gaps_out = 1; border_size = 1; - col.active_border = "rgba(33ccffee) rgba(00ff99ee) 45deg"; - col.inactive_border = "rgba(595959aa)"; - layout = dwindle; + "col.active_border" = "rgba(33ccffee) rgba(00ff99ee) 45deg"; + "col.inactive_border" = "rgba(595959aa)"; + layout = "dwindle"; }; decoration.rounding = 5; misc.disable_hyprland_logo = true; @@ -106,77 +101,76 @@ in gestures.workspace_swipe = true; debug.enable_stdout_logs = true; bind = [ + # Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more + "SUPER, RETURN, exec, alacritty" + "SUPER SHIFT, RETURN, exec, rofi -show drun" + "SUPER SHIFT, Q, killactive," + "SUPER, M, exit, " + "SUPER, B, exec, firefox" + "SUPER, f, fullscreen" + "SUPER, E, exec, nautilus --new-window " + "SUPER, V, togglefloating, " + "SUPER, P, pseudo, # dwindle" + "SUPER, S, togglesplit, # dwindle" + "SUPER, C, exec, /home/vali/.config/wallpaper/colorscheme-setter" + ",PRINT, exec, flameshot" - - # Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more - "SUPER, RETURN, exec, alacritty" - "SUPER SHIFT, RETURN, exec, rofi -show drun" - "SUPER SHIFT, Q, killactive," - "SUPER, M, exit, " - "SUPER, B, exec, firefox" - "SUPER, f, fullscreen" - "SUPER, E, exec, nautilus --new-window " - "SUPER, V, togglefloating, " - "SUPER, P, pseudo, # dwindle" - "SUPER, S, togglesplit, # dwindle" - "SUPER, C, exec, /home/vali/.config/wallpaper/colorscheme-setter" - ",PRINT, exec, flameshot" - - "binde = ,XF86MonBrightnessUp, exec, brightnessctl set 10%+" - "binde = ,XF86MonBrightnessDown, exec, brightnessctl set 10%-" - - # Example volume button that allows press and hold, volume limited to 150%" - "binde = ,XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%+" - # Example volume button that will activate even while an input inhibitor is active" - "binde = ,XF86AudioLowerVolume, exec, wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%-" - ",XF86AudioMute, exec, $ wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" - - # Move focus with mainMod + arrow keys" - "SUPER, h, movefocus, l" - "SUPER, l, movefocus, r" - "SUPER, k, movefocus, u" - "SUPER, j, movefocus, d" - - # move window to next / previous workspace" - "SUPER CTRL, h, movetoworkspace, -1" - "SUPER CTRL, l, movetoworkspace, +1" - - # move to next / previous workspace" - "SUPER CTRL, h, workspace, -1" - "SUPER CTRL, l, workspace, +1" - - - # Switch workspaces with mainMod + [0-9]" - "SUPER, 1, workspace, 1" - "SUPER, 2, workspace, 2" - "SUPER, 3, workspace, 3" - "SUPER, 4, workspace, 4" - "SUPER, 5, workspace, 5" - "SUPER, 6, workspace, 6" - "SUPER, 7, workspace, 7" - "SUPER, 8, workspace, 8" - "SUPER, 9, workspace, 9" - "SUPER, 0, workspace, 10" - - # Move active window to a workspace with mainMod + SHIFT + [0-9]" - "SUPER SHIFT, 1, movetoworkspace, 1" - "SUPER SHIFT, 2, movetoworkspace, 2" - "SUPER SHIFT, 3, movetoworkspace, 3" - "SUPER SHIFT, 4, movetoworkspace, 4" - "SUPER SHIFT, 5, movetoworkspace, 5" - "SUPER SHIFT, 6, movetoworkspace, 6" - "SUPER SHIFT, 7, movetoworkspace, 7" - "SUPER SHIFT, 8, movetoworkspace, 8" - "SUPER SHIFT, 9, movetoworkspace, 9" - "SUPER SHIFT, 0, movetoworkspace, 10" - - # Scroll through existing workspaces with mainMod + scroll" - "SUPER, mouse_down, workspace, e+1" - "SUPER, mouse_up, workspace, e-1" - " - # Move/resize windows with mainMod + LMB/RMB and dragging" - #bindm = SUPER, mouse:272, movewindow" - #bindm = SUPER, mouse:273, resizewindow" + + # Move focus with mainMod + arrow keys" + "SUPER, h, movefocus, l" + "SUPER, l, movefocus, r" + "SUPER, k, movefocus, u" + "SUPER, j, movefocus, d" + + # move window to next / previous workspace" + "SUPER CTRL, h, movetoworkspace, -1" + "SUPER CTRL, l, movetoworkspace, +1" + + # move to next / previous workspace" + "SUPER CTRL, h, workspace, -1" + "SUPER CTRL, l, workspace, +1" + + + # Switch workspaces with mainMod + [0-9]" + "SUPER, 1, workspace, 1" + "SUPER, 2, workspace, 2" + "SUPER, 3, workspace, 3" + "SUPER, 4, workspace, 4" + "SUPER, 5, workspace, 5" + "SUPER, 6, workspace, 6" + "SUPER, 7, workspace, 7" + "SUPER, 8, workspace, 8" + "SUPER, 9, workspace, 9" + "SUPER, 0, workspace, 10" + + # Move active window to a workspace with mainMod + SHIFT + [0-9]" + "SUPER SHIFT, 1, movetoworkspace, 1" + "SUPER SHIFT, 2, movetoworkspace, 2" + "SUPER SHIFT, 3, movetoworkspace, 3" + "SUPER SHIFT, 4, movetoworkspace, 4" + "SUPER SHIFT, 5, movetoworkspace, 5" + "SUPER SHIFT, 6, movetoworkspace, 6" + "SUPER SHIFT, 7, movetoworkspace, 7" + "SUPER SHIFT, 8, movetoworkspace, 8" + "SUPER SHIFT, 9, movetoworkspace, 9" + "SUPER SHIFT, 0, movetoworkspace, 10" + + # Scroll through existing workspaces with mainMod + scroll" + "SUPER, mouse_down, workspace, e+1" + "SUPER, mouse_up, workspace, e-1" + + # Move/resize windows with mainMod + LMB/RMB and dragging + "SUPER, mouse:272, movewindow" + # "bindm = SUPER, mouse:273, resizewindow" + ]; + binde = [ + ",XF86MonBrightnessUp, exec, brightnessctl set 10%+" + ",XF86MonBrightnessDown, exec, brightnessctl set 10%-" + # Example volume button that allows press and hold, volume limited to 150%" + ",XF86AudioRaiseVolume, exec, wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%+" + # Example volume button that will activate even while an input inhibitor is active" + ",XF86AudioLowerVolume, exec, wpctl set-volume -l 1.5 @DEFAULT_AUDIO_SINK@ 5%-" + ",XF86AudioMute, exec, $ wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" ]; }; }; diff --git a/options/desktop/monitors.nix b/options/desktop/monitors.nix index a9036e7..42f40b5 100644 --- a/options/desktop/monitors.nix +++ b/options/desktop/monitors.nix @@ -7,63 +7,69 @@ with lib; List of monitors to use "; default = []; - type = with types; listOf submodule { - name = mkOption { - type = types.str; - description = "Give your monitor a cute name"; - default = "monitor0(I am lazy)"; - }; - device = mkOption { - type = types.str; - description = "The actual device name of the monitor"; - }; - resolution = mkOption { - type = types.submodule { - width = mkOption { - type = types.int; - description = "monitor width"; - default = "1920"; - }; - height = mkOption { - type = types.int; - description = "monitor height"; - default = "1080"; + type = with types; types.listOf (submodule { + options = { + name = mkOption { + type = types.str; + description = "Give your monitor a cute name"; + default = "monitor0(I am lazy)"; + }; + device = mkOption { + type = types.str; + description = "The actual device name of the monitor"; + }; + resolution = mkOption { + type = types.submodule { + options = { + x = mkOption { + type = types.int; + description = "monitor width"; + default = "1920"; + }; + y = mkOption { + type = types.int; + description = "monitor height"; + default = "1080"; + }; + }; }; }; - }; - scale = mkOption { - type = types.number; - description = "monitor scale"; - default = 1.0; - }; - refresh_rate = mkOption { - type = types.int; - description = "monitor refresh rate (in Hz)"; - default = 60; - }; - position = mkOption { - type = types.submodule { - x = mkOption { - type = types.int; - default = 0; + scale = mkOption { + type = types.number; + description = "monitor scale"; + default = 1.0; + }; + refresh_rate = mkOption { + type = types.int; + description = "monitor refresh rate (in Hz)"; + default = 60; + }; + position = mkOption { + type = types.submodule { + options = { + x = mkOption { + type = types.int; + default = 0; + }; + y = mkOption { + type = types.int; + default = 0; + }; + }; }; - y = mkOption { - type = types.int; - default = 0; + description = "absolute monitor posititon"; + default = { + x = 0; + y = 0; }; }; - description = "absolute monitor posititon"; - default = { - x = 0; - y = 0; + transform = mkOption { + type = types.ints.between 0 3; + description = "Rotation of the monitor counterclockwise"; + default = 0; }; }; - transform = mkOption { - type = types.ints.between 0 3; - description = "Rotation of the monitor counterclockwise"; - default = 0; - }; - }; + }); }; } From 5433727cac6a636371d5bf822b1b9fa27825d998 Mon Sep 17 00:00:00 2001 From: Dragyx <66752602+Dragyx@users.noreply.github.com> Date: Sat, 13 Apr 2024 15:12:46 +0200 Subject: [PATCH 6/7] Actually add vesktop package if vesktop is enabled --- modules/cli/neovim.nix | 35 +++++++++++++++++++++++++++++++++++ modules/gui/vesktop.nix | 1 + 2 files changed, 36 insertions(+) create mode 100644 modules/cli/neovim.nix diff --git a/modules/cli/neovim.nix b/modules/cli/neovim.nix new file mode 100644 index 0000000..011697a --- /dev/null +++ b/modules/cli/neovim.nix @@ -0,0 +1,35 @@ +{ config, lib, pkgs, ... }: + +let + lazyvim-config = pkgs.fetchFromGitHub { + owner = "Dragyx"; + repo = "lazyvim-config"; + rev = "d799724f48199d81ca6c8abb5951860fbf8fa0df"; + hash = "sha256-NF92CweRFQ1qZS8NXoTUEljazRGXgXS2AuDt5IWmwBc="; + }; + cfg = config.modules.neovim-old; + username = config.modules.other.system.username; +in +{ + options.modules.cli.neovim-old = lib.mkEnableOption "neovim-old"; + + config = lib.mkIf cfg.enable { + home-manager.users.${username} = { + home.packages = with pkgs; [ lazygit ripgrep fd gcc xclip rust-analyzer ]; + programs.neovim = { + enable = true; + viAlias = true; + vimAlias = true; + defaultEditor = true; + }; + + xdg.configFile."nvim" = { + enable = true; + source = lazyvim-config; + recursive = true; + }; + }; + + + } +} diff --git a/modules/gui/vesktop.nix b/modules/gui/vesktop.nix index 044ec77..a209062 100644 --- a/modules/gui/vesktop.nix +++ b/modules/gui/vesktop.nix @@ -13,6 +13,7 @@ in { config = mkIf cfg.enable { home-manager.users.${username} = { + home.packages = with pkgs; [ vesktop ]; xdg.configFile."vesktop/settings.json".text = builtins.toJSON { discordBranch = "ptb"; firstLaunch = false; From 4609d05509b13b3567b407747903efe4a0a4dd34 Mon Sep 17 00:00:00 2001 From: Dragyx <66752602+Dragyx@users.noreply.github.com> Date: Sat, 13 Apr 2024 15:29:56 +0200 Subject: [PATCH 7/7] Add old neovim config for the time being --- modules/cli/default.nix | 1 + modules/cli/neovim.nix | 6 +++--- modules/gui/rofi.nix | 0 3 files changed, 4 insertions(+), 3 deletions(-) create mode 100644 modules/gui/rofi.nix diff --git a/modules/cli/default.nix b/modules/cli/default.nix index 1e43012..117462f 100644 --- a/modules/cli/default.nix +++ b/modules/cli/default.nix @@ -3,5 +3,6 @@ _: { ./git.nix ./starship.nix ./zsh.nix + ./neovim.nix ]; } diff --git a/modules/cli/neovim.nix b/modules/cli/neovim.nix index 011697a..1b4b503 100644 --- a/modules/cli/neovim.nix +++ b/modules/cli/neovim.nix @@ -7,11 +7,11 @@ let rev = "d799724f48199d81ca6c8abb5951860fbf8fa0df"; hash = "sha256-NF92CweRFQ1qZS8NXoTUEljazRGXgXS2AuDt5IWmwBc="; }; - cfg = config.modules.neovim-old; + cfg = config.modules.programs.neovim-old; username = config.modules.other.system.username; in { - options.modules.cli.neovim-old = lib.mkEnableOption "neovim-old"; + options.modules.programs.neovim-old.enable = lib.mkEnableOption "neovim-old"; config = lib.mkIf cfg.enable { home-manager.users.${username} = { @@ -31,5 +31,5 @@ in }; - } + }; } diff --git a/modules/gui/rofi.nix b/modules/gui/rofi.nix new file mode 100644 index 0000000..e69de29