mirror of
https://github.com/moons-14/dotfiles.git
synced 2026-10-07 05:44:09 +09:00
fix
This commit is contained in:
@@ -16,5 +16,6 @@
|
|||||||
!profiles/
|
!profiles/
|
||||||
!modules/
|
!modules/
|
||||||
!docs/
|
!docs/
|
||||||
|
!images/
|
||||||
|
|
||||||
!/flake/
|
!/flake/
|
||||||
|
|||||||
@@ -17,3 +17,94 @@ nix fmt
|
|||||||
- User: `moons`, locale: `ja_JP.UTF-8`, timezone: `Asia/Tokyo`
|
- User: `moons`, locale: `ja_JP.UTF-8`, timezone: `Asia/Tokyo`
|
||||||
- Commits: conventional commits (`feat:`, `chore:`, `fix:`, etc.)
|
- Commits: conventional commits (`feat:`, `chore:`, `fix:`, etc.)
|
||||||
- リモート: `[email protected]:moons-14/dotfiles.git`
|
- リモート: `[email protected]:moons-14/dotfiles.git`
|
||||||
|
- `modules/system/` や `modules/applications/` に新しいファイルを追加した際は、必ず同ディレクトリの `default.nix` の `imports` に追加する
|
||||||
|
- `environment.systemPackages` にパッケージを追加する際は、パッケージ名の横に簡単な説明をコメントで追加する
|
||||||
|
|
||||||
|
## Module Structure
|
||||||
|
|
||||||
|
### `modules/system/`
|
||||||
|
|
||||||
|
システムレベル(NixOS)の設定。OS 全体に影響する設定を配置する。
|
||||||
|
|
||||||
|
- 例: boot, hardware, network, user, locale, fonts, power, secure-boot, caches, gc, version
|
||||||
|
|
||||||
|
### `modules/applications/`
|
||||||
|
|
||||||
|
アプリケーション固有の設定。ユーザーが個別に有効/無効を切り替えたいアプリケーションを配置する。
|
||||||
|
|
||||||
|
- 例: niri, noctalia, greetd, fcitx5, kde, wayland
|
||||||
|
|
||||||
|
### Module Pattern
|
||||||
|
|
||||||
|
`modules/system/` と `modules/applications/` のモジュールは、デフォルトで `config.my.*` namespace で有効/無効を切り替えられる仕組みにする。
|
||||||
|
|
||||||
|
#### Simple Module (NixOS のみ)
|
||||||
|
|
||||||
|
home-manager の設定を含まないモジュール:
|
||||||
|
|
||||||
|
```nix
|
||||||
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
cfg = config.my.<category>.<name>;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.my.<category>.<name> = {
|
||||||
|
enable = lib.mkEnableOption "<description>";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
# configuration here
|
||||||
|
};
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
- `my.system.*` — system モジュール用
|
||||||
|
- `my.applications.*` — applications モジュール用
|
||||||
|
|
||||||
|
#### Complex Module (NixOS + Home Manager)
|
||||||
|
|
||||||
|
home-manager の設定も含むモジュールは3つのフラグを設定する:
|
||||||
|
|
||||||
|
```
|
||||||
|
modules/applications/<app>/
|
||||||
|
├── default.nix # my.applications.<app>.enable (マスター)
|
||||||
|
├── system.nix # my.applications.<app>.system.enable
|
||||||
|
├── home.nix # my.applications.<app>.homeManager.enable
|
||||||
|
└── (other files) # 設定ファイル等
|
||||||
|
```
|
||||||
|
|
||||||
|
`default.nix`:
|
||||||
|
|
||||||
|
```nix
|
||||||
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
cfg = config.my.applications.<name>;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.my.applications.<name> = {
|
||||||
|
enable = lib.mkEnableOption "<description>";
|
||||||
|
system.enable = lib.mkEnableOption "<description> system configuration";
|
||||||
|
homeManager.enable = lib.mkEnableOption "<description> home-manager configuration";
|
||||||
|
};
|
||||||
|
|
||||||
|
imports = [
|
||||||
|
./system.nix
|
||||||
|
./home.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
my.applications.<name>.system.enable = lib.mkDefault true;
|
||||||
|
my.applications.<name>.homeManager.enable = lib.mkDefault true;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
マスターの `enable` を有効にすると、`lib.mkDefault` で system と homeManager の両方が有効化される。個別に無効化も可能。
|
||||||
|
|||||||
Generated
+185
-30
@@ -68,6 +68,64 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"blueprint": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": [
|
||||||
|
"llm-agents",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": [
|
||||||
|
"llm-agents",
|
||||||
|
"systems"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1776249299,
|
||||||
|
"narHash": "sha256-Dt9t1TGRmJFc0xVYhttNBD6QsAgHOHCArqGa0AyjrJY=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "blueprint",
|
||||||
|
"rev": "56131e8628f173d24a27f6d27c0215eff57e40dd",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "blueprint",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"bun2nix": {
|
||||||
|
"inputs": {
|
||||||
|
"flake-parts": [
|
||||||
|
"llm-agents",
|
||||||
|
"flake-parts"
|
||||||
|
],
|
||||||
|
"nixpkgs": [
|
||||||
|
"llm-agents",
|
||||||
|
"nixpkgs"
|
||||||
|
],
|
||||||
|
"systems": [
|
||||||
|
"llm-agents",
|
||||||
|
"systems"
|
||||||
|
],
|
||||||
|
"treefmt-nix": [
|
||||||
|
"llm-agents",
|
||||||
|
"treefmt-nix"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1778446047,
|
||||||
|
"narHash": "sha256-oQvcadh2BCkrog+SGrG6YffKJrveYpjj3TdQJWaKhaM=",
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "bun2nix",
|
||||||
|
"rev": "f2bc12af1a6369648aac41041ceeaa0b866599c6",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "nix-community",
|
||||||
|
"repo": "bun2nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"crane": {
|
"crane": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1779130139,
|
"lastModified": 1779130139,
|
||||||
@@ -200,7 +258,7 @@
|
|||||||
"flake-parts_2": {
|
"flake-parts_2": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs-lib": [
|
"nixpkgs-lib": [
|
||||||
"nixvim",
|
"llm-agents",
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -219,6 +277,27 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flake-parts_3": {
|
"flake-parts_3": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs-lib": [
|
||||||
|
"nixvim",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1778716662,
|
||||||
|
"narHash": "sha256-m1Yf0wZ8j1OHjTc2UwHwyQRSnNeSgLJOd7q5Y45hzi4=",
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "flake-parts",
|
||||||
|
"rev": "f7c1a2d347e4c52d5fb8d10cb4d94b5884e546fb",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "hercules-ci",
|
||||||
|
"repo": "flake-parts",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"flake-parts_4": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs-lib": [
|
"nixpkgs-lib": [
|
||||||
"stylix",
|
"stylix",
|
||||||
@@ -422,11 +501,34 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"llm-agents": {
|
||||||
|
"inputs": {
|
||||||
|
"blueprint": "blueprint",
|
||||||
|
"bun2nix": "bun2nix",
|
||||||
|
"flake-parts": "flake-parts_2",
|
||||||
|
"nixpkgs": "nixpkgs_3",
|
||||||
|
"systems": "systems_2",
|
||||||
|
"treefmt-nix": "treefmt-nix"
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1780119579,
|
||||||
|
"narHash": "sha256-EnWR9fQzTfmIkyWD8ynYdAM573x3wzkOzZuMagrEosQ=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "llm-agents.nix",
|
||||||
|
"rev": "b8adcd1a8e45e6d84f511c1a3b12998634481204",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "llm-agents.nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"niri-flake": {
|
"niri-flake": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"niri-stable": "niri-stable",
|
"niri-stable": "niri-stable",
|
||||||
"niri-unstable": "niri-unstable",
|
"niri-unstable": "niri-unstable",
|
||||||
"nixpkgs": "nixpkgs_3",
|
"nixpkgs": "nixpkgs_4",
|
||||||
"nixpkgs-stable": "nixpkgs-stable",
|
"nixpkgs-stable": "nixpkgs-stable",
|
||||||
"xwayland-satellite-stable": "xwayland-satellite-stable",
|
"xwayland-satellite-stable": "xwayland-satellite-stable",
|
||||||
"xwayland-satellite-unstable": "xwayland-satellite-unstable"
|
"xwayland-satellite-unstable": "xwayland-satellite-unstable"
|
||||||
@@ -497,7 +599,7 @@
|
|||||||
"nixos-wsl": {
|
"nixos-wsl": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-compat": "flake-compat_4",
|
"flake-compat": "flake-compat_4",
|
||||||
"nixpkgs": "nixpkgs_4"
|
"nixpkgs": "nixpkgs_5"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1777732699,
|
"lastModified": 1777732699,
|
||||||
@@ -590,6 +692,22 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_3": {
|
"nixpkgs_3": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1779955849,
|
||||||
|
"narHash": "sha256-31mhzm2HpzRr/rupWAFfWBmt9SUjzwr5+giv5Nmb/rA=",
|
||||||
|
"owner": "NixOS",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "a2c6938835fca96e4a10c8561d461efd2f91d04f",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "NixOS",
|
||||||
|
"ref": "nixos-unstable-small",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"nixpkgs_4": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1779560665,
|
"lastModified": 1779560665,
|
||||||
"narHash": "sha256-tpyBcxPpcQb8ukyNF7DoCwfSY3VPsxHoYwj00Cayv5o=",
|
"narHash": "sha256-tpyBcxPpcQb8ukyNF7DoCwfSY3VPsxHoYwj00Cayv5o=",
|
||||||
@@ -605,7 +723,7 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_4": {
|
"nixpkgs_5": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1776169885,
|
"lastModified": 1776169885,
|
||||||
"narHash": "sha256-l/iNYDZ4bGOAFQY2q8y5OAfBBtrDAaPuRQqWaFHVRXM=",
|
"narHash": "sha256-l/iNYDZ4bGOAFQY2q8y5OAfBBtrDAaPuRQqWaFHVRXM=",
|
||||||
@@ -621,7 +739,7 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_5": {
|
"nixpkgs_6": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1779622335,
|
"lastModified": 1779622335,
|
||||||
"narHash": "sha256-ViA62qtL5za7V3d5I8OA9q9JcFhsVAiL5jVHwEclWqk=",
|
"narHash": "sha256-ViA62qtL5za7V3d5I8OA9q9JcFhsVAiL5jVHwEclWqk=",
|
||||||
@@ -637,7 +755,7 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_6": {
|
"nixpkgs_7": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1770107345,
|
"lastModified": 1770107345,
|
||||||
"narHash": "sha256-tbS0Ebx2PiA1FRW8mt8oejR0qMXmziJmPaU1d4kYY9g=",
|
"narHash": "sha256-tbS0Ebx2PiA1FRW8mt8oejR0qMXmziJmPaU1d4kYY9g=",
|
||||||
@@ -653,7 +771,7 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nixpkgs_7": {
|
"nixpkgs_8": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1772542754,
|
"lastModified": 1772542754,
|
||||||
"narHash": "sha256-WGV2hy+VIeQsYXpsLjdr4GvHv5eECMISX1zKLTedhdg=",
|
"narHash": "sha256-WGV2hy+VIeQsYXpsLjdr4GvHv5eECMISX1zKLTedhdg=",
|
||||||
@@ -671,11 +789,11 @@
|
|||||||
},
|
},
|
||||||
"nixvim": {
|
"nixvim": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"flake-parts": "flake-parts_2",
|
"flake-parts": "flake-parts_3",
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
],
|
],
|
||||||
"systems": "systems_2"
|
"systems": "systems_3"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1779816597,
|
"lastModified": 1779816597,
|
||||||
@@ -718,8 +836,8 @@
|
|||||||
"noctalia",
|
"noctalia",
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
],
|
],
|
||||||
"systems": "systems_3",
|
"systems": "systems_4",
|
||||||
"treefmt-nix": "treefmt-nix"
|
"treefmt-nix": "treefmt-nix_2"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1779588472,
|
"lastModified": 1779588472,
|
||||||
@@ -810,18 +928,19 @@
|
|||||||
"git-hooks-nix": "git-hooks-nix",
|
"git-hooks-nix": "git-hooks-nix",
|
||||||
"home-manager": "home-manager_2",
|
"home-manager": "home-manager_2",
|
||||||
"lanzaboote": "lanzaboote",
|
"lanzaboote": "lanzaboote",
|
||||||
|
"llm-agents": "llm-agents",
|
||||||
"niri-flake": "niri-flake",
|
"niri-flake": "niri-flake",
|
||||||
"nixos-hardware": "nixos-hardware",
|
"nixos-hardware": "nixos-hardware",
|
||||||
"nixos-wsl": "nixos-wsl",
|
"nixos-wsl": "nixos-wsl",
|
||||||
"nixpkgs": "nixpkgs_5",
|
"nixpkgs": "nixpkgs_6",
|
||||||
"nixpkgs-unstable": "nixpkgs-unstable",
|
"nixpkgs-unstable": "nixpkgs-unstable",
|
||||||
"nixvim": "nixvim",
|
"nixvim": "nixvim",
|
||||||
"noctalia": "noctalia",
|
"noctalia": "noctalia",
|
||||||
"quickshell": "quickshell",
|
"quickshell": "quickshell",
|
||||||
"services-flake": "services-flake",
|
"services-flake": "services-flake",
|
||||||
"stylix": "stylix",
|
"stylix": "stylix",
|
||||||
"systems": "systems_5",
|
"systems": "systems_6",
|
||||||
"treefmt-nix": "treefmt-nix_2",
|
"treefmt-nix": "treefmt-nix_3",
|
||||||
"vicinae": "vicinae",
|
"vicinae": "vicinae",
|
||||||
"vicinae-extensions": "vicinae-extensions"
|
"vicinae-extensions": "vicinae-extensions"
|
||||||
}
|
}
|
||||||
@@ -869,13 +988,13 @@
|
|||||||
"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_3",
|
"flake-parts": "flake-parts_4",
|
||||||
"gnome-shell": "gnome-shell",
|
"gnome-shell": "gnome-shell",
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
],
|
],
|
||||||
"nur": "nur",
|
"nur": "nur",
|
||||||
"systems": "systems_4",
|
"systems": "systems_5",
|
||||||
"tinted-kitty": "tinted-kitty",
|
"tinted-kitty": "tinted-kitty",
|
||||||
"tinted-schemes": "tinted-schemes",
|
"tinted-schemes": "tinted-schemes",
|
||||||
"tinted-tmux": "tinted-tmux",
|
"tinted-tmux": "tinted-tmux",
|
||||||
@@ -928,20 +1047,35 @@
|
|||||||
},
|
},
|
||||||
"systems_3": {
|
"systems_3": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1689347949,
|
"lastModified": 1681028828,
|
||||||
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
"owner": "nix-systems",
|
"owner": "nix-systems",
|
||||||
"repo": "default-linux",
|
"repo": "default",
|
||||||
"rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68",
|
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
"owner": "nix-systems",
|
"owner": "nix-systems",
|
||||||
"repo": "default-linux",
|
"repo": "default",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"systems_4": {
|
"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": {
|
"locked": {
|
||||||
"lastModified": 1681028828,
|
"lastModified": 1681028828,
|
||||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
@@ -956,7 +1090,7 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"systems_5": {
|
"systems_6": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1689347949,
|
"lastModified": 1689347949,
|
||||||
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
|
"narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=",
|
||||||
@@ -971,7 +1105,7 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"systems_6": {
|
"systems_7": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1681028828,
|
"lastModified": 1681028828,
|
||||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
@@ -986,7 +1120,7 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"systems_7": {
|
"systems_8": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1681028828,
|
"lastModified": 1681028828,
|
||||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||||
@@ -1068,8 +1202,7 @@
|
|||||||
"treefmt-nix": {
|
"treefmt-nix": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"noctalia",
|
"llm-agents",
|
||||||
"noctalia-qs",
|
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -1089,7 +1222,29 @@
|
|||||||
},
|
},
|
||||||
"treefmt-nix_2": {
|
"treefmt-nix_2": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": "nixpkgs_6"
|
"nixpkgs": [
|
||||||
|
"noctalia",
|
||||||
|
"noctalia-qs",
|
||||||
|
"nixpkgs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1775636079,
|
||||||
|
"narHash": "sha256-pc20NRoMdiar8oPQceQT47UUZMBTiMdUuWrYu2obUP0=",
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "treefmt-nix",
|
||||||
|
"rev": "790751ff7fd3801feeaf96d7dc416a8d581265ba",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "numtide",
|
||||||
|
"repo": "treefmt-nix",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"treefmt-nix_3": {
|
||||||
|
"inputs": {
|
||||||
|
"nixpkgs": "nixpkgs_7"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1775636079,
|
"lastModified": 1775636079,
|
||||||
@@ -1107,8 +1262,8 @@
|
|||||||
},
|
},
|
||||||
"vicinae": {
|
"vicinae": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"nixpkgs": "nixpkgs_7",
|
"nixpkgs": "nixpkgs_8",
|
||||||
"systems": "systems_6"
|
"systems": "systems_7"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1779832601,
|
"lastModified": 1779832601,
|
||||||
@@ -1130,7 +1285,7 @@
|
|||||||
"nixpkgs": [
|
"nixpkgs": [
|
||||||
"nixpkgs"
|
"nixpkgs"
|
||||||
],
|
],
|
||||||
"systems": "systems_7",
|
"systems": "systems_8",
|
||||||
"vicinae": "vicinae_2"
|
"vicinae": "vicinae_2"
|
||||||
},
|
},
|
||||||
"locked": {
|
"locked": {
|
||||||
|
|||||||
@@ -67,6 +67,9 @@
|
|||||||
# Dev services
|
# Dev services
|
||||||
services-flake.url = "github:juspay/services-flake";
|
services-flake.url = "github:juspay/services-flake";
|
||||||
|
|
||||||
|
# LLM agents
|
||||||
|
llm-agents.url = "github:numtide/llm-agents.nix";
|
||||||
|
|
||||||
# Systems
|
# Systems
|
||||||
systems.url = "github:nix-systems/default-linux";
|
systems.url = "github:nix-systems/default-linux";
|
||||||
};
|
};
|
||||||
|
|||||||
+2
-2
@@ -8,7 +8,7 @@
|
|||||||
let
|
let
|
||||||
inherit (inputs.nixpkgs.lib) nixosSystem;
|
inherit (inputs.nixpkgs.lib) nixosSystem;
|
||||||
|
|
||||||
userName = "moons";
|
username = "moons";
|
||||||
|
|
||||||
unstable = import inputs.nixpkgs-unstable {
|
unstable = import inputs.nixpkgs-unstable {
|
||||||
inherit (pkgs) system;
|
inherit (pkgs) system;
|
||||||
@@ -36,7 +36,7 @@ let
|
|||||||
./${host}/default.nix
|
./${host}/default.nix
|
||||||
]
|
]
|
||||||
++ extraModules;
|
++ extraModules;
|
||||||
specialArgs = { inherit inputs userName unstable; };
|
specialArgs = { inherit inputs username unstable; };
|
||||||
};
|
};
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
|
|||||||
Binary file not shown.
|
After Width: | Height: | Size: 42 KiB |
@@ -0,0 +1,23 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
cfg = config.my.applications.btop;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./system.nix
|
||||||
|
./home.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
options.my.applications.btop = {
|
||||||
|
enable = lib.mkEnableOption "btop system monitor";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
my.applications.btop.system.enable = lib.mkDefault true;
|
||||||
|
my.applications.btop.homeManager.enable = lib.mkDefault true;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,89 @@
|
|||||||
|
#Bashtop theme with nord palette (https://www.nordtheme.com)
|
||||||
|
#by Justin Zobel <[email protected]>
|
||||||
|
|
||||||
|
# Colors should be in 6 or 2 character hexadecimal or single spaced rgb decimal: "#RRGGBB", "#BW" or "0-255 0-255 0-255"
|
||||||
|
# example for white: "#ffffff", "#ff" or "255 255 255".
|
||||||
|
|
||||||
|
# All graphs and meters can be gradients
|
||||||
|
# For single color graphs leave "mid" and "end" variable empty.
|
||||||
|
# Use "start" and "end" variables for two color gradient
|
||||||
|
# Use "start", "mid" and "end" for three color gradient
|
||||||
|
|
||||||
|
# Main background, empty for terminal default, need to be empty if you want transparent background
|
||||||
|
theme[main_bg]="#282A36"
|
||||||
|
|
||||||
|
# Main text color
|
||||||
|
theme[main_fg]="#BD93F9"
|
||||||
|
|
||||||
|
# Title color for boxes
|
||||||
|
theme[title]="#f8f8f2"
|
||||||
|
|
||||||
|
# Higlight color for keyboard shortcuts
|
||||||
|
theme[hi_fg]="#ff79c6"
|
||||||
|
|
||||||
|
# Background color of selected item in processes box
|
||||||
|
theme[selected_bg]="#44475A"
|
||||||
|
|
||||||
|
# Foreground color of selected item in processes box
|
||||||
|
theme[selected_fg]="#ECEFF4"
|
||||||
|
|
||||||
|
# Color of inactive/disabled text
|
||||||
|
theme[inactive_fg]="#6272a4"
|
||||||
|
|
||||||
|
# Misc colors for processes box including mini cpu graphs, details memory graph and details status text
|
||||||
|
theme[proc_misc]="#BD93F9"
|
||||||
|
|
||||||
|
# Cpu box outline color
|
||||||
|
theme[cpu_box]="#ff79c6"
|
||||||
|
|
||||||
|
# Memory/disks box outline color
|
||||||
|
theme[mem_box]="#ff79c6"
|
||||||
|
|
||||||
|
# Net up/down box outline color
|
||||||
|
theme[net_box]="#ff79c6"
|
||||||
|
|
||||||
|
# Processes box outline color
|
||||||
|
theme[proc_box]="#ff79c6"
|
||||||
|
|
||||||
|
# Box divider line and small boxes line color
|
||||||
|
theme[div_line]="#ff79c6"
|
||||||
|
|
||||||
|
# Temperature graph colors
|
||||||
|
theme[temp_start]="#bd93f9"
|
||||||
|
theme[temp_mid]="#bd93f9"
|
||||||
|
theme[temp_end]="#bd93f9"
|
||||||
|
|
||||||
|
# CPU graph colors
|
||||||
|
theme[cpu_start]="#bd93f9"
|
||||||
|
theme[cpu_mid]="#bd93f9"
|
||||||
|
theme[cpu_end]="#bd93f9"
|
||||||
|
|
||||||
|
# Mem/Disk free meter
|
||||||
|
theme[free_start]="#bd93f9"
|
||||||
|
theme[free_mid]="#bd93f9"
|
||||||
|
theme[free_end]="#bd93f9"
|
||||||
|
|
||||||
|
# Mem/Disk cached meter
|
||||||
|
theme[cached_start]="#bd93f9"
|
||||||
|
theme[cached_mid]="#bd93f9"
|
||||||
|
theme[cached_end]="#bd93f9"
|
||||||
|
|
||||||
|
# Mem/Disk available meter
|
||||||
|
theme[available_start]="#bd93f9"
|
||||||
|
theme[available_mid]="#bd93f9"
|
||||||
|
theme[available_end]="#bd93f9"
|
||||||
|
|
||||||
|
# Mem/Disk used meter
|
||||||
|
theme[used_start]="#bd93f9"
|
||||||
|
theme[used_mid]="#bd93f9"
|
||||||
|
theme[used_end]="#bd93f9"
|
||||||
|
|
||||||
|
# Download graph colors
|
||||||
|
theme[download_start]="#bd93f9"
|
||||||
|
theme[download_mid]="#bd93f9"
|
||||||
|
theme[download_end]="#bd93f9"
|
||||||
|
|
||||||
|
# Upload graph colors
|
||||||
|
theme[upload_start]="#bd93f9"
|
||||||
|
theme[upload_mid]="#bd93f9"
|
||||||
|
theme[upload_end]="#bd93f9"
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
cfg = config.my.applications.btop.homeManager;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.my.applications.btop.homeManager = {
|
||||||
|
enable = lib.mkEnableOption "btop home-manager configuration";
|
||||||
|
};
|
||||||
|
|
||||||
|
config.home-manager.sharedModules = [
|
||||||
|
{
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
programs.btop = {
|
||||||
|
enable = true;
|
||||||
|
settings.color_theme = "dracula";
|
||||||
|
themes.dracula = builtins.readFile ./dracula.theme;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
cfg = config.my.applications.btop.system;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.my.applications.btop.system = {
|
||||||
|
enable = lib.mkEnableOption "btop system configuration";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
btop # Resource monitor that shows usage and stats
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
cfg = config.my.applications.chrome;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.my.applications.chrome = {
|
||||||
|
enable = lib.mkEnableOption "Google Chrome browser";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
nixpkgs.config.allowUnfree = true;
|
||||||
|
|
||||||
|
home-manager.sharedModules = [
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
google-chrome # Popular web browser from Google
|
||||||
|
];
|
||||||
|
|
||||||
|
xdg.desktopEntries."google-chrome" = {
|
||||||
|
name = "Google Chrome";
|
||||||
|
genericName = "Web Browser";
|
||||||
|
exec = "${pkgs.google-chrome}/bin/google-chrome-stable --enable-features=TouchpadOverscrollHistoryNavigation %U";
|
||||||
|
terminal = false;
|
||||||
|
icon = "google-chrome";
|
||||||
|
categories = [
|
||||||
|
"Network"
|
||||||
|
"WebBrowser"
|
||||||
|
];
|
||||||
|
startupNotify = true;
|
||||||
|
type = "Application";
|
||||||
|
};
|
||||||
|
|
||||||
|
xdg.mimeApps.defaultApplications = {
|
||||||
|
"text/html" = "google-chrome.desktop";
|
||||||
|
"x-scheme-handler/http" = "google-chrome.desktop";
|
||||||
|
"x-scheme-handler/https" = "google-chrome.desktop";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
cfg = config.my.applications.claude;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./system.nix
|
||||||
|
./home.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
options.my.applications.claude = {
|
||||||
|
enable = lib.mkEnableOption "Claude Code AI assistant";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
my.applications.claude.system.enable = lib.mkDefault true;
|
||||||
|
my.applications.claude.homeManager.enable = lib.mkDefault true;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
cfg = config.my.applications.claude.homeManager;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.my.applications.claude.homeManager = {
|
||||||
|
enable = lib.mkEnableOption "Claude Code home-manager configuration";
|
||||||
|
};
|
||||||
|
|
||||||
|
config.home-manager.sharedModules = [
|
||||||
|
{
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
home.file.".claude/settings.json".text = builtins.toJSON {
|
||||||
|
statusLine = {
|
||||||
|
type = "command";
|
||||||
|
command = "bun x ccusage statusline --no-offline";
|
||||||
|
padding = 0;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
inputs,
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
cfg = config.my.applications.claude.system;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.my.applications.claude.system = {
|
||||||
|
enable = lib.mkEnableOption "Claude Code system configuration";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
environment.systemPackages = [
|
||||||
|
inputs.llm-agents.packages.${pkgs.stdenv.hostPlatform.system}.claude-code # AI coding assistant
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./btop
|
||||||
|
./chrome.nix
|
||||||
|
./claude
|
||||||
|
./direnv.nix
|
||||||
|
./discord.nix
|
||||||
|
./docker.nix
|
||||||
|
./fcitx5
|
||||||
|
./ghostty
|
||||||
|
./git
|
||||||
|
./gnupg.nix
|
||||||
|
./greetd.nix
|
||||||
|
./gtk
|
||||||
|
./java.nix
|
||||||
|
./kde.nix
|
||||||
|
./nautilus.nix
|
||||||
|
./niri
|
||||||
|
./noctalia
|
||||||
|
./openssh.nix
|
||||||
|
./ssh
|
||||||
|
./swayidle.nix
|
||||||
|
./tailscale.nix
|
||||||
|
./vicinae.nix
|
||||||
|
./vim
|
||||||
|
./vscode
|
||||||
|
./wayland.nix
|
||||||
|
./zellij
|
||||||
|
./zoom.nix
|
||||||
|
./zsh
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
{ lib, config, ... }:
|
||||||
|
let
|
||||||
|
cfg = config.my.applications.direnv;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.my.applications.direnv = {
|
||||||
|
enable = lib.mkEnableOption "direnv environment variable manager";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
programs.direnv = {
|
||||||
|
enable = true;
|
||||||
|
nix-direnv.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
cfg = config.my.applications.discord;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.my.applications.discord = {
|
||||||
|
enable = lib.mkEnableOption "Discord (Vesktop)";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
home-manager.sharedModules = [
|
||||||
|
{
|
||||||
|
programs.vesktop = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
cfg = config.my.applications.docker;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.my.applications.docker = {
|
||||||
|
enable = lib.mkEnableOption "Docker container runtime";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
virtualisation.docker = {
|
||||||
|
enable = true;
|
||||||
|
autoPrune = {
|
||||||
|
enable = true;
|
||||||
|
dates = "weekly";
|
||||||
|
};
|
||||||
|
daemon.settings = {
|
||||||
|
ipv6 = true;
|
||||||
|
"fixed-cidr-v6" = "fd00:30::/64";
|
||||||
|
ip6tables = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
docker # Container runtime
|
||||||
|
oxker # Docker TUI Tool
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,69 @@
|
|||||||
|
[Hotkey]
|
||||||
|
# トリガーキーを押すたびに切り替える
|
||||||
|
EnumerateWithTriggerKeys=False
|
||||||
|
# 一時的に第1入力メソッドに切り替える
|
||||||
|
AltTriggerKeys=
|
||||||
|
# 切り替え時は第1入力メソッドをスキップする
|
||||||
|
EnumerateSkipFirst=False
|
||||||
|
# Time limit in milliseconds for triggering modifier key shortcuts
|
||||||
|
ModifierOnlyKeyTimeout=250
|
||||||
|
|
||||||
|
[Hotkey/TriggerKeys]
|
||||||
|
1=Zenkaku_Hankaku
|
||||||
|
|
||||||
|
[Hotkey/ActivateKeys]
|
||||||
|
0=Henkan
|
||||||
|
|
||||||
|
[Hotkey/DeactivateKeys]
|
||||||
|
0=Muhenkan
|
||||||
|
|
||||||
|
[Hotkey/PrevPage]
|
||||||
|
0=Up
|
||||||
|
|
||||||
|
[Hotkey/NextPage]
|
||||||
|
0=Down
|
||||||
|
|
||||||
|
[Hotkey/PrevCandidate]
|
||||||
|
0=Shift+Tab
|
||||||
|
|
||||||
|
[Hotkey/NextCandidate]
|
||||||
|
0=Tab
|
||||||
|
|
||||||
|
[Hotkey/TogglePreedit]
|
||||||
|
0=Control+Alt+P
|
||||||
|
|
||||||
|
[Behavior]
|
||||||
|
# デフォルトで有効にする
|
||||||
|
ActiveByDefault=False
|
||||||
|
# フォーカス時に状態をリセット
|
||||||
|
resetStateWhenFocusIn=No
|
||||||
|
# 入力状態を共有する
|
||||||
|
ShareInputState=No
|
||||||
|
# アプリケーションにプリエディットを表示する
|
||||||
|
PreeditEnabledByDefault=True
|
||||||
|
# 入力メソッドを切り替える際に入力メソッドの情報を表示する
|
||||||
|
ShowInputMethodInformation=True
|
||||||
|
# フォーカスを変更する際に入力メソッドの情報を表示する
|
||||||
|
showInputMethodInformationWhenFocusIn=False
|
||||||
|
# 入力メソッドの情報をコンパクトに表示する
|
||||||
|
CompactInputMethodInformation=True
|
||||||
|
# 第1入力メソッドの情報を表示する
|
||||||
|
ShowFirstInputMethodInformation=True
|
||||||
|
# デフォルトのページサイズ
|
||||||
|
DefaultPageSize=5
|
||||||
|
# XKB オプションより優先する
|
||||||
|
OverrideXkbOption=False
|
||||||
|
# カスタム XKB オプション
|
||||||
|
CustomXkbOption=
|
||||||
|
# Force Enabled Addons
|
||||||
|
EnabledAddons=
|
||||||
|
# Force Disabled Addons
|
||||||
|
DisabledAddons=
|
||||||
|
# Preload input method to be used by default
|
||||||
|
PreloadInputMethod=True
|
||||||
|
# パスワード欄に入力メソッドを許可する
|
||||||
|
AllowInputMethodForPassword=False
|
||||||
|
# パスワード入力時にプリエディットテキストを表示する
|
||||||
|
ShowPreeditForPassword=False
|
||||||
|
# ユーザーデータを保存する間隔(分)
|
||||||
|
AutoSavePeriod=30
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
cfg = config.my.applications.fcitx5;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./system.nix
|
||||||
|
./home.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
options.my.applications.fcitx5 = {
|
||||||
|
enable = lib.mkEnableOption "fcitx5 input method";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
my.applications.fcitx5.system.enable = lib.mkDefault true;
|
||||||
|
my.applications.fcitx5.homeManager.enable = lib.mkDefault true;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
cfg = config.my.applications.fcitx5.homeManager;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.my.applications.fcitx5.homeManager = {
|
||||||
|
enable = lib.mkEnableOption "fcitx5 home-manager configuration";
|
||||||
|
};
|
||||||
|
|
||||||
|
config.home-manager.sharedModules = [
|
||||||
|
{
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
home.file.".config/fcitx5/config" = {
|
||||||
|
recursive = true;
|
||||||
|
source = ./config;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -0,0 +1,48 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
cfg = config.my.applications.fcitx5.system;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.my.applications.fcitx5.system = {
|
||||||
|
enable = lib.mkEnableOption "fcitx5 system configuration";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
i18n.inputMethod = {
|
||||||
|
enable = true;
|
||||||
|
type = "fcitx5";
|
||||||
|
fcitx5 = {
|
||||||
|
waylandFrontend = true;
|
||||||
|
addons = with pkgs; [
|
||||||
|
fcitx5-mozc-ut
|
||||||
|
fcitx5-gtk
|
||||||
|
kdePackages.fcitx5-qt
|
||||||
|
qt6Packages.fcitx5-configtool
|
||||||
|
];
|
||||||
|
settings.inputMethod = {
|
||||||
|
GroupOrder = {
|
||||||
|
"0" = "Default";
|
||||||
|
};
|
||||||
|
"Groups/0" = {
|
||||||
|
Name = "Default";
|
||||||
|
"Default Layout" = "jp";
|
||||||
|
DefaultIM = "mozc";
|
||||||
|
};
|
||||||
|
"Groups/0/Items/0" = {
|
||||||
|
Name = "keyboard-jp";
|
||||||
|
Layout = "";
|
||||||
|
};
|
||||||
|
"Groups/0/Items/1" = {
|
||||||
|
Name = "mozc";
|
||||||
|
Layout = "";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
theme = dracula
|
||||||
|
background-blur-radius = 20
|
||||||
|
background-opacity = 0.9
|
||||||
|
font-family = BlexMono Nerd Font Mono
|
||||||
|
mouse-hide-while-typing = true
|
||||||
|
window-decoration = true
|
||||||
|
|
||||||
|
|
||||||
|
# keybind
|
||||||
|
|
||||||
|
# Copy/Paste
|
||||||
|
keybind = ctrl+shift+c=copy_to_clipboard
|
||||||
|
keybind = ctrl+shift+v=paste_from_clipboard
|
||||||
|
|
||||||
|
# create new tab
|
||||||
|
keybind = ctrl+shift+t=new_tab
|
||||||
|
|
||||||
|
# move tabs
|
||||||
|
keybind = ctrl+alt+left_bracket=previous_tab
|
||||||
|
keybind = ctrl+alt+right_bracket=next_tab
|
||||||
|
|
||||||
|
# close tab
|
||||||
|
keybind = ctrl+alt+q=close_window
|
||||||
|
|
||||||
|
# font size
|
||||||
|
keybind = ctrl+shift+semicolon=increase_font_size:1
|
||||||
|
keybind = ctrl+shift+minus=increase_font_size:1
|
||||||
|
|
||||||
|
|
||||||
|
shell-integration-features = ssh-terminfo,ssh-env
|
||||||
|
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
cfg = config.my.applications.ghostty;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./system.nix
|
||||||
|
./home.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
options.my.applications.ghostty = {
|
||||||
|
enable = lib.mkEnableOption "ghostty terminal emulator";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
my.applications.ghostty.system.enable = lib.mkDefault true;
|
||||||
|
my.applications.ghostty.homeManager.enable = lib.mkDefault true;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
# MIT License
|
||||||
|
#
|
||||||
|
# Copyright (c) 2023 Dracula Theme
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
# of this software and associated documentation files (the "Software"), to deal
|
||||||
|
# in the Software without restriction, including without limitation the rights
|
||||||
|
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
# copies of the Software, and to permit persons to whom the Software is
|
||||||
|
# furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in all
|
||||||
|
# copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
# SOFTWARE.
|
||||||
|
|
||||||
|
palette = 0=#21222c
|
||||||
|
palette = 1=#ff5555
|
||||||
|
palette = 2=#50fa7b
|
||||||
|
palette = 3=#f1fa8c
|
||||||
|
palette = 4=#bd93f9
|
||||||
|
palette = 5=#ff79c6
|
||||||
|
palette = 6=#8be9fd
|
||||||
|
palette = 7=#f8f8f2
|
||||||
|
palette = 8=#6272a4
|
||||||
|
palette = 9=#ff6e6e
|
||||||
|
palette = 10=#69ff94
|
||||||
|
palette = 11=#ffffa5
|
||||||
|
palette = 12=#d6acff
|
||||||
|
palette = 13=#ff92df
|
||||||
|
palette = 14=#a4ffff
|
||||||
|
palette = 15=#ffffff
|
||||||
|
background = #282a36
|
||||||
|
foreground = #f8f8f2
|
||||||
|
cursor-color = #f8f8f2
|
||||||
|
cursor-text = #282a36
|
||||||
|
selection-foreground = #f8f8f2
|
||||||
|
selection-background = #44475a
|
||||||
|
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
cfg = config.my.applications.ghostty.homeManager;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.my.applications.ghostty.homeManager = {
|
||||||
|
enable = lib.mkEnableOption "ghostty home-manager configuration";
|
||||||
|
};
|
||||||
|
|
||||||
|
config.home-manager.sharedModules = [
|
||||||
|
{
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
home.file.".config/ghostty/config" = {
|
||||||
|
recursive = true;
|
||||||
|
source = ./config;
|
||||||
|
};
|
||||||
|
|
||||||
|
home.file.".config/ghostty/themes/dracula" = {
|
||||||
|
recursive = true;
|
||||||
|
source = ./dracula.theme;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
cfg = config.my.applications.ghostty.system;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.my.applications.ghostty.system = {
|
||||||
|
enable = lib.mkEnableOption "ghostty system configuration";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
unstable.ghostty # A fast and minimal terminal emulator for Wayland
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
cfg = config.my.applications.git;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./system.nix
|
||||||
|
./home.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
options.my.applications.git = {
|
||||||
|
enable = lib.mkEnableOption "git version control";
|
||||||
|
userName = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
default = "moons-14";
|
||||||
|
description = "Git user name";
|
||||||
|
};
|
||||||
|
userEmail = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
default = "moons@moons14.com";
|
||||||
|
description = "Git user email";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
my.applications.git.system.enable = lib.mkDefault true;
|
||||||
|
my.applications.git.homeManager.enable = lib.mkDefault true;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,59 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
cfg = config.my.applications.git;
|
||||||
|
hmCfg = config.my.applications.git.homeManager;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.my.applications.git.homeManager = {
|
||||||
|
enable = lib.mkEnableOption "git home-manager configuration";
|
||||||
|
};
|
||||||
|
|
||||||
|
config.home-manager.sharedModules = [
|
||||||
|
{
|
||||||
|
config = lib.mkIf hmCfg.enable {
|
||||||
|
programs.git = {
|
||||||
|
enable = true;
|
||||||
|
ignores = [
|
||||||
|
".direnv/"
|
||||||
|
".envrc"
|
||||||
|
"!.envrc.example"
|
||||||
|
];
|
||||||
|
|
||||||
|
signing = {
|
||||||
|
key = "~/.ssh/id_ed25519.pub";
|
||||||
|
signByDefault = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
user.name = cfg.userName;
|
||||||
|
user.email = cfg.userEmail;
|
||||||
|
push.default = "simple";
|
||||||
|
credential.helper = "cache --timeout=7200";
|
||||||
|
init.defaultBranch = "main";
|
||||||
|
log.decorate = "full";
|
||||||
|
log.date = "iso";
|
||||||
|
merge.conflictStyle = "diff3";
|
||||||
|
|
||||||
|
gpg.format = "ssh";
|
||||||
|
tag.gpgSign = true;
|
||||||
|
|
||||||
|
alias = {
|
||||||
|
br = "branch --sort=-committerdate";
|
||||||
|
co = "checkout";
|
||||||
|
df = "diff";
|
||||||
|
com = "commit -a";
|
||||||
|
gs = "stash";
|
||||||
|
gp = "pull";
|
||||||
|
lg = "log --graph --pretty=format:'%Cred%h%Creset - %C(yellow)%d%Creset %s %C(green)(%cr)%C(bold blue) <%an>%Creset' --abbrev-commit";
|
||||||
|
st = "status";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
cfg = config.my.applications.git.system;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.my.applications.git.system = {
|
||||||
|
enable = lib.mkEnableOption "git system configuration";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
git # Distributed version control system
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
{ lib, config, ... }:
|
||||||
|
let
|
||||||
|
cfg = config.my.applications.gnupg;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.my.applications.gnupg = {
|
||||||
|
enable = lib.mkEnableOption "GnuPG agent";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
programs.gnupg.agent = {
|
||||||
|
enable = true;
|
||||||
|
enableSSHSupport = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
cfg = config.my.applications.greetd;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.my.applications.greetd = {
|
||||||
|
enable = lib.mkEnableOption "greetd login manager";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
services.greetd = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
default_session = {
|
||||||
|
user = "greeter";
|
||||||
|
command = "${pkgs.tuigreet}/bin/tuigreet --time --remember --cmd niri-session";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
cfg = config.my.applications.gtk;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./system.nix
|
||||||
|
./home.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
options.my.applications.gtk = {
|
||||||
|
enable = lib.mkEnableOption "GTK theme configuration";
|
||||||
|
system.enable = lib.mkEnableOption "GTK system configuration";
|
||||||
|
homeManager.enable = lib.mkEnableOption "GTK home-manager configuration";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
my.applications.gtk.system.enable = lib.mkDefault true;
|
||||||
|
my.applications.gtk.homeManager.enable = lib.mkDefault true;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
cfg = config.my.applications.gtk.homeManager;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.my.applications.gtk.homeManager = {
|
||||||
|
enable = lib.mkEnableOption "GTK home-manager configuration";
|
||||||
|
};
|
||||||
|
|
||||||
|
config.home-manager.sharedModules = [
|
||||||
|
{
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
gtk = {
|
||||||
|
enable = true;
|
||||||
|
theme = {
|
||||||
|
name = "Dracula";
|
||||||
|
package = pkgs.dracula-theme;
|
||||||
|
};
|
||||||
|
cursorTheme = {
|
||||||
|
package = pkgs.adwaita-icon-theme;
|
||||||
|
name = "Adwaita";
|
||||||
|
};
|
||||||
|
iconTheme = {
|
||||||
|
package = pkgs.papirus-icon-theme;
|
||||||
|
name = "Papirus-Dark";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
{ lib, config, ... }:
|
||||||
|
let
|
||||||
|
cfg = config.my.applications.gtk.system;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.my.applications.gtk.system = {
|
||||||
|
enable = lib.mkEnableOption "GTK system configuration";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
programs.dconf.enable = true;
|
||||||
|
programs.seahorse.enable = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
cfg = config.my.applications.java;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.my.applications.java = {
|
||||||
|
enable = lib.mkEnableOption "Java runtime";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
programs.java = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.jdk25;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
cfg = config.my.applications.kde;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.my.applications.kde = {
|
||||||
|
enable = lib.mkEnableOption "KDE Connect";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
programs.kdeconnect = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
cfg = config.my.applications.nautilus;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.my.applications.nautilus = {
|
||||||
|
enable = lib.mkEnableOption "Nautilus file manager";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
nautilus # GNOME file manager
|
||||||
|
gvfs # GNOME virtual file system
|
||||||
|
sushi # Nautilus file previewer
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
cfg = config.my.applications.niri;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./system.nix
|
||||||
|
./home.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
options.my.applications.niri = {
|
||||||
|
enable = lib.mkEnableOption "niri window manager";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
my.applications.niri.system.enable = lib.mkDefault true;
|
||||||
|
my.applications.niri.homeManager.enable = lib.mkDefault true;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,166 @@
|
|||||||
|
{
|
||||||
|
"Mod+Shift+Slash".action.show-hotkey-overlay = { };
|
||||||
|
|
||||||
|
"XF86AudioRaiseVolume" = {
|
||||||
|
allow-when-locked = true;
|
||||||
|
action.spawn = [
|
||||||
|
"wpctl"
|
||||||
|
"set-volume"
|
||||||
|
"@DEFAULT_AUDIO_SINK@"
|
||||||
|
"0.1+"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"XF86AudioLowerVolume" = {
|
||||||
|
allow-when-locked = true;
|
||||||
|
action.spawn = [
|
||||||
|
"wpctl"
|
||||||
|
"set-volume"
|
||||||
|
"@DEFAULT_AUDIO_SINK@"
|
||||||
|
"0.1-"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"XF86AudioMute" = {
|
||||||
|
allow-when-locked = true;
|
||||||
|
action.spawn = [
|
||||||
|
"wpctl"
|
||||||
|
"set-mute"
|
||||||
|
"@DEFAULT_AUDIO_SINK@"
|
||||||
|
"toggle"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"XF86AudioMicMute" = {
|
||||||
|
allow-when-locked = true;
|
||||||
|
action.spawn = [
|
||||||
|
"wpctl"
|
||||||
|
"set-mute"
|
||||||
|
"@DEFAULT_AUDIO_SOURCE@"
|
||||||
|
"toggle"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
"Mod+Q".action.close-window = { };
|
||||||
|
|
||||||
|
"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+J".action.focus-window-down = { };
|
||||||
|
"Mod+K".action.focus-window-up = { };
|
||||||
|
"Mod+L".action.focus-column-right = { };
|
||||||
|
|
||||||
|
"Mod+Ctrl+Left".action.move-column-left = { };
|
||||||
|
"Mod+Ctrl+Down".action.move-window-down = { };
|
||||||
|
"Mod+Ctrl+Up".action.move-window-up = { };
|
||||||
|
"Mod+Ctrl+Right".action.move-column-right = { };
|
||||||
|
"Mod+Ctrl+H".action.move-column-left = { };
|
||||||
|
"Mod+Ctrl+J".action.move-window-down = { };
|
||||||
|
"Mod+Ctrl+K".action.move-window-up = { };
|
||||||
|
"Mod+Ctrl+L".action.move-column-right = { };
|
||||||
|
|
||||||
|
"Mod+Home".action.focus-column-first = { };
|
||||||
|
"Mod+End".action.focus-column-last = { };
|
||||||
|
"Mod+Ctrl+Home".action.move-column-to-first = { };
|
||||||
|
"Mod+Ctrl+End".action.move-column-to-last = { };
|
||||||
|
|
||||||
|
"Mod+Shift+Left".action.focus-monitor-left = { };
|
||||||
|
"Mod+Shift+Down".action.focus-monitor-down = { };
|
||||||
|
"Mod+Shift+Up".action.focus-monitor-up = { };
|
||||||
|
"Mod+Shift+Right".action.focus-monitor-right = { };
|
||||||
|
"Mod+Shift+H".action.focus-monitor-left = { };
|
||||||
|
"Mod+Shift+J".action.focus-monitor-down = { };
|
||||||
|
"Mod+Shift+K".action.focus-monitor-up = { };
|
||||||
|
"Mod+Shift+L".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+J".action.move-column-to-monitor-down = { };
|
||||||
|
"Mod+Shift+Ctrl+K".action.move-column-to-monitor-up = { };
|
||||||
|
"Mod+Shift+Ctrl+L".action.move-column-to-monitor-right = { };
|
||||||
|
|
||||||
|
"Mod+Page_Down".action.focus-workspace-down = { };
|
||||||
|
"Mod+Page_Up".action.focus-workspace-up = { };
|
||||||
|
"Mod+U".action.focus-workspace-down = { };
|
||||||
|
"Mod+I".action.focus-workspace-up = { };
|
||||||
|
"Mod+Ctrl+Page_Down".action.move-column-to-workspace-down = { };
|
||||||
|
"Mod+Ctrl+Page_Up".action.move-column-to-workspace-up = { };
|
||||||
|
"Mod+Ctrl+U".action.move-column-to-workspace-down = { };
|
||||||
|
"Mod+Ctrl+I".action.move-column-to-workspace-up = { };
|
||||||
|
|
||||||
|
"Mod+Shift+Page_Down".action.move-workspace-down = { };
|
||||||
|
"Mod+Shift+Page_Up".action.move-workspace-up = { };
|
||||||
|
"Mod+Shift+U".action.move-workspace-down = { };
|
||||||
|
"Mod+Shift+I".action.move-workspace-up = { };
|
||||||
|
|
||||||
|
"Mod+WheelScrollDown" = {
|
||||||
|
cooldown-ms = 150;
|
||||||
|
action.focus-workspace-down = { };
|
||||||
|
};
|
||||||
|
"Mod+WheelScrollUp" = {
|
||||||
|
cooldown-ms = 150;
|
||||||
|
action.focus-workspace-up = { };
|
||||||
|
};
|
||||||
|
"Mod+Ctrl+WheelScrollDown" = {
|
||||||
|
cooldown-ms = 150;
|
||||||
|
action.move-column-to-workspace-down = { };
|
||||||
|
};
|
||||||
|
"Mod+Ctrl+WheelScrollUp" = {
|
||||||
|
cooldown-ms = 150;
|
||||||
|
action.move-column-to-workspace-up = { };
|
||||||
|
};
|
||||||
|
|
||||||
|
"Mod+WheelScrollRight".action.focus-column-right = { };
|
||||||
|
"Mod+WheelScrollLeft".action.focus-column-left = { };
|
||||||
|
"Mod+Ctrl+WheelScrollRight".action.move-column-right = { };
|
||||||
|
"Mod+Ctrl+WheelScrollLeft".action.move-column-left = { };
|
||||||
|
|
||||||
|
"Mod+Shift+WheelScrollDown".action.focus-column-right = { };
|
||||||
|
"Mod+Shift+WheelScrollUp".action.focus-column-left = { };
|
||||||
|
"Mod+Ctrl+Shift+WheelScrollDown".action.move-column-right = { };
|
||||||
|
"Mod+Ctrl+Shift+WheelScrollUp".action.move-column-left = { };
|
||||||
|
|
||||||
|
"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+1".action.move-column-to-workspace = 1;
|
||||||
|
"Mod+Ctrl+2".action.move-column-to-workspace = 2;
|
||||||
|
"Mod+Ctrl+3".action.move-column-to-workspace = 3;
|
||||||
|
"Mod+Ctrl+4".action.move-column-to-workspace = 4;
|
||||||
|
"Mod+Ctrl+5".action.move-column-to-workspace = 5;
|
||||||
|
"Mod+Ctrl+6".action.move-column-to-workspace = 6;
|
||||||
|
"Mod+Ctrl+7".action.move-column-to-workspace = 7;
|
||||||
|
"Mod+Ctrl+8".action.move-column-to-workspace = 8;
|
||||||
|
"Mod+Ctrl+9".action.move-column-to-workspace = 9;
|
||||||
|
|
||||||
|
"Mod+Comma".action.consume-window-into-column = { };
|
||||||
|
"Mod+Period".action.expel-window-from-column = { };
|
||||||
|
|
||||||
|
"Mod+R".action.switch-preset-column-width = { };
|
||||||
|
"Mod+Shift+R".action.reset-window-height = { };
|
||||||
|
"Mod+F".action.maximize-column = { };
|
||||||
|
"Mod+Shift+F".action.fullscreen-window = { };
|
||||||
|
"Mod+C".action.center-column = { };
|
||||||
|
|
||||||
|
"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%";
|
||||||
|
|
||||||
|
"Print".action.screenshot = { };
|
||||||
|
"Ctrl+Print".action.screenshot-screen = { };
|
||||||
|
"Alt+Print".action.screenshot-window = { };
|
||||||
|
|
||||||
|
"Mod+Shift+E".action.quit = { };
|
||||||
|
|
||||||
|
"Mod+Shift+P".action.power-off-monitors = { };
|
||||||
|
}
|
||||||
@@ -0,0 +1,164 @@
|
|||||||
|
{
|
||||||
|
inputs,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
cfg = config.my.applications.niri.homeManager;
|
||||||
|
defaultKeyBind = import ./defaultKeyBind.nix;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.my.applications.niri.homeManager = {
|
||||||
|
enable = lib.mkEnableOption "niri home-manager configuration";
|
||||||
|
};
|
||||||
|
|
||||||
|
config.home-manager.sharedModules = [
|
||||||
|
inputs.niri-flake.homeModules.niri
|
||||||
|
{
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
programs.niri.package = pkgs.niri;
|
||||||
|
|
||||||
|
programs.niri.settings = {
|
||||||
|
input.touchpad = {
|
||||||
|
natural-scroll = true;
|
||||||
|
scroll-factor = 4.0;
|
||||||
|
scroll-method = "two-finger";
|
||||||
|
click-method = "clickfinger";
|
||||||
|
drag = true;
|
||||||
|
drag-lock = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
input.keyboard.xkb = {
|
||||||
|
layout = "jp";
|
||||||
|
options = "ctrl:nocaps";
|
||||||
|
};
|
||||||
|
|
||||||
|
spawn-at-startup = [
|
||||||
|
{ command = [ "noctalia-shell" ]; }
|
||||||
|
];
|
||||||
|
|
||||||
|
outputs."eDP-1".scale = 1;
|
||||||
|
cursor.size = 16;
|
||||||
|
|
||||||
|
layout = {
|
||||||
|
focus-ring = {
|
||||||
|
active.color = "#bd93f9";
|
||||||
|
inactive.color = "#6272a4";
|
||||||
|
};
|
||||||
|
border = {
|
||||||
|
active.color = "#ffc87f";
|
||||||
|
inactive.color = "#505050";
|
||||||
|
urgent.color = "#9b0000";
|
||||||
|
};
|
||||||
|
shadow = {
|
||||||
|
color = "#0007";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
binds = defaultKeyBind // {
|
||||||
|
"Mod+T" = {
|
||||||
|
action.spawn = "ghostty";
|
||||||
|
hotkey-overlay.title = "Open a Terminal: ghostty";
|
||||||
|
};
|
||||||
|
"Mod+D" = {
|
||||||
|
action.spawn = [
|
||||||
|
"vicinae"
|
||||||
|
"toggle"
|
||||||
|
];
|
||||||
|
hotkey-overlay.title = "Run an Application: vicinae";
|
||||||
|
};
|
||||||
|
"Mod+Space" = {
|
||||||
|
action.spawn = [
|
||||||
|
"vicinae"
|
||||||
|
"toggle"
|
||||||
|
];
|
||||||
|
hotkey-overlay.title = "Run an Application: vicinae";
|
||||||
|
};
|
||||||
|
"Mod+E" = {
|
||||||
|
action.spawn = [
|
||||||
|
"nautilus"
|
||||||
|
"--new-window"
|
||||||
|
];
|
||||||
|
hotkey-overlay.title = "Open File Manager: nautilus";
|
||||||
|
};
|
||||||
|
"Mod+L" = {
|
||||||
|
action.spawn = [
|
||||||
|
"noctalia-shell"
|
||||||
|
"ipc"
|
||||||
|
"call"
|
||||||
|
"sessionMenu"
|
||||||
|
"lockAndSuspend"
|
||||||
|
];
|
||||||
|
hotkey-overlay.title = "Lock the Screen: noctalia";
|
||||||
|
};
|
||||||
|
"Mod+V" = {
|
||||||
|
action.spawn = [
|
||||||
|
"vicinae"
|
||||||
|
"vicinae://extensions/vicinae/clipboard/history"
|
||||||
|
];
|
||||||
|
hotkey-overlay.title = "Clipboard History";
|
||||||
|
};
|
||||||
|
|
||||||
|
"XF86AudioRaiseVolume" = {
|
||||||
|
action.spawn = [
|
||||||
|
"noctalia-shell"
|
||||||
|
"ipc"
|
||||||
|
"call"
|
||||||
|
"volume"
|
||||||
|
"increase"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"XF86AudioLowerVolume" = {
|
||||||
|
action.spawn = [
|
||||||
|
"noctalia-shell"
|
||||||
|
"ipc"
|
||||||
|
"call"
|
||||||
|
"volume"
|
||||||
|
"decrease"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"XF86AudioMute" = {
|
||||||
|
action.spawn = [
|
||||||
|
"noctalia-shell"
|
||||||
|
"ipc"
|
||||||
|
"call"
|
||||||
|
"volume"
|
||||||
|
"muteOutput"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"XF86AudioMicMute" = {
|
||||||
|
action.spawn = [
|
||||||
|
"noctalia-shell"
|
||||||
|
"ipc"
|
||||||
|
"call"
|
||||||
|
"volume"
|
||||||
|
"muteInput"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
"XF86MonBrightnessUp" = {
|
||||||
|
action.spawn = [
|
||||||
|
"noctalia-shell"
|
||||||
|
"ipc"
|
||||||
|
"call"
|
||||||
|
"brightness"
|
||||||
|
"increase"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
"XF86MonBrightnessDown" = {
|
||||||
|
action.spawn = [
|
||||||
|
"noctalia-shell"
|
||||||
|
"ipc"
|
||||||
|
"call"
|
||||||
|
"brightness"
|
||||||
|
"decrease"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
cfg = config.my.applications.niri.system;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.my.applications.niri.system = {
|
||||||
|
enable = lib.mkEnableOption "niri system configuration";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
programs.niri.enable = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
cfg = config.my.applications.noctalia;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./system.nix
|
||||||
|
./home.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
options.my.applications.noctalia = {
|
||||||
|
enable = lib.mkEnableOption "noctalia-shell";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
my.applications.noctalia.system.enable = lib.mkDefault true;
|
||||||
|
my.applications.noctalia.homeManager.enable = lib.mkDefault true;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,178 @@
|
|||||||
|
{
|
||||||
|
inputs,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
cfg = config.my.applications.noctalia.homeManager;
|
||||||
|
walls = pkgs.fetchFromGitHub {
|
||||||
|
owner = "moons-14";
|
||||||
|
repo = "wallpapers";
|
||||||
|
rev = "cc3256f4aaf2c8e7d16fb000b1ee251af54085db";
|
||||||
|
hash = "sha256-emQ/FqKqMq3YI5bLx8gBZg/ZE72OG9Ilh71ggq78WdQ=";
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.my.applications.noctalia.homeManager = {
|
||||||
|
enable = lib.mkEnableOption "noctalia-shell home-manager configuration";
|
||||||
|
};
|
||||||
|
|
||||||
|
config.home-manager.sharedModules = [
|
||||||
|
inputs.noctalia.homeModules.default
|
||||||
|
{
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
home.file.".face" = {
|
||||||
|
recursive = true;
|
||||||
|
source = ../../../images/avatar.jpg;
|
||||||
|
};
|
||||||
|
|
||||||
|
home.file.".wallpapers" = {
|
||||||
|
source = walls;
|
||||||
|
recursive = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
home.file.".cache/noctalia/wallpapers.json" = {
|
||||||
|
text = builtins.toJSON {
|
||||||
|
defaultWallpaper = "~/.wallpapers/1.jpg";
|
||||||
|
wallpapers = {
|
||||||
|
"DP-1" = "~/.wallpapers/1.jpg";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.noctalia-shell = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
bar = {
|
||||||
|
density = "default";
|
||||||
|
position = "top";
|
||||||
|
showCapsule = true;
|
||||||
|
backgroundOpacity = 0.8;
|
||||||
|
floating = true;
|
||||||
|
widgets = {
|
||||||
|
left = [
|
||||||
|
{ id = "WiFi"; }
|
||||||
|
{
|
||||||
|
id = "CustomButton";
|
||||||
|
icon = "access-point";
|
||||||
|
leftClickExec = "nm-connection-editor";
|
||||||
|
}
|
||||||
|
{ id = "Bluetooth"; }
|
||||||
|
{ id = "SystemMonitor"; }
|
||||||
|
{ id = "Taskbar"; }
|
||||||
|
{ id = "ActiveWindow"; }
|
||||||
|
];
|
||||||
|
center = [
|
||||||
|
{
|
||||||
|
hideUnoccupied = false;
|
||||||
|
id = "Workspace";
|
||||||
|
labelMode = "none";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
right = [
|
||||||
|
{ id = "MediaMini"; }
|
||||||
|
{ id = "NotificationHistory"; }
|
||||||
|
{
|
||||||
|
displayMode = "alwaysShow";
|
||||||
|
id = "Battery";
|
||||||
|
warningThreshold = 30;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
displayMode = "alwaysShow";
|
||||||
|
id = "Volume";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
displayMode = "alwaysShow";
|
||||||
|
id = "Brightness";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
formatHorizontal = "HH:mm";
|
||||||
|
formatVertical = "HH mm";
|
||||||
|
id = "Clock";
|
||||||
|
useMonospacedFont = true;
|
||||||
|
usePrimaryColor = true;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
id = "ControlCenter";
|
||||||
|
useDistroLogo = true;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
colorSchemes.predefinedScheme = "dracula";
|
||||||
|
general = {
|
||||||
|
avatarImage = "~/.face";
|
||||||
|
radiusRatio = 0.2;
|
||||||
|
};
|
||||||
|
location = {
|
||||||
|
monthBeforeDay = true;
|
||||||
|
weatherEnabled = false;
|
||||||
|
name = "Tokyo";
|
||||||
|
};
|
||||||
|
wallpaper = {
|
||||||
|
enabled = true;
|
||||||
|
directory = "~/.wallpapers/";
|
||||||
|
setWallpaperOnAllMonitors = true;
|
||||||
|
linkLightAndDarkWallpapers = true;
|
||||||
|
fillMode = "crop";
|
||||||
|
randomEnabled = true;
|
||||||
|
randomIntervalSec = 60;
|
||||||
|
transitionDuration = 1500;
|
||||||
|
};
|
||||||
|
dock = {
|
||||||
|
enabled = true;
|
||||||
|
displayMode = "auto_hide";
|
||||||
|
backgroundOpacity = 0.8;
|
||||||
|
floatingRatio = 1;
|
||||||
|
size = 1;
|
||||||
|
onlySameOutput = true;
|
||||||
|
monitors = [ "eDP-1" ];
|
||||||
|
pinnedApps = [
|
||||||
|
"com.mitchellh.ghostty"
|
||||||
|
"org.gnome.Nautilus"
|
||||||
|
"google-chrome"
|
||||||
|
"code"
|
||||||
|
];
|
||||||
|
colorizeIcons = false;
|
||||||
|
};
|
||||||
|
controlCenter = {
|
||||||
|
position = "close_to_bar_button";
|
||||||
|
shortcuts = {
|
||||||
|
left = [
|
||||||
|
{ id = "WiFi"; }
|
||||||
|
{ id = "Bluetooth"; }
|
||||||
|
{ id = "ScreenRecorder"; }
|
||||||
|
{ id = "WallpaperSelector"; }
|
||||||
|
];
|
||||||
|
right = [
|
||||||
|
{ id = "Notifications"; }
|
||||||
|
{ id = "NightLight"; }
|
||||||
|
];
|
||||||
|
};
|
||||||
|
cards = [
|
||||||
|
{
|
||||||
|
enabled = true;
|
||||||
|
id = "profile-card";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
enabled = true;
|
||||||
|
id = "shortcuts-card";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
enabled = true;
|
||||||
|
id = "audio-card";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
enabled = true;
|
||||||
|
id = "media-sysmon-card";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
inputs,
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
cfg = config.my.applications.noctalia.system;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.my.applications.noctalia.system = {
|
||||||
|
enable = lib.mkEnableOption "noctalia-shell system package";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
inputs.noctalia.packages.${system}.default
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
{ lib, config, ... }:
|
||||||
|
let
|
||||||
|
cfg = config.my.applications.openssh;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.my.applications.openssh = {
|
||||||
|
enable = lib.mkEnableOption "OpenSSH server";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
services.openssh = {
|
||||||
|
enable = true;
|
||||||
|
openFirewall = true;
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
PermitRootLogin = "no";
|
||||||
|
PasswordAuthentication = false;
|
||||||
|
KbdInteractiveAuthentication = false;
|
||||||
|
PubkeyAuthentication = "yes";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
cfg = config.my.applications.ssh;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./system.nix
|
||||||
|
./home.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
options.my.applications.ssh = {
|
||||||
|
enable = lib.mkEnableOption "OpenSSH client";
|
||||||
|
system.enable = lib.mkEnableOption "SSH system configuration";
|
||||||
|
homeManager.enable = lib.mkEnableOption "SSH home-manager configuration";
|
||||||
|
|
||||||
|
defaultIdentityFile = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
default = "~/.ssh/id_ed25519";
|
||||||
|
description = "Default SSH identity file";
|
||||||
|
};
|
||||||
|
|
||||||
|
addKeysToAgent = lib.mkOption {
|
||||||
|
type = lib.types.str;
|
||||||
|
default = "yes";
|
||||||
|
description = "Add keys to SSH agent";
|
||||||
|
};
|
||||||
|
|
||||||
|
matchBlocks = lib.mkOption {
|
||||||
|
type = lib.types.attrs;
|
||||||
|
default = { };
|
||||||
|
description = "SSH match blocks";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
my.applications.ssh.system.enable = lib.mkDefault true;
|
||||||
|
my.applications.ssh.homeManager.enable = lib.mkDefault true;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
cfg = config.my.applications.ssh;
|
||||||
|
hmCfg = config.my.applications.ssh.homeManager;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.my.applications.ssh.homeManager = {
|
||||||
|
enable = lib.mkEnableOption "SSH home-manager configuration";
|
||||||
|
};
|
||||||
|
|
||||||
|
config.home-manager.sharedModules = [
|
||||||
|
{
|
||||||
|
config = lib.mkIf hmCfg.enable {
|
||||||
|
home.packages = [
|
||||||
|
pkgs.openssh
|
||||||
|
];
|
||||||
|
|
||||||
|
programs.ssh = {
|
||||||
|
enable = true;
|
||||||
|
enableDefaultConfig = false;
|
||||||
|
|
||||||
|
matchBlocks = cfg.matchBlocks // {
|
||||||
|
"*" = {
|
||||||
|
identityFile = cfg.defaultIdentityFile;
|
||||||
|
extraOptions.AddKeysToAgent = cfg.addKeysToAgent;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
cfg = config.my.applications.ssh.system;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.my.applications.ssh.system = {
|
||||||
|
enable = lib.mkEnableOption "SSH system configuration";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
openssh # OpenSSH client and server
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,64 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
inputs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
cfg = config.my.applications.swayidle;
|
||||||
|
noctaliaPkg = inputs.noctalia.packages.${pkgs.system}.default;
|
||||||
|
noctaliaExe = lib.getExe noctaliaPkg;
|
||||||
|
|
||||||
|
lockCmd = "${pkgs.bash}/bin/bash -lc '${noctaliaExe} ipc call lockScreen lock'";
|
||||||
|
lockAndSuspendCmd = "${pkgs.bash}/bin/bash -lc '${noctaliaExe} ipc call sessionMenu lockAndSuspend'";
|
||||||
|
dpmsOn = "${pkgs.niri}/bin/niri msg action power-on-monitors";
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.my.applications.swayidle = {
|
||||||
|
enable = lib.mkEnableOption "swayidle idle manager";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
home-manager.sharedModules = [
|
||||||
|
{
|
||||||
|
services.swayidle = {
|
||||||
|
enable = true;
|
||||||
|
systemdTarget = "graphical-session.target";
|
||||||
|
|
||||||
|
timeouts = [
|
||||||
|
{
|
||||||
|
timeout = 300;
|
||||||
|
command = lockAndSuspendCmd;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
events = [
|
||||||
|
{
|
||||||
|
event = "lock";
|
||||||
|
command = lockCmd;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
event = "before-sleep";
|
||||||
|
command = lockCmd;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
event = "after-resume";
|
||||||
|
command = dpmsOn;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
systemd.user.services.swayidle = {
|
||||||
|
Service = {
|
||||||
|
PassEnvironment = [
|
||||||
|
"WAYLAND_DISPLAY"
|
||||||
|
"XDG_RUNTIME_DIR"
|
||||||
|
"DBUS_SESSION_BUS_ADDRESS"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
{ lib, config, ... }:
|
||||||
|
let
|
||||||
|
cfg = config.my.applications.tailscale;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.my.applications.tailscale = {
|
||||||
|
enable = lib.mkEnableOption "Tailscale VPN";
|
||||||
|
|
||||||
|
acceptDns = lib.mkOption {
|
||||||
|
type = lib.types.bool;
|
||||||
|
default = false;
|
||||||
|
description = "Accept DNS configuration from Tailscale";
|
||||||
|
};
|
||||||
|
|
||||||
|
acceptRoutes = lib.mkOption {
|
||||||
|
type = lib.types.bool;
|
||||||
|
default = true;
|
||||||
|
description = "Accept subnet routes from Tailscale";
|
||||||
|
};
|
||||||
|
|
||||||
|
extraUpFlags = lib.mkOption {
|
||||||
|
type = lib.types.listOf lib.types.str;
|
||||||
|
default = [ ];
|
||||||
|
description = "Additional flags to pass to tailscale up";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
services.tailscale = {
|
||||||
|
enable = true;
|
||||||
|
extraUpFlags = [
|
||||||
|
"--accept-dns=${if cfg.acceptDns then "true" else "false"}"
|
||||||
|
]
|
||||||
|
++ lib.optional cfg.acceptRoutes "--accept-routes"
|
||||||
|
++ cfg.extraUpFlags;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,62 @@
|
|||||||
|
{
|
||||||
|
inputs,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
cfg = config.my.applications.vicinae;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.my.applications.vicinae = {
|
||||||
|
enable = lib.mkEnableOption "Vicinae application launcher";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
home-manager.sharedModules = [
|
||||||
|
inputs.vicinae.homeManagerModules.default
|
||||||
|
{
|
||||||
|
services.vicinae = {
|
||||||
|
enable = true;
|
||||||
|
systemd = {
|
||||||
|
enable = true;
|
||||||
|
autoStart = true;
|
||||||
|
environment = {
|
||||||
|
USE_LAYER_SHELL = 1;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
font.size = 11;
|
||||||
|
close_on_focus_loss = true;
|
||||||
|
consider_preedit = true;
|
||||||
|
pop_to_root_on_close = true;
|
||||||
|
favicon_service = "twenty";
|
||||||
|
search_files_in_root = true;
|
||||||
|
theme = {
|
||||||
|
light = {
|
||||||
|
name = "dracula";
|
||||||
|
icon_theme = "default";
|
||||||
|
};
|
||||||
|
dark = {
|
||||||
|
name = "vicinae-light";
|
||||||
|
icon_theme = "default";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
window = {
|
||||||
|
csd = true;
|
||||||
|
opacity = 0.95;
|
||||||
|
rounding = 10;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
extensions = with inputs.vicinae-extensions.packages.${pkgs.stdenv.hostPlatform.system}; [
|
||||||
|
bluetooth
|
||||||
|
nix
|
||||||
|
power-profile
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
cfg = config.my.applications.vim;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./system.nix
|
||||||
|
./home
|
||||||
|
];
|
||||||
|
|
||||||
|
options.my.applications.vim = {
|
||||||
|
enable = lib.mkEnableOption "vim text editor";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
my.applications.vim.system.enable = lib.mkDefault true;
|
||||||
|
my.applications.vim.homeManager.enable = lib.mkDefault true;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
_: {
|
||||||
|
programs.nixvim.autoCmd = [
|
||||||
|
{
|
||||||
|
event = "TextYankPost";
|
||||||
|
callback.__raw = "function() vim.highlight.on_yank() end";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
_: {
|
||||||
|
programs.nixvim.colorschemes.catppuccin = {
|
||||||
|
enable = true;
|
||||||
|
settings.transparent_background = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,57 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
inputs,
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
cfg = config.my.applications.vim.homeManager;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.my.applications.vim.homeManager = {
|
||||||
|
enable = lib.mkEnableOption "vim home-manager configuration";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
home-manager.sharedModules = [
|
||||||
|
inputs.nixvim.homeModules.nixvim
|
||||||
|
./options.nix
|
||||||
|
./autocmds.nix
|
||||||
|
./keymaps.nix
|
||||||
|
./language.nix
|
||||||
|
./colorscheme.nix
|
||||||
|
./lsp.nix
|
||||||
|
./plugins
|
||||||
|
{
|
||||||
|
programs.nixvim = {
|
||||||
|
enable = true;
|
||||||
|
vimAlias = true;
|
||||||
|
viAlias = true;
|
||||||
|
withNodeJs = true;
|
||||||
|
|
||||||
|
extraPackages = with pkgs; [
|
||||||
|
git
|
||||||
|
ripgrep
|
||||||
|
fd
|
||||||
|
nodejs
|
||||||
|
zellij
|
||||||
|
|
||||||
|
# LSP / formatter / misc
|
||||||
|
vtsls
|
||||||
|
vscode-langservers-extracted
|
||||||
|
tailwindcss-language-server
|
||||||
|
prettierd
|
||||||
|
prettier
|
||||||
|
biome
|
||||||
|
stylua
|
||||||
|
shfmt
|
||||||
|
alejandra
|
||||||
|
lua-language-server
|
||||||
|
nixd
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,179 @@
|
|||||||
|
_:
|
||||||
|
let
|
||||||
|
mk = key: action: desc: {
|
||||||
|
mode = "n";
|
||||||
|
inherit key action;
|
||||||
|
options = {
|
||||||
|
silent = true;
|
||||||
|
inherit desc;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
mkRaw = key: raw: desc: {
|
||||||
|
mode = "n";
|
||||||
|
inherit key;
|
||||||
|
action.__raw = raw;
|
||||||
|
options = {
|
||||||
|
silent = true;
|
||||||
|
inherit desc;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
mkExpr = key: raw: desc: {
|
||||||
|
mode = "n";
|
||||||
|
inherit key;
|
||||||
|
action.__raw = raw;
|
||||||
|
options = {
|
||||||
|
silent = true;
|
||||||
|
expr = true;
|
||||||
|
inherit desc;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
programs.nixvim = {
|
||||||
|
opts = {
|
||||||
|
# ジャンプ履歴をスタック寄りに扱う
|
||||||
|
jumpoptions = "stack";
|
||||||
|
|
||||||
|
# 既に開いているバッファや直前のウィンドウを優先して再利用
|
||||||
|
switchbuf = "useopen,uselast";
|
||||||
|
};
|
||||||
|
|
||||||
|
keymaps = [
|
||||||
|
# Search
|
||||||
|
(mk "<Esc>" "<cmd>nohlsearch<CR>" "検索ハイライトを解除")
|
||||||
|
|
||||||
|
# Screen line movement
|
||||||
|
(mkExpr "j" "function() return vim.v.count == 0 and 'gj' or 'j' end" "下へ移動(画面行優先)")
|
||||||
|
(mkExpr "k" "function() return vim.v.count == 0 and 'gk' or 'k' end" "上へ移動(画面行優先)")
|
||||||
|
|
||||||
|
# LSP: hover / direct jump
|
||||||
|
(mkRaw "K" "vim.lsp.buf.hover" "シンボル情報を表示")
|
||||||
|
(mkRaw "gd" "vim.lsp.buf.definition" "定義へジャンプ")
|
||||||
|
(mkRaw "grr" "vim.lsp.buf.references" "参照一覧を開く")
|
||||||
|
(mkRaw "gri" "vim.lsp.buf.implementation" "実装一覧を開く")
|
||||||
|
(mkRaw "grt" "vim.lsp.buf.type_definition" "型定義一覧を開く")
|
||||||
|
(mkRaw "grn" "vim.lsp.buf.rename" "シンボル名を一括変換")
|
||||||
|
(mkRaw "gra" "vim.lsp.buf.code_action" "コードアクション")
|
||||||
|
(mkRaw "gO" "vim.lsp.buf.document_symbol" "現在ファイルのシンボル一覧")
|
||||||
|
|
||||||
|
# Glance: preview / peek
|
||||||
|
(mk "gD" "<cmd>Glance definitions<CR>" "定義をプレビュー")
|
||||||
|
(mk "gR" "<cmd>Glance references<CR>" "参照をプレビュー")
|
||||||
|
(mk "gM" "<cmd>Glance implementations<CR>" "実装をプレビュー")
|
||||||
|
(mk "gY" "<cmd>Glance type_definitions<CR>" "型定義をプレビュー")
|
||||||
|
(mk "g." "<cmd>Glance resume<CR>" "直前のGlanceを再開")
|
||||||
|
|
||||||
|
# Convenience aliases
|
||||||
|
(mkRaw "<leader>rn" "vim.lsp.buf.rename" "シンボル名を一括変換")
|
||||||
|
(mkRaw "<leader>cf"
|
||||||
|
"function() require('conform').format({ timeout_ms = 1000, lsp_format = 'fallback' }) end"
|
||||||
|
"コードをフォーマット"
|
||||||
|
)
|
||||||
|
(mkRaw "<leader>ca" "vim.lsp.buf.code_action" "コードアクション")
|
||||||
|
|
||||||
|
# Diagnostics
|
||||||
|
(mkRaw "]d" "vim.diagnostic.goto_next" "次の診断へ移動")
|
||||||
|
(mkRaw "[d" "vim.diagnostic.goto_prev" "前の診断へ移動")
|
||||||
|
(mkRaw "<leader>dl" "vim.diagnostic.open_float" "診断の詳細を表示")
|
||||||
|
|
||||||
|
# File tree
|
||||||
|
(mk "<leader>e" "<cmd>Neotree toggle left<CR>" "ファイルツリー")
|
||||||
|
|
||||||
|
# Terminal
|
||||||
|
(mk "<leader>tt" "<cmd>ToggleTerm direction=float<CR>" "ターミナル")
|
||||||
|
|
||||||
|
# Trouble
|
||||||
|
(mk "<leader>xx" "<cmd>Trouble diagnostics toggle<CR>" "診断一覧")
|
||||||
|
(mk "<leader>xq" "<cmd>Trouble qflist toggle<CR>" "Quickfix一覧")
|
||||||
|
(mk "<leader>xl" "<cmd>Trouble loclist toggle<CR>" "Location List一覧")
|
||||||
|
(mk "<leader>xs" "<cmd>Trouble symbols toggle<CR>" "シンボル一覧")
|
||||||
|
(mk "<leader>xw" "<cmd>Trouble lsp toggle<CR>" "LSP一覧")
|
||||||
|
|
||||||
|
# Quickfix / Location list navigation
|
||||||
|
(mk "]q" "<cmd>cnext<CR>" "次のQuickfixへ")
|
||||||
|
(mk "[q" "<cmd>cprev<CR>" "前のQuickfixへ")
|
||||||
|
(mk "]l" "<cmd>lnext<CR>" "次のLocation Listへ")
|
||||||
|
(mk "[l" "<cmd>lprev<CR>" "前のLocation Listへ")
|
||||||
|
|
||||||
|
# Window navigation
|
||||||
|
(mk "<C-h>" "<C-w>h" "左のウィンドウへ")
|
||||||
|
(mk "<C-j>" "<C-w>j" "下のウィンドウへ")
|
||||||
|
(mk "<C-k>" "<C-w>k" "上のウィンドウへ")
|
||||||
|
(mk "<C-l>" "<C-w>l" "右のウィンドウへ")
|
||||||
|
(mk "<C-Left>" "<C-w>h" "左のウィンドウへ")
|
||||||
|
(mk "<C-Down>" "<C-w>j" "下のウィンドウへ")
|
||||||
|
(mk "<C-Up>" "<C-w>k" "上のウィンドウへ")
|
||||||
|
(mk "<C-Right>" "<C-w>l" "右のウィンドウへ")
|
||||||
|
|
||||||
|
# Alternate file / previous file
|
||||||
|
(mk "<leader><leader>" "<C-^>" "直前のファイルへ戻る")
|
||||||
|
(mk "<leader>w-" "<C-w><C-^>" "直前のファイルをsplitで開く")
|
||||||
|
|
||||||
|
# Buffer Bar
|
||||||
|
(mk "[b" "<Cmd>BufferPrevious<CR>" "前のバッファーに移動")
|
||||||
|
(mk "]b" "<Cmd>BufferNext<CR>" "次のバッファーに移動")
|
||||||
|
(mk "<leader>bc" "<Cmd>BufferClose<CR>" "バッファーを閉じる")
|
||||||
|
|
||||||
|
# Git Conflict
|
||||||
|
(mk "<leader>gco" "<cmd>GitConflictChooseOurs<CR>" "現在のブランチを選択")
|
||||||
|
(mk "<leader>gct" "<cmd>GitConflictChooseTheirs<CR>" "相手のブランチを選択")
|
||||||
|
(mk "<leader>gcb" "<cmd>GitConflictChooseBoth<CR>" "両方を選択")
|
||||||
|
(mk "<leader>gcx" "<cmd>GitConflictListQf<CR>" "コンフリクト一覧")
|
||||||
|
(mk "]x" "<cmd>GitConflictNextConflict<CR>" "次のコンフリクト")
|
||||||
|
(mk "[x" "<cmd>GitConflictPrevConflict<CR>" "前のコンフリクト")
|
||||||
|
|
||||||
|
# Git
|
||||||
|
(mk "<leader>gl" "<cmd>LazyGit<CR>" "LazyGitを開く")
|
||||||
|
(mk "<leader>gd" "<cmd>DiffviewOpen<CR>" "差分を開く")
|
||||||
|
(mk "<leader>gH" "<cmd>DiffviewFileHistory<CR>" "リポジトリ履歴")
|
||||||
|
(mk "<leader>gh" "<cmd>DiffviewFileHistory %<CR>" "現在ファイルの履歴")
|
||||||
|
(mk "<leader>gq" "<cmd>DiffviewClose<CR>" "差分を閉じる")
|
||||||
|
|
||||||
|
# Markview
|
||||||
|
(mk "<leader>mp" "<cmd>Markview splitToggle<CR>" "Markdownプレビュー")
|
||||||
|
|
||||||
|
# Zen Mode
|
||||||
|
(mk "<leader>zz" "<cmd>ZenMode<CR>" "Zen Modeを開く/閉じる")
|
||||||
|
|
||||||
|
# UFO (folding)
|
||||||
|
(mkRaw "zR" "require('ufo').openAllFolds" "全て展開")
|
||||||
|
(mkRaw "zM" "require('ufo').closeAllFolds" "全て折りたたむ")
|
||||||
|
|
||||||
|
# Dropbar
|
||||||
|
(mkRaw "<leader>dp" "function() require('dropbar.api').pick() end" "dropbarでナビゲート")
|
||||||
|
|
||||||
|
# Snacks
|
||||||
|
(mkRaw "<leader>sd" "function() Snacks.dim.toggle() end" "Dimモードをトグル")
|
||||||
|
|
||||||
|
# Flash
|
||||||
|
(mkRaw "s" "function() require('flash').jump() end" "Flashジャンプ")
|
||||||
|
(mkRaw "S" "function() require('flash').treesitter() end" "Flashツリーシッタ選択")
|
||||||
|
|
||||||
|
# Todo Comments
|
||||||
|
(mk "]t" "<cmd>TodoNext<CR>" "次のTODO")
|
||||||
|
(mk "[t" "<cmd>TodoPrev<CR>" "前のTODO")
|
||||||
|
(mkRaw "<leader>ft" "function() Snacks.picker.todo_comments() end" "TODO一覧")
|
||||||
|
|
||||||
|
# Spectre
|
||||||
|
(mkRaw "<leader>sr" "function() require('spectre').toggle() end" "検索・置換")
|
||||||
|
|
||||||
|
# Snacks Picker: generic
|
||||||
|
(mkRaw "<leader>ff" "function() Snacks.picker.files() end" "ファイルを探す")
|
||||||
|
(mkRaw "<leader>fg" "function() Snacks.picker.grep() end" "文字列を全文検索")
|
||||||
|
(mkRaw "<leader>fb" "function() Snacks.picker.buffers() end" "開いているバッファを探す")
|
||||||
|
(mkRaw "<leader>fh" "function() Snacks.picker.help() end" "ヘルプ項目を探す")
|
||||||
|
(mkRaw "<leader>fk" "function() Snacks.picker.keymaps() end" "キーマップを探す")
|
||||||
|
(mkRaw "<leader>fc" "function() Snacks.picker.commands() end" "コマンドを探す")
|
||||||
|
|
||||||
|
# Snacks Picker: code navigation
|
||||||
|
(mkRaw "<leader>fs" "function() Snacks.picker.lsp_symbols() end" "現在ファイルのシンボルを探す")
|
||||||
|
(mkRaw "<leader>fS" "function() Snacks.picker.lsp_workspace_symbols() end" "ワークスペース全体のシンボルを探す")
|
||||||
|
(mkRaw "<leader>fr" "function() Snacks.picker.registers() end" "レジスタを探す")
|
||||||
|
(mkRaw "<leader>fj" "function() Snacks.picker.jumps() end" "ジャンプ履歴を探す")
|
||||||
|
(mkRaw "<leader>fq" "function() Snacks.picker.qflist() end" "Quickfixを探す")
|
||||||
|
(mkRaw "<leader>fl" "function() Snacks.picker.loclist() end" "Location Listを探す")
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
_: {
|
||||||
|
programs.nixvim = {
|
||||||
|
env = {
|
||||||
|
LANG = "ja_JP.UTF-8";
|
||||||
|
LC_MESSAGES = "ja_JP.UTF-8";
|
||||||
|
};
|
||||||
|
|
||||||
|
extraConfigLua = ''
|
||||||
|
vim.cmd.language("ja_JP.utf8")
|
||||||
|
vim.opt.helplang = { "ja", "en" }
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,65 @@
|
|||||||
|
_: {
|
||||||
|
programs.nixvim = {
|
||||||
|
plugins.lsp = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
servers = {
|
||||||
|
# TypeScript / JavaScript
|
||||||
|
vtsls = {
|
||||||
|
enable = true;
|
||||||
|
packageFallback = true;
|
||||||
|
rootMarkers = [
|
||||||
|
"pnpm-workspace.yaml"
|
||||||
|
"package.json"
|
||||||
|
"tsconfig.json"
|
||||||
|
"jsconfig.json"
|
||||||
|
".git"
|
||||||
|
];
|
||||||
|
extraOptions.settings.typescript.locale = "ja";
|
||||||
|
};
|
||||||
|
|
||||||
|
# Biome for lint / format
|
||||||
|
biome = {
|
||||||
|
enable = true;
|
||||||
|
packageFallback = true;
|
||||||
|
rootMarkers = [
|
||||||
|
"biome.json"
|
||||||
|
"biome.jsonc"
|
||||||
|
"package.json"
|
||||||
|
"pnpm-workspace.yaml"
|
||||||
|
".git"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
# Frontend / config languages
|
||||||
|
tailwindcss.enable = true;
|
||||||
|
cssls.enable = true;
|
||||||
|
jsonls.enable = true;
|
||||||
|
yamlls.enable = true;
|
||||||
|
lua_ls.enable = true;
|
||||||
|
nixd.enable = true;
|
||||||
|
|
||||||
|
# Other languages
|
||||||
|
rust_analyzer = {
|
||||||
|
enable = true;
|
||||||
|
installCargo = true;
|
||||||
|
installRustc = true;
|
||||||
|
};
|
||||||
|
svelte.enable = true;
|
||||||
|
ty.enable = true;
|
||||||
|
ruff.enable = true;
|
||||||
|
astro.enable = true;
|
||||||
|
gopls.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Diagnostic UI
|
||||||
|
diagnostic.settings = {
|
||||||
|
virtual_text = true;
|
||||||
|
float = {
|
||||||
|
border = "rounded";
|
||||||
|
source = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
_: {
|
||||||
|
programs.nixvim = {
|
||||||
|
opts = {
|
||||||
|
# display
|
||||||
|
number = true;
|
||||||
|
relativenumber = true;
|
||||||
|
signcolumn = "yes";
|
||||||
|
termguicolors = true;
|
||||||
|
|
||||||
|
# action
|
||||||
|
mouse = "a";
|
||||||
|
clipboard = "unnamedplus";
|
||||||
|
updatetime = 200;
|
||||||
|
timeoutlen = 300;
|
||||||
|
undofile = true;
|
||||||
|
|
||||||
|
# display
|
||||||
|
wrap = false;
|
||||||
|
scrolloff = 8;
|
||||||
|
|
||||||
|
# search
|
||||||
|
ignorecase = true;
|
||||||
|
smartcase = true;
|
||||||
|
|
||||||
|
# window split
|
||||||
|
splitright = true;
|
||||||
|
splitbelow = true;
|
||||||
|
|
||||||
|
# indent
|
||||||
|
tabstop = 2;
|
||||||
|
shiftwidth = 2;
|
||||||
|
expandtab = true;
|
||||||
|
|
||||||
|
# file encoding
|
||||||
|
encoding = "utf-8";
|
||||||
|
fileencoding = "utf-8";
|
||||||
|
fileencodings = "utf-8,sjis,euc-jp,iso-2022-jp";
|
||||||
|
|
||||||
|
# invisible characters
|
||||||
|
list = true;
|
||||||
|
listchars = "tab:»-,trail:-,extends:»,precedes:«,nbsp:%";
|
||||||
|
};
|
||||||
|
|
||||||
|
globals = {
|
||||||
|
mapleader = " ";
|
||||||
|
maplocalleader = " ";
|
||||||
|
clipboard = "osc52";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
{ ... }:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./ui
|
||||||
|
./editor
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
_: {
|
||||||
|
programs.nixvim.plugins.nvim-autopairs.enable = true;
|
||||||
|
}
|
||||||
@@ -0,0 +1,56 @@
|
|||||||
|
_: {
|
||||||
|
programs.nixvim.plugins.blink-cmp = {
|
||||||
|
enable = true;
|
||||||
|
setupLspCapabilities = true;
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
keymap = {
|
||||||
|
preset = "enter";
|
||||||
|
|
||||||
|
"<C-Space>" = [ "show" ];
|
||||||
|
"<C-d>" = [ "scroll_documentation_up" ];
|
||||||
|
"<C-e>" = [ "hide" ];
|
||||||
|
"<C-f>" = [ "scroll_documentation_down" ];
|
||||||
|
|
||||||
|
"<Tab>" = [
|
||||||
|
"accept"
|
||||||
|
{
|
||||||
|
__raw = ''
|
||||||
|
function()
|
||||||
|
local ok, copilot = pcall(require, "copilot.suggestion")
|
||||||
|
if ok and copilot.is_visible() then
|
||||||
|
copilot.accept()
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
"fallback"
|
||||||
|
];
|
||||||
|
"<S-Tab>" = [
|
||||||
|
"select_prev"
|
||||||
|
"fallback"
|
||||||
|
];
|
||||||
|
"<C-n>" = [
|
||||||
|
"select_next"
|
||||||
|
"fallback"
|
||||||
|
];
|
||||||
|
"<C-p>" = [
|
||||||
|
"select_prev"
|
||||||
|
"fallback"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
completion.list.selection = {
|
||||||
|
preselect = true;
|
||||||
|
auto_insert = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
sources.default = [
|
||||||
|
"lsp"
|
||||||
|
"path"
|
||||||
|
"buffer"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
_: {
|
||||||
|
programs.nixvim.plugins.comment.enable = true;
|
||||||
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
_: {
|
||||||
|
programs.nixvim.plugins."conform-nvim" = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
formatters_by_ft = {
|
||||||
|
javascript.__raw = ''{ "biome", "prettierd", "prettier", stop_after_first = true }'';
|
||||||
|
javascriptreact.__raw = ''{ "biome", "prettierd", "prettier", stop_after_first = true }'';
|
||||||
|
typescript.__raw = ''{ "biome", "prettierd", "prettier", stop_after_first = true }'';
|
||||||
|
typescriptreact.__raw = ''{ "biome", "prettierd", "prettier", stop_after_first = true }'';
|
||||||
|
json.__raw = ''{ "biome", "prettierd", "prettier", stop_after_first = true }'';
|
||||||
|
yaml.__raw = ''{ "prettierd", "prettier", stop_after_first = true }'';
|
||||||
|
markdown.__raw = ''{ "prettierd", "prettier", stop_after_first = true }'';
|
||||||
|
lua = [ "stylua" ];
|
||||||
|
nix = [ "alejandra" ];
|
||||||
|
sh = [ "shfmt" ];
|
||||||
|
};
|
||||||
|
format_on_save.__raw = ''
|
||||||
|
function(_)
|
||||||
|
return { timeout_ms = 1000, lsp_format = "fallback" }
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
_: {
|
||||||
|
programs.nixvim.plugins.copilot-lua = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
suggestion = {
|
||||||
|
auto_trigger = true;
|
||||||
|
keymap.enabled = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
{ ... }:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./snacks.nix
|
||||||
|
./treesitter.nix
|
||||||
|
./blink-cmp.nix
|
||||||
|
./gitsigns.nix
|
||||||
|
./comment.nix
|
||||||
|
./autopairs.nix
|
||||||
|
./lsp-signature.nix
|
||||||
|
./copilot.nix
|
||||||
|
./trouble.nix
|
||||||
|
./conform.nix
|
||||||
|
./surround.nix
|
||||||
|
./git.nix
|
||||||
|
./git-conflict.nix
|
||||||
|
./glance.nix
|
||||||
|
./flash.nix
|
||||||
|
./todo-comments.nix
|
||||||
|
./spectre.nix
|
||||||
|
./wakatime.nix
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
programs.nixvim = {
|
||||||
|
extraPlugins = [ pkgs.vimPlugins.flash-nvim ];
|
||||||
|
extraConfigLua = ''
|
||||||
|
require("flash").setup()
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
programs.nixvim = {
|
||||||
|
extraPlugins = [ pkgs.vimPlugins.git-conflict-nvim ];
|
||||||
|
extraConfigLua = ''
|
||||||
|
require("git-conflict").setup()
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
programs.nixvim = {
|
||||||
|
extraPackages = [ pkgs.lazygit ];
|
||||||
|
|
||||||
|
plugins = {
|
||||||
|
lazygit.enable = true;
|
||||||
|
diffview.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
_: {
|
||||||
|
# git change view
|
||||||
|
programs.nixvim.plugins.gitsigns = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
signs = {
|
||||||
|
add = {
|
||||||
|
text = "+";
|
||||||
|
};
|
||||||
|
change = {
|
||||||
|
text = "~";
|
||||||
|
};
|
||||||
|
delete = {
|
||||||
|
text = "_";
|
||||||
|
};
|
||||||
|
topdelete = {
|
||||||
|
text = "‾";
|
||||||
|
};
|
||||||
|
changedelete = {
|
||||||
|
text = "~";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
programs.nixvim = {
|
||||||
|
extraPlugins = [ pkgs.vimPlugins.glance-nvim ];
|
||||||
|
extraConfigLua = ''
|
||||||
|
require("glance").setup()
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
_: {
|
||||||
|
programs.nixvim.plugins.lsp-signature = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
hint_enable = true;
|
||||||
|
hint_prefix = " ";
|
||||||
|
floating_window = true;
|
||||||
|
bind = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
programs.nixvim = {
|
||||||
|
extraPlugins = [ pkgs.vimPlugins.snacks-nvim ];
|
||||||
|
|
||||||
|
extraConfigLua = ''
|
||||||
|
require("snacks").setup({
|
||||||
|
picker = {
|
||||||
|
enabled = true,
|
||||||
|
|
||||||
|
actions = require("trouble.sources.snacks").actions,
|
||||||
|
|
||||||
|
win = {
|
||||||
|
input = {
|
||||||
|
keys = {
|
||||||
|
["<C-t>"] = {
|
||||||
|
"trouble_open",
|
||||||
|
mode = { "n", "i" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
|
notifier = { enabled = true },
|
||||||
|
words = { enabled = true },
|
||||||
|
scroll = { enabled = true },
|
||||||
|
dim = { enabled = true },
|
||||||
|
})
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
programs.nixvim = {
|
||||||
|
extraPackages = [ pkgs.ripgrep ];
|
||||||
|
extraPlugins = [ pkgs.vimPlugins.nvim-spectre ];
|
||||||
|
extraConfigLua = ''
|
||||||
|
require("spectre").setup()
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
_: {
|
||||||
|
programs.nixvim.plugins.nvim-surround.enable = true;
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
programs.nixvim = {
|
||||||
|
extraPlugins = [ pkgs.vimPlugins.todo-comments-nvim ];
|
||||||
|
extraConfigLua = ''
|
||||||
|
require("todo-comments").setup()
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
programs.nixvim = {
|
||||||
|
plugins.treesitter = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
highlight.enable = true;
|
||||||
|
indent.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
extraPlugins = [ pkgs.vimPlugins.nvim-ts-autotag ];
|
||||||
|
extraConfigLua = ''
|
||||||
|
require("nvim-ts-autotag").setup()
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
_: {
|
||||||
|
programs.nixvim.plugins.trouble.enable = true;
|
||||||
|
}
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
programs.nixvim.extraPlugins = [ pkgs.vimPlugins.vim-wakatime ];
|
||||||
|
}
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
_: {
|
||||||
|
programs.nixvim.plugins.barbar = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
animation = false;
|
||||||
|
auto_hide = 1;
|
||||||
|
tabpages = true;
|
||||||
|
clickable = true;
|
||||||
|
focus_on_close = "left";
|
||||||
|
|
||||||
|
icons = {
|
||||||
|
button = "";
|
||||||
|
separator = {
|
||||||
|
left = "▎";
|
||||||
|
right = "";
|
||||||
|
};
|
||||||
|
separator_at_end = false;
|
||||||
|
filetype.enabled = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
sidebar_filetypes = {
|
||||||
|
neo-tree = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
_: {
|
||||||
|
programs.nixvim.plugins.indent-blankline = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
scope = {
|
||||||
|
enabled = true;
|
||||||
|
show_start = true;
|
||||||
|
show_end = true;
|
||||||
|
};
|
||||||
|
exclude = {
|
||||||
|
filetypes = [
|
||||||
|
"help"
|
||||||
|
"neo-tree"
|
||||||
|
"toggleterm"
|
||||||
|
"lazy"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
_: {
|
||||||
|
programs.nixvim.plugins.colorizer = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
filetypes = [
|
||||||
|
"*"
|
||||||
|
"!markdown"
|
||||||
|
];
|
||||||
|
user_commands = true;
|
||||||
|
|
||||||
|
options = {
|
||||||
|
parsers = {
|
||||||
|
css = true;
|
||||||
|
tailwind = {
|
||||||
|
enable = true;
|
||||||
|
lsp = true;
|
||||||
|
update_names = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
display.mode = "background";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
{ ... }:
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./lualine.nix
|
||||||
|
./neo-tree.nix
|
||||||
|
./blankline.nix
|
||||||
|
./which-key.nix
|
||||||
|
./web-devicons.nix
|
||||||
|
./toggleterm.nix
|
||||||
|
./treesitter.nix
|
||||||
|
./barbar.nix
|
||||||
|
./lightbulb.nix
|
||||||
|
./colorizer.nix
|
||||||
|
./dropbar.nix
|
||||||
|
./scrollbar.nix
|
||||||
|
./ufo.nix
|
||||||
|
./zen-mode.nix
|
||||||
|
./markview.nix
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
_: {
|
||||||
|
programs.nixvim.plugins.dropbar.enable = true;
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
_: {
|
||||||
|
programs.nixvim.plugins.nvim-lightbulb = {
|
||||||
|
enable = true;
|
||||||
|
settings.autocmd.enabled = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
_: {
|
||||||
|
programs.nixvim.plugins.lualine = {
|
||||||
|
enable = true;
|
||||||
|
settings.sections.lualine_x = [
|
||||||
|
{
|
||||||
|
__raw = ''
|
||||||
|
function()
|
||||||
|
local ok, conform = pcall(require, "conform")
|
||||||
|
if not ok then return "" end
|
||||||
|
local formatters = conform.list_formatters(0)
|
||||||
|
for _, f in ipairs(formatters) do
|
||||||
|
if f.available then
|
||||||
|
return " " .. f.name
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return ""
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
"encoding"
|
||||||
|
"fileformat"
|
||||||
|
"filetype"
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
programs.nixvim = {
|
||||||
|
extraPlugins = [ pkgs.vimPlugins.markview-nvim ];
|
||||||
|
extraConfigLua = ''
|
||||||
|
require("markview").setup({ initial_state = false })
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,37 @@
|
|||||||
|
_: {
|
||||||
|
programs.nixvim = {
|
||||||
|
plugins.neo-tree = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
close_if_last_window = true;
|
||||||
|
|
||||||
|
filesystem = {
|
||||||
|
follow_current_file = {
|
||||||
|
enabled = true;
|
||||||
|
leave_dirs_open = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
filtered_items = {
|
||||||
|
visible = true;
|
||||||
|
hide_dotfiles = false;
|
||||||
|
hide_gitignored = true;
|
||||||
|
hide_ignored = false;
|
||||||
|
hide_hidden = false;
|
||||||
|
|
||||||
|
hide_by_name = [ ];
|
||||||
|
hide_by_pattern = [ ];
|
||||||
|
|
||||||
|
always_show = [ ];
|
||||||
|
always_show_by_pattern = [ ];
|
||||||
|
|
||||||
|
never_show = [
|
||||||
|
".DS_Store"
|
||||||
|
"thumbs.db"
|
||||||
|
];
|
||||||
|
never_show_by_pattern = [ ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
programs.nixvim = {
|
||||||
|
extraPlugins = [ pkgs.vimPlugins.nvim-scrollbar ];
|
||||||
|
extraConfigLua = ''
|
||||||
|
require("scrollbar").setup()
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
_: {
|
||||||
|
programs.nixvim.plugins.toggleterm.enable = true;
|
||||||
|
}
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
_: {
|
||||||
|
programs.nixvim.plugins."treesitter-context".enable = true;
|
||||||
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
programs.nixvim = {
|
||||||
|
opts = {
|
||||||
|
foldcolumn = "1";
|
||||||
|
foldlevel = 99;
|
||||||
|
foldlevelstart = 99;
|
||||||
|
foldenable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
extraPlugins = [
|
||||||
|
pkgs.vimPlugins.nvim-ufo
|
||||||
|
pkgs.vimPlugins.promise-async
|
||||||
|
];
|
||||||
|
|
||||||
|
extraConfigLua = ''
|
||||||
|
require("ufo").setup({
|
||||||
|
provider_selector = function()
|
||||||
|
return { "treesitter", "indent" }
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
_: {
|
||||||
|
# icon set preview
|
||||||
|
programs.nixvim.plugins.web-devicons.enable = true;
|
||||||
|
}
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
_: {
|
||||||
|
# key map help
|
||||||
|
programs.nixvim.plugins.which-key.enable = true;
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
{ pkgs, ... }:
|
||||||
|
{
|
||||||
|
programs.nixvim = {
|
||||||
|
extraPlugins = [ pkgs.vimPlugins.zen-mode-nvim ];
|
||||||
|
extraConfigLua = ''
|
||||||
|
require("zen-mode").setup()
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
cfg = config.my.applications.vim.system;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.my.applications.vim.system = {
|
||||||
|
enable = lib.mkEnableOption "vim system configuration";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
vim # Highly configurable text editor
|
||||||
|
];
|
||||||
|
|
||||||
|
environment.variables.EDITOR = "nvim";
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
cfg = config.my.applications.vscode;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./system.nix
|
||||||
|
./home.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
options.my.applications.vscode = {
|
||||||
|
enable = lib.mkEnableOption "Visual Studio Code editor";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
my.applications.vscode.system.enable = lib.mkDefault true;
|
||||||
|
my.applications.vscode.homeManager.enable = lib.mkDefault true;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,296 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
cfg = config.my.applications.vscode.homeManager;
|
||||||
|
vsc = pkgs.vscode-extensions;
|
||||||
|
inherit (lib) recursiveUpdate;
|
||||||
|
|
||||||
|
rustLibclangPath = pkgs.lib.makeLibraryPath [ pkgs.llvmPackages_latest.libclang.lib ];
|
||||||
|
|
||||||
|
rustBindgenExtraClangArgs = lib.concatStringsSep " " (
|
||||||
|
(builtins.map (a: ''-I"${a}/include"'') [
|
||||||
|
pkgs.glibc.dev
|
||||||
|
])
|
||||||
|
++ [
|
||||||
|
''-I"${pkgs.llvmPackages_latest.libclang.lib}/lib/clang/${pkgs.llvmPackages_latest.libclang.version}/include"''
|
||||||
|
''-I"${pkgs.glib.dev}/include/glib-2.0"''
|
||||||
|
"-I${pkgs.glib.out}/lib/glib-2.0/include/"
|
||||||
|
]
|
||||||
|
);
|
||||||
|
|
||||||
|
layers = rec {
|
||||||
|
common = {
|
||||||
|
extensions =
|
||||||
|
(with vsc; [
|
||||||
|
github.copilot
|
||||||
|
github.copilot-chat
|
||||||
|
dracula-theme.theme-dracula
|
||||||
|
ms-vscode-remote.vscode-remote-extensionpack
|
||||||
|
dbaeumer.vscode-eslint
|
||||||
|
ms-vscode-remote.remote-containers
|
||||||
|
ms-vscode-remote.remote-ssh
|
||||||
|
github.vscode-github-actions
|
||||||
|
github.vscode-pull-request-github
|
||||||
|
eamodio.gitlens
|
||||||
|
streetsidesoftware.code-spell-checker
|
||||||
|
ms-ceintl.vscode-language-pack-ja
|
||||||
|
])
|
||||||
|
++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [
|
||||||
|
{
|
||||||
|
name = "hadolint";
|
||||||
|
publisher = "exiasr";
|
||||||
|
version = "1.1.2";
|
||||||
|
hash = "sha256-6GO1f8SP4CE8yYl87/tm60FdGHqHsJA4c2B6ukVdpgM=";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "chatgpt";
|
||||||
|
publisher = "openai";
|
||||||
|
version = "0.4.71";
|
||||||
|
hash = "sha256-Q0le5rhVRgTDQXjIlhbzJOv/7+xC6JXwTp6fxZCP4ak=";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
userSettings = {
|
||||||
|
"workbench.colorTheme" = "Dracula";
|
||||||
|
"window.autoDetectColorScheme" = false;
|
||||||
|
"editor.formatOnSave" = true;
|
||||||
|
"editor.defaultFormatter" = "esbenp.prettier-vscode";
|
||||||
|
"git.enableSmartCommit" = true;
|
||||||
|
"files.autoSave" = "onFocusChange";
|
||||||
|
"git.confirmSync" = false;
|
||||||
|
"github.copilot.nextEditSuggestions.enabled" = true;
|
||||||
|
"editor.suggestOnTriggerCharacters" = true;
|
||||||
|
"editor.quickSuggestions" = {
|
||||||
|
other = true;
|
||||||
|
comments = false;
|
||||||
|
strings = true;
|
||||||
|
};
|
||||||
|
"git.autofetch" = true;
|
||||||
|
"workbench.editor.enablePreview" = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
web = {
|
||||||
|
extensions =
|
||||||
|
(with vsc; [
|
||||||
|
lokalise.i18n-ally
|
||||||
|
bradlc.vscode-tailwindcss
|
||||||
|
prisma.prisma
|
||||||
|
hashicorp.terraform
|
||||||
|
yoavbls.pretty-ts-errors
|
||||||
|
])
|
||||||
|
++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [
|
||||||
|
{
|
||||||
|
name = "pnpm-catalog-lens";
|
||||||
|
publisher = "antfu";
|
||||||
|
version = "1.0.0";
|
||||||
|
hash = "sha256-mCMBVxZRIb3Jao1XSS7EQRQX3Y2vrkpAmy6ldSqZa9c=";
|
||||||
|
}
|
||||||
|
{
|
||||||
|
name = "explorer";
|
||||||
|
publisher = "vitest";
|
||||||
|
version = "1.32.1";
|
||||||
|
hash = "sha256-MAfjS/oFfFuiE+Q2w6leSlao436QSw2fKjd7/BE/Q8Y=";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
userSettings = { };
|
||||||
|
};
|
||||||
|
|
||||||
|
web-biome = {
|
||||||
|
extensions = with vsc; [
|
||||||
|
biomejs.biome
|
||||||
|
];
|
||||||
|
userSettings = {
|
||||||
|
"editor.defaultFormatter" = "biomejs.biome";
|
||||||
|
"[typescript].editor.defaultFormatter" = "biomejs.biome";
|
||||||
|
"[typescriptreact].editor.defaultFormatter" = "biomejs.biome";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
web-oxc = {
|
||||||
|
extensions = pkgs.vscode-utils.extensionsFromVscodeMarketplace [
|
||||||
|
{
|
||||||
|
name = "oxc-vscode";
|
||||||
|
publisher = "oxc";
|
||||||
|
version = "1.48.0";
|
||||||
|
hash = "sha256-RZ7mLcLJyn7lR6w6Au6fZeguB3wtk8sIXb67lPnPnrc=";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
userSettings = {
|
||||||
|
"editor.defaultFormatter" = "oxc.oxc-vscode";
|
||||||
|
"[typescript].editor.defaultFormatter" = "oxc.oxc-vscode";
|
||||||
|
"[typescriptreact].editor.defaultFormatter" = "oxc.oxc-vscode";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
nix = {
|
||||||
|
extensions = with vsc; [
|
||||||
|
bbenoist.nix
|
||||||
|
jnoortheen.nix-ide
|
||||||
|
];
|
||||||
|
userSettings = {
|
||||||
|
"nix.enableLanguageServer" = true;
|
||||||
|
"nix.serverPath" = "nil";
|
||||||
|
"[nix]" = {
|
||||||
|
"editor.defaultFormatter" = "jnoortheen.nix-ide";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
jupyter = {
|
||||||
|
extensions = with vsc; [
|
||||||
|
ms-toolsai.jupyter
|
||||||
|
ms-python.python
|
||||||
|
];
|
||||||
|
userSettings = { };
|
||||||
|
};
|
||||||
|
|
||||||
|
java = {
|
||||||
|
extensions = with vsc; [
|
||||||
|
vscjava.vscode-java-pack
|
||||||
|
sonarsource.sonarlint-vscode
|
||||||
|
vscjava.vscode-java-debug
|
||||||
|
redhat.java
|
||||||
|
];
|
||||||
|
|
||||||
|
userSettings = {
|
||||||
|
"java.jdt.ls.java.home" = "${pkgs.jdk25.home}";
|
||||||
|
"java.configuration.runtimes" = [
|
||||||
|
{
|
||||||
|
"name" = "JavaSE-25";
|
||||||
|
"path" = "${pkgs.jdk25.home}";
|
||||||
|
"default" = true;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
"editor.codeLens" = true;
|
||||||
|
"java.debug.settings.enableRunDebugCodeLens" = true;
|
||||||
|
|
||||||
|
"java.jdt.ls.vmargs" = "-Xms256m -Xmx2G -XX:+UseG1GC -XX:+UseStringDeduplication";
|
||||||
|
|
||||||
|
"java.configuration.updateBuildConfiguration" = "interactive";
|
||||||
|
|
||||||
|
"java.maven.downloadSources" = true;
|
||||||
|
"java.eclipse.downloadSources" = true;
|
||||||
|
|
||||||
|
"maven.executable.path" = "${pkgs.maven}/bin/mvn";
|
||||||
|
|
||||||
|
"[java]" = {
|
||||||
|
"editor.defaultFormatter" = "redhat.java";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
rust = {
|
||||||
|
extensions = with vsc; [
|
||||||
|
rust-lang.rust-analyzer
|
||||||
|
vadimcn.vscode-lldb
|
||||||
|
serayuzgur.crates
|
||||||
|
tamasfe.even-better-toml
|
||||||
|
];
|
||||||
|
|
||||||
|
userSettings = {
|
||||||
|
"[rust]" = {
|
||||||
|
"editor.defaultFormatter" = "rust-lang.rust-analyzer";
|
||||||
|
"editor.formatOnSave" = true;
|
||||||
|
"editor.codeActionsOnSave" = {
|
||||||
|
"source.organizeImports" = true;
|
||||||
|
"source.fixAll" = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
"rust-analyzer.checkOnSave" = true;
|
||||||
|
"rust-analyzer.check.command" = "clippy";
|
||||||
|
|
||||||
|
"rust-analyzer.cargo.buildScripts.enable" = true;
|
||||||
|
"rust-analyzer.procMacro.enable" = true;
|
||||||
|
|
||||||
|
"rust-analyzer.cargo.targetDir" = true;
|
||||||
|
|
||||||
|
"rust-analyzer.cargo.extraEnv" = {
|
||||||
|
"LIBCLANG_PATH" = rustLibclangPath;
|
||||||
|
"BINDGEN_EXTRA_CLANG_ARGS" = rustBindgenExtraClangArgs;
|
||||||
|
};
|
||||||
|
|
||||||
|
"rust-analyzer.lens.enable" = true;
|
||||||
|
"rust-analyzer.lens.implementations.enable" = true;
|
||||||
|
"rust-analyzer.lens.references.adt.enable" = true;
|
||||||
|
"rust-analyzer.lens.references.enumVariant.enable" = true;
|
||||||
|
"rust-analyzer.lens.references.method.enable" = true;
|
||||||
|
"rust-analyzer.lens.references.trait.enable" = true;
|
||||||
|
|
||||||
|
"files.watcherExclude" = {
|
||||||
|
"**/target/**" = true;
|
||||||
|
};
|
||||||
|
"search.exclude" = {
|
||||||
|
"**/target/**" = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
combine =
|
||||||
|
ls:
|
||||||
|
builtins.foldl'
|
||||||
|
(acc: l: {
|
||||||
|
extensions = acc.extensions ++ (l.extensions or [ ]);
|
||||||
|
userSettings = recursiveUpdate acc.userSettings (l.userSettings or { });
|
||||||
|
})
|
||||||
|
{
|
||||||
|
extensions = [ ];
|
||||||
|
userSettings = { };
|
||||||
|
}
|
||||||
|
ls;
|
||||||
|
|
||||||
|
mkProfile =
|
||||||
|
layersList: extras:
|
||||||
|
let
|
||||||
|
base = combine layersList;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
extensions = base.extensions ++ (extras.extensions or [ ]);
|
||||||
|
userSettings = recursiveUpdate base.userSettings (extras.userSettings or { });
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.my.applications.vscode.homeManager = {
|
||||||
|
enable = lib.mkEnableOption "VSCode home-manager configuration";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
nixpkgs.config.allowUnfree = true;
|
||||||
|
|
||||||
|
home-manager.sharedModules = [
|
||||||
|
{
|
||||||
|
programs.vscode = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
profiles = {
|
||||||
|
default = mkProfile [ layers.common ] { };
|
||||||
|
|
||||||
|
nix = mkProfile [ layers.common layers.nix ] { };
|
||||||
|
|
||||||
|
web = mkProfile [ layers.common layers.web layers.web-biome ] { };
|
||||||
|
|
||||||
|
web-oxc = mkProfile [ layers.common layers.web layers.web-oxc ] { };
|
||||||
|
|
||||||
|
jupyter = mkProfile [ layers.common layers.jupyter ] { };
|
||||||
|
|
||||||
|
java = mkProfile [ layers.common layers.java ] { };
|
||||||
|
|
||||||
|
rust = mkProfile [ layers.common layers.rust ] { };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
xdg.configFile."Code/User/locale.json".text = ''
|
||||||
|
{
|
||||||
|
"locale": "ja"
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
let
|
||||||
|
cfg = config.my.applications.vscode.system;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
options.my.applications.vscode.system = {
|
||||||
|
enable = lib.mkEnableOption "VSCode system configuration";
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
sqlite # SQLite database library (VSCode dependency)
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user