This commit is contained in:
beanigen 2025-06-24 19:23:31 +08:00
parent b005035661
commit 91321fb3f6
No known key found for this signature in database
5 changed files with 300 additions and 30 deletions

View file

@ -2,7 +2,7 @@
# your system. Help is available in the configuration.nix(5) man page # your system. Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running nixos-help). # and in the NixOS manual (accessible by running nixos-help).
{ config, pkgs, ... }: { config, pkgs, inputs, ... }:
{ {
imports = imports =
@ -20,12 +20,13 @@
virtualisation.kvmgt = { virtualisation.kvmgt = {
enable = true; enable = true;
vgpus = { vgpus = {
"i915-GVTg_V4_8" = { "i915-GVTg_V4_4" = {
uuid = [ "b4c3049a-74a1-11ef-8112-df4a4be644fd" ]; uuid = [ "b4c3049a-74a1-11ef-8112-df4a4be644fd" ];
}; };
}; };
}; };
services.gvfs.enable = true; services.gvfs.enable = true;
security.sudo.package = pkgs.sudo.override { withInsults = true; };
programs.thunderbird.enable = true; programs.thunderbird.enable = true;
services.kmonad = { services.kmonad = {
enable = true; enable = true;
@ -100,6 +101,10 @@
NetworkManager.requires = ["ModemManager.service"]; NetworkManager.requires = ["ModemManager.service"];
}; };
programs.niri = {
enable = true;
package = inputs.niri.packages.${pkgs.stdenv.hostPlatform.system}.niri-unstable;
};
services.tlp.enable = true; services.tlp.enable = true;
services.tlp.settings = { services.tlp.settings = {
CPU_SCALING_GOVERNOR_ON_BAT = "ondemand"; CPU_SCALING_GOVERNOR_ON_BAT = "ondemand";
@ -185,9 +190,6 @@
xdg.portal = { xdg.portal = {
enable = true; enable = true;
wlr.enable = true;
extraPortals = [pkgs.xdg-desktop-portal-gtk];
config.common.default = "*";
}; };
# Configure network proxy if necessary # Configure network proxy if necessary
@ -279,6 +281,7 @@
protonvpn-gui protonvpn-gui
memtest86-efi memtest86-efi
edk2-uefi-shell edk2-uefi-shell
xwayland-satellite
# wget # wget
]; ];

170
flake.lock generated
View file

@ -96,11 +96,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1750127463, "lastModified": 1750730235,
"narHash": "sha256-K2xFtlD3PcKAZriOE3LaBLYmVfGQu+rIF4Jr1RFYR0Q=", "narHash": "sha256-rZErlxiV7ssvI8t7sPrKU+fRigNc2KvoKZG3gtUtK50=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "28eef8722d1af18ca13e687dbf485e1c653a0402", "rev": "d07e9cceb4994ed64a22b9b36f8b76923e87ac38",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -137,6 +137,62 @@
"type": "github" "type": "github"
} }
}, },
"niri": {
"inputs": {
"niri-stable": "niri-stable",
"niri-unstable": "niri-unstable",
"nixpkgs": "nixpkgs_2",
"nixpkgs-stable": "nixpkgs-stable",
"xwayland-satellite-stable": "xwayland-satellite-stable",
"xwayland-satellite-unstable": "xwayland-satellite-unstable"
},
"locked": {
"lastModified": 1750735687,
"narHash": "sha256-pscxcZpLGcEEJGVjFAM7X77cARABc7M+zVyUN6qsEmU=",
"owner": "sodiboo",
"repo": "niri-flake",
"rev": "a581a91b7406a0b9039ef22e37e5166bd3b1a139",
"type": "github"
},
"original": {
"owner": "sodiboo",
"repo": "niri-flake",
"type": "github"
}
},
"niri-stable": {
"flake": false,
"locked": {
"lastModified": 1748151941,
"narHash": "sha256-z4viQZLgC2bIJ3VrzQnR+q2F3gAOEQpU1H5xHtX/2fs=",
"owner": "YaLTeR",
"repo": "niri",
"rev": "8ba57fcf25d2fc9565131684a839d58703f1dae7",
"type": "github"
},
"original": {
"owner": "YaLTeR",
"ref": "v25.05.1",
"repo": "niri",
"type": "github"
}
},
"niri-unstable": {
"flake": false,
"locked": {
"lastModified": 1750684365,
"narHash": "sha256-BqtoSRCgmutJXnQFZs+KFMNvp3LuX6POIHjXIxWdlTE=",
"owner": "YaLTeR",
"repo": "niri",
"rev": "4c02f3bba451747c3f337f4c131b0c7f9ef41bb7",
"type": "github"
},
"original": {
"owner": "YaLTeR",
"repo": "niri",
"type": "github"
}
},
"nix-index-database": { "nix-index-database": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@ -144,11 +200,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1749960154, "lastModified": 1750565152,
"narHash": "sha256-EWlr9MZDd+GoGtZB4QsDzaLyaDQPGnRY03MFp6u2wSg=", "narHash": "sha256-A6ZIoIgaPPkzIVxKuaxwEJicPOeTwC/MD9iuC3FVhDM=",
"owner": "nix-community", "owner": "nix-community",
"repo": "nix-index-database", "repo": "nix-index-database",
"rev": "424a40050cdc5f494ec45e46462d288f08c64475", "rev": "78cd697acc2e492b4e92822a4913ffad279c20e6",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -193,19 +249,35 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs-stable": {
"locked": {
"lastModified": 1750622754,
"narHash": "sha256-kMhs+YzV4vPGfuTpD3mwzibWUE6jotw5Al2wczI0Pv8=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "c7ab75210cb8cb16ddd8f290755d9558edde7ee1",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-25.05",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-xr": { "nixpkgs-xr": {
"inputs": { "inputs": {
"flake-compat": "flake-compat", "flake-compat": "flake-compat",
"flake-utils": "flake-utils", "flake-utils": "flake-utils",
"nixpkgs": "nixpkgs_3", "nixpkgs": "nixpkgs_4",
"treefmt-nix": "treefmt-nix" "treefmt-nix": "treefmt-nix"
}, },
"locked": { "locked": {
"lastModified": 1750210361, "lastModified": 1750617326,
"narHash": "sha256-k9l3fLchd9STS8pnz03165ZxXPSL24cGJ7REq9Wp+6g=", "narHash": "sha256-5H83I4cCw1XAduNneFzJ4momXFbujNvhTaAdFUjPLgw=",
"owner": "nix-community", "owner": "nix-community",
"repo": "nixpkgs-xr", "repo": "nixpkgs-xr",
"rev": "d61bd4565e487503dd38b3fefed6c77ce6232323", "rev": "860b5a8c984f161d1d15bb7bd841a4cce1dc2c22",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -216,11 +288,11 @@
}, },
"nixpkgs_2": { "nixpkgs_2": {
"locked": { "locked": {
"lastModified": 1750134718, "lastModified": 1750506804,
"narHash": "sha256-v263g4GbxXv87hMXMCpjkIxd/viIF7p3JpJrwgKdNiI=", "narHash": "sha256-VLFNc4egNjovYVxDGyBYTrvVCgDYgENp5bVi9fPTDYc=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "9e83b64f727c88a7711a2c463a7b16eedb69a84c", "rev": "4206c4cb56751df534751b058295ea61357bbbaa",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -232,11 +304,11 @@
}, },
"nixpkgs_3": { "nixpkgs_3": {
"locked": { "locked": {
"lastModified": 1750134718, "lastModified": 1750506804,
"narHash": "sha256-v263g4GbxXv87hMXMCpjkIxd/viIF7p3JpJrwgKdNiI=", "narHash": "sha256-VLFNc4egNjovYVxDGyBYTrvVCgDYgENp5bVi9fPTDYc=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "9e83b64f727c88a7711a2c463a7b16eedb69a84c", "rev": "4206c4cb56751df534751b058295ea61357bbbaa",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -248,11 +320,27 @@
}, },
"nixpkgs_4": { "nixpkgs_4": {
"locked": { "locked": {
"lastModified": 1750122687, "lastModified": 1750365781,
"narHash": "sha256-zcGClfkXh4pckf4aGOZ18GFv73n1xHbdMWl17cPLouE=", "narHash": "sha256-XE/lFNhz5lsriMm/yjXkvSZz5DfvKJLUjsS6pP8EC50=",
"owner": "NixOS", "owner": "NixOS",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "c539ae8d21e49776966d714f82fba33b1fca78bc", "rev": "08f22084e6085d19bcfb4be30d1ca76ecb96fe54",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_5": {
"locked": {
"lastModified": 1750605355,
"narHash": "sha256-xT8cPLTxlktxI9vSdoBlAVK7dXgd8IK59j7ZwzkkhnI=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "3078b9a9e75f1790e6d6ef9955fdc6a2d1740cc6",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -265,16 +353,16 @@
"nixvim": { "nixvim": {
"inputs": { "inputs": {
"flake-parts": "flake-parts", "flake-parts": "flake-parts",
"nixpkgs": "nixpkgs_4", "nixpkgs": "nixpkgs_5",
"nuschtosSearch": "nuschtosSearch", "nuschtosSearch": "nuschtosSearch",
"systems": "systems_3" "systems": "systems_3"
}, },
"locked": { "locked": {
"lastModified": 1750204267, "lastModified": 1750751277,
"narHash": "sha256-d1Sf8RdT9DmaoF03GAFFSHX8jRu2MciFdAi8Ki26nX8=", "narHash": "sha256-wdUjRFiiHK8sDmntP1wLYZEqKgju8bGedwulu+myD6E=",
"owner": "nix-community", "owner": "nix-community",
"repo": "nixvim", "repo": "nixvim",
"rev": "aef7b53979b89cea9f5eaebf96c16d3bdae150e2", "rev": "3843b6226193bd2c40de0aea1343065b1bf9d3e4",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -310,9 +398,10 @@
"inputs": { "inputs": {
"catppuccin": "catppuccin", "catppuccin": "catppuccin",
"home-manager": "home-manager", "home-manager": "home-manager",
"niri": "niri",
"nix-index-database": "nix-index-database", "nix-index-database": "nix-index-database",
"nix-system-graphics": "nix-system-graphics", "nix-system-graphics": "nix-system-graphics",
"nixpkgs": "nixpkgs_2", "nixpkgs": "nixpkgs_3",
"nixpkgs-xr": "nixpkgs-xr", "nixpkgs-xr": "nixpkgs-xr",
"nixvim": "nixvim", "nixvim": "nixvim",
"system-manager": "system-manager" "system-manager": "system-manager"
@ -403,6 +492,39 @@
"repo": "treefmt-nix", "repo": "treefmt-nix",
"type": "github" "type": "github"
} }
},
"xwayland-satellite-stable": {
"flake": false,
"locked": {
"lastModified": 1748488455,
"narHash": "sha256-IiLr1alzKFIy5tGGpDlabQbe6LV1c9ABvkH6T5WmyRI=",
"owner": "Supreeeme",
"repo": "xwayland-satellite",
"rev": "3ba30b149f9eb2bbf42cf4758d2158ca8cceef73",
"type": "github"
},
"original": {
"owner": "Supreeeme",
"ref": "v0.6",
"repo": "xwayland-satellite",
"type": "github"
}
},
"xwayland-satellite-unstable": {
"flake": false,
"locked": {
"lastModified": 1750686869,
"narHash": "sha256-FS/rYXd96VBtKNJRTV2xTpTk8CgrYP+lFsFj0+VKgoY=",
"owner": "Supreeeme",
"repo": "xwayland-satellite",
"rev": "117af56a83e2d1d25016fbd504a2a040babe586a",
"type": "github"
},
"original": {
"owner": "Supreeeme",
"repo": "xwayland-satellite",
"type": "github"
}
} }
}, },
"root": "root", "root": "root",

View file

@ -8,6 +8,7 @@
catppuccin.url = "github:catppuccin/nix"; catppuccin.url = "github:catppuccin/nix";
nixpkgs-xr.url = "github:nix-community/nixpkgs-xr"; nixpkgs-xr.url = "github:nix-community/nixpkgs-xr";
nixvim.url = "github:nix-community/nixvim"; nixvim.url = "github:nix-community/nixvim";
niri.url = "github:sodiboo/niri-flake";
nix-index-database.url = "github:nix-community/nix-index-database"; nix-index-database.url = "github:nix-community/nix-index-database";
nix-index-database.inputs.nixpkgs.follows = "nixpkgs"; nix-index-database.inputs.nixpkgs.follows = "nixpkgs";
system-manager = { system-manager = {
@ -20,7 +21,7 @@
}; };
}; };
outputs = inputs@{ self, nixpkgs, home-manager, system-manager, nixpkgs-xr, ...}:{ outputs = inputs@{ self, nixpkgs, home-manager, system-manager, niri, nixpkgs-xr, ...}:{
nixosConfigurations."apollo" = nixpkgs.lib.nixosSystem { nixosConfigurations."apollo" = nixpkgs.lib.nixosSystem {
system = "x86_64-linux"; system = "x86_64-linux";
modules = [ modules = [
@ -45,8 +46,10 @@
}; };
nixosConfigurations."callisto" = nixpkgs.lib.nixosSystem { nixosConfigurations."callisto" = nixpkgs.lib.nixosSystem {
system = "x86_64-linux"; system = "x86_64-linux";
specialArgs = {inherit inputs;};
modules = [ modules = [
./base/callisto ./base/callisto
niri.nixosModules.niri
home-manager.nixosModules.home-manager { home-manager.nixosModules.home-manager {
home-manager.extraSpecialArgs = { home-manager.extraSpecialArgs = {
inherit inputs; inherit inputs;

141
home/niri.nix Normal file
View file

@ -0,0 +1,141 @@
{lib, osConfig, pkgs, inputs, vars, config, ...}:{
programs.niri = {
settings = {
prefer-no-csd = true;
input.focus-follows-mouse.enable = true;
binds = with config.lib.niri.actions; {
"Mod+Return".action = spawn "foot";
"XF86AudioRaiseVolume".action = spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "5%+";
"XF86AudioLowerVolume".action = spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "5%-";
"XF86AudioMute".action = spawn "wpctl" "set-mute" "@DEFAULT_AUDIO_SINK@" "toggle";
"Mod+S".action = spawn "foot" "--title" "launch" "--app-id" "fzf-launcher-foot" "bash" "-c" "niri msg action spawn -- bash -c \"$(compgen -c | sort -u | fzf --bind=enter:replace-query+print-query) >/dev/null\"";
"Mod+W".action = spawn "hyprlock";
"Mod+T".action = spawn "foot" "--title" "music" "--app-id" "mpd-control-foot" "ncmpcpp";
"Mod+Shift+Q" = {
repeat = false;
action = close-window;
};
"Mod+Y" = {
repeat = false;
action = toggle-overview;
};
"Mod+Left".action = focus-column-left;
"Mod+Down".action = focus-window-down;
"Mod+Up".action = focus-window-up;
"Mod+Right".action = focus-column-right;
"Mod+H".action = focus-column-left;
"Mod+N".action = focus-window-down;
"Mod+E".action = focus-window-up;
"Mod+I".action = focus-column-right;
"Mod+Shift+Left".action = move-column-left;
"Mod+Shift+Down".action = move-window-down;
"Mod+Shift+Up".action = move-window-up;
"Mod+Shift+Right".action = move-column-right;
"Mod+Shift+H".action = move-column-left;
"Mod+Shift+N".action = move-window-down;
"Mod+Shift+E".action = move-window-up;
"Mod+Shift+I".action = move-column-right;
"Mod+Home".action = focus-column-first;
"Mod+End".action = focus-column-last;
"Mod+Shift+Home".action = move-column-to-first;
"Mod+Shift+End".action = move-column-to-last;
"Print".action = screenshot;
"Ctrl+Print".action = screenshot-window;
"Mod+Shift+F".action = quit;
"Mod+Shift+T".action = power-off-monitors;
"Mod+Shift+Space".action = toggle-window-floating;
"Mod+Shift+V".action = switch-focus-between-floating-and-tiling;
"Mod+F".action = maximize-column;
"Mod+Alt+F".action = fullscreen-window;
"Mod+Ctrl+F".action = expand-column-to-available-width;
"Mod+1".action = focus-workspace 1;
"Mod+2".action = focus-workspace 2;
"Mod+3".action = focus-workspace 3;
"Mod+4".action = focus-workspace 4;
"Mod+5".action = focus-workspace 5;
"Mod+6".action = focus-workspace 6;
"Mod+7".action = focus-workspace 7;
"Mod+8".action = focus-workspace 8;
"Mod+9".action = focus-workspace 9;
"Mod+Ctrl+Left".action = focus-monitor-left;
"Mod+Ctrl+Down".action = focus-monitor-down;
"Mod+Ctrl+Up".action = focus-monitor-up;
"Mod+Ctrl+Right".action = focus-monitor-right;
"Mod+Ctrl+H".action = focus-monitor-left;
"Mod+Ctrl+N".action = focus-monitor-down;
"Mod+Ctrl+E".action = focus-monitor-up;
"Mod+Ctrl+I".action = focus-monitor-right;
"Mod+Shift+Ctrl+Left".action = move-column-to-monitor-left;
"Mod+Shift+Ctrl+Down".action = move-column-to-monitor-down;
"Mod+Shift+Ctrl+Up".action = move-column-to-monitor-up;
"Mod+Shift+Ctrl+Right".action = move-column-to-monitor-right;
"Mod+Shift+Ctrl+H".action = move-column-to-monitor-left;
"Mod+Shift+Ctrl+N".action = move-column-to-monitor-down;
"Mod+Shift+Ctrl+E".action = move-column-to-monitor-up;
"Mod+Shift+Ctrl+I".action = move-column-to-monitor-right;
"Mod+Page_Down".action = focus-workspace-down;
"Mod+Page_Up".action = focus-workspace-up;
"Mod+L".action = focus-workspace-down;
"Mod+U".action = focus-workspace-up;
"Mod+Ctrl+Page_Down".action = focus-workspace-down;
"Mod+Ctrl+Page_Up".action = move-column-to-workspace-up;
"Mod+Ctrl+L".action = move-column-to-workspace-down;
"Mod+Ctrl+U".action = move-column-to-workspace-up;
"Mod+Shift+Page_Down".action = move-workspace-down;
"Mod+Shift+Page_Up".action = move-workspace-up;
"Mod+Shift+L".action = move-workspace-down;
"Mod+Shift+U".action = move-workspace-up;
"Mod+Comma".action = consume-window-into-column;
"Mod+Period".action = expel-window-from-column;
"Mod+P".action = switch-preset-column-width;
"Mod+Shift+P".action = switch-preset-window-height;
"Mod+Ctrl+P".action = reset-window-height;
"Mod+C".action = center-column;
"Mod+Ctrl+C".action = center-visible-columns;
"Mod+Minus".action = set-column-width "-10%";
"Mod+Equal".action = set-column-width "+10%";
"Mod+Shift+Minus".action = set-window-height "-10%";
"Mod+Shift+Equal".action = set-window-height "+10%";
};
spawn-at-startup = [
{command = ["waybar"];}
{command = ["xwayland-satellite"];}
{command = ["swaybg" "-m" "fill" "-i" "~/.config/nixos/assets/twilight.png"];}
];
environment = {
DISPLAY = ":0";
};
window-rules = [
{matches = [{title = "^launch$";}];
open-floating = true;
}
{matches = [{title = "^music$";}];
open-floating = true;
}
{matches = [{title = "^(Picture-in-Picture)$";}];
open-floating = true;
}
{matches = [{title = "^music$";}];
open-floating = true;
}
{
geometry-corner-radius = {
bottom-left = 12.0;
bottom-right = 12.0;
top-left = 12.0;
top-right = 12.0;
};
draw-border-with-background = false;
clip-to-geometry = true;
}
];
layout = {
focus-ring = {
enable = true;
active = {color = "rgb(203 166 247)";};
inactive = {color = "rgb(68 12 136)";};
};
};
};
};
}

View file

@ -3,6 +3,7 @@
package = pkgs.swayfx; package = pkgs.swayfx;
enable = true; enable = true;
checkConfig = false; #gles2 renderer error checkConfig = false; #gles2 renderer error
extraSessionCommands = "export WLR_DRM_DEVICES=/dev/dri/card1";
extraConfig = if (vars.class != "lowspec") then import ./swayfx else ""; extraConfig = if (vars.class != "lowspec") then import ./swayfx else "";
config = { config = {
modifier = "Mod4"; modifier = "Mod4";