From ca9e1f1fb8126b34ca95fca78965c1d782a30102 Mon Sep 17 00:00:00 2001 From: Rosa Date: Sat, 20 Dec 2025 13:16:20 -0500 Subject: init --- README.md | 8 ++ common/core.nix | 49 ++++++++++++ common/greetd.nix | 14 ++++ common/niri.nix | 4 + common/pipewire.nix | 12 +++ common/region/na-east.nix | 5 ++ flake.lock | 69 +++++++++++++++++ flake.nix | 40 ++++++++++ hosts/limbo/default.nix | 33 ++++++++ hosts/limbo/disks.nix | 56 ++++++++++++++ hosts/limbo/hardware-configuration.nix | 28 +++++++ user/wm/default.nix | 7 ++ user/wm/librewolf.nix | 16 ++++ user/wm/niri/config.kdl | 136 +++++++++++++++++++++++++++++++++ user/wm/niri/default.nix | 4 + 15 files changed, 481 insertions(+) create mode 100644 README.md create mode 100644 common/core.nix create mode 100644 common/greetd.nix create mode 100644 common/niri.nix create mode 100644 common/pipewire.nix create mode 100644 common/region/na-east.nix create mode 100644 flake.lock create mode 100644 flake.nix create mode 100644 hosts/limbo/default.nix create mode 100644 hosts/limbo/disks.nix create mode 100644 hosts/limbo/hardware-configuration.nix create mode 100644 user/wm/default.nix create mode 100644 user/wm/librewolf.nix create mode 100644 user/wm/niri/config.kdl create mode 100644 user/wm/niri/default.nix diff --git a/README.md b/README.md new file mode 100644 index 0000000..623b0c3 --- /dev/null +++ b/README.md @@ -0,0 +1,8 @@ +# dotfiles + +My NixOS configurations. + +Structure: +- `common`: Shared system configurations +- `hosts`: Host-specific system configurations +- `user`: Home manager configurations diff --git a/common/core.nix b/common/core.nix new file mode 100644 index 0000000..cafe469 --- /dev/null +++ b/common/core.nix @@ -0,0 +1,49 @@ +{ config, pkgs, ... }: +{ + boot.loader = { + efi.canTouchEfiVariables = true; + systemd-boot = { + enable = true; + editor = false; + memtest86.enable = true; + }; + + timeout = 3; + }; + + environment.systemPackages = with pkgs; [ + kakoune + ]; + + hardware.enableRedistributableFirmware = true; + nix.settings.experimental-features = [ + "flakes" + "nix-command" + ]; + + programs = { + git = { + enable = true; + package = pkgs.gitMinimal; + }; + + nano.enable = false; + zsh = { + enable = true; + setOptions = [ "HIST_IGNORE_ALL_DUPS" ]; + shellInit = '' + PS1="%n@%m %~ %# " + ''; + }; + }; + + users = { + defaultUserShell = pkgs.zsh; + users.rosa = { + extraGroups = [ "wheel" ]; + initialPassword = ""; + isNormalUser = true; + shell = pkgs.zsh; + }; + }; +} diff --git a/common/greetd.nix b/common/greetd.nix new file mode 100644 index 0000000..66abd6c --- /dev/null +++ b/common/greetd.nix @@ -0,0 +1,14 @@ +{ config, pkgs, ... }: +{ + services.greetd = { + enable = true; + settings = { + default_session = { + command = "${pkgs.tuigreet}/bin/tuigreet --time --cmd start-hyprland"; + user = "greeter"; + }; + }; + + useTextGreeter = true; + }; +} diff --git a/common/niri.nix b/common/niri.nix new file mode 100644 index 0000000..2882b96 --- /dev/null +++ b/common/niri.nix @@ -0,0 +1,4 @@ +{ config, ... }: +{ + programs.niri.enable = true; +} diff --git a/common/pipewire.nix b/common/pipewire.nix new file mode 100644 index 0000000..78007b2 --- /dev/null +++ b/common/pipewire.nix @@ -0,0 +1,12 @@ +{ config, ... }: +{ + services.pipewire = { + enable = true; + alsa = { + enable = true; + support32Bit = true; + }; + + pulse.enable = true; + }; +} diff --git a/common/region/na-east.nix b/common/region/na-east.nix new file mode 100644 index 0000000..a7293a8 --- /dev/null +++ b/common/region/na-east.nix @@ -0,0 +1,5 @@ +{ config, ... }: +{ + i18n.defaultLocale = "en_CA.UTF-8"; + time.timeZone = "Canada/Eastern"; +} diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..e48803b --- /dev/null +++ b/flake.lock @@ -0,0 +1,69 @@ +{ + "nodes": { + "disko": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1765794845, + "narHash": "sha256-YD5QWlGnusNbZCqR3pxG8tRxx9yUXayLZfAJRWspq2s=", + "owner": "nix-community", + "repo": "disko", + "rev": "7194cfe5b7a3660726b0fe7296070eaef601cae9", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "disko", + "type": "github" + } + }, + "home-manager": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1765860045, + "narHash": "sha256-7Lxp/PfOy4h3QIDtmWG/EgycaswqRSkDX4DGtet14NE=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "09de9577d47d8bffb11c449b6a3d24e32ac16c99", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1765779637, + "narHash": "sha256-KJ2wa/BLSrTqDjbfyNx70ov/HdgNBCBBSQP3BIzKnv4=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "1306659b587dc277866c7b69eb97e5f07864d8c4", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "disko": "disko", + "home-manager": "home-manager", + "nixpkgs": "nixpkgs" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..c718b16 --- /dev/null +++ b/flake.nix @@ -0,0 +1,40 @@ +{ + description = "Rosa's NixOS configurations"; + + inputs = { + disko = { + url = "github:nix-community/disko"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + home-manager = { + url = "github:nix-community/home-manager"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + + nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; + }; + + outputs = + { + self, + disko, + home-manager, + nixpkgs, + }: + { + formatter.x86_64-linux = nixpkgs.legacyPackages.x86_64-linux.nixfmt-rfc-style; + + nixosConfigurations = { + limbo = nixpkgs.lib.nixosSystem { + modules = [ + disko.nixosModules.disko + home-manager.nixosModules.home-manager + ./hosts/limbo + ]; + + system = "x86_64-linux"; + }; + }; + }; +} diff --git a/hosts/limbo/default.nix b/hosts/limbo/default.nix new file mode 100644 index 0000000..6312fb9 --- /dev/null +++ b/hosts/limbo/default.nix @@ -0,0 +1,33 @@ +{ config, ... }: +{ + imports = [ + ../../common/core.nix + ../../common/greetd.nix + ../../common/niri.nix + ../../common/pipewire.nix + ../../common/region/na-east.nix + ./disks.nix + ]; + + home-manager = { + useGlobalPkgs = true; + users.rosa = { + imports = [ + ../../user/wm + ]; + + home = { + homeDirectory = "/home/rosa"; + stateVersion = "26.05"; + username = "rosa"; + }; + }; + }; + + networking = { + hostName = "limbo"; + networkmanager.enable = true; + }; + + system.stateVersion = "26.05"; +} diff --git a/hosts/limbo/disks.nix b/hosts/limbo/disks.nix new file mode 100644 index 0000000..50fb894 --- /dev/null +++ b/hosts/limbo/disks.nix @@ -0,0 +1,56 @@ +{ config, ... }: +{ + disko.devices.disk.main = { + content = { + partitions = { + ESP = { + content = { + format = "vfat"; + mountOptions = [ "umask=0077" ]; + mountpoint = "/boot"; + type = "filesystem"; + }; + + size = "512M"; + type = "EF00"; + }; + + luks = { + content = { + content = { + extraArgs = [ "-f" ]; + subvolumes = { + "/home" = { + mountOptions = [ "noatime" ]; + mountpoint = "/home"; + }; + + "/nix" = { + mountOptions = [ "noatime" ]; + mountpoint = "/nix"; + }; + + "/root" = { + mountOptions = [ "noatime" ]; + mountpoint = "/"; + }; + }; + + type = "btrfs"; + }; + + name = "root"; + type = "luks"; + }; + + size = "100%"; + }; + }; + + type = "gpt"; + }; + + device = "/dev/nvme0n1"; + type = "disk"; + }; +} diff --git a/hosts/limbo/hardware-configuration.nix b/hosts/limbo/hardware-configuration.nix new file mode 100644 index 0000000..46beb7f --- /dev/null +++ b/hosts/limbo/hardware-configuration.nix @@ -0,0 +1,28 @@ +# 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" + ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ ]; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/user/wm/default.nix b/user/wm/default.nix new file mode 100644 index 0000000..2925257 --- /dev/null +++ b/user/wm/default.nix @@ -0,0 +1,7 @@ +{ config, ... }: +{ + imports = [ + ./librewolf.nix + ./niri + ]; +} diff --git a/user/wm/librewolf.nix b/user/wm/librewolf.nix new file mode 100644 index 0000000..a13fcc3 --- /dev/null +++ b/user/wm/librewolf.nix @@ -0,0 +1,16 @@ +{ config, ... }: +{ + programs.librewolf = { + enable = true; + profiles = { + default = {}; + noRFP = { + id = 1; + name = "RFP Disabled"; + settings = { + "privacy.resistFingerprinting" = false; + }; + }; + }; + }; +} diff --git a/user/wm/niri/config.kdl b/user/wm/niri/config.kdl new file mode 100644 index 0000000..d48e2be --- /dev/null +++ b/user/wm/niri/config.kdl @@ -0,0 +1,136 @@ +binds { + Mod+Alt+L { spawn "swaylock"; } + Mod+Alt+Q { quit; } + Mod+C { center-column; } + Mod+Equal { set-column-width "+10%"; } + Mod+Escape allow-inhibiting=false { toggle-keyboard-shortcuts-inhibit; } + Mod+F { toggle-window-floating; } + Mod+Minus { set-column-width "-10%"; } + Mod+Q repeat=false { close-window; } + Mod+Return { spawn "foot"; } + Mod+R { spawn "fuzzel"; } + Mod+Shift+R { switch-preset-column-width; } + Print { screenshot-screen; } + XF86AudioLowerVolume { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1+ -l 1.0"; } + XF86AudioRaiseVolume { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1-"; } + XF86MonBrightnessDown { spawn "brightnessctl" "--class=backlight" "set" "5%-"; } + XF86MonBrightnessUp { spawn "brightnessctl" "--class=backlight" "set" "+5%"; } + + Mod+1 { focus-workspace 1; } + Mod+2 { focus-workspace 2; } + Mod+3 { focus-workspace 3; } + Mod+4 { focus-workspace 4; } + Mod+5 { focus-workspace 5; } + Mod+6 { focus-workspace 6; } + Mod+7 { focus-workspace 7; } + Mod+8 { focus-workspace 8; } + Mod+9 { focus-workspace 9; } + Mod+BracketLeft { consume-or-expel-window-left; } + Mod+BracketRight { consume-or-expel-window-right; } + Mod+Ctrl+H { focus-monitor-left; } + Mod+Ctrl+J { focus-workspace-down; } + Mod+Ctrl+K { focus-workspace-up; } + Mod+Ctrl+L { focus-monitor-right; } + Mod+Ctrl+Shift+H { move-column-to-monitor-left; } + Mod+Ctrl+Shift+J { move-column-to-workspace-down; } + Mod+Ctrl+Shift+K { move-column-to-workspace-up; } + Mod+Ctrl+Shift+L { move-column-to-monitor-right; } + Mod+H { focus-column-left; } + Mod+J { focus-window-down; } + Mod+K { focus-window-up; } + Mod+L { focus-column-right; } + Mod+Shift+1 { move-column-to-workspace 1; } + Mod+Shift+2 { move-column-to-workspace 2; } + Mod+Shift+3 { move-column-to-workspace 3; } + Mod+Shift+4 { move-column-to-workspace 4; } + Mod+Shift+5 { move-column-to-workspace 5; } + Mod+Shift+6 { move-column-to-workspace 6; } + Mod+Shift+7 { move-column-to-workspace 7; } + Mod+Shift+8 { move-column-to-workspace 8; } + Mod+Shift+9 { move-column-to-workspace 9; } + Mod+Shift+H { move-column-left; } + Mod+Shift+J { move-window-down; } + Mod+Shift+K { move-window-up; } + Mod+Shift+L { move-column-right; } + Mod+TouchpadScrollDown cooldown-ms=100 { focus-workspace-down; } + Mod+TouchpadScrollLeft { focus-column-left; } + Mod+TouchpadScrollRight { focus-column-right; } + Mod+TouchpadScrollUp cooldown-ms=100 { focus-workspace-up; } +} + +clipboard { + disable-primary +} + +cursor { + // TODO +} + +hotkey-overlay { + skip-at-startup +} + +input { + disable-power-key-handling + mouse { + accel-profile "flat" + } + + touchpad { + accel-profile "flat" + drag true + dwt + natural-scroll + tap + } + + warp-mouse-to-focus mode="center-xy" +} + +layout { + always-center-single-column + border { + off + } + + default-column-display "tabbed" + default-column-width { proportion 0.5; } + focus-ring { + active-gradient angle=45 from="#88c0d0" to="#8fbcbb" + inactive-color "#3b4252" + urgent-color "#d08770" + width 2 + } + + gaps 4 + shadow { + on + } + + tab-indicator { + gap 1 + gaps-between-tabs 1 + hide-when-single-tab + place-within-column + position "left" + width 2 + } +} + +output "eDP-1" { + focus-at-startup + mode "2256x1504@60.000" + position x=0 y=0 + scale 1.5 +} + +overview { + backdrop-color "#2e3440" +} + +prefer-no-csd +recent-windows { + off +} + +screenshot-path "~/Pictures/screenshots/%Y-%m-%d_%H.%M.%S" diff --git a/user/wm/niri/default.nix b/user/wm/niri/default.nix new file mode 100644 index 0000000..8f86581 --- /dev/null +++ b/user/wm/niri/default.nix @@ -0,0 +1,4 @@ +{ config, ... }: +{ + xdg.configFile."niri/config.kdl".text = builtins.readFile ./config.kdl; +} -- cgit v1.3.1