Compare commits

..

1 Commits

Author SHA1 Message Date
dichgrem
7683a7c148 build:update_flake
fix:zellij
remove:sudo-rs
add:bat&&wget
2025-11-12 17:32:50 +08:00
37 changed files with 863 additions and 813 deletions

View File

@@ -5,80 +5,79 @@ hostname := `hostname`
username := `whoami` username := `whoami`
@anywhere input: anywhere input:
# Perform nixos-anywhere install # Perform nixos-anywhere install
nix run github:nix-community/nixos-anywhere -- --generate-hardware-config nixos-generate-config ./hosts/{{input}}/hardware.nix --flake .#{{input}} --target-host root@{{input}} nix run github:nix-community/nixos-anywhere -- --generate-hardware-config nixos-generate-config ./hosts/{{input}}/hardware.nix --flake .#{{input}} --target-host root@{{input}}
@anywhere-lb input: anywhere-lb input:
# Perform nixos-anywhere install (local builder) # Perform nixos-anywhere install (local builder)
nix run github:nix-community/nixos-anywhere -- --generate-hardware-config nixos-generate-config ./hosts/{{input}}/hardware.nix --flake .#{{input}} --target-host root@{{input}} --build-on local nix run github:nix-community/nixos-anywhere -- --generate-hardware-config nixos-generate-config ./hosts/{{input}}/hardware.nix --flake .#{{input}} --target-host root@{{input}} --build-on local
@anywhere-vm input: anywhere-vm input:
# Test nixos-anywhere install in vm # Test nixos-anywhere install in vm
nix run github:nix-community/nixos-anywhere -- --flake .#{{input}} --vm-test nix run github:nix-community/nixos-anywhere -- --flake .#{{input}} --vm-test
@build input: build input:
# Build # Build
sudo nixos-rebuild build --flake .#{{input}} --show-trace -L -v sudo nixos-rebuild build --flake .#{{input}} --show-trace -L -v
@build-vm input: build-vm input:
# Build a vm # Build a vm
sudo nixos-rebuild build-vm --flake .#{{input}} --show-trace -L -v sudo nixos-rebuild build-vm --flake .#{{input}} --show-trace -L -v
@switch input: clean:
# Let system rebuild and switch
sudo nixos-rebuild switch --flake .#{{input}} --show-trace -L -v
@clean:
# Remove useless nix-channel files # Remove useless nix-channel files
sudo rm -rf /nix/var/nix/profiles/per-user/root/channels /root/.nix-defexpr/channels sudo rm -rf /nix/var/nix/profiles/per-user/root/channels /root/.nix-defexpr/channels
@gc: format:
# Use alejandra and deadnix to format code
deadnix -e
alejandra .
gc:
# Do garbage-clean (remove unused packages, etc) # Do garbage-clean (remove unused packages, etc)
sudo nix profile wipe-history --older-than 7d --profile /nix/var/nix/profiles/system sudo nix profile wipe-history --older-than 7d --profile /nix/var/nix/profiles/system
sudo nix-collect-garbage --delete-old sudo nix-collect-garbage --delete-old
@ghc: ghc:
# Generate hardware.nix # Generate hardware.nix
nixos-generate-config --show-hardware-config > ./hosts/{{hostname}}/hardware.nix nixos-generate-config --show-hardware-config > ./hosts/{{hostname}}/hardware.nix
@install: install:
# Install this flake # Install this flake
bash install.sh bash install.sh
@cat: list:
# List system packages # List system packages
nix-store -qR /run/current-system | cat nix-store -qR /run/current-system | cat
@list: profile:
sudo nix-env -p /nix/var/nix/profiles/system --list-generations # Show system profile
sudo nix profile history --profile /nix/var/nix/profiles/system
@diff: switch input:
sudo nix profile diff-closures --profile /nix/var/nix/profiles/system # Let system rebuild and switch
sudo nixos-rebuild switch --flake .#{{input}} --show-trace -L -v
@delete generation: update:
sudo nix-env -p /nix/var/nix/profiles/system --delete-generations {{generation}}
@update:
# Update flake.lock # Update flake.lock
nix flake update --extra-experimental-features flakes --extra-experimental-features nix-command --show-trace nix flake update --extra-experimental-features flakes --extra-experimental-features nix-command --show-trace
@upgrade: upgrade:
# Let system totally upgrade # Let system totally upgrade
## Set hostname and username in flake.nix ## Set hostname and username in flake.nix
sed -i "/^\s*hostname[[:space:]]*=[[:space:]]*\"/s/\"\(.*\)\"/\"{{hostname}}\"/" ./flake.nix sed -i "/^\s*hostname[[:space:]]*=[[:space:]]*\"/s/\"\(.*\)\"/\"{{hostname}}\"/" ./flake.nix
@@ -88,7 +87,7 @@ username := `whoami`
sudo nixos-rebuild switch --flake .#{{hostname}} --show-trace sudo nixos-rebuild switch --flake .#{{hostname}} --show-trace
@upgrade-debug: upgrade-debug:
# Let system totally upgrade (deBug Mode) # Let system totally upgrade (deBug Mode)
## Set hostname and username in flake.nix ## Set hostname and username in flake.nix
sed -i "/^\s*hostname[[:space:]]*=[[:space:]]*\"/s/\"\(.*\)\"/\"{{hostname}}\"/" ./flake.nix sed -i "/^\s*hostname[[:space:]]*=[[:space:]]*\"/s/\"\(.*\)\"/\"{{hostname}}\"/" ./flake.nix

View File

@@ -22,7 +22,7 @@ bind = Ctrl_ALT, B, exec, pkill waybar;sleep 1;waybar # Status Bar
## Shortcuts ## Shortcuts
### Browser ### Browser
bind = SUPER, B, exec, firefox bind = SUPER, B, exec, floorp
### Lock-window ### Lock-window
bind = SUPER, L, exec, hyprlock bind = SUPER, L, exec, hyprlock
### File Explorer ### File Explorer

View File

@@ -1,6 +1,6 @@
input { input {
disable-power-key-handling disable-power-key-handling
focus-follows-mouse max-scroll-amount="0%" focus-follows-mouse
warp-mouse-to-focus warp-mouse-to-focus
mouse { mouse {
@@ -24,7 +24,7 @@ binds {
// Shortcuts // Shortcuts
Super+Shift+Slash { show-hotkey-overlay; } Super+Shift+Slash { show-hotkey-overlay; }
Super+E { spawn "nemo"; } Super+E { spawn "nemo"; }
Super+B { spawn "firefox";} Super+B { spawn "floorp";}
Super+L { spawn "hyprlock";} Super+L { spawn "hyprlock";}
Super+M { spawn-sh "$HOME/.config/niri/switch_monitors.sh"; } Super+M { spawn-sh "$HOME/.config/niri/switch_monitors.sh"; }
Ctrl+Super+Q { spawn "wlogout"; } Ctrl+Super+Q { spawn "wlogout"; }
@@ -181,8 +181,9 @@ binds {
environment { environment {
CURRENT_COMPOSITOR "niri" CURRENT_COMPOSITOR "niri"
XDG_CURRENT_DESKTOP "Niri" DISPLAY ":0"
XDG_SESSION_DESKTOP "Niri" XDG_CURRENT_DESKTOP "niri"
XDG_SESSION_DESKTOP "niri"
} }
@@ -200,7 +201,7 @@ spawn-at-startup "blueman-applet"
spawn-at-startup "sh" "-c" "dbus-update-activation-environment --systemd --all && systemctl --user stop niri-session.target && systemctl --user start niri-session.target" spawn-at-startup "sh" "-c" "dbus-update-activation-environment --systemd --all && systemctl --user stop niri-session.target && systemctl --user start niri-session.target"
spawn-at-startup "swayosd-server" spawn-at-startup "swayosd-server"
spawn-at-startup "swww-daemon" spawn-at-startup "swww-daemon"
spawn-at-startup "swww" "img" "$HOME/Git/DCGOS/dotfiles/.local/share/wallpapers/yohoho.jpg" spawn-at-startup "sh" "-c" "sleep 1 && swww img $HOME/Git/DCGOS/dotfiles/.local/share/wallpapers/yohoho.jpg"
spawn-at-startup "swww" "restore" spawn-at-startup "swww" "restore"
spawn-at-startup "waybar" spawn-at-startup "waybar"
spawn-at-startup "lxqt-policykit-agent" spawn-at-startup "lxqt-policykit-agent"

View File

@@ -48,7 +48,3 @@ echo "$NEXT_MODE" > "$STATE_FILE"
# 刷新 Niri 布局(防止残影) # 刷新 Niri 布局(防止残影)
sleep 0.5 sleep 0.5
niri msg reload-layout >/dev/null 2>&1 || true niri msg reload-layout >/dev/null 2>&1 || true
pkill swayosd-server
(swayosd-server &>/dev/null &)
pkill wl-gammarelay-rs
(wl-gammarelay-rs &>/dev/null &)

View File

@@ -10,7 +10,7 @@
"custom/startmenu", "custom/startmenu",
"backlight", "backlight",
"wireplumber", "wireplumber",
"custom/wl-gammarelay-brightness", "battery",
"hyprland/workspaces", "hyprland/workspaces",
"niri/workspaces", "niri/workspaces",
"sway/workspaces" "sway/workspaces"
@@ -21,9 +21,9 @@
"modules-right": [ "modules-right": [
"custom/screenshot", "custom/screenshot",
"tray", "tray",
"custom/wl-gammarelay-brightness",
// "custom/wl-gammarelay-temperature", // "custom/wl-gammarelay-temperature",
"clock", "clock",
"battery",
"custom/swaync", "custom/swaync",
], ],
@@ -182,3 +182,4 @@
"escape": true, "escape": true,
}, },
} }

View File

@@ -131,27 +131,3 @@ tooltip label {
padding-right: 8px; padding-right: 8px;
padding-left: 10px; padding-left: 10px;
} }
#custom-startmenu {
color: @overlay2;
}
#wireplumber {
color: @green;
}
#custom-wl-gammarelay-brightness {
color: @sapphire;
}
#custom-wl-gammarelay-temperature {
color: @teal;
}
#custom-swaync {
color: @overlay2;
}
#wlr-taskbar {
color: @subtext0;
}

467
flake.lock generated
View File

@@ -21,28 +21,28 @@
"base16-fish": { "base16-fish": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1765809053, "lastModified": 1754405784,
"narHash": "sha256-XCUQLoLfBJ8saWms2HCIj4NEN+xNsWBlU1NrEPcQG4s=", "narHash": "sha256-l9xHIy+85FN+bEo6yquq2IjD1rSg9fjfjpyGP1W8YXo=",
"owner": "tomyun", "owner": "tomyun",
"repo": "base16-fish", "repo": "base16-fish",
"rev": "86cbea4dca62e08fb7fd83a70e96472f92574782", "rev": "23ae20a0093dca0d7b39d76ba2401af0ccf9c561",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "tomyun", "owner": "tomyun",
"repo": "base16-fish", "repo": "base16-fish",
"rev": "86cbea4dca62e08fb7fd83a70e96472f92574782", "rev": "23ae20a0093dca0d7b39d76ba2401af0ccf9c561",
"type": "github" "type": "github"
} }
}, },
"base16-helix": { "base16-helix": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1760703920, "lastModified": 1752979451,
"narHash": "sha256-m82fGUYns4uHd+ZTdoLX2vlHikzwzdu2s2rYM2bNwzw=", "narHash": "sha256-0CQM+FkYy0fOO/sMGhOoNL80ftsAzYCg9VhIrodqusM=",
"owner": "tinted-theming", "owner": "tinted-theming",
"repo": "base16-helix", "repo": "base16-helix",
"rev": "d646af9b7d14bff08824538164af99d0c521b185", "rev": "27cf1e66e50abc622fb76a3019012dc07c678fac",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -68,6 +68,48 @@
"type": "github" "type": "github"
} }
}, },
"chaotic": {
"inputs": {
"flake-schemas": "flake-schemas",
"home-manager": "home-manager",
"jovian": "jovian",
"nixpkgs": "nixpkgs",
"rust-overlay": "rust-overlay"
},
"locked": {
"lastModified": 1762736304,
"narHash": "sha256-IZh6dOZf22la7rF23WwQ4y7ncrciqKqT0CUJ6abEAIk=",
"owner": "chaotic-cx",
"repo": "nyx",
"rev": "45073419e0a46bf106f025858e93b633e255e402",
"type": "github"
},
"original": {
"owner": "chaotic-cx",
"ref": "nyxpkgs-unstable",
"repo": "nyx",
"type": "github"
}
},
"daeuniverse": {
"inputs": {
"flake-parts": "flake-parts",
"nixpkgs": "nixpkgs_2"
},
"locked": {
"lastModified": 1762203410,
"narHash": "sha256-+WqPI5Il43oI2/TMUrZUzzReLW/dnWM6GNqrekDXgos=",
"owner": "daeuniverse",
"repo": "flake.nix",
"rev": "effa0f113add0f982a657f5bce92bac503b542b6",
"type": "github"
},
"original": {
"owner": "daeuniverse",
"repo": "flake.nix",
"type": "github"
}
},
"disko": { "disko": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@@ -75,11 +117,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1765794845, "lastModified": 1762276996,
"narHash": "sha256-YD5QWlGnusNbZCqR3pxG8tRxx9yUXayLZfAJRWspq2s=", "narHash": "sha256-TtcPgPmp2f0FAnc+DMEw4ardEgv1SGNR3/WFGH0N19M=",
"owner": "nix-community", "owner": "nix-community",
"repo": "disko", "repo": "disko",
"rev": "7194cfe5b7a3660726b0fe7296070eaef601cae9", "rev": "af087d076d3860760b3323f6b583f4d828c1ac17",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -91,11 +133,11 @@
"firefox-gnome-theme": { "firefox-gnome-theme": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1764724327, "lastModified": 1758112371,
"narHash": "sha256-OkFLrD3pFR952TrjQi1+Vdj604KLcMnkpa7lkW7XskI=", "narHash": "sha256-lizRM2pj6PHrR25yimjyFn04OS4wcdbc38DCdBVa2rk=",
"owner": "rafaelmardojai", "owner": "rafaelmardojai",
"repo": "firefox-gnome-theme", "repo": "firefox-gnome-theme",
"rev": "66b7c635763d8e6eb86bd766de5a1e1fbfcc1047", "rev": "0909cfe4a2af8d358ad13b20246a350e14c2473d",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -105,6 +147,45 @@
} }
}, },
"flake-parts": { "flake-parts": {
"inputs": {
"nixpkgs-lib": "nixpkgs-lib"
},
"locked": {
"lastModified": 1738453229,
"narHash": "sha256-7H9XgNiGLKN1G1CgRh0vUL4AheZSYzPm+zmZ7vxbJdo=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "32ea77a06711b758da0ad9bd6a844c5740a87abd",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"flake-parts_2": {
"inputs": {
"nixpkgs-lib": [
"nixvim",
"nixpkgs"
]
},
"locked": {
"lastModified": 1762440070,
"narHash": "sha256-xxdepIcb39UJ94+YydGP221rjnpkDZUlykKuF54PsqI=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "26d05891e14c88eb4a5d5bee659c0db5afb609d8",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"flake-parts_3": {
"inputs": { "inputs": {
"nixpkgs-lib": [ "nixpkgs-lib": [
"stylix", "stylix",
@@ -112,11 +193,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1763759067, "lastModified": 1756770412,
"narHash": "sha256-LlLt2Jo/gMNYAwOgdRQBrsRoOz7BPRkzvNaI/fzXi2Q=", "narHash": "sha256-+uWLQZccFHwqpGqr2Yt5VsW/PbeJVTn9Dk6SHWhNRPw=",
"owner": "hercules-ci", "owner": "hercules-ci",
"repo": "flake-parts", "repo": "flake-parts",
"rev": "2cccadc7357c0ba201788ae99c4dfa90728ef5e0", "rev": "4524271976b625a4a605beefd893f270620fd751",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -125,6 +206,38 @@
"type": "github" "type": "github"
} }
}, },
"flake-schemas": {
"locked": {
"lastModified": 1721999734,
"narHash": "sha256-G5CxYeJVm4lcEtaO87LKzOsVnWeTcHGKbKxNamNWgOw=",
"rev": "0a5c42297d870156d9c57d8f99e476b738dcd982",
"revCount": 75,
"type": "tarball",
"url": "https://api.flakehub.com/f/pinned/DeterminateSystems/flake-schemas/0.1.5/0190ef2f-61e0-794b-ba14-e82f225e55e6/source.tar.gz"
},
"original": {
"type": "tarball",
"url": "https://flakehub.com/f/DeterminateSystems/flake-schemas/%3D0.1.5.tar.gz"
}
},
"flake-utils": {
"inputs": {
"systems": "systems"
},
"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"
}
},
"fromYaml": { "fromYaml": {
"flake": false, "flake": false,
"locked": { "locked": {
@@ -144,34 +257,53 @@
"gnome-shell": { "gnome-shell": {
"flake": false, "flake": false,
"locked": { "locked": {
"host": "gitlab.gnome.org", "lastModified": 1748186689,
"lastModified": 1764524476, "narHash": "sha256-UaD7Y9f8iuLBMGHXeJlRu6U1Ggw5B9JnkFs3enZlap0=",
"narHash": "sha256-bTmNn3Q4tMQ0J/P0O5BfTQwqEnCiQIzOGef9/aqAZvk=",
"owner": "GNOME", "owner": "GNOME",
"repo": "gnome-shell", "repo": "gnome-shell",
"rev": "c0e1ad9f0f703fd0519033b8f46c3267aab51a22", "rev": "8c88f917db0f1f0d80fa55206c863d3746fa18d0",
"type": "gitlab" "type": "github"
}, },
"original": { "original": {
"host": "gitlab.gnome.org",
"owner": "GNOME", "owner": "GNOME",
"ref": "gnome-49", "ref": "48.2",
"repo": "gnome-shell", "repo": "gnome-shell",
"type": "gitlab" "type": "github"
} }
}, },
"home-manager": { "home-manager": {
"inputs": {
"nixpkgs": [
"chaotic",
"nixpkgs"
]
},
"locked": {
"lastModified": 1762661401,
"narHash": "sha256-SVmijc8t23UMwru5f/9X1Ak5bSwvYkm0OQ5SxR7hOB0=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "c053d701d64f0727f62e0269c7940da5805bc9bc",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "home-manager",
"type": "github"
}
},
"home-manager_2": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
"nixpkgs" "nixpkgs"
] ]
}, },
"locked": { "locked": {
"lastModified": 1765980955, "lastModified": 1762787259,
"narHash": "sha256-rB45jv4uwC90vM9UZ70plfvY/2Kdygs+zlQ07dGQFk4=", "narHash": "sha256-t2U/GLLXHa2+kJkwnFNRVc2fEJ/lUfyZXBE5iKzJdcs=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "89c9508bbe9b40d36b3dc206c2483ef176f15173", "rev": "37a3d97f2873e0f68711117c34d04b7c7ead8f4e",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -180,13 +312,130 @@
"type": "github" "type": "github"
} }
}, },
"ixx": {
"inputs": {
"flake-utils": [
"nixvim",
"nuschtosSearch",
"flake-utils"
],
"nixpkgs": [
"nixvim",
"nuschtosSearch",
"nixpkgs"
]
},
"locked": {
"lastModified": 1754860581,
"narHash": "sha256-EM0IE63OHxXCOpDHXaTyHIOk2cNvMCGPqLt/IdtVxgk=",
"owner": "NuschtOS",
"repo": "ixx",
"rev": "babfe85a876162c4acc9ab6fb4483df88fa1f281",
"type": "github"
},
"original": {
"owner": "NuschtOS",
"ref": "v0.1.1",
"repo": "ixx",
"type": "github"
}
},
"jovian": {
"inputs": {
"nix-github-actions": "nix-github-actions",
"nixpkgs": [
"chaotic",
"nixpkgs"
]
},
"locked": {
"lastModified": 1762452596,
"narHash": "sha256-Iaga+mkwWnWa6FxsAYknpHzeP344VCKGkdudX420LgA=",
"owner": "Jovian-Experiments",
"repo": "Jovian-NixOS",
"rev": "99919fd35e70c1b18ce948d5329928d751031312",
"type": "github"
},
"original": {
"owner": "Jovian-Experiments",
"repo": "Jovian-NixOS",
"type": "github"
}
},
"nix-github-actions": {
"inputs": {
"nixpkgs": [
"chaotic",
"jovian",
"nixpkgs"
]
},
"locked": {
"lastModified": 1729697500,
"narHash": "sha256-VFTWrbzDlZyFHHb1AlKRiD/qqCJIripXKiCSFS8fAOY=",
"owner": "zhaofengli",
"repo": "nix-github-actions",
"rev": "e418aeb728b6aa5ca8c5c71974e7159c2df1d8cf",
"type": "github"
},
"original": {
"owner": "zhaofengli",
"ref": "matrix-name",
"repo": "nix-github-actions",
"type": "github"
}
},
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1765779637, "lastModified": 1762596750,
"narHash": "sha256-KJ2wa/BLSrTqDjbfyNx70ov/HdgNBCBBSQP3BIzKnv4=", "narHash": "sha256-rXXuz51Bq7DHBlfIjN7jO8Bu3du5TV+3DSADBX7/9YQ=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "b6a8526db03f735b89dd5ff348f53f752e7ddc8e",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs-lib": {
"locked": {
"lastModified": 1738452942,
"narHash": "sha256-vJzFZGaCpnmo7I6i416HaBLpC+hvcURh/BQwROcGIp8=",
"type": "tarball",
"url": "https://github.com/NixOS/nixpkgs/archive/072a6db25e947df2f31aab9eccd0ab75d5b2da11.tar.gz"
},
"original": {
"type": "tarball",
"url": "https://github.com/NixOS/nixpkgs/archive/072a6db25e947df2f31aab9eccd0ab75d5b2da11.tar.gz"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1739866667,
"narHash": "sha256-EO1ygNKZlsAC9avfcwHkKGMsmipUk1Uc0TbrEZpkn64=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "73cf49b8ad837ade2de76f87eb53fc85ed5d4680",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_3": {
"locked": {
"lastModified": 1762596750,
"narHash": "sha256-rXXuz51Bq7DHBlfIjN7jO8Bu3du5TV+3DSADBX7/9YQ=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "1306659b587dc277866c7b69eb97e5f07864d8c4", "rev": "b6a8526db03f735b89dd5ff348f53f752e7ddc8e",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -196,6 +445,45 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs_4": {
"locked": {
"lastModified": 1758690382,
"narHash": "sha256-NY3kSorgqE5LMm1LqNwGne3ZLMF2/ILgLpFr1fS4X3o=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "e643668fd71b949c53f8626614b21ff71a07379d",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixvim": {
"inputs": {
"flake-parts": "flake-parts_2",
"nixpkgs": [
"nixpkgs"
],
"nuschtosSearch": "nuschtosSearch",
"systems": "systems_2"
},
"locked": {
"lastModified": 1762789067,
"narHash": "sha256-z0VQRaEARqF5eARuAFhDixV+g5B+5IJ1iDKSUM+5EIY=",
"owner": "nix-community",
"repo": "nixvim",
"rev": "2dc09e09cc65026f0899cc50291e244ee24835d3",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nixvim",
"type": "github"
}
},
"nur": { "nur": {
"inputs": { "inputs": {
"flake-parts": [ "flake-parts": [
@@ -208,11 +496,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1764773531, "lastModified": 1758998580,
"narHash": "sha256-mCBl7MD1WZ7yCG6bR9MmpPO2VydpNkWFgnslJRIT1YU=", "narHash": "sha256-VLx0z396gDCGSiowLMFz5XRO/XuNV+4EnDYjdJhHvUk=",
"owner": "nix-community", "owner": "nix-community",
"repo": "NUR", "repo": "NUR",
"rev": "1d9616689e98beded059ad0384b9951e967a17fa", "rev": "ba8d9c98f5f4630bcb0e815ab456afd90c930728",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -221,14 +509,61 @@
"type": "github" "type": "github"
} }
}, },
"nuschtosSearch": {
"inputs": {
"flake-utils": "flake-utils",
"ixx": "ixx",
"nixpkgs": [
"nixvim",
"nixpkgs"
]
},
"locked": {
"lastModified": 1761730856,
"narHash": "sha256-t1i5p/vSWwueZSC0Z2BImxx3BjoUDNKyC2mk24krcMY=",
"owner": "NuschtOS",
"repo": "search",
"rev": "e29de6db0cb3182e9aee75a3b1fd1919d995d85b",
"type": "github"
},
"original": {
"owner": "NuschtOS",
"repo": "search",
"type": "github"
}
},
"root": { "root": {
"inputs": { "inputs": {
"chaotic": "chaotic",
"daeuniverse": "daeuniverse",
"disko": "disko", "disko": "disko",
"home-manager": "home-manager", "home-manager": "home-manager_2",
"nixpkgs": "nixpkgs", "nixpkgs": "nixpkgs_3",
"nixvim": "nixvim",
"stylix": "stylix" "stylix": "stylix"
} }
}, },
"rust-overlay": {
"inputs": {
"nixpkgs": [
"chaotic",
"nixpkgs"
]
},
"locked": {
"lastModified": 1762655942,
"narHash": "sha256-hOM12KcQNQALrhB9w6KJmV5hPpm3GA763HRe9o7JUiI=",
"owner": "oxalica",
"repo": "rust-overlay",
"rev": "6ac961b02d4235572692241e333d0470637f5492",
"type": "github"
},
"original": {
"owner": "oxalica",
"repo": "rust-overlay",
"type": "github"
}
},
"stylix": { "stylix": {
"inputs": { "inputs": {
"base16": "base16", "base16": "base16",
@@ -236,13 +571,11 @@
"base16-helix": "base16-helix", "base16-helix": "base16-helix",
"base16-vim": "base16-vim", "base16-vim": "base16-vim",
"firefox-gnome-theme": "firefox-gnome-theme", "firefox-gnome-theme": "firefox-gnome-theme",
"flake-parts": "flake-parts", "flake-parts": "flake-parts_3",
"gnome-shell": "gnome-shell", "gnome-shell": "gnome-shell",
"nixpkgs": [ "nixpkgs": "nixpkgs_4",
"nixpkgs"
],
"nur": "nur", "nur": "nur",
"systems": "systems", "systems": "systems_3",
"tinted-foot": "tinted-foot", "tinted-foot": "tinted-foot",
"tinted-kitty": "tinted-kitty", "tinted-kitty": "tinted-kitty",
"tinted-schemes": "tinted-schemes", "tinted-schemes": "tinted-schemes",
@@ -250,11 +583,11 @@
"tinted-zed": "tinted-zed" "tinted-zed": "tinted-zed"
}, },
"locked": { "locked": {
"lastModified": 1765897595, "lastModified": 1762264356,
"narHash": "sha256-NgTRxiEC5y96zrhdBygnY+mSzk5FWMML39PcRGVJmxg=", "narHash": "sha256-QVfC53Ri+8n3e7Ujx9kq6all3+TLBRRPRnc6No5qY5w=",
"owner": "danth", "owner": "danth",
"repo": "stylix", "repo": "stylix",
"rev": "e6829552d4bb659ebab00f08c61d8c62754763f3", "rev": "647bb8dd96a206a1b79c4fd714affc88b409e10b",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -278,6 +611,36 @@
"type": "github" "type": "github"
} }
}, },
"systems_2": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"systems_3": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"tinted-foot": { "tinted-foot": {
"flake": false, "flake": false,
"locked": { "locked": {
@@ -314,11 +677,11 @@
"tinted-schemes": { "tinted-schemes": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1763914658, "lastModified": 1757716333,
"narHash": "sha256-Hju0WtMf3iForxtOwXqGp3Ynipo0EYx1AqMKLPp9BJw=", "narHash": "sha256-d4km8W7w2zCUEmPAPUoLk1NlYrGODuVa3P7St+UrqkM=",
"owner": "tinted-theming", "owner": "tinted-theming",
"repo": "schemes", "repo": "schemes",
"rev": "0f6be815d258e435c9b137befe5ef4ff24bea32c", "rev": "317a5e10c35825a6c905d912e480dfe8e71c7559",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -330,11 +693,11 @@
"tinted-tmux": { "tinted-tmux": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1764465359, "lastModified": 1757811970,
"narHash": "sha256-lbSVPqLEk2SqMrnpvWuKYGCaAlfWFMA6MVmcOFJjdjE=", "narHash": "sha256-n5ZJgmzGZXOD9pZdAl1OnBu3PIqD+X3vEBUGbTi4JiI=",
"owner": "tinted-theming", "owner": "tinted-theming",
"repo": "tinted-tmux", "repo": "tinted-tmux",
"rev": "edf89a780e239263cc691a987721f786ddc4f6aa", "rev": "d217ba31c846006e9e0ae70775b0ee0f00aa6b1e",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -346,11 +709,11 @@
"tinted-zed": { "tinted-zed": {
"flake": false, "flake": false,
"locked": { "locked": {
"lastModified": 1764464512, "lastModified": 1757811247,
"narHash": "sha256-rCD/pAhkMdCx6blsFwxIyvBJbPZZ1oL2sVFrH07lmqg=", "narHash": "sha256-4EFOUyLj85NRL3OacHoLGEo0wjiRJzfsXtR4CZWAn6w=",
"owner": "tinted-theming", "owner": "tinted-theming",
"repo": "base16-zed", "repo": "base16-zed",
"rev": "907dbba5fb8cf69ebfd90b00813418a412d0a29a", "rev": "824fe0aacf82b3c26690d14e8d2cedd56e18404e",
"type": "github" "type": "github"
}, },
"original": { "original": {

View File

@@ -2,16 +2,15 @@
description = "🥶"; description = "🥶";
inputs = { inputs = {
# chaotic.url = "github:chaotic-cx/nyx/nyxpkgs-unstable"; chaotic.url = "github:chaotic-cx/nyx/nyxpkgs-unstable";
# daeuniverse.url = "github:daeuniverse/flake.nix"; daeuniverse.url = "github:daeuniverse/flake.nix";
disko.inputs.nixpkgs.follows = "nixpkgs"; disko.inputs.nixpkgs.follows = "nixpkgs";
disko.url = "github:nix-community/disko"; disko.url = "github:nix-community/disko";
home-manager.inputs.nixpkgs.follows = "nixpkgs"; home-manager.inputs.nixpkgs.follows = "nixpkgs";
home-manager.url = "github:nix-community/home-manager"; home-manager.url = "github:nix-community/home-manager";
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
# nixvim.inputs.nixpkgs.follows = "nixpkgs"; nixvim.inputs.nixpkgs.follows = "nixpkgs";
# nixvim.url = "github:nix-community/nixvim"; nixvim.url = "github:nix-community/nixvim";
stylix.inputs.nixpkgs.follows = "nixpkgs";
stylix.url = "github:danth/stylix"; stylix.url = "github:danth/stylix";
}; };

View File

@@ -1,12 +0,0 @@
{ pkgs, ... }: {
programs.git = {
enable = true;
package = pkgs.gitFull;
};
programs.gh.enable = true;
home.packages = with pkgs; [
git-filter-repo
];
}

View File

@@ -1,6 +1,6 @@
{ pkgs, ... }: { pkgs, ... }:
{ {
home.packages = with pkgs; [ home.packages = with pkgs; [
firefox floorp-bin
]; ];
} }

View File

@@ -1,5 +1,5 @@
{pkgs, ...}: { {pkgs, ...}: {
home.packages = with pkgs; [ home.packages = with pkgs; [
yazi vscodium
]; ];
} }

View File

@@ -0,0 +1,5 @@
{pkgs, ...}: {
home.packages = with pkgs; [
gui-for-singbox
];
}

View File

@@ -1,65 +1,36 @@
{ config {
, lib config,
, pkgs lib,
, ... pkgs,
}: { ...
}: let
neo-tree-nvim-main = pkgs.vimUtils.buildVimPlugin {
pname = "neo-tree-nvim-main";
version = "3.35.2+6";
src = pkgs.fetchFromGitHub {
owner = "nvim-neo-tree";
repo = "neo-tree.nvim";
rev = "8dd9f08ff086d09d112f1873f88dc0f74b598cdb";
sha256 = "sha256-edthaqznGTJ+VFVORK7gfHI9J14PLAghG9prsWlzXtc=";
};
doCheck = false;
meta.homepage = "https://github.com/nvim-neo-tree/neo-tree.nvim/";
meta.hydraPlatforms = [];
};
in {
programs.neovim = { programs.neovim = {
enable = true; enable = true;
extraPackages = with pkgs; [ extraPackages = with pkgs; [
#Go # LazyVim
gopls
gofumpt
golines
#Lua
stylua
lua-language-server lua-language-server
stylua
#Nix
nixd
nixpkgs-fmt
#Java
google-java-format
jdt-language-server
#Rust
clippy
rustfmt
rust-analyzer
#Shell
shfmt
bash-language-server
#C/C++
clang-tools
#Kotlin
ktlint
kotlin-language-server
#Python
ruff
black
python312Packages.python-lsp-server
#JS/TS/Web
biome
prettierd
nodePackages.prettier
jq #JSON
taplo #TOML
yamlfmt #YAML
]; ];
plugins = with pkgs.vimPlugins; [ plugins = with pkgs.vimPlugins; [
lazy-nvim lazy-nvim
]; ];
extraLuaConfig = extraLuaConfig = let
let
plugins = with pkgs.vimPlugins; [ plugins = with pkgs.vimPlugins; [
LazyVim LazyVim
bufferline-nvim bufferline-nvim
@@ -70,7 +41,10 @@
friendly-snippets friendly-snippets
gitsigns-nvim gitsigns-nvim
lualine-nvim lualine-nvim
neo-tree-nvim {
name = "neo-tree.nvim";
path = neo-tree-nvim-main;
}
neoconf-nvim neoconf-nvim
neodev-nvim neodev-nvim
noice-nvim noice-nvim
@@ -81,6 +55,7 @@
nvim-spectre nvim-spectre
nvim-treesitter nvim-treesitter
nvim-treesitter-context nvim-treesitter-context
nvim-treesitter-textobjects
nvim-ts-autotag nvim-ts-autotag
nvim-ts-context-commentstring nvim-ts-context-commentstring
nvim-web-devicons nvim-web-devicons
@@ -147,8 +122,7 @@
} }
else drv; else drv;
lazyPath = pkgs.linkFarm "lazy-plugins" (builtins.map mkEntryFromDrv plugins); lazyPath = pkgs.linkFarm "lazy-plugins" (builtins.map mkEntryFromDrv plugins);
in in ''
''
require("lazy").setup({ require("lazy").setup({
defaults = { defaults = {
lazy = true, lazy = true,
@@ -182,8 +156,6 @@
{ import = "lazyvim.plugins.extras.lang.yaml" }, { import = "lazyvim.plugins.extras.lang.yaml" },
{ import = "lazyvim.plugins.extras.lang.toml" }, { import = "lazyvim.plugins.extras.lang.toml" },
{ import = "lazyvim.plugins.extras.lang.docker" }, { import = "lazyvim.plugins.extras.lang.docker" },
{ import = "lazyvim.plugins.extras.lang.kotlin" },
{ import = "lazyvim.plugins.extras.lang.dart" },
{ import = "plugins" }, { import = "plugins" },
-- treesitter handled by xdg.configFile."nvim/parser", put this line at the end of spec to clear ensure_installed -- treesitter handled by xdg.configFile."nvim/parser", put this line at the end of spec to clear ensure_installed
{ "nvim-treesitter/nvim-treesitter", { "nvim-treesitter/nvim-treesitter",
@@ -197,8 +169,7 @@
}; };
# https://github.com/nvim-treesitter/nvim-treesitter#i-get-query-error-invalid-node-type-at-position # https://github.com/nvim-treesitter/nvim-treesitter#i-get-query-error-invalid-node-type-at-position
xdg.configFile."nvim/parser".source = xdg.configFile."nvim/parser".source = let
let
parsers = pkgs.symlinkJoin { parsers = pkgs.symlinkJoin {
name = "treesitter-parsers"; name = "treesitter-parsers";
paths = paths =
@@ -206,13 +177,11 @@
with plugins; [ with plugins; [
bash bash
c c
go
lua lua
python
go
rust rust
java java
dart
kotlin
python
javascript javascript
typescript typescript
tsx tsx
@@ -223,11 +192,14 @@
yaml yaml
toml toml
dockerfile dockerfile
])).dependencies; ]))
.dependencies;
}; };
in in "${parsers}/parser";
"${parsers}/parser";
# Normal LazyVim config here, see https://github.com/LazyVim/starter/tree/main/lua # Normal LazyVim config here, see https://github.com/LazyVim/starter/tree/main/lua
xdg.configFile."nvim/lua".source = ./lua; xdg.configFile."nvim/lua".source = ./lua;
# Set default editor
home.sessionVariables.EDITOR = "nvim";
} }

View File

@@ -9,27 +9,23 @@ local opts = { noremap = true, silent = true }
map("n", "<C-Tab>", "<cmd>bnext<CR>", { desc = "Next buffer (like VSCode)" }) map("n", "<C-Tab>", "<cmd>bnext<CR>", { desc = "Next buffer (like VSCode)" })
map("n", "<C-S-Tab>", "<cmd>bprevious<CR>", { desc = "Previous buffer (like VSCode)" }) map("n", "<C-S-Tab>", "<cmd>bprevious<CR>", { desc = "Previous buffer (like VSCode)" })
-- === Vscode-like Close buffer navigation === -- === Close buffer like Ctrl + W in VSCode ===
vim.keymap.set("n", "<C-w>", function() vim.keymap.set("n", "<C-w>", "<cmd>BufferLinePickClose<CR>", { desc = "Close buffer (BufferLine)" })
local current = vim.api.nvim_get_current_buf()
local buffers = vim.fn.getbufinfo({buflisted = 1})
local next_buf = nil vim.keymap.set("n", "<C-S-5>", function()
for i, buf in ipairs(buffers) do if vim.bo.buftype == "terminal" then
if buf.bufnr == current then vim.cmd("vsplit | terminal")
next_buf = buffers[i + 1] or buffers[i - 1] else
break vim.cmd("botright split | terminal")
end
end end
end, { desc = "Split terminal" })
if next_buf then -- 在终端模式下的快捷键
vim.api.nvim_set_current_buf(next_buf.bufnr) vim.keymap.set("t", "<C-h>", "<C-\\><C-n><C-w>h", { desc = "Go to left window" })
end vim.keymap.set("t", "<C-j>", "<C-\\><C-n><C-w>j", { desc = "Go to lower window" })
vim.keymap.set("t", "<C-k>", "<C-\\><C-n><C-w>k", { desc = "Go to upper window" })
vim.keymap.set("t", "<C-l>", "<C-\\><C-n><C-w>l", { desc = "Go to right window" })
vim.api.nvim_buf_delete(current, { force = true })
end, { desc = "Close current buffer like VSCode" })
-- XDG Open
vim.keymap.set("n", "<leader>xo", function() vim.keymap.set("n", "<leader>xo", function()
vim.fn.jobstart({ "xdg-open", vim.fn.expand("%:p") }, { detach = true }) vim.fn.jobstart({ "xdg-open", vim.fn.expand("%:p") }, { detach = true })
end, { desc = "使用系统默认应用程序打开当前文件" }) end, { desc = "使用系统默认应用程序打开当前文件" })

View File

@@ -1,16 +1,3 @@
-- Options are automatically loaded before lazy.nvim startup -- Options are automatically loaded before lazy.nvim startup
-- Default options that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/options.lua -- Default options that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/options.lua
-- Add any additional options here -- Add any additional options here
-- Disable autoformat
vim.g.autoformat = false
-- Let terminal just one
vim.g.root_spec = { "cwd" }
-- Disable markdown views
vim.api.nvim_create_autocmd("FileType", {
pattern = "markdown",
callback = function()
vim.opt_local.conceallevel = 0
vim.opt_local.concealcursor = ""
end,
})

View File

@@ -1,28 +0,0 @@
return {
{
"zbirenbaum/copilot.lua",
cmd = "Copilot",
event = "InsertEnter",
config = function()
require("copilot").setup({
suggestion = { enabled = true, auto_trigger = true },
})
end,
},
{
"CopilotC-Nvim/CopilotChat.nvim",
branch = "main",
dependencies = {
{ "zbirenbaum/copilot.lua" },
{ "nvim-lua/plenary.nvim" },
},
opts = {
debug = false,
},
keys = {
{ "<leader>cc", "<cmd>CopilotChatToggle<cr>", desc = "CopilotChat - Toggle" },
{ "<leader>ce", "<cmd>CopilotChatExplain<cr>", mode = "v", desc = "CopilotChat - Explain code" },
},
},
}

View File

@@ -1,68 +0,0 @@
return {
{
"stevearc/conform.nvim",
opts = function(_, opts)
opts.format_on_save = nil
opts.formatters = opts.formatters or {}
opts.formatters_by_ft = opts.formatters_by_ft or {}
opts.formatters.nixpkgs_fmt = {
command = "nixpkgs-fmt",
args = function(ctx)
return {}
end,
stdin = true,
exit_codes = { 0 },
}
-- Go
opts.formatters_by_ft.go = { "gofumpt" }
-- Lua
opts.formatters_by_ft.lua = { "stylua" }
-- Nix
opts.formatters_by_ft.nix = { "nixpkgs_fmt", stop_after_first = true }
-- Java
opts.formatters_by_ft.java = { "google_java_format" }
-- Rust
opts.formatters_by_ft.rust = { "rustfmt" }
-- Shell
opts.formatters_by_ft.sh = { "shfmt" }
-- C/C++
opts.formatters_by_ft.c = { "clang_format" }
opts.formatters_by_ft.cpp = { "clang_format" }
-- Kotlin
opts.formatters_by_ft.kotlin = { "ktlint" }
-- Python
opts.formatters_by_ft.python = { "black", "ruff_format" }
-- JS/TS/Web
opts.formatters_by_ft.javascript = { "biome" }
opts.formatters_by_ft.typescript = { "biome" }
opts.formatters_by_ft.javascriptreact = { "biome" }
opts.formatters_by_ft.typescriptreact = { "biome" }
opts.formatters_by_ft.vue = { "biome" }
-- JSON
opts.formatters_by_ft.json = { "jq" }
-- YAML
opts.formatters_by_ft.yaml = { "yamlfmt" }
-- TOML
opts.formatters_by_ft.toml = { "taplo" }
-- Dart / Flutter
opts.formatters_by_ft.dart = {
command = "dart",
args = function(ctx)
return { "format", ctx.bufname }
end,
stdin = false,
exit_codes = { 0 },
}
opts.default_format_opts = {
timeout_ms = 1500,
lsp_format = "fallback",
stop_after_first = false,
}
opts.log_level = vim.log.levels.ERROR
opts.notify_on_error = true
opts.notify_no_formatters = true
return opts
end,
},
}

View File

@@ -1,11 +1,11 @@
return { return {
"ojroques/nvim-osc52", "ojroques/nvim-osc52",
config = function() config = function()
require("osc52").setup({ require("osc52").setup {
max_length = 0, -- 不限制长度 max_length = 0, -- 不限制长度
silent = false, silent = false,
trim = false, trim = false,
}) }
local function copy() local function copy()
if vim.v.event.operator == "y" and vim.v.event.regname == "" then if vim.v.event.operator == "y" and vim.v.event.regname == "" then

View File

@@ -1,30 +0,0 @@
return {
{
"LazyVim/LazyVim",
opts = {
treesitter = false,
},
},
{
"nvim-treesitter/nvim-treesitter",
event = { "BufReadPost", "BufNewFile" },
opts = {
ensure_installed = {},
auto_install = false,
highlight = { enable = true },
indent = { enable = true },
incremental_selection = {
enable = true,
keymaps = {
init_selection = "gnn",
node_incremental = "grn",
scope_incremental = "grc",
node_decremental = "grm",
},
},
},
config = function(_, opts)
require("nvim-treesitter.configs").setup(opts)
end,
},
}

View File

@@ -0,0 +1,3 @@
_: {
services.hyprpolkitagent.enable = true;
}

View File

@@ -8,45 +8,39 @@
in in
with lib; with lib;
mkIf (WM == "niri") { mkIf (WM == "niri") {
systemd.user.targets.niri-session = {
Unit = {
Description = "niri compositor session";
Documentation = "man:systemd.special(7)";
};
Target = {
After = "graphical-session-pre.target";
BindsTo = "graphical-session.target";
Wants = "graphical-session-pre.target";
DefaultDependencies = false;
};
};
systemd.user.services.xdg-desktop-portal-gnome = {
Unit = {
Description = "Portal service (GNOME implementation)";
};
Service = {
Type = "dbus";
BusName = "org.freedesktop.impl.portal.desktop.gnome";
ExecStart = "${pkgs.xdg-desktop-portal-gnome}/libexec/xdg-desktop-portal-gnome";
};
};
home.packages = with pkgs; [ home.packages = with pkgs; [
niri niri
xwayland-satellite xwayland-satellite
]; ];
systemd.user.services.xdg-desktop-portal-gtk = {
Unit = {
Description = "Portal service (GTK implementation)";
PartOf = ["graphical-session.target"];
After = ["graphical-session.target"];
};
Service = {
Type = "dbus";
BusName = "org.freedesktop.impl.portal.desktop.gtk";
ExecStart = "${pkgs.xdg-desktop-portal-gtk}/libexec/xdg-desktop-portal-gtk";
Slice = "session.slice";
};
Install = {
WantedBy = ["xdg-desktop-portal.service"];
};
};
systemd.user.targets.niri-session = {
Unit = {
After = "graphical-session-pre.target graphical-session.target";
BindsTo = "graphical-session.target";
Conflicts = "shutdown.target";
DefaultDependencies = false;
Description = "niri compositor session";
Documentation = "man:systemd.special(7)";
Wants = "graphical-session-pre.target";
};
};
xdg.portal = { xdg.portal = {
enable = true;
config = { config = {
common = { common = {
default = ["gtk"]; default = [
"org.freedesktop.impl.portal.RemoteDesktop" = "gnome"; "gnome"
"org.freedesktop.impl.portal.ScreenCast" = "gnome"; "gtk"
"org.freedesktop.impl.portal.Screenshot" = "gnome"; ];
}; };
}; };
extraPortals = [ extraPortals = [

View File

@@ -37,7 +37,7 @@
autoEnable = true; autoEnable = true;
targets = { targets = {
fcitx5.enable = false; fcitx5.enable = false;
firefox.enable = false; floorp.enable = false;
hyprland.enable = false; hyprland.enable = false;
kde.enable = false; kde.enable = false;
mpv.enable = false; mpv.enable = false;

View File

@@ -9,7 +9,7 @@
"peazip-extract-downloads.desktop" "peazip-extract-downloads.desktop"
"peazip-extract-here.desktop" "peazip-extract-here.desktop"
]; ];
browser = ["firefox.desktop"]; browser = ["floorp.desktop"];
editor = ["neovim"]; editor = ["neovim"];
filemanager = ["nemo.desktop"]; filemanager = ["nemo.desktop"];
image-viewer = ["org.gnome.Loupe.desktop"]; image-viewer = ["org.gnome.Loupe.desktop"];

View File

@@ -6,7 +6,7 @@
}: { }: {
imports = with inputs; [ imports = with inputs; [
./${hostname} ./${hostname}
# chaotic.nixosModules.default chaotic.nixosModules.default
disko.nixosModules.disko disko.nixosModules.disko
stylix.nixosModules.stylix stylix.nixosModules.stylix
home-manager.nixosModules.home-manager home-manager.nixosModules.home-manager

View File

@@ -1,65 +1,59 @@
{ {
# -------------------- Hardware -------------------- # Specific Use Cases
# See: https://github.com/blueman-project/blueman ## Hardware related
Bluetooth = true; Bluetooth = true;
### See https://github.com/blueman-project/blueman
# See: https://nixos.wiki/wiki/AMD_GPU
GPU-AMD = true; GPU-AMD = true;
### See https://nixos.wiki/wiki/AMD_GPU
# See: https://nixos.wiki/wiki/Nvidia
GPU-Nvidia = false; GPU-Nvidia = false;
### See https://nixos.wiki/wiki/Nvidia
# See: https://nixos.wiki/wiki/Intel_Graphics
GPU-Intel = false; GPU-Intel = false;
### See https://nixos.wiki/wiki/Intel_Graphics
# See: https://github.com/linrunner/TLP HotSpot-Use-Case = false;
Power-control = "TLP"; ## Possible options: PPD ; TLP ### See https://nixos.wiki/wiki/Internet_Connection_Sharing
# -------------------- System -------------------- ## Software related
# See https://nixos.wiki/wiki/Bootloader QEMU-VM-Use-Case = true;
# See: https://search.nixos.org/options?show=boot.loader.grub.mirroredBoots ### See https://github.com/qemu/qemu ; https://github.com/virt-manager/virt-manager
BootLoader = "systemd-boot"; ## Possible options: grub ; grub-mirror ; systemd-boot
# See: https://search.nixos.org/options?show=boot.kernelPackages # Options
# See: https://www.nyx.chaotic.cx/#using-sched-ext-schedulers ## System related
KernelPackages = "linuxPackages_zen"; BootLoader = "systemd-boot";
### Possible options: grub ; grub-mirror ; systemd-boot # See https://nixos.wiki/wiki/Bootloader https://search.nixos.org/options?channel=unstable&from=0&size=50&sort=relevance&type=packages&query=mirroredBoots
# See: https://mynixos.com/nixpkgs/option/system.stateVersion KernelPackages = "linuxPackages_cachyos";
StateVersion = "26.05"; ### See https://search.nixos.org/options?show=boot.kernelPackages https://www.nyx.chaotic.cx/#using-sched-ext-schedulers
# See: https://docs.moodle.org/405/en/Table_of_locales
Locale = "en_US.UTF-8";
# See: https://en.wikipedia.org/wiki/Keyboard_layout
KeyboardLayout = "us"; KeyboardLayout = "us";
### See https://en.wikipedia.org/wiki/Keyboard_layout
Locale = "en_US.UTF-8";
### See https://docs.moodle.org/405/en/Table_of_locales
StateVersion = "25.11";
### See https://mynixos.com/nixpkgs/option/system.stateVersion
# See: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
TimeZone = "Asia/Singapore"; TimeZone = "Asia/Singapore";
### See https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
# -------------------- Display -------------------- ## Wayland related
WM = "niri"; ## Options: "Hyprland" | "niri" | "sway"
# See: https://wiki.hyprland.org/Configuring/XWayland/#hidpi-xwayland
# See: https://github.com/swaywm/sway/wiki#hidpi
ScaleLevel = "1";
# See: https://github.com/swaywm/sway/wiki#display-configuration
OutputSettings = "output * scale 1";
# See: https://wiki.hyprland.org/Configuring/Monitors
MonitorSettings = " MonitorSettings = "
monitor=eDP-1, 2560x1600@165, 0x0, 1.25 monitor=eDP-1, 2560x1600@165, 0x0, 1.25
monitor=DP-1, 2560x1440@144, 2560x0, 1.25 monitor=DP-1, 2560x1440@144, 2560x0, 1.25
"; ";
### MonitorSettings For Hyprland See https://wiki.hyprland.org/Configuring/Monitors/
# -------------------- Software -------------------- OutputSettings = "output * scale 1";
# See: https://sing-box.sagernet.org ### OutputSettings For sway See https://github.com/swaywm/sway/wiki#display-configuration
SingBox = true;
# See: https://github.com/qemu/qemu ScaleLevel = "1";
# See: https://github.com/virt-manager/virt-manager ### For Hyprland see https://wiki.hyprland.org/Configuring/XWayland/#hidpi-xwayland
QEMU-VM-Use-Case = true; ### For sway see https://github.com/swaywm/sway/wiki#hidpi
# See: https://github.com/dbeaver/dbeaver WM = "niri";
Database-Use-Case = true; ### Possible options: Hyprland ; niri ; sway
} }

View File

@@ -14,7 +14,7 @@
boot.extraModulePackages = [ ]; boot.extraModulePackages = [ ];
fileSystems."/" = fileSystems."/" =
{ device = "/dev/mapper/luks-6647cbcd-ed3a-4205-9a2c-78e337e2f3bf"; { device = "/dev/disk/by-uuid/67e9d418-8f31-4af7-9178-ae9641099844";
fsType = "xfs"; fsType = "xfs";
}; };
@@ -28,6 +28,13 @@
swapDevices = [ ]; swapDevices = [ ];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's
# still possible to use this option, but it's recommended to use it in conjunction
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
networking.useDHCP = lib.mkDefault true;
# networking.interfaces.wlp2s0.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
} }

View File

@@ -1,62 +1,56 @@
{ {
# -------------------- Hardware -------------------- # Specific Use Cases
# See: https://github.com/blueman-project/blueman ## Hardware related
Bluetooth = false; Bluetooth = false;
### See https://github.com/blueman-project/blueman
# See: https://nixos.wiki/wiki/AMD_GPU
GPU-AMD = false; GPU-AMD = false;
### See https://nixos.wiki/wiki/AMD_GPU
# See: https://nixos.wiki/wiki/Nvidia
GPU-Nvidia = false; GPU-Nvidia = false;
### See https://nixos.wiki/wiki/Nvidia
# See: https://nixos.wiki/wiki/Intel_Graphics
GPU-Intel = false; GPU-Intel = false;
### See https://nixos.wiki/wiki/Intel_Graphics
# See: https://github.com/linrunner/TLP HotSpot-Use-Case = false;
Power-control = "PPD"; ## Possible options: PPD ; TLP ### See https://nixos.wiki/wiki/Internet_Connection_Sharing
# -------------------- System -------------------- ## Software related
# See https://nixos.wiki/wiki/Bootloader
# See: https://search.nixos.org/options?show=boot.loader.grub.mirroredBoots
BootLoader = "systemd-boot"; ## Possible options: grub ; grub-mirror ; systemd-boot
# See: https://search.nixos.org/options?show=boot.kernelPackages
# See: https://www.nyx.chaotic.cx/#using-sched-ext-schedulers
KernelPackages = "linuxPackages_zen";
# See: https://mynixos.com/nixpkgs/option/system.stateVersion
StateVersion = "26.05";
# See: https://docs.moodle.org/405/en/Table_of_locales
Locale = "en_US.UTF-8";
# See: https://en.wikipedia.org/wiki/Keyboard_layout
KeyboardLayout = "us";
# See: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
TimeZone = "Asia/Singapore";
# -------------------- Display --------------------
WM = "Hyprland"; ## Options: "Hyprland" | "niri" | "sway"
# See: https://wiki.hyprland.org/Configuring/XWayland/#hidpi-xwayland
# See: https://github.com/swaywm/sway/wiki#hidpi
ScaleLevel = "1";
# See: https://github.com/swaywm/sway/wiki#display-configuration
OutputSettings = "output * scale 1";
# See: https://wiki.hyprland.org/Configuring/Monitors
MonitorSettings = "monitor = , preferred, auto, auto";
# -------------------- Software --------------------
# See: https://sing-box.sagernet.org
SingBox = true;
# See: https://github.com/qemu/qemu
# See: https://github.com/virt-manager/virt-manager
QEMU-VM-Use-Case = false; QEMU-VM-Use-Case = false;
### See https://github.com/qemu/qemu ; https://github.com/virt-manager/virt-manager
# See: https://github.com/dbeaver/dbeaver # Options
Database-Use-Case = true; ## System related
BootLoader = "systemd-boot";
### Possible options: grub ; grub-mirror ; systemd-boot # See https://nixos.wiki/wiki/Bootloader https://search.nixos.org/options?channel=unstable&from=0&size=50&sort=relevance&type=packages&query=mirroredBoots
KernelPackages = "linuxPackages_cachyos";
### See https://search.nixos.org/options?show=boot.kernelPackages https://www.nyx.chaotic.cx/#using-sched-ext-schedulers
KeyboardLayout = "us";
### See https://en.wikipedia.org/wiki/Keyboard_layout
Locale = "en_US.UTF-8";
### See https://docs.moodle.org/405/en/Table_of_locales
StateVersion = "25.11";
### See https://mynixos.com/nixpkgs/option/system.stateVersion
TimeZone = "Asia/Singapore";
### See https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
## Wayland related
MonitorSettings = "monitor = , preferred, auto, auto";
### MonitorSettings For Hyprland See https://wiki.hyprland.org/Configuring/Monitors/
OutputSettings = "output * scale 1";
### OutputSettings For sway See https://github.com/swaywm/sway/wiki#display-configuration
ScaleLevel = "1";
### For Hyprland see https://wiki.hyprland.org/Configuring/XWayland/#hidpi-xwayland
### For sway see https://github.com/swaywm/sway/wiki#hidpi
WM = "Hyprland";
### Possible options: Hyprland ; niri ; sway
} }

View File

@@ -9,7 +9,7 @@ in
config = mkIf Bluetooth { config = mkIf Bluetooth {
hardware.bluetooth = { hardware.bluetooth = {
enable = lib.mkDefault true; enable = lib.mkDefault true;
powerOnBoot = lib.mkDefault false; powerOnBoot = lib.mkDefault true;
}; };
services.blueman.enable = lib.mkDefault true; services.blueman.enable = lib.mkDefault true;
}; };

View File

@@ -8,14 +8,10 @@ in {
services = { services = {
greetd = { greetd = {
enable = true; enable = true;
useTextGreeter = true;
settings = { settings = {
default_session = { default_session = {
user = "greeter"; user = "greeter";
command = command = "${pkgs.tuigreet}/bin/tuigreet -c ${WM} -t --user-menu";
if WM == "niri"
then "${pkgs.tuigreet}/bin/tuigreet -c niri-session -t --user-menu"
else "${pkgs.tuigreet}/bin/tuigreet -c ${WM} -t --user-menu";
}; };
}; };
}; };

View File

@@ -1,20 +0,0 @@
{ hostname, lib, pkgs, ... }:
with lib; let
inherit (import ../../hosts/${hostname}/env.nix) Database-Use-Case;
in
{
config = mkIf Database-Use-Case {
services.mysql = {
enable = true;
package = pkgs.mysql84;
};
systemd.services.mysql = {
wantedBy = lib.mkForce [ ];
};
environment.systemPackages = [
pkgs.dbeaver-bin
];
};
}

View File

@@ -1,23 +0,0 @@
{ hostname, lib, pkgs, ... }:
with lib; let
inherit (import ../../hosts/${hostname}/env.nix) Power-control;
in
{
services.power-profiles-daemon.enable = (Power-control == "PPD");
services.tlp = lib.mkIf (Power-control == "TLP") {
enable = true;
settings = {
CPU_SCALING_GOVERNOR_ON_AC = "performance";
CPU_SCALING_GOVERNOR_ON_BAT = "powersave";
CPU_ENERGY_PERF_POLICY_ON_AC = "performance";
CPU_ENERGY_PERF_POLICY_ON_BAT = "powersave";
CPU_MIN_PERF_ON_AC = 0;
CPU_MAX_PERF_ON_AC = 100;
CPU_MIN_PERF_ON_BAT = 0;
CPU_MAX_PERF_ON_BAT = 85;
};
};
}

View File

@@ -3,6 +3,7 @@
{ {
services = { services = {
gvfs.enable = true; gvfs.enable = true;
power-profiles-daemon.enable = true;
scx = { scx = {
enable = true; enable = true;
scheduler = "scx_lavd"; scheduler = "scx_lavd";

View File

@@ -1,39 +0,0 @@
{ hostname, lib, pkgs, ... }:
with lib;
let
inherit (import ../../hosts/${hostname}/env.nix) SingBox;
in
{
disabledModules = [ "services/networking/sing-box.nix" ];
config = mkIf SingBox {
environment.systemPackages = [ pkgs.sing-box ];
systemd.tmpfiles.rules = [
"d /etc/sing-box 0755 root root -"
];
systemd.services.sing-box = {
description = "sing-box service (custom)";
after = [ "network.target" ];
wantedBy = [ ];
script = ''
exec ${pkgs.sing-box}/bin/sing-box -D "$STATE_DIRECTORY" run -c /etc/sing-box/config.json
'';
serviceConfig = {
DynamicUser = true;
CapabilityBoundingSet = "CAP_NET_ADMIN CAP_NET_BIND_SERVICE CAP_DAC_OVERRIDE";
AmbientCapabilities = "CAP_NET_ADMIN CAP_NET_BIND_SERVICE CAP_DAC_OVERRIDE";
NoNewPrivileges = true;
StateDirectory = "sing-box";
StateDirectoryMode = "0700";
Restart = "always";
RestartSec = 5;
};
};
};
}

View File

@@ -17,22 +17,12 @@
in in
with lib; { with lib; {
boot = { boot = {
blacklistedKernelModules = [ bcache.enable = false;
"iTCO_wdt"
"iTCO_vendor_support"
"intel_pmc_bxt"
"mei"
"mei_hdcp"
"mei_me"
"mei_pxp"
"pstore"
"sp5100_tco"
"wdat_wdt"
];
consoleLogLevel = 2; # Only errors and warnings are displayed consoleLogLevel = 2; # Only errors and warnings are displayed
# extraModulePackages = [ extraModprobeConfig = "blacklist mei mei_hdcp mei_me mei_pxp iTCO_wdt pstore sp5100_tco";
# config.boot.kernelPackages.v4l2loopback # v4l2loopback is for OBS Virtual Cam Support extraModulePackages = [
# ]; config.boot.kernelPackages.v4l2loopback # v4l2loopback is for OBS Virtual Cam Support
];
initrd = { initrd = {
compressor = "zstd"; compressor = "zstd";
compressorArgs = ["-T0" "-19" "--long"]; compressorArgs = ["-T0" "-19" "--long"];
@@ -43,7 +33,7 @@ in
"kernel.core_pattern" = "|/bin/false"; # Disable automatic core dumps "kernel.core_pattern" = "|/bin/false"; # Disable automatic core dumps
"vm.max_map_count" = 2147483642; # Needed For Some Steam Games "vm.max_map_count" = 2147483642; # Needed For Some Steam Games
}; };
# kernelModules = ["v4l2loopback"]; # v4l2loopback is for OBS Virtual Cam Support kernelModules = ["v4l2loopback"]; # v4l2loopback is for OBS Virtual Cam Support
kernelPackages = pkgs.${KernelPackages}; kernelPackages = pkgs.${KernelPackages};
kernelParams = ["audit=0" "console=tty1" "erst_disable" "nmi_watchdog=0" "noatime" "nowatchdog"]; kernelParams = ["audit=0" "console=tty1" "erst_disable" "nmi_watchdog=0" "noatime" "nowatchdog"];
loader = { loader = {
@@ -144,6 +134,7 @@ in
}; };
system = { system = {
rebuild.enableNg = true;
stateVersion = StateVersion; stateVersion = StateVersion;
}; };

View File

@@ -46,6 +46,9 @@ in {
# For OBS virtual cam support # For OBS virtual cam support
v4l-utils v4l-utils
# Editor
nano
# Networking tool # Networking tool
iperf3 iperf3
nexttrace nexttrace
@@ -58,7 +61,6 @@ in {
xxd xxd
file file
binwalk binwalk
qtscrcpy
android-tools android-tools
payload-dumper-go payload-dumper-go
@@ -68,35 +70,28 @@ in {
libvirt libvirt
lm_sensors lm_sensors
usbutils usbutils
libsecret
# Niri # Niri
wlr-randr wlr-randr
# Dev # Dev
go go
zig
lua
gcc gcc
gdb gdb
cmake
clang clang
gnumake zig
rustc nodejs_20
cargo
dart
kotlin
flutter
jdk17
python312
pnpm pnpm
nodejs_24
]; ];
}; };
programs = { programs = {
dconf.enable = true; dconf.enable = true;
fuse.userAllowOther = true; fuse.userAllowOther = true;
git = {
enable = true;
package = pkgs.gitFull;
};
ssh.startAgent = true; ssh.startAgent = true;
}; };
} }

View File

@@ -31,13 +31,13 @@ with lib; {
substituters = [ substituters = [
"https://cache.garnix.io" # See https://github.com/daeuniverse/flake.nix "https://cache.garnix.io" # See https://github.com/daeuniverse/flake.nix
"https://cache.nixos.org" # See https://nixos.wiki/wiki/Binary_Cache "https://cache.nixos.org" # See https://nixos.wiki/wiki/Binary_Cache
# "https://chaotic-nyx.cachix.org" # See https://github.com/chaotic-cx/nyx "https://chaotic-nyx.cachix.org" # See https://github.com/chaotic-cx/nyx
"https://nix-community.cachix.org" # See https://nix-community.org/cache/ "https://nix-community.cachix.org" # See https://nix-community.org/cache/
]; ];
trusted-public-keys = [ trusted-public-keys = [
"cache.garnix.io:CTFPyKSLcx5RMJKfLo5EEPUObbA78b0YQ2DTCJXqr9g=" "cache.garnix.io:CTFPyKSLcx5RMJKfLo5EEPUObbA78b0YQ2DTCJXqr9g="
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=" "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
# "chaotic-nyx.cachix.org-1:HfnXSw4pj95iI/n17rIDy40agHj12WfF+Gqk6SonIT8=" "chaotic-nyx.cachix.org-1:HfnXSw4pj95iI/n17rIDy40agHj12WfF+Gqk6SonIT8="
"nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs="
]; ];
warn-dirty = false; warn-dirty = false;