diff --git a/README.md b/README.md index 243febb..c39ae72 100644 --- a/README.md +++ b/README.md @@ -3,5 +3,5 @@ ``` sudo nixos-rebuild switch --flake .# -nix run .#home-manager -- switch --flake .# +nix run .#home-manager -- switch --flake .#@ ``` diff --git a/flake.nix b/flake.nix index fc42b0b..f8ad23a 100644 --- a/flake.nix +++ b/flake.nix @@ -34,6 +34,9 @@ apps.home-manager = { type = "app"; program = "${hm}/bin/home-manager"; + meta = { + description = "Home Manager for Nix"; + }; }; } )); diff --git a/hosts/arcadia/default.nix b/hosts/arcadia/default.nix new file mode 100644 index 0000000..f97c99b --- /dev/null +++ b/hosts/arcadia/default.nix @@ -0,0 +1,16 @@ +inputs: +let + mkHost = import ../mkHost.nix inputs; +in +mkHost { + system = "x86_64-linux"; + hostname = "Arcadia"; + users = [ + { + username = "hare"; + home = ./hare/home-manager.nix; + nixos = ./hare/nixos.nix; + } + ]; + systemModules = [ ./nixos.nix ]; +} diff --git a/hosts/arcadia/display.nix b/hosts/arcadia/display.nix new file mode 100644 index 0000000..3b8ae77 --- /dev/null +++ b/hosts/arcadia/display.nix @@ -0,0 +1,11 @@ +{ + wayland.windowManager.hyprland = { + settings = { + monitor = [ + "DP-1, 5120x2880@60, 0x0, 2" + "DP-2, 2560x1440@144, 2560x0, 1, transform, 0" + "DP-3, 1920x1080@144, -1080x-240, 1, transform, 1" + ]; + }; + }; +} diff --git a/hosts/arcadia/hardware-configuration.nix b/hosts/arcadia/hardware-configuration.nix new file mode 100644 index 0000000..43af020 --- /dev/null +++ b/hosts/arcadia/hardware-configuration.nix @@ -0,0 +1,58 @@ +{ + config, + lib, + pkgs, + modulesPath, + ... +}: +{ + imports = [ + (modulesPath + "/installer/scan/not-detected.nix") + ]; + + boot.initrd.availableKernelModules = [ + "nvme" + "xhci_pci" + "ahci" + "usb_storage" + "usbhid" + "sd_mod" + ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-amd" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = { + device = "/dev/disk/by-uuid/f3934858-078f-463a-9dd3-d6ba220ced6d"; + fsType = "ext4"; + }; + + fileSystems."/boot" = { + device = "/dev/disk/by-uuid/FFAC-0945"; + fsType = "vfat"; + options = [ + "fmask=0077" + "dmask=0077" + ]; + }; + + swapDevices = [ ]; + + networking.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; + + hardware.graphics = { + enable = true; + extraPackages = with pkgs; [ + mesa + libva + libvdpau-va-gl + vulkan-loader + vulkan-validation-layers + mesa.opencl # Enables Rusticl (OpenCL) support + rocmPackages.clr.icd + ]; + }; +} diff --git a/hosts/arcadia/hare/home-manager.nix b/hosts/arcadia/hare/home-manager.nix new file mode 100644 index 0000000..22d5224 --- /dev/null +++ b/hosts/arcadia/hare/home-manager.nix @@ -0,0 +1,92 @@ +{ + pkgs, + inputs, + lib, + ... +}: +{ + home.stateVersion = "25.05"; + imports = [ + inputs.nix-index-database.homeModules.nix-index + ../display.nix + ../../../home-manager/tofi.nix + ../../../home-manager/hyprland + ../../../home-manager/fnott.nix + ../../../home-manager/wezterm + ../../../home-manager/fish + ../../../home-manager/vscode.nix + ../../../home-manager/direnv.nix + ../../../home-manager/firefox.nix + ../../../home-manager/obs-studio.nix + ../../../home-manager/zeditor.nix + ../../../home-manager/blender.nix + ../../../home-manager/voicevox.nix + ]; + hare.hyprland = { + input.sensitivity = -1.0; + wallpaperCommand = "swww img /usr/share/wallpaper/arknights-02.jpg"; + }; + + programs.nix-index-database.comma.enable = true; + + home.packages = with pkgs; [ + vivaldi + google-chrome + discord + helvum + plemoljp + plemoljp-nf + prismlauncher + scrcpy + tetrio-desktop + kicad + gimp + inkscape + obsidian + kdePackages.filelight + inputs.zen-browser.packages."${stdenv.hostPlatform.system}".default + (deno.overrideAttrs (oldAttrs: { + doCheck = false; + })) + nodejs_24 + godot + unityhub + nixd + rust-analyzer + aseprite + bambu-studio + orca-slicer + davinci-resolve + ]; + services.easyeffects = { + enable = true; + }; + + programs.git = { + enable = true; + settings.user.name = "Hare"; + settings.user.email = "kei.hiracchi.0928@gmail.com"; + }; + + fonts = { + fontconfig = { + defaultFonts = { + serif = [ "Noto Serif" ]; + sansSerif = [ "Noto Sans" ]; + monospace = [ "PlemolJP NF Console" ]; + }; + }; + }; + + xdg.mimeApps = { + enable = true; + + defaultApplications = { + "text/html" = "vivaldi-stable.desktop"; + "x-scheme-handler/http" = "vivaldi-stable.desktop"; + "x-scheme-handler/https" = "vivaldi-stable.desktop"; + "x-scheme-handler/about" = "vivaldi-stable.desktop"; + "x-scheme-handler/unknown" = "vivaldi-stable.desktop"; + }; + }; +} diff --git a/hosts/arcadia/hare/nixos.nix b/hosts/arcadia/hare/nixos.nix new file mode 100644 index 0000000..6cf7c57 --- /dev/null +++ b/hosts/arcadia/hare/nixos.nix @@ -0,0 +1,14 @@ +{ pkgs, ... }: +{ + extraGroups = [ + "adbusers" + "docker" + ]; + shell = pkgs.fish; + openssh.authorizedKeys.keys = [ + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIfql/a6ZtxOPgBhFzOfgTO6HGcy0Se9mgMLmOa40vMF" + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIW2Yrqwi4YjIrdI8mygX5pTHDPmrUgbmpZ4WxoTqORi keihi@Vostro-LapTop" + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICi8Cciepfs1ikPdfyHjc9qJX5z2QLFF9jBszsyEvCMA nix-on-droid@localhost" + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAID8Eo/QDJtXqluvjNx5ZpeIt0c/yf/Mgr7dKhNWAICZX hare@x1carbon" + ]; +} diff --git a/hosts/arcadia/nixos.nix b/hosts/arcadia/nixos.nix new file mode 100644 index 0000000..fa44d0d --- /dev/null +++ b/hosts/arcadia/nixos.nix @@ -0,0 +1,114 @@ +{ pkgs, ... }: +let + config.boot.kernelPackages = pkgs.linuxPackages_latest; +in +{ + system.stateVersion = "25.11"; + + cornflake.greeter.monitors = [ + "DP-1, 5120x2880@60, 0x0, 2" + "DP-2, disable" + "DP-3, disable" + ]; + + imports = [ + ./hardware-configuration.nix + + ../../system/core + ../../programs/ssh.nix + ../../programs/utility.nix + ../../programs/shell.nix + ../../programs/docker.nix + ../../programs/v4l2.nix + ../../programs/desktop/hyprland.nix + ../../programs/fcitx.nix + ../../programs/steam.nix + ]; + environment.systemPackages = with pkgs; [ + cargo + rustc + rustfmt + openssl + vulkan-tools + android-tools + android-file-transfer + + rocmPackages.rocm-runtime + rocmPackages.rocminfo + rocmPackages.clr + rocmPackages.rocm-smi + + qemu + (pkgs.writeShellScriptBin "qemu-system-x86_64-uefi" '' + qemu-system-x86_64 \ + -bios ${pkgs.OVMF.fd}/FV/OVMF.fd \ + "$@" + '') + + wineWow64Packages.waylandFull + winetricks + + bluez + bluez-tools + bluetuith + obexftp + fzf + ghq + ]; + environment.sessionVariables.NIXOS_OZONE_WL = "1"; + + programs.nix-ld.enable = true; + + services.openssh.enable = true; + + services.udisks2.enable = true; + + networking.firewall.allowedTCPPorts = [ + 8080 + 22 + 5173 + 8000 + 9001 + 2222 # crtb server + 11434 + ]; + networking.firewall.allowedUDPPorts = [ ]; + + services.udev.extraRules = '' + ATTRS{idVendor}=="3151", ATTRS{idProduct}=="502d", MODE="0777" + ATTRS{idVendor}=="414", ATTRS{idProduct}=="211a", MODE="0777" + KERNEL=="hidraw*", SUBSYSTEM=="hidraw", MODE="0660", GROUP="input" + ''; + + hardware.bluetooth = { + enable = true; + package = pkgs.bluez; + powerOnBoot = true; + settings = { + General = { + ControllerMode = "dual"; + Experimental = true; + KernelExperimental = true; + FastConnectable = true; + # セキュリティレベルを調整 + Class = "0x000100"; + # ペアリングタイムアウトを延長 + PairableTimeout = 0; + }; + Policy = { + AutoEnable = true; + }; + }; + }; + + boot.kernelPackages = config.boot.kernelPackages; + boot.extraModulePackages = [ config.boot.kernelPackages.v4l2loopback ]; + boot.kernelModules = [ + "v4l2loopback" + ]; + + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + + boot.initrd.kernelModules = [ "amdgpu" ]; +} diff --git a/hosts/default.nix b/hosts/default.nix index 362e6e4..f264c5c 100644 --- a/hosts/default.nix +++ b/hosts/default.nix @@ -1,8 +1,12 @@ -inputs: -rec { +inputs: rec { hosts = { aqua = import ./aqua inputs; + arcadia = import ./arcadia inputs; + x1carbon = import ./x1carbon inputs; + fungus = import ./fungus inputs; }; nixos = builtins.mapAttrs (_: host: host.nixos) hosts; - home-manager = builtins.foldl' (a: b: a // b) { } (map (h: h.home-manager) (builtins.attrValues hosts)); + home-manager = builtins.foldl' (a: b: a // b) { } ( + map (h: h.home-manager) (builtins.attrValues hosts) + ); } diff --git a/hosts/fungus/default.nix b/hosts/fungus/default.nix new file mode 100644 index 0000000..e5990a5 --- /dev/null +++ b/hosts/fungus/default.nix @@ -0,0 +1,16 @@ +inputs: +let + mkHost = import ../mkHost.nix inputs; +in +mkHost { + system = "x86_64-linux"; + hostname = "Fungus"; + users = [ + { + username = "hare"; + home = ./hare/home-manager.nix; + nixos = ./hare/nixos.nix; + } + ]; + systemModules = [ ./nixos.nix ]; +} diff --git a/hosts/fungus/hardware-configuration.nix b/hosts/fungus/hardware-configuration.nix new file mode 100644 index 0000000..7bc80b1 --- /dev/null +++ b/hosts/fungus/hardware-configuration.nix @@ -0,0 +1,44 @@ +# 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" + "ahci" + "usbhid" + "usb_storage" + "sd_mod" + "sr_mod" + ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-amd" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = { + device = "/dev/disk/by-uuid/e4eb343c-d88f-4d63-99aa-c2c41d8580db"; + fsType = "ext4"; + }; + + 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..useDHCP`. + networking.useDHCP = lib.mkDefault true; + # networking.interfaces.enp3s0.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/hosts/fungus/hare/home-manager.nix b/hosts/fungus/hare/home-manager.nix new file mode 100644 index 0000000..ed6d331 --- /dev/null +++ b/hosts/fungus/hare/home-manager.nix @@ -0,0 +1,25 @@ +{ pkgs, ... }: +{ + home.stateVersion = "25.05"; + imports = [ + ../../../home-manager/direnv.nix + ../../../home-manager/wezterm + ../../../home-manager/fish + ]; + home.packages = with pkgs; [ ]; + programs.git = { + enable = true; + settings.user.name = "Hare"; + settings.user.email = "kei.hiracchi.0928@gmail.com"; + }; + + fonts = { + fontconfig = { + defaultFonts = { + serif = [ "Noto Serif" ]; + sansSerif = [ "Noto Sans" ]; + monospace = [ "PlemolJP NF Console" ]; + }; + }; + }; +} diff --git a/hosts/fungus/hare/nixos.nix b/hosts/fungus/hare/nixos.nix new file mode 100644 index 0000000..39bce37 --- /dev/null +++ b/hosts/fungus/hare/nixos.nix @@ -0,0 +1,11 @@ +{ pkgs, ... }: +{ + extraGroups = [ + "docker" + ]; + shell = pkgs.fish; + openssh.authorizedKeys.keys = [ + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBd45JtvgM44KUqhp3Xl2Wtt6rmxU13c/84YLyGKigkG hare@nixos" + "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDZTkjrLwH+jsSHF/LI23+WPQ9rff9vWBH1VaxSjNADIIKDY7vGkWWRUCImt8QTzied3mNFv+EyZ8igiJdm5tEO1KkrWUqTZk5Ut79LTQftB23SDNC8XzuHKxwaKHdwZIP065biRFUqNYHu8h0EHKbQ3Djj6cZYBcEL1JOc0wtm4jmuW6Fp3rCn/ZCo0g3Kg7SfY4cpf4fJTB97bIjPJzG7JSSOuTkJcDQzFrySUPOpgrt5+iSqKJ/tQtfxLHcNq8AMrh1fH6sUzaJLmMs/7V9LTbsbILTY4YQj5FF07dBqEJBwvZ9sRTPPzl/HSdVmp9OlCZnryPbjTKJmK1Nxx+tOZfh4IY3mWWnEegvDNCYwKJu+d+zeqDaSUMx0kpAnK9PLSI0By8FtboRVvSFSce6FouiUhEzJyKXAr3E1JCgQXdLcTTb66rbBcauuqhuieKDGPpz45EbFi83uHNeDodi5b75h5r1Nn+oJmzagwUAoyw4gCCbiYwTAe3GA79LK7kE= hare@hr-r620" + ]; +} diff --git a/hosts/fungus/nixos.nix b/hosts/fungus/nixos.nix new file mode 100644 index 0000000..460eb96 --- /dev/null +++ b/hosts/fungus/nixos.nix @@ -0,0 +1,31 @@ +{ pkgs, ... }: +{ + system.stateVersion = "25.05"; + + imports = [ + ./hardware-configuration.nix + + ../../system/core + ../../programs/ssh.nix + ../../programs/utility.nix + ../../programs/shell.nix + ../../programs/docker.nix + ]; + environment.systemPackages = with pkgs; [ + ]; + + boot.loader.grub.enable = true; + boot.loader.grub.device = "/dev/sda"; + boot.loader.grub.useOSProber = true; + boot.loader.efi.canTouchEfiVariables = true; + + programs.nix-ld.enable = true; + + services.openssh.enable = true; + + networking.firewall.allowedTCPPorts = [ + 22 + 25565 + ]; + networking.firewall.allowedUDPPorts = [ ]; +} diff --git a/hosts/mkHost.nix b/hosts/mkHost.nix index 9c9047a..d29ef6e 100644 --- a/hosts/mkHost.nix +++ b/hosts/mkHost.nix @@ -15,22 +15,30 @@ in nixos = inputs.nixpkgs.lib.nixosSystem { modules = systemModules - ++ (map (u: { pkgs, ... }: { - users.users.${u.username} = import u.userNixos { inherit pkgs; }; - }) (builtins.filter (u: u ? userNixos) users)) + ++ (map ( + u: + { pkgs, ... }: + { + users.users.${u.username} = import (if u ? userNixos then u.userNixos else u.nixos) { + inherit pkgs; + }; + } + ) (builtins.filter (u: u ? userNixos || u ? nixos) users)) ++ [ { - users.users = builtins.listToAttrs (map (u: { - name = u.username; - value = { - isNormalUser = true; - description = ""; - extraGroups = [ - "networkmanager" - "wheel" - ]; - }; - }) users); + users.users = builtins.listToAttrs ( + map (u: { + name = u.username; + value = { + isNormalUser = true; + description = ""; + extraGroups = [ + "networkmanager" + "wheel" + ]; + }; + }) users + ); } ]; inherit system; @@ -39,24 +47,27 @@ in users = map (u: u.username) users; }; }; - home-manager = builtins.listToAttrs (map (u: { - name = "${u.username}@${hostname}"; - value = inputs.home-manager.lib.homeManagerConfiguration { - inherit pkgs; - extraSpecialArgs = { - inherit inputs hostname; - username = u.username; + home-manager = builtins.listToAttrs ( + map (u: { + name = "${u.username}@${hostname}"; + value = inputs.home-manager.lib.homeManagerConfiguration { + inherit pkgs; + extraSpecialArgs = { + inherit inputs hostname; + username = u.username; + }; + modules = [ + { + home = { + username = u.username; + homeDirectory = "/home/${u.username}"; + }; + programs.home-manager.enable = true; + } + (import ../system/home-manager) + ] + ++ (if u ? homeModule then u.homeModule else [ u.home ]); }; - modules = [ - { - home = { - username = u.username; - homeDirectory = "/home/${u.username}"; - }; - programs.home-manager.enable = true; - } - (import ../system/home-manager) - ] ++ u.homeModule; - }; - }) users); + }) users + ); } diff --git a/hosts/x1carbon/default.nix b/hosts/x1carbon/default.nix new file mode 100644 index 0000000..d3a2bc0 --- /dev/null +++ b/hosts/x1carbon/default.nix @@ -0,0 +1,16 @@ +inputs: +let + mkHost = import ../mkHost.nix inputs; +in +mkHost { + system = "x86_64-linux"; + hostname = "x1carbon"; + users = [ + { + username = "hare"; + home = ./hare/home-manager.nix; + nixos = ./hare/nixos.nix; + } + ]; + systemModules = [ ./nixos.nix ]; +} diff --git a/hosts/x1carbon/hardware-configuration.nix b/hosts/x1carbon/hardware-configuration.nix new file mode 100644 index 0000000..50fa13e --- /dev/null +++ b/hosts/x1carbon/hardware-configuration.nix @@ -0,0 +1,31 @@ +# 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" "ehci_pci" "ahci" "usb_storage" "sd_mod" "sdhci_pci" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/92c8bab5-07b9-4394-888d-6cb481972018"; + fsType = "ext4"; + }; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/1711-8E2B"; + fsType = "vfat"; + options = [ "fmask=0077" "dmask=0077" ]; + }; + + swapDevices = [ ]; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/hosts/x1carbon/hare/home-manager.nix b/hosts/x1carbon/hare/home-manager.nix new file mode 100644 index 0000000..9df1921 --- /dev/null +++ b/hosts/x1carbon/hare/home-manager.nix @@ -0,0 +1,68 @@ +{ + pkgs, + inputs, + lib, + ... +}: +{ + home.stateVersion = "25.05"; + imports = [ + ../../../home-manager/hyprland + ../../../home-manager/tofi.nix + ../../../home-manager/fnott.nix + ../../../home-manager/direnv.nix + ../../../home-manager/obs-studio.nix + ../../../home-manager/wezterm + ../../../home-manager/fish + ]; + hare.hyprland = { + style = import ../../../home-manager/hyprland/styles/thin.nix { inherit lib; }; + input.sensitivity = -0.6; + wallpaperCommand = "swww img /usr/share/wallpaper/"; + }; + home.packages = with pkgs; [ + vivaldi + discord + helvum + plemoljp + plemoljp-nf + prismlauncher + scrcpy + gimp + zed-editor + deno + nodejs_latest + # aseprite + ]; + services.easyeffects = { + enable = true; + }; + + programs.git = { + enable = true; + settings.user.name = "Hare"; + settings.user.email = "kei.hiracchi.0928@gmail.com"; + }; + + fonts = { + fontconfig = { + defaultFonts = { + serif = [ "Noto Serif" ]; + sansSerif = [ "Noto Sans" ]; + monospace = [ "PlemolJP NF Console" ]; + }; + }; + }; + + xdg.mimeApps = { + enable = true; + + defaultApplications = { + "text/html" = "vivaldi-stable.desktop"; + "x-scheme-handler/http" = "vivaldi-stable.desktop"; + "x-scheme-handler/https" = "vivaldi-stable.desktop"; + "x-scheme-handler/about" = "vivaldi-stable.desktop"; + "x-scheme-handler/unknown" = "vivaldi-stable.desktop"; + }; + }; +} diff --git a/hosts/x1carbon/hare/nixos.nix b/hosts/x1carbon/hare/nixos.nix new file mode 100644 index 0000000..ee983de --- /dev/null +++ b/hosts/x1carbon/hare/nixos.nix @@ -0,0 +1,11 @@ +{ pkgs, ... }: +{ + extraGroups = [ + "docker" + ]; + shell = pkgs.fish; + openssh.authorizedKeys.keys = [ + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIfql/a6ZtxOPgBhFzOfgTO6HGcy0Se9mgMLmOa40vMF" + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIW2Yrqwi4YjIrdI8mygX5pTHDPmrUgbmpZ4WxoTqORi keihi@Vostro-LapTop" + ]; +} diff --git a/hosts/x1carbon/nixos.nix b/hosts/x1carbon/nixos.nix new file mode 100644 index 0000000..d052e55 --- /dev/null +++ b/hosts/x1carbon/nixos.nix @@ -0,0 +1,88 @@ +{ pkgs, ... }: +let + config.boot.kernelPackages = pkgs.linuxPackages_latest; +in +{ + system.stateVersion = "25.11"; + + imports = [ + ./hardware-configuration.nix + + ../../system/core + ../../programs/ssh.nix + ../../programs/utility.nix + ../../programs/shell.nix + ../../programs/docker.nix + ../../programs/v4l2.nix + ../../programs/desktop/hyprland.nix + ../../programs/fcitx.nix + ../../programs/steam.nix + ]; + environment.systemPackages = with pkgs; [ + openssl + + bluetuith + + brightnessctl + + fzf + ghq + + android-tools + ]; + environment.sessionVariables.NIXOS_OZONE_WL = "1"; + + programs.nix-ld.enable = true; + programs.light.enable = true; + + services.openssh.enable = true; + + services.udisks2.enable = true; + + networking.firewall.allowedTCPPorts = [ + 22 + ]; + networking.firewall.allowedUDPPorts = [ ]; + + services.openvpn.servers = { + homeVPN = { + config = ''config /root/nixos/openvpn/homeVPN.conf ''; + }; + }; + + services.udev.extraRules = '' + ATTRS{idVendor}=="3151", ATTRS{idProduct}=="502d", MODE="0777" + ATTRS{idVendor}=="414", ATTRS{idProduct}=="211a", MODE="0777" + KERNEL=="hidraw*", SUBSYSTEM=="hidraw", MODE="0660", GROUP="input" + ''; + + hardware.bluetooth = { + enable = true; + package = pkgs.bluez; + powerOnBoot = true; + settings = { + General = { + ControllerMode = "dual"; + Experimental = true; + KernelExperimental = true; + FastConnectable = true; + # セキュリティレベルを調整 + Class = "0x000100"; + # ペアリングタイムアウトを延長 + PairableTimeout = 0; + }; + Policy = { + AutoEnable = true; + }; + }; + }; + + boot.kernelPackages = config.boot.kernelPackages; + boot.extraModulePackages = [ config.boot.kernelPackages.v4l2loopback ]; + boot.kernelModules = [ + "v4l2loopback" + ]; + + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; +}