From ff84a4daf8ff915b26101fd6376f2ecafb6a5d8d Mon Sep 17 00:00:00 2001 From: snurm Date: Wed, 29 Apr 2026 22:44:55 +0200 Subject: [PATCH] initial commit --- configuration.nix | 163 ++++++++++ flake.lock | 589 +++++++++++++++++++++++++++++++++++++ flake.nix | 45 +++ hardware-configuration.nix | 33 +++ home.nix | 231 +++++++++++++++ modules/quickshell.nix | 10 + 6 files changed, 1071 insertions(+) create mode 100644 configuration.nix create mode 100644 flake.lock create mode 100644 flake.nix create mode 100644 hardware-configuration.nix create mode 100644 home.nix create mode 100644 modules/quickshell.nix diff --git a/configuration.nix b/configuration.nix new file mode 100644 index 0000000..cc00d45 --- /dev/null +++ b/configuration.nix @@ -0,0 +1,163 @@ +# 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’). + +{ config, pkgs, ... }: + +{ + imports = + [ # Include the results of the hardware scan. + ./hardware-configuration.nix + ]; + + # flakes + nix.settings.experimental-features = "nix-command flakes"; + +# Bootloader. + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + + networking.hostName = "nixos"; # Define your hostname. + +# Configure network proxy if necessary +# networking.proxy.default = "http://user:password@proxy:port/"; +# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain"; + +# Enable networking + networking.networkmanager.enable = true; + +# Set your time zone. + time.timeZone = "Europe/Berlin"; + + # autologin + services.getty.autologinUser = "snurm"; + +# Select internationalisation properties. + i18n.defaultLocale = "en_US.UTF-8"; + i18n.extraLocales = [ "ja_JP.UTF-8/UTF-8" ]; + + i18n.extraLocaleSettings = { + LC_ADDRESS = "de_DE.UTF-8"; + LC_IDENTIFICATION = "de_DE.UTF-8"; + LC_MEASUREMENT = "de_DE.UTF-8"; + LC_MONETARY = "de_DE.UTF-8"; + LC_NAME = "de_DE.UTF-8"; + LC_NUMERIC = "de_DE.UTF-8"; + LC_PAPER = "de_DE.UTF-8"; + LC_TELEPHONE = "de_DE.UTF-8"; + LC_TIME = "de_DE.UTF-8"; + }; + + fonts.packages = with pkgs; [ + noto-fonts-cjk-sans + noto-fonts-color-emoji + nerd-fonts.fira-code + nerd-fonts.jetbrains-mono + font-awesome + ]; + fonts.enableDefaultPackages = true; + +# Configure keymap in X11 + services.xserver.xkb = { + layout = "de"; + variant = ""; + }; + +# Configure console keymap + console.keyMap = "de"; + +# Define a user account. Don't forget to set a password with ‘passwd’. + users.users.snurm = { + isNormalUser = true; + description = "snurm"; + extraGroups = [ "networkmanager" "wheel" ]; + packages = with pkgs; []; + }; + users.defaultUserShell = pkgs.zsh; + +# Allow unfree packages + nixpkgs.config.allowUnfree = true; +# List packages installed in system profile. To search, run: +# $ nix search wget + environment.systemPackages = with pkgs; [ +# vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default. +# wget + spotify + jq + wl-clipboard + ]; + security.rtkit.enable = true; + services.pipewire = { + enable = true; + alsa.enable = true; + alsa.support32Bit = true; + pulse.enable = true; + wireplumber.enable = true; + }; + + programs.hyprland.enable = true; + programs.uwsm = { + enable = true; + }; + programs.zsh = { + enable = true; + }; + + programs.neovim = { + enable = true; + viAlias = true; + vimAlias = true; + defaultEditor = true; + configure = { + customLuaRC = '' + -- options + vim.o.shiftwidth = 4 + vim.o.tabstop = 4 + vim.o.scrolloff = 16 + vim.o.relativenumber = true + vim.o.number = true + vim.opt.clipboard = "unnamedplus" + + -- keymap + local key_opts = { silent = true, noremap = true, } + vim.keymap.set({'n','v','i'}, 'fj', '', key_opts) + ''; + }; + withRuby = false; + withPython3 = false; + }; + + programs.steam = { + enable = true; + extraCompatPackages = with pkgs; [ + proton-ge-bin + ]; + }; +# Some programs need SUID wrappers, can be configured further or are +# started in user sessions. +# programs.mtr.enable = true; +# programs.gnupg.agent = { +# enable = true; +# enableSSHSupport = true; +# }; + +# List services that you want to enable: + +# Enable the OpenSSH daemon. +# services.openssh.enable = true; + +# Open ports in the firewall. +# networking.firewall.allowedTCPPorts = [ ... ]; +# networking.firewall.allowedUDPPorts = [ ... ]; +# Or disable the firewall altogether. +# networking.firewall.enable = false; + +# This value determines the NixOS release from which the default +# settings for stateful data, like file locations and database versions +# on your system were taken. It‘s perfectly fine and recommended to leave +# this value at the release version of the first install of this system. +# Before changing this value read the documentation for this option +# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). + system.stateVersion = "25.11"; # Did you read the comment? + +} diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..046dff4 --- /dev/null +++ b/flake.lock @@ -0,0 +1,589 @@ +{ + "nodes": { + "aquamarine": { + "inputs": { + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "hyprwayland-scanner": [ + "hyprland", + "hyprwayland-scanner" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1776876344, + "narHash": "sha256-Ubqb/agkuMJK+k19gjQgHux/eOYRc1sRGoOZOho8+VY=", + "owner": "hyprwm", + "repo": "aquamarine", + "rev": "648a13d0ee1e03a843b3e145b8ece15393058701", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "aquamarine", + "type": "github" + } + }, + "catppuccin": { + "inputs": { + "nixpkgs": "nixpkgs" + }, + "locked": { + "lastModified": 1777024856, + "narHash": "sha256-OQ+yIcRMXo4UaHyX+W5DCgBvJ5dZo/3kFGWPJiuR6x8=", + "owner": "catppuccin", + "repo": "nix", + "rev": "f41cc1cf13647e482b7317396f749840ef715e16", + "type": "github" + }, + "original": { + "owner": "catppuccin", + "repo": "nix", + "type": "github" + } + }, + "flake-compat": { + "flake": false, + "locked": { + "lastModified": 1767039857, + "narHash": "sha256-vNpUSpF5Nuw8xvDLj2KCwwksIbjua2LZCqhV1LNRDns=", + "owner": "NixOS", + "repo": "flake-compat", + "rev": "5edf11c44bc78a0d334f6334cdaf7d60d732daab", + "type": "github" + }, + "original": { + "owner": "NixOS", + "repo": "flake-compat", + "type": "github" + } + }, + "gitignore": { + "inputs": { + "nixpkgs": [ + "hyprland", + "pre-commit-hooks", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1709087332, + "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "home-manager": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1776964438, + "narHash": "sha256-AF0cby9Xuijr5qaFpYKbm1mExV956Hk233bel6QxpFw=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "e09259dd2e147d35ef889784b51e89b0a10ffe15", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, + "hyprcursor": { + "inputs": { + "hyprlang": [ + "hyprland", + "hyprlang" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1776511930, + "narHash": "sha256-fCpwFiTW0rT7oKJqr3cqHMnkwypSwQKpbtUEtxdkgrM=", + "owner": "hyprwm", + "repo": "hyprcursor", + "rev": "39435900785d0c560c6ae8777d29f28617d031ef", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprcursor", + "type": "github" + } + }, + "hyprgraphics": { + "inputs": { + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1776426399, + "narHash": "sha256-RUESLKNikIeEq9ymGJ6nmcDXiSFQpUW1IhJ245nL3xM=", + "owner": "hyprwm", + "repo": "hyprgraphics", + "rev": "68d064434787cf1ed4a2fe257c03c5f52f33cf84", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprgraphics", + "type": "github" + } + }, + "hyprland": { + "inputs": { + "aquamarine": "aquamarine", + "hyprcursor": "hyprcursor", + "hyprgraphics": "hyprgraphics", + "hyprland-guiutils": "hyprland-guiutils", + "hyprland-protocols": "hyprland-protocols", + "hyprlang": "hyprlang", + "hyprutils": "hyprutils", + "hyprwayland-scanner": "hyprwayland-scanner", + "hyprwire": "hyprwire", + "nixpkgs": "nixpkgs_2", + "pre-commit-hooks": "pre-commit-hooks", + "systems": "systems", + "xdph": "xdph" + }, + "locked": { + "lastModified": 1777466683, + "narHash": "sha256-DJHTGp1orBssX5YBzJYcx+FDwUa7hjh4uknslKLnBQE=", + "owner": "hyprwm", + "repo": "Hyprland", + "rev": "7179a38c5feea9ba5e2d38373b5e34041c0d9f25", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "Hyprland", + "type": "github" + } + }, + "hyprland-guiutils": { + "inputs": { + "aquamarine": [ + "hyprland", + "aquamarine" + ], + "hyprgraphics": [ + "hyprland", + "hyprgraphics" + ], + "hyprlang": [ + "hyprland", + "hyprlang" + ], + "hyprtoolkit": "hyprtoolkit", + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "hyprwayland-scanner": [ + "hyprland", + "hyprwayland-scanner" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1776426575, + "narHash": "sha256-KI6nIfVihn/DPaeB5Et46Xg3dkNHrrEtUd5LBBVomB0=", + "owner": "hyprwm", + "repo": "hyprland-guiutils", + "rev": "a968d211048e3ed538e47b84cb3649299578f19d", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprland-guiutils", + "type": "github" + } + }, + "hyprland-protocols": { + "inputs": { + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1772460177, + "narHash": "sha256-/6G/MsPvtn7bc4Y32pserBT/Z4SUUdBd4XYJpOEKVR4=", + "owner": "hyprwm", + "repo": "hyprland-protocols", + "rev": "1cb6db5fd6bb8aee419f4457402fa18293ace917", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprland-protocols", + "type": "github" + } + }, + "hyprlang": { + "inputs": { + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1776426736, + "narHash": "sha256-rl7i4aY+9p8LysJp7o8uRWahCkpFznCgGHXszlTw7b0=", + "owner": "hyprwm", + "repo": "hyprlang", + "rev": "7833ff33b2e82d3406337b5dcf0d1cec595d83e9", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprlang", + "type": "github" + } + }, + "hyprtoolkit": { + "inputs": { + "aquamarine": [ + "hyprland", + "hyprland-guiutils", + "aquamarine" + ], + "hyprgraphics": [ + "hyprland", + "hyprland-guiutils", + "hyprgraphics" + ], + "hyprlang": [ + "hyprland", + "hyprland-guiutils", + "hyprlang" + ], + "hyprutils": [ + "hyprland", + "hyprland-guiutils", + "hyprutils" + ], + "hyprwayland-scanner": [ + "hyprland", + "hyprland-guiutils", + "hyprwayland-scanner" + ], + "nixpkgs": [ + "hyprland", + "hyprland-guiutils", + "nixpkgs" + ], + "systems": [ + "hyprland", + "hyprland-guiutils", + "systems" + ] + }, + "locked": { + "lastModified": 1772462885, + "narHash": "sha256-5pHXrQK9zasMnIo6yME6EOXmWGFMSnCITcfKshhKJ9I=", + "owner": "hyprwm", + "repo": "hyprtoolkit", + "rev": "9af245a69fa6b286b88ddfc340afd288e00a6998", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprtoolkit", + "type": "github" + } + }, + "hyprutils": { + "inputs": { + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1777148223, + "narHash": "sha256-PTf7kRFFzCW6rIYxLH2fWfVJmj86FSYe3k6L8B+IM9o=", + "owner": "hyprwm", + "repo": "hyprutils", + "rev": "fa3992be2dfebe4ab06d753c6ca59bea298e798f", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprutils", + "type": "github" + } + }, + "hyprwayland-scanner": { + "inputs": { + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1777148232, + "narHash": "sha256-Uv0WZLhu89SafuSOmYDA7akrPt4wBRmsa1ucasO5aXg=", + "owner": "hyprwm", + "repo": "hyprwayland-scanner", + "rev": "fec9cf1abcc1011e46f0a0986f46bf93c6bf8b92", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprwayland-scanner", + "type": "github" + } + }, + "hyprwire": { + "inputs": { + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1776728575, + "narHash": "sha256-z9eGphrArEBpl1O/GCH0wlY6z4K9vA6yWh2gAS6qytU=", + "owner": "hyprwm", + "repo": "hyprwire", + "rev": "f3a80888783702a39691b684d099e16b83ed4702", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "hyprwire", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1776548001, + "narHash": "sha256-ZSK0NL4a1BwVbbTBoSnWgbJy9HeZFXLYQizjb2DPF24=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b12141ef619e0a9c1c84dc8c684040326f27cdcc", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_2": { + "locked": { + "lastModified": 1776877367, + "narHash": "sha256-EHq1/OX139R1RvBzOJ0aMRT3xnWyqtHBRUBuO1gFzjI=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "0726a0ecb6d4e08f6adced58726b95db924cef57", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_3": { + "locked": { + "lastModified": 1776548001, + "narHash": "sha256-ZSK0NL4a1BwVbbTBoSnWgbJy9HeZFXLYQizjb2DPF24=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "b12141ef619e0a9c1c84dc8c684040326f27cdcc", + "type": "github" + }, + "original": { + "id": "nixpkgs", + "ref": "nixos-unstable", + "type": "indirect" + } + }, + "pre-commit-hooks": { + "inputs": { + "flake-compat": "flake-compat", + "gitignore": "gitignore", + "nixpkgs": [ + "hyprland", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1776796298, + "narHash": "sha256-PcRvlWayisPSjd0UcRQbhG8Oqw78AcPE6x872cPRHN8=", + "owner": "cachix", + "repo": "git-hooks.nix", + "rev": "3cfd774b0a530725a077e17354fbdb87ea1c4aad", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "git-hooks.nix", + "type": "github" + } + }, + "quickshell": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1777089709, + "narHash": "sha256-bZoy6qxL6Dbptt6PABvuhGKbyjuoyI7SQ1tzxM9g/QM=", + "ref": "refs/heads/master", + "rev": "11a71d233a566caba4ddffdca2e41d1fa79e45b1", + "revCount": 808, + "type": "git", + "url": "https://git.outfoxxed.me/outfoxxed/quickshell" + }, + "original": { + "type": "git", + "url": "https://git.outfoxxed.me/outfoxxed/quickshell" + } + }, + "root": { + "inputs": { + "catppuccin": "catppuccin", + "home-manager": "home-manager", + "hyprland": "hyprland", + "nixpkgs": "nixpkgs_3", + "quickshell": "quickshell" + } + }, + "systems": { + "locked": { + "lastModified": 1689347949, + "narHash": "sha256-12tWmuL2zgBgZkdoB6qXZsgJEH9LR3oUgpaQq2RbI80=", + "owner": "nix-systems", + "repo": "default-linux", + "rev": "31732fcf5e8fea42e59c2488ad31a0e651500f68", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default-linux", + "type": "github" + } + }, + "xdph": { + "inputs": { + "hyprland-protocols": [ + "hyprland", + "hyprland-protocols" + ], + "hyprlang": [ + "hyprland", + "hyprlang" + ], + "hyprutils": [ + "hyprland", + "hyprutils" + ], + "hyprwayland-scanner": [ + "hyprland", + "hyprwayland-scanner" + ], + "nixpkgs": [ + "hyprland", + "nixpkgs" + ], + "systems": [ + "hyprland", + "systems" + ] + }, + "locked": { + "lastModified": 1777035886, + "narHash": "sha256-m1TNuBoSXUBSKhD9UVMkU90M0wFTPTfvIOOltO8IM8A=", + "owner": "hyprwm", + "repo": "xdg-desktop-portal-hyprland", + "rev": "ecfcdcc781f48821d83e1e2a0e30d7beca0eeb5e", + "type": "github" + }, + "original": { + "owner": "hyprwm", + "repo": "xdg-desktop-portal-hyprland", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..63cc84d --- /dev/null +++ b/flake.nix @@ -0,0 +1,45 @@ +{ + description = "le config"; + + inputs = { + nixpkgs.url = "nixpkgs/nixos-unstable"; + home-manager = { + url = "github:nix-community/home-manager"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + catppuccin.url = "github:catppuccin/nix"; + quickshell = { + url = "git+https://git.outfoxxed.me/outfoxxed/quickshell"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + hyprland.url = "github:hyprwm/Hyprland"; + }; + + outputs = inputs@{ nixpkgs, home-manager, catppuccin, hyprland, ... }: { + nixosConfigurations = { + nixos = nixpkgs.lib.nixosSystem { + specialArgs = { inherit inputs; }; + system = "x86_64-linux"; + modules = [ + ./configuration.nix + home-manager.nixosModules.home-manager + catppuccin.nixosModules.catppuccin + { + home-manager.useGlobalPkgs = true; + home-manager.useUserPackages = true; + home-manager.extraSpecialArgs = { inherit inputs; }; + home-manager.users.snurm = { + imports = [ + ./home.nix + catppuccin.homeModules.catppuccin + ]; + }; + home-manager.backupFileExtension = "backup"; + catppuccin.enable = true; + catppuccin.flavor = "frappe"; + } + ]; + }; + }; + }; +} diff --git a/hardware-configuration.nix b/hardware-configuration.nix new file mode 100644 index 0000000..af84d2c --- /dev/null +++ b/hardware-configuration.nix @@ -0,0 +1,33 @@ +# 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 = [ "nvme" "xhci_pci" "ahci" "usb_storage" "usbhid" "sd_mod" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-amd" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/d1ef9448-b414-48a0-8310-30a37a0124a0"; + fsType = "ext4"; + }; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/8388-D695"; + fsType = "vfat"; + options = [ "fmask=0077" "dmask=0077" ]; + }; + + swapDevices = + [ { device = "/dev/disk/by-uuid/908c24d4-853d-49dc-9bd6-4e034772cdad"; } + ]; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/home.nix b/home.nix new file mode 100644 index 0000000..6509370 --- /dev/null +++ b/home.nix @@ -0,0 +1,231 @@ +{ inputs, config, pkgs, ... }: + +{ + home.username = "snurm"; + home.homeDirectory = "/home/snurm"; + home.stateVersion = "25.11"; + programs.home-manager.enable = true; + home.sessionVariables = { + NIXOS_OZONE_WL = "1"; + SUDO_EDITOR = "nvim"; + GTK_IM_MODULE = "fcitx"; + QT_IM_MODULE = "fcitx"; + SDL_IM_MODULE = "fcitx"; + }; + xdg.autostart = { + enable = true; + }; + + home.packages = with pkgs; [ + hyprshutdown + grim + slurp + ]; + i18n.inputMethod = { + enable = true; + type = "fcitx5"; + fcitx5.waylandFrontend = true; + fcitx5.addons = with pkgs; [ + fcitx5-mozc + fcitx5-gtk + ]; + #fcitx5.settings.inputMethod = { + # GroupOrder."0" = "Default"; + # "Groups/0" = { + # Name = "Default"; + # "Default Layout" = "de"; + # DefaultIM = "mozc"; + # }; + # "Groups/0/Items/0".Name = "keyboard-de"; + # "Groups/0/Items/0".Layout = ""; + # "Groups/0/Items/1".Name = "mozc"; + # "Groups/0/Items/1".Layout = "de"; + #}; + + #fcitx5.ignoreUserConfig = true; + }; + + fonts.fontconfig = { + enable = true; + }; + wayland.windowManager.hyprland = { + enable = false; + systemd.enable = false; + #package = inputs.hyprland.packages.${nixpkgs.legacyPackages.x86_64-linux.stdenv.hostPlatform.system}.hyprland; + #portalPackage = inputs.hyprland.packages.${nixpkgs.legacyPackages.x86_64-linux.stdenv.hostPlatform.system}.xdg-desktop-portal-hyprland; + settings = { + "$mainMod" = "SUPER"; + "$menu" = "wofi --show drun"; + "$terminal" = "kitty"; + input = { + "kb_layout" = "de"; + "follow_mouse" = "1"; + }; + monitor = [ + "DP-2, highres@highrr, auto, auto" + "DP-3, highres@highrr, auto-left, auto" + "HDMI-A-1, highres@highrr, auto-right, auto" + ]; + general = { + "border_size" = "2"; + "gaps_in" = "5"; + "gaps_out" = "5"; + }; + bind = [ + "$mainMod, Q, exec, $terminal" + "$mainMod, D, exec, $menu" + "$mainMod, C, killactive" + "$mainMod, F, fullscreen" + "$mainMod, S, exec, grim -g \"$(slurp -d)\" - | wl-copy" + "$mainMod, M, exec, hyprshutdown -t 'Shutting Down...' --post-cmd 'shutdown -P 0'" + "$mainMod, H, movefocus, l" + "$mainMod, L, movefocus, r" + "$mainMod, K, movefocus, u" + "$mainMod, J, movefocus, d" + "$mainMod SHIFT, H, movewindow, l" + "$mainMod SHIFT, L, movewindow, r" + "$mainMod SHIFT, K, movewindow, u" + "$mainMod SHIFT, J, movewindow, d" + ] + ++ ( + builtins.concatLists (builtins.genList (i: + let ws = i + 1; + in [ + "$mainMod, code:1${toString i}, workspace, ${toString ws}" + "$mainMod SHIFT, code:1${toString i}, movetoworkspace, ${toString ws}" + ] + ) + 10) + ); + bindm = [ + "$mainMod, mouse:272, movewindow" + "$mainMod, mouse:273, resizewindow" + ]; + bindl = [ + ",XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+" + ",XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-" + ",XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle" + ",XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle" + ",XF86AudioNext, exec, playerctl next" + ",XF86AudioPause, exec, playerctl play-pause" + ",XF86AudioPlay, exec, playerctl play-pause" + ",XF86AudioPrev, exec, playerctl previous" + + ]; + exec-once = [ + "hyprpaper" + ]; + }; + }; + programs.firefox = { + enable = true; + languagePacks = [ + "en-US" + "ja" + ]; + # TODO add extensions/settings/bookmarks + }; + programs.zathura = { + enable = true; + }; + programs.btop = { + enable = true; + }; + programs.keepassxc = { + enable = true; + autostart = true; + }; + + programs.mangohud = { + enable = true; + enableSessionWide = true; + }; + programs.vesktop = { + enable = true; + settings = { + discordBranch = "stable"; + arRPC = true; + minimizeToTray = true; + hardwareVideoAcceleration = true; + }; + }; + programs.anki = { + enable = true; + theme = "light"; + addons = [ + pkgs.ankiAddons.anki-connect + pkgs.ankiAddons.review-heatmap + pkgs.ankiAddons.adjust-sound-volume + ]; + }; + programs.quickshell = { + enable = true; + systemd.enable = true; + }; + + programs.zsh = { + enable = true; + shellAliases = { + cl = "clear"; + rb = "sudo nixos-rebuild switch --flake /etc/nixos/"; + }; + profileExtra = '' + if uwsm check may-start && uwsm select; then + exec uwsm start default + fi + ''; + }; + + programs.git = { + enable = true; + settings.user = { + name = "snurm"; + email = "user@example.com"; + }; + }; + + programs.kitty = { + enable = true; + font = { + name = "JetBrains Mono"; + size = 10; + }; + settings = { + confirm_os_window_close = 0; + enable_auto_bell = false; + mouse_hide_wait = "-1.0"; + background_opacity = "0.5"; + background_blur = 5; + }; + }; + programs.wofi = { + enable = true; + }; + services.playerctld = { + enable = true; + }; + + services.hyprpaper = { + enable = true; + settings = { + splash = false; + wallpaper = [ + { + monitor = "DP-2"; + path = "${config.home.homeDirectory}/Pictures/Wallpaper/dawn.jpg"; + fit_mode = "cover"; + } + { + monitor = "DP-3"; + path = "${config.home.homeDirectory}/Pictures/Wallpaper/dawn.jpg"; + fit_mode = "cover"; + } + { + monitor = "HDMI-A-1"; + path = "${config.home.homeDirectory}/Pictures/Wallpaper/dawn.jpg"; + fit_mode = "cover"; + } + ]; + }; + }; +} diff --git a/modules/quickshell.nix b/modules/quickshell.nix new file mode 100644 index 0000000..52b7318 --- /dev/null +++ b/modules/quickshell.nix @@ -0,0 +1,10 @@ +{ + inputs = { + nixpkgs.url = "nixpkgs/nixos-unstable"; + quickshell = { + url = "git+https://git.outfoxxed.me/outfoxxed/quickshell"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + }; + outputs = {}; +}