This commit is contained in:
2026-05-27 20:37:47 +09:00
parent 0195f75287
commit 1abb99aa07
129 changed files with 0 additions and 5219 deletions
-71
View File
@@ -1,71 +0,0 @@
name: nix-build-and-cache
on:
pull_request:
paths:
- "flake.nix"
- "flake.lock"
- "hosts/**"
- "modules/**"
- "profiles/**"
- "overlays/**"
- ".github/workflows/nix-cache.yml"
push:
branches:
- main
paths:
- "flake.nix"
- "flake.lock"
- "hosts/**"
- "modules/**"
- "profiles/**"
- "overlays/**"
- ".github/workflows/nix-cache.yml"
workflow_dispatch:
concurrency:
group: nix-${{ github.ref }}
cancel-in-progress: true
jobs:
build:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
host:
- x1g9
- x1g13-wsl
- x1g13
- monitor
- dev-1
- service-1
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Install Nix
uses: cachix/install-nix-action@v31
with:
github_access_token: ${{ secrets.GITHUB_TOKEN }}
extra_nix_config: |
accept-flake-config = true
- name: Setup Cachix for PR
if: github.event_name == 'pull_request'
uses: cachix/cachix-action@v17
with:
name: moons-dotfiles
skipPush: true
- name: Setup Cachix for main push
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
uses: cachix/cachix-action@v17
with:
name: moons-dotfiles
authToken: "${{ secrets.CACHIX_AUTH_TOKEN }}"
- name: Build host
run: |
nix build -L .#nixosConfigurations.${{ matrix.host }}.config.system.build.toplevel
-18
View File
@@ -1,19 +1 @@
/*
!.gitignore
!README.md
!LICENSE
!/flake.nix
!/flake.lock
!/hosts/
!/modules/
!/home-manager/
!/shells/
!/images/
!/profiles/
!/overlays/
!renovate.json
!.github/
-189
View File
@@ -1,189 +0,0 @@
# dotfiles
NixOS + Home Manager configuration for moons. This repository uses Nix flakes to
manage multiple NixOS hosts and project-specific development shells.
This is a personal configuration. It assumes the `moons` user, `ja_JP.UTF-8`
locale, and `Asia/Tokyo` timezone.
## Features
- NixOS 25.11 based flake configuration
- Home Manager integrated as a NixOS module
- Wayland GUI profile with Niri, Hyprland, greetd, and Noctalia
- Home Manager modules for zsh, git, btop, zellij, direnv, NixVim, fcitx5, and more
- Separate hosts for ThinkPad X1 Carbon Gen 9 / Gen 13, WSL, and server machines
- `nix develop` shells for Next.js, Jupyter, and Rust projects
- GitHub Actions + Cachix build cache for host builds
- Renovate maintenance for flake inputs and the lock file
## Hosts
The following hosts are defined in `flake.nix` under `nixosConfigurations`.
| Host | Profile | Notes |
| --- | --- | --- |
| `x1g9` | `laptop` | ThinkPad X1 9th gen, using `nixos-hardware` and the Intel driver module |
| `x1g13` | `laptop` | ThinkPad X1 13th gen, using the Intel driver module and Lanzaboote secure boot |
| `x1g13-wsl` | `cli` | NixOS-WSL with `moons` as the default user |
| `monitor` | `cli-server` | Server host |
| `dev-1` | `cli-server` | Server host |
| `service-1` | `cli-server` | Server host with Immich / Cloudreve NFS mounts |
## Profiles
Profiles live in `profiles/` and are selected per host from `flake.nix`.
| Profile | Role |
| --- | --- |
| `cli-minimal` | Minimal profile with no extra imports. Shared NixOS and Home Manager modules are still always applied |
| `cli` | CLI profile extending `cli-minimal` |
| `cli-server` | Server profile extending `cli` |
| `gui` | GUI profile extending `cli` with Niri, Hyprland, greetd, Noctalia, KDE/GUI support, and GUI Home Manager modules |
| `laptop` | Laptop profile extending `gui` with fingerprint, power, and camera modules |
## Directory Layout
```text
.
|-- flake.nix # inputs, host definitions, devShells
|-- flake.lock # locked flake inputs
|-- hosts/ # host-specific NixOS settings
| `-- <host>/
| |-- default.nix
| `-- hardware-configuration.nix
|-- profiles/ # reusable host profiles
|-- modules/
| |-- core/ # NixOS modules
| |-- drivers/ # hardware / driver modules
| `-- home/ # Home Manager modules
|-- overlays/ # package overlays
|-- shells/ # nix develop environments
|-- images/ # managed image assets
|-- renovate.json # Renovate config
`-- .github/workflows/ # CI builds and Cachix integration
```
## System Usage
Rebuild the current machine by selecting the matching `#<host>` output.
```sh
sudo nixos-rebuild switch --flake .#x1g13
```
Switch on the next boot instead:
```sh
sudo nixos-rebuild boot --flake .#x1g13
```
Build a system closure in the same form used by CI:
```sh
nix build -L .#nixosConfigurations.x1g13.config.system.build.toplevel
```
List available hosts and development shells:
```sh
nix flake show
```
## Development Shells
`devShells.x86_64-linux` provides the following shells.
| Shell | Command | Main tools |
| --- | --- | --- |
| `next-web` | `nix develop .#next-web` | Node.js 24, pnpm, Vercel CLI, Prisma, OpenSSL, jq, ngrok |
| `jupyter` | `nix develop .#jupyter` | Python 3.12, JupyterLab, NumPy, pandas, matplotlib, scipy, scikit-learn |
| `rust` | `nix develop .#rust` | rustup, clang, LLVM/binutils, pkg-config |
To use a shell through direnv, add an `.envrc` to the target project.
```sh
use flake ~/dotfiles#next-web
```
## Adding A Host
1. Create `hosts/<host>/hardware-configuration.nix`.
For an existing NixOS install, use the output from `sudo nixos-generate-config`.
2. Create `hosts/<host>/default.nix` and import hardware modules or host-specific settings.
3. Add a `mkSystem` entry to `nixosConfigurations` in `flake.nix` and choose a `profile`.
4. Check the build with `nix build -L .#nixosConfigurations.<host>.config.system.build.toplevel`.
5. Run `sudo nixos-rebuild switch --flake .#<host>` on the target host.
## Common Modules
### NixOS
`modules/core/default.nix` imports boot, Cachix, environment, fonts, GC, hardware,
i18n, network, packages, services, SSH, system, user, and xserver modules.
Main settings include:
- flakes / nix-command enabled
- `moons` user and Home Manager integration
- zsh, Docker, Tailscale, PipeWire, adb, Java 25, Python, Bun, Claude Code, Codex, and more
- NetworkManager, fixed nameservers, and JP Wi-Fi regulatory domain
- OpenSSH server with password login and root login disabled
- Cachix caches for `moons-dotfiles` and `vicinae`
### Home Manager
`modules/home/default.nix` imports btop, git, fcitx5, SSH, NixVim, zsh, direnv,
zellij, and Claude configuration.
The GUI profile additionally manages Niri, VS Code, Google Chrome, Vicinae,
Noctalia, Ghostty, wallpaper, lock screen, Discord, Nautilus, GTK, and Zoom.
NixVim is split into modules for LSP, formatters, completion, git integration,
UI plugins, editor plugins, options, keymaps, and autocmds.
## Manual Steps
The following setup is not fully declarative or needs host-specific manual work.
- Register an SSH public key with GitHub.
- Enroll fingerprints on laptop hosts.
```sh
fprintd-enroll
```
- `x1g13` uses Lanzaboote / sbctl for secure boot. The PKI bundle is read from
`/var/lib/sbctl`.
- Log in to services that require authentication, such as Tailscale and 1Password.
## Maintenance
Update all flake inputs:
```sh
nix flake update
```
Update a single input:
```sh
nix flake lock --update-input nixpkgs
```
GitHub Actions builds all hosts when `flake.nix`, `flake.lock`, `hosts/**`,
`modules/**`, `profiles/**`, or `overlays/**` changes. Pushes to `main` upload
to the `moons-dotfiles` Cachix cache.
Renovate enables Nix lock file maintenance and has a separate package rule for
`llm-agents`.
## Inspired
- [Zaney/zaneyos](https://gitlab.com/Zaney/zaneyos)
- [fa0311/.zshrc](https://gist.github.com/fa0311/d37d53ff39c73c54c883379e8e3732df)
- [AsianLovesLinux/Niri](https://github.com/AsianLovesLinux/Niri)
- [natsukium/dotfiles](https://github.com/natsukium/dotfiles)
- [dracula](https://github.com/dracula)
- [akazdayo/nix-configs](https://github.com/akazdayo/nix-configs)
- [yutakobayashidev/dotnix](https://github.com/yutakobayashidev/dotnix)
Generated
-1197
View File
File diff suppressed because it is too large Load Diff
-142
View File
@@ -1,142 +0,0 @@
{
description = "moons nix configurations and development shells";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.11";
nixpkgs-unstable.url = "github:NixOS/nixpkgs/nixpkgs-unstable";
nixos-hardware.url = "github:NixOS/nixos-hardware/master";
nixos-wsl.url = "github:nix-community/NixOS-WSL";
home-manager = {
url = "github:nix-community/home-manager/release-25.11";
inputs.nixpkgs.follows = "nixpkgs";
};
vicinae.url = "github:vicinaehq/vicinae";
vicinae-extensions = {
url = "github:vicinaehq/extensions";
inputs.nixpkgs.follows = "nixpkgs";
};
ghostty.url = "github:ghostty-org/ghostty";
niri-flake.url = "github:sodiboo/niri-flake";
quickshell = {
url = "github:outfoxxed/quickshell";
inputs.nixpkgs.follows = "nixpkgs";
};
noctalia = {
url = "github:noctalia-dev/noctalia-shell";
inputs.nixpkgs.follows = "nixpkgs";
inputs.quickshell.follows = "quickshell";
};
stylix = {
url = "github:nix-community/stylix";
inputs.nixpkgs.follows = "nixpkgs";
};
lanzaboote = {
url = "github:nix-community/lanzaboote";
inputs.nixpkgs.follows = "nixpkgs";
};
nixvim = {
url = "github:nix-community/nixvim/nixos-25.11";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = inputs @ {
self,
nixpkgs,
nixpkgs-unstable,
nixos-hardware,
home-manager,
...
}: let
mkSystem = {
host,
system,
profile,
extraModules ? [],
}:
nixpkgs.lib.nixosSystem {
inherit system;
specialArgs = {
inherit inputs;
inherit host;
inherit profile;
};
modules =
[
./overlays
./modules/core
./profiles/${profile}.nix
./hosts/${host}
]
++ extraModules;
};
in {
nixosConfigurations = {
x1g9 = mkSystem {
host = "x1g9";
system = "x86_64-linux";
profile = "laptop";
extraModules = [];
};
x1g13-wsl = mkSystem {
host = "x1g13-wsl";
system = "x86_64-linux";
profile = "cli";
extraModules = [];
};
x1g13 = mkSystem {
host = "x1g13";
system = "x86_64-linux";
profile = "laptop";
extraModules = [];
};
monitor = mkSystem {
host = "monitor";
system = "x86_64-linux";
profile = "cli-server";
extraModules = [];
};
dev-1 = mkSystem {
host = "dev-1";
system = "x86_64-linux";
profile = "cli-server";
extraModules = [];
};
service-1 = mkSystem {
host = "service-1";
system = "x86_64-linux";
profile = "cli-server";
extraModules = [];
};
ops = mkSystem {
host = "ops";
system = "x86_64-linux";
profile = "cli-server";
extraModules = [];
};
nix-test = mkSystem {
host = "nix-test";
system = "x86_64-linux";
profile = "cli-server";
extraModules = [];
};
};
devShells = {
x86_64-linux = let
pkgs = import nixpkgs {
system = "x86_64-linux";
config.allowUnfreePredicate = pkg: builtins.elem (nixpkgs.lib.getName pkg) ["ngrok"];
};
in {
next-web = import ./shells/next-web.nix {inherit pkgs;};
jupyter = import ./shells/jupyter.nix {inherit pkgs;};
rust = import ./shells/rust/default.nix {inherit pkgs;};
};
};
};
}
-12
View File
@@ -1,12 +0,0 @@
# Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running ‘nixos-help’).
{ ... }:
{
imports =
[
./hardware-configuration.nix
];
}
-37
View File
@@ -1,37 +0,0 @@
# Do not modify this file! It was generated by ‘nixos-generate-config’
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, modulesPath, ... }:
{
imports =
[ (modulesPath + "/profiles/qemu-guest.nix")
];
boot.initrd.availableKernelModules = [ "ata_piix" "uhci_hcd" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/53d2fe07-d84b-4cda-9428-45a3361d6b11";
fsType = "ext4";
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/72E9-E469";
fsType = "vfat";
options = [ "fmask=0022" "dmask=0022" ];
};
swapDevices = [ ];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's
# still possible to use this option, but it's recommended to use it in conjunction
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
networking.useDHCP = lib.mkDefault true;
# networking.interfaces.ens18.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
}
-12
View File
@@ -1,12 +0,0 @@
# Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running ‘nixos-help’).
{ ... }:
{
imports =
[
./hardware-configuration.nix
];
}
-37
View File
@@ -1,37 +0,0 @@
# Do not modify this file! It was generated by ‘nixos-generate-config’
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, modulesPath, ... }:
{
imports =
[ (modulesPath + "/profiles/qemu-guest.nix")
];
boot.initrd.availableKernelModules = [ "ata_piix" "uhci_hcd" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/770de3b2-eb30-4ccd-b7a6-13e7655b1d5c";
fsType = "ext4";
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/1308-E5E7";
fsType = "vfat";
options = [ "fmask=0077" "dmask=0077" ];
};
swapDevices = [ ];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's
# still possible to use this option, but it's recommended to use it in conjunction
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
networking.useDHCP = lib.mkDefault true;
# networking.interfaces.ens18.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
}
-12
View File
@@ -1,12 +0,0 @@
# Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running ‘nixos-help’).
{ ... }:
{
imports =
[
./hardware-configuration.nix
];
}
-30
View File
@@ -1,30 +0,0 @@
# Do not modify this file! It was generated by ‘nixos-generate-config’
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, modulesPath, ... }:
{
imports =
[ (modulesPath + "/profiles/qemu-guest.nix")
];
boot.initrd.availableKernelModules = [ "ata_piix" "uhci_hcd" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/8f0eaec6-5dc9-4821-aa8d-fb6809b5a5bf";
fsType = "ext4";
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/201C-961B";
fsType = "vfat";
options = [ "fmask=0077" "dmask=0077" ];
};
swapDevices = [ ];
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
}
-45
View File
@@ -1,45 +0,0 @@
# Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running ‘nixos-help’).
{...}: {
imports = [
./hardware-configuration.nix
];
services.qemuGuest.enable = true;
networking = {
useDHCP = false;
interfaces = {
ens18 = {
useDHCP = false;
ipv4.addresses = [
{
address = "10.50.128.20";
prefixLength = 24;
}
];
};
ens19 = {
useDHCP = false;
ipv4.addresses = [
{
address = "10.50.7.101";
prefixLength = 24;
}
];
};
};
defaultGateway = {
address = "10.50.128.1";
interface = "ens18";
};
nameservers = [
"1.1.1.1"
];
};
}
-30
View File
@@ -1,30 +0,0 @@
# Do not modify this file! It was generated by ‘nixos-generate-config’
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, modulesPath, ... }:
{
imports =
[ (modulesPath + "/profiles/qemu-guest.nix")
];
boot.initrd.availableKernelModules = [ "ata_piix" "uhci_hcd" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/69fa2193-1e4f-438a-8898-5de8a3f36e5b";
fsType = "ext4";
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/D09B-4277";
fsType = "vfat";
options = [ "fmask=0077" "dmask=0077" ];
};
swapDevices = [ ];
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
}
-43
View File
@@ -1,43 +0,0 @@
# Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running ‘nixos-help’).
{ ... }:
{
imports = [
./hardware-configuration.nix
];
fileSystems."/mnt/immich-nfs" = {
device = "unas.moons14.com:/var/nfs/shared/immich";
fsType = "nfs";
options = [
"nfsvers=3"
"hard"
"timeo=600"
"retrans=2"
"noatime"
"_netdev"
"nofail"
"x-systemd.requires=network-online.target"
"x-systemd.after=network-online.target"
];
};
fileSystems."/mnt/cloudreve-nfs" = {
device = "unas.moons14.com:/var/nfs/shared/cloudreve";
fsType = "nfs";
options = [
"nfsvers=3"
"hard"
"timeo=600"
"retrans=2"
"noatime"
"_netdev"
"nofail"
"x-systemd.requires=network-online.target"
"x-systemd.after=network-online.target"
];
};
}
@@ -1,37 +0,0 @@
# Do not modify this file! It was generated by ‘nixos-generate-config’
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, modulesPath, ... }:
{
imports =
[ (modulesPath + "/profiles/qemu-guest.nix")
];
boot.initrd.availableKernelModules = [ "ata_piix" "uhci_hcd" "virtio_pci" "virtio_scsi" "sd_mod" "sr_mod" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/d9f05715-e68a-4d69-bf46-bd903b0782f0";
fsType = "ext4";
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/1772-FC70";
fsType = "vfat";
options = [ "fmask=0077" "dmask=0077" ];
};
swapDevices = [ ];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's
# still possible to use this option, but it's recommended to use it in conjunction
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
networking.useDHCP = lib.mkDefault true;
# networking.interfaces.ens18.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
}
-18
View File
@@ -1,18 +0,0 @@
# Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running ‘nixos-help’).
{ lib, inputs, ... }:
{
imports =
[
inputs.nixos-wsl.nixosModules.wsl
];
wsl.enable = true;
wsl.defaultUser = "moons";
boot.loader.systemd-boot.enable = lib.mkForce false;
boot.loader.grub.enable = lib.mkForce false;
}
-15
View File
@@ -1,15 +0,0 @@
# Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running ‘nixos-help’).
{ inputs, ... }:
{
imports =
[
inputs.nixos-hardware.nixosModules.lenovo-thinkpad-x1-13th-gen
./../../modules/drivers/intel-drivers.nix
./../../modules/core/secure-boot.nix
./hardware-configuration.nix
];
}
-38
View File
@@ -1,38 +0,0 @@
# Do not modify this file! It was generated by ‘nixos-generate-config’
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, modulesPath, ... }:
{
imports =
[ (modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [ "xhci_pci" "thunderbolt" "nvme" "usb_storage" "sd_mod" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/29b4b68d-c25e-48b1-beb3-30f63ac2f491";
fsType = "ext4";
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/EA69-77EE";
fsType = "vfat";
options = [ "fmask=0077" "dmask=0077" ];
};
swapDevices = [ ];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's
# still possible to use this option, but it's recommended to use it in conjunction
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
networking.useDHCP = lib.mkDefault true;
# networking.interfaces.wlp0s20f3.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}
-14
View File
@@ -1,14 +0,0 @@
# Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running ‘nixos-help’).
{ inputs, ... }:
{
imports =
[
inputs.nixos-hardware.nixosModules.lenovo-thinkpad-x1-9th-gen
./../../modules/drivers/intel-drivers.nix
./hardware-configuration.nix
];
}
-38
View File
@@ -1,38 +0,0 @@
# Do not modify this file! It was generated by ‘nixos-generate-config’
# and may be overwritten by future invocations. Please make changes
# to /etc/nixos/configuration.nix instead.
{ config, lib, pkgs, modulesPath, ... }:
{
imports =
[ (modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [ "xhci_pci" "thunderbolt" "nvme" "usb_storage" "sd_mod" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/16b29578-6836-414b-a5e1-863bc21c5fc3";
fsType = "ext4";
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/209A-C8C9";
fsType = "vfat";
options = [ "fmask=0077" "dmask=0077" ];
};
swapDevices = [ ];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's
# still possible to use this option, but it's recommended to use it in conjunction
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
networking.useDHCP = lib.mkDefault true;
# networking.interfaces.wlp0s20f3.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

-11
View File
@@ -1,11 +0,0 @@
{ pkgs, ... }:
{
boot.loader = {
systemd-boot.enable = true;
systemd-boot.configurationLimit = 8;
efi.canTouchEfiVariables = true;
};
boot.supportedFilesystems = [ "nfs" ];
boot.kernelPackages = pkgs.linuxPackages_latest;
}
-12
View File
@@ -1,12 +0,0 @@
-----BEGIN CERTIFICATE-----
MIIBszCCAVqgAwIBAgIRAPCAxajuCEmnXKploQS+KAkwCgYIKoZIzj0EAwIwODEW
MBQGA1UEChMNTW9vbnMgSG9tZSBDQTEeMBwGA1UEAxMVTW9vbnMgSG9tZSBDQSBS
b290IENBMB4XDTI1MTIwNjE4MDgwN1oXDTM1MTIwNDE4MDgwN1owODEWMBQGA1UE
ChMNTW9vbnMgSG9tZSBDQTEeMBwGA1UEAxMVTW9vbnMgSG9tZSBDQSBSb290IENB
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEDw2M0NQMju2zN5ZXwsYaTieWggId
XmRSXjOHW4/pBEI11xk1GkMFbeVmppr1cbcNmbB+fmxoFa+oKguhFDSsdaNFMEMw
DgYDVR0PAQH/BAQDAgEGMBIGA1UdEwEB/wQIMAYBAf8CAQEwHQYDVR0OBBYEFGuC
UGL5CxdamFfBVC8xH306Wo6xMAoGCCqGSM49BAMCA0cAMEQCIBqWCNWBuwhWDYoi
fpqOqz2HSChOsKCIAgfTJlUUgSlSAiALekUJ+4M+L4/vP4GpkrSovuQ7JOMXV44+
30Pcx4AoJg==
-----END CERTIFICATE-----
-15
View File
@@ -1,15 +0,0 @@
{...}: {
nix.settings = {
extra-substituters = [
"https://moons-dotfiles.cachix.org"
"https://noctalia.cachix.org"
"https://vicinae.cachix.org"
];
extra-trusted-public-keys = [
"moons-dotfiles.cachix.org-1:WHoroKiNScG2/dpxHHL1I0qVmvuQhJbEAP+DS2j9Rr0="
"noctalia.cachix.org-1:pCOR47nnMEo5thcxNDtzWpOxNFQsBRglJzxWPp3dkU4="
"vicinae.cachix.org-1:1kDrfienkGHPYbkpNj1mWTr7Fm1+zcenzgTizIcI3oc="
];
};
}
-21
View File
@@ -1,21 +0,0 @@
{ pkgs, ... }:
{
boot.kernelModules = [ "uvcvideo" ];
environment.systemPackages = with pkgs; [
v4l-utils
(ffmpeg-full)
];
services.pipewire = {
enable = true;
alsa.enable = true;
pulse.enable = true;
};
security.rtkit.enable = true;
xdg.portal = {
enable = true;
extraPortals = [ pkgs.xdg-desktop-portal-gtk ];
};
}
-18
View File
@@ -1,18 +0,0 @@
{...}: {
imports = [
./boot.nix
./cachix.nix
./environment.nix
./fonts.nix
./gc.nix
./hardware.nix
./i18n.nix
./network.nix
./packages.nix
./services.nix
./ssh.nix
./system.nix
./user.nix
./xserver.nix
];
}
-9
View File
@@ -1,9 +0,0 @@
{ ... }:
{
environment.sessionVariables = {
ELECTRON_OZONE_PLATFORM_HINT = "wayland";
QT_QPA_PLATFORM = "wayland;xcb";
NIXOS_OZONE_WL = "1";
};
environment.variables.EDITOR = "nvim";
}
-21
View File
@@ -1,21 +0,0 @@
{ ... }:
{
services.fprintd.enable = true;
# Add fingerprint command
# fprintd-enroll
# List fingerprints
# fprintd-list $USER
# Test fingerprint authentication
# fprintd-verify
security.pam.services = {
login.fprintAuth = true;
# sudo
sudo.fprintAuth = true;
# greetd (tuigreet / ReGreet)
greetd.fprintAuth = true;
};
}
-29
View File
@@ -1,29 +0,0 @@
{ pkgs, ... }:
{
fonts = {
packages = with pkgs; [
noto-fonts
noto-fonts-cjk-sans
noto-fonts-color-emoji
terminus_font
cantarell-fonts
font-awesome
nerd-fonts.blex-mono
];
fontDir.enable = true;
fontconfig = {
defaultFonts = {
serif = [
"Noto Serif CJK JP"
"Noto Color Emoji"
];
sansSerif =[
"Noto Sans CJK JP"
"Noto Clor Emoji"
];
emoji = ["Noto Color Emoji"];
};
};
};
}
-11
View File
@@ -1,11 +0,0 @@
{ ... }:
{
nix.gc = {
automatic = true;
dates = "daily";
options = "--delete-older-than 7d";
};
nix.settings.auto-optimise-store = true;
nix.optimise.automatic = true;
}
-11
View File
@@ -1,11 +0,0 @@
{ pkgs, username, ... }: {
services.greetd = {
enable = true;
settings = {
default_session = {
user = "greeter";
command = "${pkgs.tuigreet}/bin/tuigreet --time --remember --cmd niri-session";
};
};
};
}
-8
View File
@@ -1,8 +0,0 @@
{ pkgs, ... }:
{
environment.systemPackages = with pkgs; [
slack
insomnia
obsidian
];
}
-15
View File
@@ -1,15 +0,0 @@
{ pkgs, ... }:
{
hardware = {
sane = {
enable = true;
extraBackends = [ pkgs.sane-airscan ];
disabledDefaultBackends = [ "escl" ];
};
graphics.enable = true;
enableRedistributableFirmware = true;
keyboard.qmk.enable = true;
bluetooth.enable = true;
bluetooth.powerOnBoot = true;
};
}
-10
View File
@@ -1,10 +0,0 @@
{ ... }:
{
programs = {
hyprland = {
enable = true;
withUWSM = false;
};
hyprlock.enable = true;
};
}
-32
View File
@@ -1,32 +0,0 @@
{ pkgs, ... }:
{
i18n.inputMethod = {
enable = true;
type = "fcitx5";
fcitx5 = {
addons = with pkgs; [
fcitx5-mozc
fcitx5-gtk
qt6Packages.fcitx5-configtool
];
settings.inputMethod = {
GroupOrder = {
"0" = "Default";
};
"Groups/0" = {
Name = "Default";
"Default Layout" = "keyboard-jp";
DefaultIM = "mozc";
};
"Groups/0/Items/0" = {
Name = "keyboard-jp";
Layout = "";
};
"Groups/0/Items/1" = {
Name = "mozc";
Layout = "";
};
};
};
};
}
-6
View File
@@ -1,6 +0,0 @@
{...}: {
programs.kdeconnect = {
enable = true;
};
}
-39
View File
@@ -1,39 +0,0 @@
{
host,
pkgs,
...
}: {
networking = {
hostName = "${host}";
nameservers = [
"1.1.1.1"
"1.0.0.1"
];
networkmanager = {
enable = true;
dns = "none";
wifi.powersave = false;
wifi.backend = "wpa_supplicant";
settings = {
"device"."wifi.scan-rand-mac-address" = "no";
"connection"."wifi.cloned-mac-address" = "permanent";
};
};
wireless.iwd.enable = false;
};
boot.extraModprobeConfig = ''
options cfg80211 ieee80211_regdom=JP
options iwlwifi power_save=0
options iwlwifi uapsd_disable=1
'';
services.resolved.enable = false;
environment.systemPackages = [pkgs.networkmanagerapplet];
programs.nm-applet.enable = true;
security.pki.certificateFiles = [./ca/root_ca.crt];
}
-6
View File
@@ -1,6 +0,0 @@
{ pkgs, ... }:
{
programs.niri = {
enable = true;
};
}
-6
View File
@@ -1,6 +0,0 @@
{ pkgs, inputs, ... }:
{
environment.systemPackages = with pkgs; [
inputs.noctalia.packages.${system}.default
];
}
-68
View File
@@ -1,68 +0,0 @@
{
pkgs,
inputs,
...
}: let
unstable = import inputs.nixpkgs-unstable {
system = pkgs.system;
config = {
allowUnfree = true;
};
};
in {
programs = {
xwayland.enable = true;
dconf.enable = true;
seahorse.enable = true;
fuse.userAllowOther = true;
adb.enable = true;
gnupg.agent = {
enable = true;
enableSSHSupport = false;
};
zsh = {
enable = true;
};
java.enable = true;
java.package = pkgs.jdk25;
};
nixpkgs.config.allowUnfree = true;
environment.systemPackages = with pkgs; [
tuigreet # The Login Manager (Sometimes Referred To As Display Manager)
htop
btop # Simple Terminal Based System Monitor
unrar # Tool For Handling .rar Files
unzip # Tool For Handling .zip Files
uwsm # Universal Wayland Session Manager (optional must be enabled)
wget # Tool For Fetching Files With Links
curl # Tool For Fetching Files With Links
alacritty # A GPU Accelerated Terminal Emulator
fuzzel # A Simple And Lightweight Application Launcher
git # Version Control System
tailscale # Zero-Config VPN
unstable.msedit # Microsoft Editor
nil # Nix Language Server
docker # Containerization Platform
unstable._1password-cli
unstable._1password-gui
unstable.ghostty
tio
sbctl
xwayland-satellite
slurp
grim
wf-recorder
sqlite # Vscode Raycast Extension Dependency
oxker # Docker TUI Tool
jdk25
maven
gradle
python312
uv
bun
unstable.claude-code
unstable.codex
];
}
-14
View File
@@ -1,14 +0,0 @@
{...}: {
boot.kernelParams = [
"mem_sleep_default=deep"
];
powerManagement = {
enable = true;
powertop.enable = true;
};
services.power-profiles-daemon.enable = true;
services.tlp.enable = false;
services.upower.enable = true;
}
-17
View File
@@ -1,17 +0,0 @@
{ inputs, pkgs, lib, ... }:
{
imports = [
inputs.lanzaboote.nixosModules.lanzaboote
];
boot.loader = {
systemd-boot.enable = lib.mkForce false;
efi.canTouchEfiVariables = true;
efi.efiSysMountPoint = "/boot";
};
boot.lanzaboote = {
enable = true;
pkiBundle = "/var/lib/sbctl";
};
}
-76
View File
@@ -1,76 +0,0 @@
{pkgs, ...}: {
services = {
blueman.enable = true; # Bluetooth Support
tumbler.enable = true; # Image/video preview
fwupd.enable = true;
gnome.gnome-keyring.enable = true;
upower.enable = true;
tailscale = {
enable = true;
extraUpFlags = [
"--accept-dns=false"
"--accept-routes"
];
};
pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
jack.enable = true;
wireplumber.enable = true;
};
logind = {
settings.Login = {
HandleLidSwitch = "suspend";
HandleLidSwitchDocked = "ignore";
HandleLidSwitchExternalPower = "suspend";
LidSwitchIgnoreInhibited = "no";
};
};
rpcbind.enable = true;
};
virtualisation.docker = {
enable = true;
autoPrune = {
enable = true;
dates = "weekly";
};
daemon.settings = {
ipv6 = true;
"fixed-cidr-v6" = "fd00:30::/64";
ip6tables = true;
};
};
programs.nix-ld.enable = true;
security.rtkit.enable = true;
xdg.portal = {
enable = true;
wlr.enable = true;
extraPortals = [
pkgs.xdg-desktop-portal-wlr
pkgs.xdg-desktop-portal-gtk
];
xdgOpenUsePortal = true;
config = {
common.default = [
"wlr"
"gtk"
];
niri.default = [
"wlr"
"gtk"
];
};
};
}
-24
View File
@@ -1,24 +0,0 @@
{ pkgs, ... }:
{
services.openssh = {
enable = true;
openFirewall = true;
settings = {
PermitRootLogin = "no";
PasswordAuthentication = false;
KbdInteractiveAuthentication = false;
PubkeyAuthentication = "yes";
};
};
users.users.moons = {
openssh.authorizedKeys.keys = [
"sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIKhxDkucmeCor6CKoXAua7DgDSzuXrZOtpdkyzQxz5+aAAAABHNzaDo= moons@moons14.com"
"sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIN6hZJyng/5LgFKPjR6uZAd/00UkO0vN0uQOoIvfSELdAAAABHNzaDo= moons@moons14.com"
];
};
}
-30
View File
@@ -1,30 +0,0 @@
{...}: {
nix = {
settings = {
experimental-features = ["nix-command" "flakes"];
};
};
# Localization settings
time.timeZone = "Asia/Tokyo";
i18n.defaultLocale = "ja_JP.UTF-8";
i18n.extraLocaleSettings = {
LC_ADDRESS = "ja_JP.UTF-8";
LC_IDENTIFICATION = "ja_JP.UTF-8";
LC_MEASUREMENT = "ja_JP.UTF-8";
LC_MONETARY = "ja_JP.UTF-8";
LC_NAME = "ja_JP.UTF-8";
LC_NUMERIC = "ja_JP.UTF-8";
LC_PAPER = "ja_JP.UTF-8";
LC_TELEPHONE = "ja_JP.UTF-8";
LC_TIME = "ja_JP.UTF-8";
};
environment.variables = {
NIXOS_OZONE_WL = "1";
};
console.keyMap = "jp106";
system.stateVersion = "25.11";
}
-38
View File
@@ -1,38 +0,0 @@
{ pkgs, inputs, username, host, profile, ...}:
{
imports = [ inputs.home-manager.nixosModules.home-manager ];
home-manager = {
useUserPackages = true;
useGlobalPkgs = false;
backupFileExtension = "backup";
extraSpecialArgs = { inherit inputs username host profile; };
users.moons = {
imports = [ ./../home ];
home = {
username = "moons";
homeDirectory = "/home/moons";
stateVersion = "25.11";
};
};
};
users.mutableUsers = true;
users.users.moons = {
isNormalUser = true;
description = "moons-14";
extraGroups = [
"adbusers"
"docker" #access to docker as non-root
"libvirtd" #Virt manager/QEMU access
"lp"
"networkmanager"
"scanner"
"wheel" #subdo access
"vboxusers" #Virtual Box
"dialout" #Serial Port Access
];
shell = pkgs.zsh;
ignoreShellProgramCheck = true;
};
nix.settings.allowed-users = [ "moons" ];
nix.settings.trusted-users = [ "root" "moons" ];
}
-13
View File
@@ -1,13 +0,0 @@
{ ... }:
{
services = {
xserver = {
enable = true;
xkb = {
layout = "jp";
variant = "";
options = "ctrl:nocaps";
};
};
};
}
-21
View File
@@ -1,21 +0,0 @@
{ lib, pkgs, config, ... }:
with lib; let
cfg = config.drivers.intel;
in
{
options.drivers.intel = {
enable = mkEnableOption "Enable Intel Graphics Drivers";
};
config = mkIf cfg.enable {
# OpenGL
hardware.graphics = {
extraPackages = with pkgs; [
intel-media-driver
vaapiIntel
vaapiVdpau
libvdpau-va-gl
];
};
};
}
-7
View File
@@ -1,7 +0,0 @@
{ ... }:
{
home.file.".face" = {
recursive = true;
source = ./../../images/avatar.jpg;
};
}
-26
View File
@@ -1,26 +0,0 @@
{ pkgs, ... }:
{
nixpkgs.config.allowUnfree = true;
home.packages = with pkgs; [
google-chrome
];
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";
};
}
-12
View File
@@ -1,12 +0,0 @@
{ ... }:
{
programs = {
btop = {
enable = true;
settings.color_theme = "dracula";
themes = {
dracula = builtins.readFile ./dracula.theme;
};
};
};
}
-89
View File
@@ -1,89 +0,0 @@
#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"
-9
View File
@@ -1,9 +0,0 @@
{...}: {
home.file.".claude/settings.json".text = builtins.toJSON {
statusLine = {
type = "command";
command = "bun x ccusage statusline --no-offline";
padding = 0;
};
};
}
-13
View File
@@ -1,13 +0,0 @@
{...}: {
imports = [
./btop
./git.nix
./fcitx5
./ssh.nix
./nixvim
./zsh.nix
./environment.nix
./zellij.nix
./claude.nix
];
}
-6
View File
@@ -1,6 +0,0 @@
{ ... }:
{
programs.vesktop = {
enable = true;
};
}
-7
View File
@@ -1,7 +0,0 @@
{
# use project directory: `echo 'use flake ~/dotfiles#next-web' > .envrc`
programs.direnv = {
enable = true;
nix-direnv.enable = true;
};
}
-70
View File
@@ -1,70 +0,0 @@
[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
-7
View File
@@ -1,7 +0,0 @@
{ ... }:
{
home.file.".config/fcitx5/config" = {
recursive = true;
source = ./config;
};
}
-30
View File
@@ -1,30 +0,0 @@
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
-13
View File
@@ -1,13 +0,0 @@
{ ... }:
{
home.file.".config/ghostty/config" = {
recursive = true;
source = ./config;
};
home.file.".config/ghostty/themes/dracula" = {
recursive = true;
source = ./dracula.theme;
};
}
-44
View File
@@ -1,44 +0,0 @@
# 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
-32
View File
@@ -1,32 +0,0 @@
{ host, ... }:
{
programs.git = {
enable = true;
ignores = [
".direnv/"
".envrc"
"!.envrc.example"
];
settings = {
user.name = "moons-14";
user.email = "moons@moons14.com";
push.default = "simple";
credential.helper = "cache --timeout=7200";
init.defaultBranch = "main";
log.decorate = "full";
log.date = "iso";
merge.conflictStyle = "diff3";
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";
};
};
};
}
-18
View File
@@ -1,18 +0,0 @@
{ pkgs, ... }:
{
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";
};
};
}
-34
View File
@@ -1,34 +0,0 @@
{ pkgs, lib, inputs, ... }:
let
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'";
dpmsOff = "${pkgs.niri}/bin/niri msg action power-off-monitors";
dpmsOn = "${pkgs.niri}/bin/niri msg action power-on-monitors";
in
{
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" ];
};
};
}
-9
View File
@@ -1,9 +0,0 @@
{ pkgs, ... }:
{
home.packages = with pkgs; [
nautilus
gvfs sushi
];
}
-147
View File
@@ -1,147 +0,0 @@
{
inputs,
pkgs,
...
}: let
defaultKeyBind = import ./defaultKeyBind.nix;
in {
imports = [inputs.niri-flake.homeModules.niri];
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;
};
spawn-at-startup = [
{command = ["noctalia-shell"];}
];
outputs."eDP-1".scale = 1;
cursor.size = 16;
# Doracura color
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"
];
};
};
};
}
-240
View File
@@ -1,240 +0,0 @@
{
# https://github.com/sodiboo/niri-flake/issues/483
# Keys consist of modifiers separated by + signs, followed by an XKB key name
# in the end. To find an XKB name for a particular key, you may use a program
# like wev.
#
# "Mod" is a special modifier equal to Super when running on a TTY, and to Alt
# when running as a winit window.
#
# Most actions that you can bind here can also be invoked programmatically with
# `niri msg action do-something`.
# Mod-Shift-/, which is usually the same as Mod-?,
# shows a list of important hotkeys.
"Mod+Shift+Slash".action.show-hotkey-overlay = {};
# You can also use a shell. Do this if you need pipes, multiple commands, etc.
# Note: the entire command goes as a single argument in the end.
# Mod+T { spawn "bash" "-c" "notify-send hello && exec alacritty"; }
# Example volume keys mappings for PipeWire & WirePlumber.
# The allow-when-locked=true property makes them work even when the session is locked.
"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 = {};
# Alternative commands that move across workspaces when reaching
# the first or last window in a column.
# Mod+J { focus-window-or-workspace-down; }
# Mod+K { focus-window-or-workspace-up; }
# Mod+Ctrl+J { move-window-down-or-to-workspace-down; }
# Mod+Ctrl+K { move-window-up-or-to-workspace-up; }
"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 = {};
# Alternatively, there are commands to move just a single window:
# Mod+Shift+Ctrl+Left { move-window-to-monitor-left; }
# ...
# And you can also move a whole workspace to another monitor:
# Mod+Shift+Ctrl+Left { move-workspace-to-monitor-left; }
# ...
"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 = {};
# Alternatively, there are commands to move just a single window:
# Mod+Ctrl+Page_Down { move-window-to-workspace-down; }
# ...
"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 = {};
# You can bind mouse wheel scroll ticks using the following syntax.
# These binds will change direction based on the natural-scroll setting.
#
# To avoid scrolling through workspaces really fast, you can use
# the cooldown-ms property. The bind will be rate-limited to this value.
# You can set a cooldown on any bind, but it's most useful for the wheel.
"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 = {};
# Usually scrolling up and down with Shift in applications results in
# horizontal scrolling; these binds replicate that.
"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 = {};
# Similarly, you can bind touchpad scroll "ticks".
# Touchpad scrolling is continuous, so for these binds it is split into
# discrete intervals.
# These binds are also affected by touchpad's natural-scroll, so these
# example binds are "inverted", since we have natural-scroll enabled for
# touchpads by default.
# Mod+TouchpadScrollDown { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.02+"; }
# Mod+TouchpadScrollUp { spawn "wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.02-"; }
# You can refer to workspaces by index. However, keep in mind that
# niri is a dynamic workspace system, so these commands are kind of
# "best effort". Trying to refer to a workspace index bigger than
# the current workspace count will instead refer to the bottommost
# (empty) workspace.
#
# For example, with 2 workspaces + 1 empty, indices 3, 4, 5 and so on
# will all refer to the 3rd workspace.
"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;
# Alternatively, there are commands to move just a single window:
# Mod+Ctrl+1 { move-window-to-workspace 1; }
# Switches focus between the current and the previous workspace.
# Mod+Tab { focus-workspace-previous; }
"Mod+Comma".action.consume-window-into-column = {};
"Mod+Period".action.expel-window-from-column = {};
# There are also commands that consume or expel a single window to the side.
# Mod+BracketLeft { consume-or-expel-window-left; }
# Mod+BracketRight { consume-or-expel-window-right; }
"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 = {};
# Finer width adjustments.
# This command can also:
# * set width in pixels: "1000"
# * adjust width in pixels: "-5" or "+5"
# * set width as a percentage of screen width: "25%"
# * adjust width as a percentage of screen width: "-10%" or "+10%"
# Pixel sizes use logical, or scaled, pixels. I.e. on an output with scale 2.0,
# set-column-width "100" will make the column occupy 200 physical screen pixels.
"Mod+Minus".action.set-column-width = "-10%";
"Mod+Equal".action.set-column-width = "+10%";
# Finer height adjustments when in column with other windows.
"Mod+Shift+Minus".action.set-window-height = "-10%";
"Mod+Shift+Equal".action.set-window-height = "+10%";
# Actions to switch layouts.
# Note: if you uncomment these, make sure you do NOT have
# a matching layout switch hotkey configured in xkb options above.
# Having both at once on the same hotkey will break the switching,
# since it will switch twice upon pressing the hotkey (once by xkb, once by niri).
# Mod+Space { switch-layout "next"; }
# Mod+Shift+Space { switch-layout "prev"; }
"Print".action.screenshot = {};
"Ctrl+Print".action.screenshot-screen = {};
"Alt+Print".action.screenshot-window = {};
# The quit action will show a confirmation dialog to avoid accidental exits.
"Mod+Shift+E".action.quit = {};
# Powers off the monitors. To> turn them back on, do any input like
# moving the mouse or pressing any other key.
"Mod+Shift+P".action.power-off-monitors = {};
}
-8
View File
@@ -1,8 +0,0 @@
{...}: {
programs.nixvim.autoCmd = [
{
event = "TextYankPost";
callback.__raw = "function() vim.highlight.on_yank() end";
}
];
}
-6
View File
@@ -1,6 +0,0 @@
{...}: {
programs.nixvim.colorschemes.catppuccin = {
enable = true;
settings.transparent_background = true;
};
}
-45
View File
@@ -1,45 +0,0 @@
{
pkgs,
inputs,
...
}: {
imports = [
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
];
};
}
-174
View File
@@ -1,174 +0,0 @@
{...}: 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を探す")
];
};
}
-13
View File
@@ -1,13 +0,0 @@
{...}: {
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" }
'';
};
}
-65
View File
@@ -1,65 +0,0 @@
{...}: {
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;
};
};
};
}
-50
View File
@@ -1,50 +0,0 @@
{...}: {
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";
};
};
}
-6
View File
@@ -1,6 +0,0 @@
{...}: {
imports = [
./ui
./editor
];
}
@@ -1,3 +0,0 @@
{...}: {
programs.nixvim.plugins.nvim-autopairs.enable = true;
}
@@ -1,47 +0,0 @@
{...}: {
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"
];
};
};
}
@@ -1,3 +0,0 @@
{...}: {
programs.nixvim.plugins.comment.enable = true;
}
@@ -1,24 +0,0 @@
{...}: {
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
'';
};
};
}
@@ -1,11 +0,0 @@
{...}: {
programs.nixvim.plugins.copilot-lua = {
enable = true;
settings = {
suggestion = {
auto_trigger = true;
keymap.enabled = false;
};
};
};
}
@@ -1,22 +0,0 @@
{...}: {
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
];
}
@@ -1,8 +0,0 @@
{ pkgs, ... }: {
programs.nixvim = {
extraPlugins = [ pkgs.vimPlugins.flash-nvim ];
extraConfigLua = ''
require("flash").setup()
'';
};
}
@@ -1,8 +0,0 @@
{ pkgs, ... }: {
programs.nixvim = {
extraPlugins = [ pkgs.vimPlugins.git-conflict-nvim ];
extraConfigLua = ''
require("git-conflict").setup()
'';
};
}
@@ -1,10 +0,0 @@
{ pkgs, ... }: {
programs.nixvim = {
extraPackages = [ pkgs.lazygit ];
plugins = {
lazygit.enable = true;
diffview.enable = true;
};
};
}
@@ -1,15 +0,0 @@
{...}: {
# git change view
programs.nixvim.plugins.gitsigns = {
enable = true;
settings = {
signs = {
add = {text = "+";};
change = {text = "~";};
delete = {text = "_";};
topdelete = {text = "‾";};
changedelete = {text = "~";};
};
};
};
}
@@ -1,8 +0,0 @@
{ pkgs, ... }: {
programs.nixvim = {
extraPlugins = [ pkgs.vimPlugins.glance-nvim ];
extraConfigLua = ''
require("glance").setup()
'';
};
}
@@ -1,11 +0,0 @@
{...}: {
programs.nixvim.plugins.lsp-signature = {
enable = true;
settings = {
hint_enable = true;
hint_prefix = " ";
floating_window = true;
bind = true;
};
};
}
@@ -1,31 +0,0 @@
{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 },
})
'';
};
}
@@ -1,9 +0,0 @@
{ pkgs, ... }: {
programs.nixvim = {
extraPackages = [ pkgs.ripgrep ];
extraPlugins = [ pkgs.vimPlugins.nvim-spectre ];
extraConfigLua = ''
require("spectre").setup()
'';
};
}
@@ -1,3 +0,0 @@
{...}: {
programs.nixvim.plugins.nvim-surround.enable = true;
}
@@ -1,8 +0,0 @@
{ pkgs, ... }: {
programs.nixvim = {
extraPlugins = [ pkgs.vimPlugins.todo-comments-nvim ];
extraConfigLua = ''
require("todo-comments").setup()
'';
};
}
@@ -1,16 +0,0 @@
{ 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()
'';
};
}
@@ -1,3 +0,0 @@
{...}: {
programs.nixvim.plugins.trouble.enable = true;
}
@@ -1,3 +0,0 @@
{ pkgs, ... }: {
programs.nixvim.extraPlugins = [ pkgs.vimPlugins.vim-wakatime ];
}
-26
View File
@@ -1,26 +0,0 @@
{...}: {
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;
};
};
};
}
@@ -1,20 +0,0 @@
{...}: {
programs.nixvim.plugins.indent-blankline = {
enable = true;
settings = {
scope = {
enabled = true;
show_start = true;
show_end = true;
};
exclude = {
filetypes = [
"help"
"neo-tree"
"toggleterm"
"lazy"
];
};
};
};
}
@@ -1,23 +0,0 @@
{...}: {
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";
};
};
};
}
@@ -1,19 +0,0 @@
{...}: {
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
];
}
@@ -1,3 +0,0 @@
{...}: {
programs.nixvim.plugins.dropbar.enable = true;
}
@@ -1,6 +0,0 @@
{...}: {
programs.nixvim.plugins.nvim-lightbulb = {
enable = true;
settings.autocmd.enabled = true;
};
}

Some files were not shown because too many files have changed in this diff Show More