aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md8
-rw-r--r--common/core.nix49
-rw-r--r--common/greetd.nix14
-rw-r--r--common/niri.nix4
-rw-r--r--common/pipewire.nix12
-rw-r--r--common/region/na-east.nix5
-rw-r--r--flake.lock69
-rw-r--r--flake.nix40
-rw-r--r--hosts/limbo/default.nix33
-rw-r--r--hosts/limbo/disks.nix56
-rw-r--r--hosts/limbo/hardware-configuration.nix28
-rw-r--r--user/wm/default.nix7
-rw-r--r--user/wm/librewolf.nix16
-rw-r--r--user/wm/niri/config.kdl136
-rw-r--r--user/wm/niri/default.nix4
15 files changed, 481 insertions, 0 deletions
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;
+}