diff --git a/hosts/default.nix b/hosts/default.nix new file mode 100644 index 0000000..7815d7c --- /dev/null +++ b/hosts/default.nix @@ -0,0 +1,13 @@ +{ + x1g9 = { + system = "x86_64-linux"; + user = "moons"; + path = ./x1g9; + + profiles = [ + "base" + "interface.cli-minimal" + "platform.laptop" + ]; + }; +} diff --git a/hosts/x1g9/hardware.nix b/hosts/x1g9/hardware.nix new file mode 100644 index 0000000..ffcd441 --- /dev/null +++ b/hosts/x1g9/hardware.nix @@ -0,0 +1 @@ +{ } diff --git a/hosts/x1g9/nixos.nix b/hosts/x1g9/nixos.nix new file mode 100644 index 0000000..0b31a81 --- /dev/null +++ b/hosts/x1g9/nixos.nix @@ -0,0 +1,7 @@ +{ + imports = [ + ./hardware.nix + ]; + + system.stateVersion = "26.05"; +} diff --git a/modules/applications/claude/home.nix b/modules/applications/claude/home.nix new file mode 100644 index 0000000..9aa9a1a --- /dev/null +++ b/modules/applications/claude/home.nix @@ -0,0 +1,18 @@ +{ + inputs, + pkgs, + ... +}: +{ + home.packages = [ + inputs.llm-agents.packages.${pkgs.stdenv.hostPlatform.system}.claude-code + ]; + + home.file.".claude/settings.json".text = builtins.toJSON { + statusLine = { + type = "command"; + command = "bun x ccusage statusline --no-offline"; + padding = 0; + }; + }; +} diff --git a/modules/applications/fcitx5/config b/modules/applications/fcitx5/config new file mode 100644 index 0000000..a11fae8 --- /dev/null +++ b/modules/applications/fcitx5/config @@ -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 diff --git a/modules/profiles/base/meta.nix b/modules/profiles/base/meta.nix new file mode 100644 index 0000000..1fc1238 --- /dev/null +++ b/modules/profiles/base/meta.nix @@ -0,0 +1,9 @@ +{ + description = "base system configuration"; + + includes = [ + "systems.locale" + "systems.networking" + "systems.nix" + ]; +} diff --git a/modules/profiles/interface/cli-minimal/meta.nix b/modules/profiles/interface/cli-minimal/meta.nix new file mode 100644 index 0000000..00efff4 --- /dev/null +++ b/modules/profiles/interface/cli-minimal/meta.nix @@ -0,0 +1,7 @@ +{ + description = "minimal command-line environment"; + + includes = [ + "applications.btop" + ]; +} diff --git a/modules/profiles/platform/laptop/meta.nix b/modules/profiles/platform/laptop/meta.nix new file mode 100644 index 0000000..57411c9 --- /dev/null +++ b/modules/profiles/platform/laptop/meta.nix @@ -0,0 +1,7 @@ +{ + description = "laptop platform configuration"; + + includes = [ + "systems.boot.uefi" + ]; +} diff --git a/modules/systems/boot/uefi/nixos.nix b/modules/systems/boot/uefi/nixos.nix new file mode 100644 index 0000000..8292620 --- /dev/null +++ b/modules/systems/boot/uefi/nixos.nix @@ -0,0 +1,8 @@ +{ lib, ... }: +{ + boot.loader = { + systemd-boot.enable = lib.mkDefault true; + systemd-boot.configurationLimit = lib.mkDefault 8; + efi.canTouchEfiVariables = lib.mkDefault true; + }; +} diff --git a/modules/systems/locale/nixos.nix b/modules/systems/locale/nixos.nix new file mode 100644 index 0000000..ba648bb --- /dev/null +++ b/modules/systems/locale/nixos.nix @@ -0,0 +1,20 @@ +{ + time.timeZone = "Asia/Tokyo"; + + i18n = { + defaultLocale = "ja_JP.UTF-8"; + 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"; + }; + }; + + console.keyMap = "jp106"; +} diff --git a/modules/systems/networking/nixos.nix b/modules/systems/networking/nixos.nix new file mode 100644 index 0000000..f29d881 --- /dev/null +++ b/modules/systems/networking/nixos.nix @@ -0,0 +1,3 @@ +{ + networking.networkmanager.enable = true; +} diff --git a/modules/systems/nix/common.nix b/modules/systems/nix/common.nix new file mode 100644 index 0000000..d74f5a2 --- /dev/null +++ b/modules/systems/nix/common.nix @@ -0,0 +1,6 @@ +{ + nix.settings.experimental-features = [ + "nix-command" + "flakes" + ]; +} diff --git a/modules/users/moons/home.nix b/modules/users/moons/home.nix new file mode 100644 index 0000000..cd1cb30 --- /dev/null +++ b/modules/users/moons/home.nix @@ -0,0 +1,10 @@ +{ primaryUser, ... }: +{ + home = { + username = primaryUser; + homeDirectory = "/home/${primaryUser}"; + stateVersion = "26.05"; + }; + + programs.home-manager.enable = true; +} diff --git a/modules/users/moons/nixos.nix b/modules/users/moons/nixos.nix new file mode 100644 index 0000000..2f49e94 --- /dev/null +++ b/modules/users/moons/nixos.nix @@ -0,0 +1,19 @@ +{ primaryUser, ... }: +{ + users.users.${primaryUser} = { + isNormalUser = true; + description = "moons"; + extraGroups = [ + "networkmanager" + "wheel" + ]; + }; + + nix.settings = { + allowed-users = [ primaryUser ]; + trusted-users = [ + "root" + primaryUser + ]; + }; +}