diff --git a/flake.lock b/flake.lock index 2977dac..ca4ebee 100644 --- a/flake.lock +++ b/flake.lock @@ -23,6 +23,31 @@ "type": "github" } }, + "beam-flakes": { + "inputs": { + "flake-parts": [ + "expert", + "flake-parts" + ], + "nixpkgs": [ + "expert", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1763144771, + "narHash": "sha256-VWF3RK2lNPX5tz14LnJM7DXkP1YwgrTuu3RqeVEymCk=", + "owner": "elixir-tools", + "repo": "nix-beam-flakes", + "rev": "0927b7964669ff9301e90ec5753ac81885a4b1bf", + "type": "github" + }, + "original": { + "owner": "elixir-tools", + "repo": "nix-beam-flakes", + "type": "github" + } + }, "cachix": { "inputs": { "devenv": [ @@ -125,6 +150,50 @@ "type": "github" } }, + "dms": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ], + "quickshell": "quickshell" + }, + "locked": { + "lastModified": 1772034342, + "narHash": "sha256-InX8kRyrpVL+MP/gW1qhH9tGtDx2z2gmJ9NfmvUJ35I=", + "owner": "AvengeMedia", + "repo": "DankMaterialShell", + "rev": "47b12d09fc8526f9c231de60848a41b5990b4a37", + "type": "github" + }, + "original": { + "owner": "AvengeMedia", + "ref": "stable", + "repo": "DankMaterialShell", + "type": "github" + } + }, + "expert": { + "inputs": { + "beam-flakes": "beam-flakes", + "flake-parts": "flake-parts_2", + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1770823197, + "narHash": "sha256-7/lnERdNy109k5+DGz2+J+3rHhk7aQzE7f//KWTCdjc=", + "owner": "elixir-lang", + "repo": "expert", + "rev": "aa5ba2b92174d75b27dfcb96592b678ad7a62636", + "type": "github" + }, + "original": { + "owner": "elixir-lang", + "repo": "expert", + "type": "github" + } + }, "flake-compat": { "flake": false, "locked": { @@ -142,6 +211,22 @@ } }, "flake-compat_2": { + "flake": false, + "locked": { + "lastModified": 1761588595, + "narHash": "sha256-XKUZz9zewJNUj46b4AJdiRZJAvSZ0Dqj2BNfXvFlJC4=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "f387cd2afec9419c8ee37694406ca490c3f34ee5", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-compat_3": { "flake": false, "locked": { "lastModified": 1696426674, @@ -178,6 +263,24 @@ "type": "github" } }, + "flake-parts_2": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib" + }, + "locked": { + "lastModified": 1762980239, + "narHash": "sha256-8oNVE8TrD19ulHinjaqONf9QWCKK+w4url56cdStMpM=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "52a2caecc898d0b46b2b905f058ccc5081f842da", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, "flake-root": { "locked": { "lastModified": 1723604017, @@ -209,23 +312,8 @@ } }, "flake-utils_2": { - "locked": { - "lastModified": 1649676176, - "narHash": "sha256-OWKJratjt2RW151VUlJPRALb7OU2S5s+f0vLj4o1bHM=", - "owner": "numtide", - "repo": "flake-utils", - "rev": "a4b154ebbdc88c8498a5c7b01589addc9e9cb678", - "type": "github" - }, - "original": { - "owner": "numtide", - "repo": "flake-utils", - "type": "github" - } - }, - "flake-utils_3": { "inputs": { - "systems": "systems_3" + "systems": "systems_2" }, "locked": { "lastModified": 1731533236, @@ -241,10 +329,43 @@ "type": "github" } }, + "flake-utils_3": { + "locked": { + "lastModified": 1649676176, + "narHash": "sha256-OWKJratjt2RW151VUlJPRALb7OU2S5s+f0vLj4o1bHM=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "a4b154ebbdc88c8498a5c7b01589addc9e9cb678", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, "flake-utils_4": { "inputs": { "systems": "systems_4" }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "flake-utils_5": { + "inputs": { + "systems": "systems_5" + }, "locked": { "lastModified": 1705309234, "narHash": "sha256-uNRRNRKmJyCRC/8y1RqBkqWBLM034y4qN7EprSdmgyA=", @@ -259,6 +380,31 @@ "type": "github" } }, + "ghostty": { + "inputs": { + "flake-compat": "flake-compat_2", + "flake-utils": "flake-utils_2", + "home-manager": "home-manager_2", + "nixpkgs": [ + "nixpkgs" + ], + "zig": "zig", + "zon2nix": "zon2nix" + }, + "locked": { + "lastModified": 1773166996, + "narHash": "sha256-G78lzYQYVDHyLhfUT4h+EW0m6yZ25ep7y2wyi3T8ivg=", + "owner": "ghostty-org", + "repo": "ghostty", + "rev": "8784636547520dc94d1b6ed2d58db00ed80eadfb", + "type": "github" + }, + "original": { + "owner": "ghostty-org", + "repo": "ghostty", + "type": "github" + } + }, "git-hooks": { "inputs": { "flake-compat": [ @@ -312,7 +458,7 @@ "nixpkgs": [ "nixpkgs" ], - "systems": "systems_2" + "systems": "systems_3" }, "locked": { "lastModified": 1766068170, @@ -350,6 +496,27 @@ } }, "home-manager_2": { + "inputs": { + "nixpkgs": [ + "ghostty", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1770586272, + "narHash": "sha256-Ucci8mu8QfxwzyfER2DQDbvW9t1BnTUJhBmY7ybralo=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "b1f916ba052341edc1f80d4b2399f1092a4873ca", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, + "home-manager_3": { "inputs": { "nixpkgs": [ "nixpkgs" @@ -370,7 +537,7 @@ "type": "github" } }, - "home-manager_3": { + "home-manager_4": { "inputs": { "nixpkgs": [ "zen-browser", @@ -393,7 +560,7 @@ }, "i3utils": { "inputs": { - "flake-utils": "flake-utils_2", + "flake-utils": "flake-utils_3", "nixpkgs": [ "nixpkgs" ] @@ -413,6 +580,64 @@ "url": "https://git.sr.ht/~dpatterbee/i3utils" } }, + "niri": { + "inputs": { + "niri-stable": "niri-stable", + "niri-unstable": "niri-unstable", + "nixpkgs": [ + "nixpkgs" + ], + "nixpkgs-stable": "nixpkgs-stable", + "xwayland-satellite-stable": "xwayland-satellite-stable", + "xwayland-satellite-unstable": "xwayland-satellite-unstable" + }, + "locked": { + "lastModified": 1771940378, + "narHash": "sha256-qe5t8E8uK5eSgPTxtfcde3VO8fnIr/Tu+hn72FDry/E=", + "owner": "sodiboo", + "repo": "niri-flake", + "rev": "f8899e60a1425d21a03a05ac2c069a85398039b5", + "type": "github" + }, + "original": { + "owner": "sodiboo", + "repo": "niri-flake", + "type": "github" + } + }, + "niri-stable": { + "flake": false, + "locked": { + "lastModified": 1756556321, + "narHash": "sha256-RLD89dfjN0RVO86C/Mot0T7aduCygPGaYbog566F0Qo=", + "owner": "YaLTeR", + "repo": "niri", + "rev": "01be0e65f4eb91a9cd624ac0b76aaeab765c7294", + "type": "github" + }, + "original": { + "owner": "YaLTeR", + "ref": "v25.08", + "repo": "niri", + "type": "github" + } + }, + "niri-unstable": { + "flake": false, + "locked": { + "lastModified": 1771849386, + "narHash": "sha256-CFvjBjS2LxbBMR3Lu6wZhME6ck3CXyKUufRoJA5tlmw=", + "owner": "YaLTeR", + "repo": "niri", + "rev": "2dc6f4482c4eeed75ea8b133d89cad8658d38429", + "type": "github" + }, + "original": { + "owner": "YaLTeR", + "repo": "niri", + "type": "github" + } + }, "nix": { "inputs": { "flake-compat": [ @@ -482,7 +707,7 @@ }, "nixgl": { "inputs": { - "flake-utils": "flake-utils_3", + "flake-utils": "flake-utils_4", "nixpkgs": [ "nixpkgs" ] @@ -516,7 +741,38 @@ "type": "indirect" } }, + "nixpkgs-lib": { + "locked": { + "lastModified": 1761765539, + "narHash": "sha256-b0yj6kfvO8ApcSE+QmA6mUfu8IYG6/uU28OFn4PaC8M=", + "owner": "nix-community", + "repo": "nixpkgs.lib", + "rev": "719359f4562934ae99f5443f20aa06c2ffff91fc", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixpkgs.lib", + "type": "github" + } + }, "nixpkgs-stable": { + "locked": { + "lastModified": 1771903837, + "narHash": "sha256-sdaqdnsQCv3iifzxwB22tUwN/fSHoN7j2myFW5EIkGk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "e764fc9a405871f1f6ca3d1394fb422e0a0c3951", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-25.11", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-stable_2": { "locked": { "lastModified": 1751274312, "narHash": "sha256-/bVBlRpECLVzjV19t5KMdMFWSwKLtb5RyXdjz3LJT+g=", @@ -548,19 +804,45 @@ "type": "github" } }, + "quickshell": { + "inputs": { + "nixpkgs": [ + "dms", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1766725085, + "narHash": "sha256-O2aMFdDUYJazFrlwL7aSIHbUSEm3ADVZjmf41uBJfHs=", + "ref": "refs/heads/master", + "rev": "41828c4180fb921df7992a5405f5ff05d2ac2fff", + "revCount": 715, + "type": "git", + "url": "https://git.outfoxxed.me/quickshell/quickshell" + }, + "original": { + "rev": "41828c4180fb921df7992a5405f5ff05d2ac2fff", + "type": "git", + "url": "https://git.outfoxxed.me/quickshell/quickshell" + } + }, "root": { "inputs": { "agenix": "agenix", "copyparty": "copyparty", "devenv": "devenv", + "dms": "dms", + "expert": "expert", + "ghostty": "ghostty", "golink": "golink", - "home-manager": "home-manager_2", + "home-manager": "home-manager_3", "i3utils": "i3utils", + "niri": "niri", "nixgl": "nixgl", "nixpkgs": "nixpkgs", - "nixpkgs-stable": "nixpkgs-stable", + "nixpkgs-stable": "nixpkgs-stable_2", "zen-browser": "zen-browser", - "zig": "zig" + "zig": "zig_2" } }, "systems": { @@ -623,6 +905,21 @@ "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": [ @@ -645,9 +942,42 @@ "type": "github" } }, + "xwayland-satellite-stable": { + "flake": false, + "locked": { + "lastModified": 1755491097, + "narHash": "sha256-m+9tUfsmBeF2Gn4HWa6vSITZ4Gz1eA1F5Kh62B0N4oE=", + "owner": "Supreeeme", + "repo": "xwayland-satellite", + "rev": "388d291e82ffbc73be18169d39470f340707edaa", + "type": "github" + }, + "original": { + "owner": "Supreeeme", + "ref": "v0.7", + "repo": "xwayland-satellite", + "type": "github" + } + }, + "xwayland-satellite-unstable": { + "flake": false, + "locked": { + "lastModified": 1771787042, + "narHash": "sha256-7bM6Y4KldhKnfopSALF8XALxcX7ehkomXH9sPl4MXp0=", + "owner": "Supreeeme", + "repo": "xwayland-satellite", + "rev": "33c344fee50504089a447a8fef5878cf4f6215fc", + "type": "github" + }, + "original": { + "owner": "Supreeeme", + "repo": "xwayland-satellite", + "type": "github" + } + }, "zen-browser": { "inputs": { - "home-manager": "home-manager_3", + "home-manager": "home-manager_4", "nixpkgs": [ "nixpkgs" ] @@ -668,8 +998,37 @@ }, "zig": { "inputs": { - "flake-compat": "flake-compat_2", - "flake-utils": "flake-utils_4", + "flake-compat": [ + "ghostty", + "flake-compat" + ], + "flake-utils": [ + "ghostty", + "flake-utils" + ], + "nixpkgs": [ + "ghostty", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1763295135, + "narHash": "sha256-sGv/NHCmEnJivguGwB5w8LRmVqr1P72OjS+NzcJsssE=", + "owner": "mitchellh", + "repo": "zig-overlay", + "rev": "64f8b42cfc615b2cf99144adf2b7728c7847c72a", + "type": "github" + }, + "original": { + "owner": "mitchellh", + "repo": "zig-overlay", + "type": "github" + } + }, + "zig_2": { + "inputs": { + "flake-compat": "flake-compat_3", + "flake-utils": "flake-utils_5", "nixpkgs": "nixpkgs_2" }, "locked": { @@ -685,6 +1044,28 @@ "repo": "zig-overlay", "type": "github" } + }, + "zon2nix": { + "inputs": { + "nixpkgs": [ + "ghostty", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1768231828, + "narHash": "sha256-wL/8Iij4T2OLkhHcc4NieOjf7YeJffaUYbCiCqKv/+0=", + "owner": "jcollie", + "repo": "zon2nix", + "rev": "c28e93f3ba133d4c1b1d65224e2eebede61fd071", + "type": "github" + }, + "original": { + "owner": "jcollie", + "repo": "zon2nix", + "rev": "c28e93f3ba133d4c1b1d65224e2eebede61fd071", + "type": "github" + } } }, "root": "root", diff --git a/flake.nix b/flake.nix index b475706..a6bc39f 100644 --- a/flake.nix +++ b/flake.nix @@ -15,6 +15,15 @@ devenv.url = "github:cachix/devenv"; devenv.inputs.nixpkgs.follows = "nixpkgs"; + dms.url = "github:AvengeMedia/DankMaterialShell/stable"; + dms.inputs.nixpkgs.follows = "nixpkgs"; + + expert.url = "github:elixir-lang/expert"; + expert.inputs.nixpkgs.follows = "nixpkgs"; + + ghostty.url = "github:ghostty-org/ghostty"; + ghostty.inputs.nixpkgs.follows = "nixpkgs"; + golink.url = "github:tailscale/golink"; golink.inputs.nixpkgs.follows = "nixpkgs"; @@ -24,6 +33,9 @@ i3utils.url = "git+https://git.sr.ht/~dpatterbee/i3utils?ref=main"; i3utils.inputs.nixpkgs.follows = "nixpkgs"; + niri.url = "github:sodiboo/niri-flake"; + niri.inputs.nixpkgs.follows = "nixpkgs"; + nixgl.url = "github:/guibou/nixGL"; nixgl.inputs.nixpkgs.follows = "nixpkgs"; @@ -51,6 +63,7 @@ overlays = [ copyparty.overlays.default + inputs.ghostty.overlays.default golink.overlays.default nixgl.overlay zig.overlays.default @@ -108,6 +121,9 @@ copyparty.nixosModules.default + inputs.dms.nixosModules.dank-material-shell + inputs.niri.nixosModules.niri + golink.nixosModules.default home-manager.nixosModules.home-manager diff --git a/hosts/common/graphical/default.nix b/hosts/common/graphical/default.nix index 7e31674..bbfe07e 100644 --- a/hosts/common/graphical/default.nix +++ b/hosts/common/graphical/default.nix @@ -13,6 +13,10 @@ services.blueman.enable = lib.mkDefault true; programs.partition-manager.enable = true; + environment.systemPackages = with pkgs; [ + niri + ]; + networking = { networkmanager.enable = true; @@ -56,6 +60,11 @@ programs = { sway.enable = true; + niri = { + enable = true; + package = pkgs.niri; + }; + steam = { enable = true; }; @@ -74,16 +83,17 @@ }; displayManager.sddm = { - enable = true; + enable = false; package = lib.mkDefault pkgs.kdePackages.sddm; wayland.enable = true; # extraPackages = with pkgs; [(catppuccin-sddm.override {flavor = "macchiato";})]; theme = "maldives"; }; - # desktopManager.plasma6 = { - # enable = true; - # }; + displayManager.dms-greeter = { + enable = true; + compositor.name = "niri"; + }; pipewire = { enable = true; diff --git a/hosts/pingbox/configuration.nix b/hosts/pingbox/configuration.nix index 3717b1d..b2a5ccb 100644 --- a/hosts/pingbox/configuration.nix +++ b/hosts/pingbox/configuration.nix @@ -32,8 +32,6 @@ programs.kdeconnect.enable = true; - programs.niri.enable = true; - # programs.virt-manager.enable = true; # users.groups.libvirtd.members = ["daniel"]; diff --git a/hosts/sidon/configuration.nix b/hosts/sidon/configuration.nix index 886c0ee..29b12cd 100644 --- a/hosts/sidon/configuration.nix +++ b/hosts/sidon/configuration.nix @@ -40,7 +40,6 @@ specialisation = { niri.configuration = { - programs.niri.enable = true; }; plasma.configuration = { boot.loader.systemd-boot.sortKey = "default"; diff --git a/users/configs/desktop/niri/config.kdl b/users/configs/desktop/niri/config.kdl index cb11f0d..3f5f749 100644 --- a/users/configs/desktop/niri/config.kdl +++ b/users/configs/desktop/niri/config.kdl @@ -318,9 +318,13 @@ binds { // Suggested binds for running programs: terminal, app launcher, screen locker. Mod+T { spawn "ghostty"; } - // Mod+D { spawn "tofi-drun" "--drun-launch=true"; } + Ctrl+Shift+Alt+Return { spawn "ghostty"; } + Mod+D { spawn "fuzzel"; } + Ctrl+Shift+Alt+D {spawn "fuzzel"; } + Mod+Escape { spawn "swaylock" "-i" "~/wallpapers/lock.png"; } + Ctrl+Shift+Alt+Escape { spawn "swaylock" "-i" "~/wallpapers/lock.png"; } // You can also use a shell. Do this if you need pipes, multiple commands, etc. // Note: the entire command goes as a single argument in the end. @@ -340,6 +344,7 @@ binds { XF86MonBrightnessDown allow-when-locked=true { spawn "xbacklight" "-dec" "10"; } Mod+Q { close-window; } + Ctrl+Shift+Alt+Q { close-window; } Mod+Left { focus-column-left; } Mod+Down { focus-window-down; } @@ -350,6 +355,15 @@ binds { Mod+K { focus-window-up; } Mod+L { focus-column-right; } + Ctrl+Shift+Alt+Left { focus-column-left; } + Ctrl+Shift+Alt+Down { focus-window-down; } + Ctrl+Shift+Alt+Up { focus-window-up; } + Ctrl+Shift+Alt+Right { focus-column-right; } + Ctrl+Shift+Alt+H { focus-column-left; } + Ctrl+Shift+Alt+J { focus-window-down; } + Ctrl+Shift+Alt+K { focus-window-up; } + Ctrl+Shift+Alt+L { focus-column-right; } + Mod+Ctrl+Left { move-column-left; } Mod+Ctrl+Down { move-window-down; } Mod+Ctrl+Up { move-window-up; } @@ -494,10 +508,15 @@ binds { Mod+R { switch-preset-column-width; } Mod+Shift+R { switch-preset-window-height; } Mod+Ctrl+R { reset-window-height; } + Mod+F { maximize-column; } + Ctrl+Shift+Alt+F { maximize-column; } + Mod+Shift+F { fullscreen-window; } Mod+C { center-column; } + Ctrl+Shift+Alt+B { toggle-overview; } + // Finer width adjustments. // This command can also: // * set width in pixels: "1000" @@ -537,3 +556,8 @@ binds { // moving the mouse or pressing any other key. Mod+Shift+P { power-off-monitors; } } + +include "dms/colors.kdl" +include "dms/layout.kdl" +include "dms/alttab.kdl" +include "dms/binds.kdl" diff --git a/users/configs/desktop/niri/default.nix b/users/configs/desktop/niri/default.nix index 4102d31..06aa96a 100644 --- a/users/configs/desktop/niri/default.nix +++ b/users/configs/desktop/niri/default.nix @@ -1,5 +1,5 @@ {...}: { home.file = { - ".config/niri/config.kdl".source = ./config.kdl; + # ".config/niri/config.kdl".source = ./config.kdl; }; } diff --git a/users/configs/system/ghostty/default.nix b/users/configs/system/ghostty/default.nix index c90ac4f..a94d844 100644 --- a/users/configs/system/ghostty/default.nix +++ b/users/configs/system/ghostty/default.nix @@ -24,6 +24,8 @@ unfocused-split-opacity = 1; + quit-after-last-window-closed = false; + keybind = [ "ctrl+shift+enter>ctrl+shift+h=new_split:left" "ctrl+shift+enter>ctrl+shift+l=new_split:right" diff --git a/users/configs/system/helix/default.nix b/users/configs/system/helix/default.nix index 852913a..9120cfa 100644 --- a/users/configs/system/helix/default.nix +++ b/users/configs/system/helix/default.nix @@ -1,4 +1,8 @@ -{...}: { +{inputs, pkgs, ...}: { + home.packages = [ + inputs.expert.packages.${pkgs.system}.default + ]; + home.file.".config/helix" = { source = ./config; recursive = true; diff --git a/users/daniel/default.nix b/users/daniel/default.nix index 8841846..98443fa 100644 --- a/users/daniel/default.nix +++ b/users/daniel/default.nix @@ -11,7 +11,8 @@ age direnv elixir - elixir-ls + # elixir-ls + inputs.expert entr erlang gnumake @@ -81,6 +82,9 @@ in { ../configs/system ] ++ lib.optionals (!headless) [ + inputs.dms.homeModules.dank-material-shell + inputs.dms.homeModules.niri + # inputs.niri.homeModules.niri inputs.zen-browser.homeModules.beta ../configs/desktop ] @@ -145,11 +149,31 @@ in { services.udiskie = { enable = true; }; - + programs = { - # Let Home Manager install and manage itself. home-manager.enable = true; + dank-material-shell = { + enable = true; + + niri = { + enableSpawn = true; + }; + }; + + niri.settings = { + input = { + focus-follows-mouse.enable = true; + mouse = { + accel-profile = "flat"; + accel-speed = 0.2; + }; + }; + layout = { + default-column-width.proportion = 0.5; + }; + }; + emacs = { enable = true; };