diff options
| author | Rosa <rosaontheweb@proton.me> | 2026-01-10 17:59:55 -0500 |
|---|---|---|
| committer | Rosa <rosaontheweb@proton.me> | 2026-01-10 17:59:55 -0500 |
| commit | 5570be9c9c64e0ba2474d73c2b6b23508b916fd6 (patch) | |
| tree | 53e2f7939b668a50d8f51f857a8659989de85c2b | |
| parent | 488bd4b5c08d6fe9c44b0fa5cd3750265c2be482 (diff) | |
custom function for system creation
| -rw-r--r-- | README.md | 12 | ||||
| -rw-r--r-- | common/core.nix | 10 | ||||
| -rw-r--r-- | common/niri.nix | 4 | ||||
| -rw-r--r-- | flake.nix | 34 | ||||
| -rw-r--r-- | hosts/limbo/default.nix | 24 | ||||
| -rw-r--r-- | modules/default.nix | 5 | ||||
| -rw-r--r-- | modules/user/default.nix | 5 | ||||
| -rw-r--r-- | modules/user/desktops/default.nix | 12 | ||||
| -rw-r--r-- | modules/user/desktops/hyprland.nix | 6 | ||||
| -rw-r--r-- | user/default.nix | 15 | ||||
| -rw-r--r-- | user/home/default.nix | 21 | ||||
| -rw-r--r-- | user/home/git.nix (renamed from user/git.nix) | 0 | ||||
| -rw-r--r-- | user/home/kakoune/default.nix (renamed from user/kakoune/default.nix) | 4 | ||||
| -rw-r--r-- | user/home/kakoune/kakrc | 2 | ||||
| -rw-r--r-- | user/home/ssh.nix (renamed from user/ssh.nix) | 0 | ||||
| -rw-r--r-- | user/home/zsh.nix (renamed from user/zsh.nix) | 0 | ||||
| -rw-r--r-- | user/kakoune/kakrc | 4 | ||||
| -rw-r--r-- | user/kakoune/qml.kak | 28 | ||||
| -rw-r--r-- | user/wm/default.nix | 18 | ||||
| -rw-r--r-- | user/wm/foot.nix | 46 | ||||
| -rw-r--r-- | user/wm/fuzzel.nix | 32 | ||||
| -rw-r--r-- | user/wm/librewolf.nix | 27 | ||||
| -rw-r--r-- | user/wm/niri/config.kdl | 149 | ||||
| -rw-r--r-- | user/wm/niri/default.nix | 9 |
24 files changed, 99 insertions, 368 deletions
@@ -1,8 +1,12 @@ # dotfiles -My NixOS configurations. +My NixOS configurations. Now featuring +[`disko`](https://github.com/nix-community/disko)! Structure: -- `common`: Shared system configurations -- `hosts`: Host-specific system configurations -- `user`: Home manager configurations +- `common/`: Shared system configurations +- `modules/`: Custom NixOS modules + - `modules/user/` Custom Home Manager modules +- `hosts/<name>/`: System-specific configuration files +- `user/`: User configuration + - `user/home/`: Home Manager configurations diff --git a/common/core.nix b/common/core.nix index cafe469..8ae8245 100644 --- a/common/core.nix +++ b/common/core.nix @@ -37,13 +37,5 @@ }; }; - users = { - defaultUserShell = pkgs.zsh; - users.rosa = { - extraGroups = [ "wheel" ]; - initialPassword = ""; - isNormalUser = true; - shell = pkgs.zsh; - }; - }; + users.defaultUserShell = pkgs.zsh; } diff --git a/common/niri.nix b/common/niri.nix deleted file mode 100644 index 2882b96..0000000 --- a/common/niri.nix +++ /dev/null @@ -1,4 +0,0 @@ -{ config, ... }: -{ - programs.niri.enable = true; -} @@ -24,17 +24,37 @@ }: let pkgs = nixpkgs.legacyPackages.x86_64-linux; + mkSystem = + { + hostName, + system, + # Whether to create the default user account. This account will be + # in the wheel group, and has an empty default password! + makeDefaultUser ? true, + useHomeManager ? true, + additionalModules ? [ ], + }: + nixpkgs.lib.nixosSystem { + modules = [ + ./common/core.nix + ./hosts/${hostName} + ./modules # include custom system modules + { networking.hostName = hostName; } + ] + ++ nixpkgs.lib.optional makeDefaultUser ./user + ++ nixpkgs.lib.optional useHomeManager home-manager.nixosModules.home-manager + ++ nixpkgs.lib.optional useHomeManager ./user/home + ++ additionalModules; + + inherit system; + }; in { formatter.x86_64-linux = pkgs.nixfmt; nixosConfigurations = { - limbo = nixpkgs.lib.nixosSystem { - modules = [ - disko.nixosModules.disko - home-manager.nixosModules.home-manager - ./hosts/limbo - ]; - + limbo = mkSystem { + additionalModules = [ disko.nixosModules.disko ]; + hostName = "limbo"; system = "x86_64-linux"; }; }; diff --git a/hosts/limbo/default.nix b/hosts/limbo/default.nix index 59f048a..b7be92e 100644 --- a/hosts/limbo/default.nix +++ b/hosts/limbo/default.nix @@ -1,11 +1,9 @@ { config, ... }: { imports = [ - ../../common/core.nix ../../common/pipewire.nix ../../common/region/na-east.nix ./disks.nix - ../../modules/tuigreet.nix ]; greeters.tuigreet = { @@ -13,25 +11,9 @@ time = true; }; - home-manager = { - useGlobalPkgs = true; - users.rosa = { - imports = [ - ../../user - ../../user/wm - ]; - - home = { - homeDirectory = "/home/rosa"; - stateVersion = "26.05"; - username = "rosa"; - }; - }; - }; - - networking = { - hostName = "limbo"; - networkmanager.enable = true; + networking.networkmanager = { + enable = true; + wifi.macAddress = "random"; }; services.automatic-timezoned.enable = true; diff --git a/modules/default.nix b/modules/default.nix new file mode 100644 index 0000000..339daf1 --- /dev/null +++ b/modules/default.nix @@ -0,0 +1,5 @@ +{ + imports = [ + ./tuigreet.nix + ]; +} diff --git a/modules/user/default.nix b/modules/user/default.nix new file mode 100644 index 0000000..68500bd --- /dev/null +++ b/modules/user/default.nix @@ -0,0 +1,5 @@ +{ + imports = [ + ./desktops + ]; +} diff --git a/modules/user/desktops/default.nix b/modules/user/desktops/default.nix new file mode 100644 index 0000000..36446f9 --- /dev/null +++ b/modules/user/desktops/default.nix @@ -0,0 +1,12 @@ +{ config, lib, options, ... }: +{ + imports = [ + ./hyprland.nix + ]; + + options.desktops.enable = lib.mkOption { + description = "Which desktop setup to enable"; + default = null; + type = with lib.types; nullOr (enum [ ]); + }; +} diff --git a/modules/user/desktops/hyprland.nix b/modules/user/desktops/hyprland.nix new file mode 100644 index 0000000..bc369bc --- /dev/null +++ b/modules/user/desktops/hyprland.nix @@ -0,0 +1,6 @@ +{ config, lib, options, ... }: +{ + options.desktops = { + enable = lib.mkOption { type = with lib.types; nullOr (enum [ "hyprland" ]); }; + }; +} diff --git a/user/default.nix b/user/default.nix index 08be102..431a5b1 100644 --- a/user/default.nix +++ b/user/default.nix @@ -1,9 +1,10 @@ -{ config, ... }: +{ config, lib, ... }: { - imports = [ - ./git.nix - ./kakoune - ./ssh.nix - ./zsh.nix - ]; + users.users.rosa = { + description = lib.mkDefault "Rosa"; + extraGroups = [ "wheel" ]; + initialPassword = ""; + isNormalUser = true; + useDefaultShell = true; + }; } diff --git a/user/home/default.nix b/user/home/default.nix new file mode 100644 index 0000000..1751a82 --- /dev/null +++ b/user/home/default.nix @@ -0,0 +1,21 @@ +{ config, ... }: +{ + home-manager = { + useGlobalPkgs = true; + users.rosa = { + imports = [ + ./git.nix + ./kakoune + ../../modules/user + ./ssh.nix + ]; + + desktops.enable = "hyprland"; + home = { + homeDirectory = "/home/rosa"; + stateVersion = "26.05"; + username = "rosa"; + }; + }; + }; +} diff --git a/user/git.nix b/user/home/git.nix index 65b4b7c..65b4b7c 100644 --- a/user/git.nix +++ b/user/home/git.nix diff --git a/user/kakoune/default.nix b/user/home/kakoune/default.nix index 2a76f7a..ec7b89b 100644 --- a/user/kakoune/default.nix +++ b/user/home/kakoune/default.nix @@ -4,7 +4,7 @@ enable = true; colorSchemePackage = pkgs.kakounePlugins.kakoune-catppuccin; config = { - colorScheme = "catppuccin_mocha"; + #colorScheme = "catppuccin_mocha"; hooks = [ { commands = "set window indentwidth 2"; @@ -67,6 +67,4 @@ kakoune-lsp ]; }; - - xdg.configFile."kak/qml.kak".source = ./qml.kak; } diff --git a/user/home/kakoune/kakrc b/user/home/kakoune/kakrc new file mode 100644 index 0000000..b327805 --- /dev/null +++ b/user/home/kakoune/kakrc @@ -0,0 +1,2 @@ +enable-auto-pairs +eval %sh{kak-lsp --kakoune -s $kak_session} diff --git a/user/ssh.nix b/user/home/ssh.nix index d077e31..d077e31 100644 --- a/user/ssh.nix +++ b/user/home/ssh.nix diff --git a/user/zsh.nix b/user/home/zsh.nix index d264bd9..d264bd9 100644 --- a/user/zsh.nix +++ b/user/home/zsh.nix diff --git a/user/kakoune/kakrc b/user/kakoune/kakrc deleted file mode 100644 index fa3152a..0000000 --- a/user/kakoune/kakrc +++ /dev/null @@ -1,4 +0,0 @@ -enable-auto-pairs -eval %sh{kak-lsp --kakoune -s $kak_session} -# hacky workaround for kakoune seemingly only loading from one autoload dir -source /home/rosa/.config/kak/qml.kak diff --git a/user/kakoune/qml.kak b/user/kakoune/qml.kak deleted file mode 100644 index 697467f..0000000 --- a/user/kakoune/qml.kak +++ /dev/null @@ -1,28 +0,0 @@ -hook global BufCreate .+\.qml %{ - set-option buffer filetype qml -} - -hook global WinSetOption filetype=qml %{ - require-module qml - add-highlighter window/qml ref qml - hook -once global WinSetOption filetype=.+\.(?!qml) %{ - remove-highlighter window/qml - } -} - -provide-module qml %{ - add-highlighter shared/qml regions - add-highlighter shared/qml/comment-line region '//' '\n' fill comment - add-highlighter shared/qml/comment-block region '/\*' '\*/' fill comment - add-highlighter shared/qml/string region '"' '"' fill string - add-highlighter shared/qml/other default-region group - add-highlighter shared/qml/other/keywords regex \ - \b(import|as|property|final|readonly|required|default)\b 0:keyword - add-highlighter shared/qml/other/numbers regex -?[0-9]+(\.[0-9]+)? 0:value - add-highlighter shared/qml/other/booleans regex true|false 0:value - # this one was kind of annoying :( - add-highlighter shared/qml/other/type regex '([a-zA-Z]+ *)(\{.*\})' 1:type - add-highlighter shared/qml/other/builtin-types regex \ - \b(bool|date|double|int|list|real|string|url|var(iant)?|void)\b 0:type - add-highlighter shared/qml/other/function regex ([a-zA-Z]+[a-zA-Z0-9]*)\(.*\) 1:function -} diff --git a/user/wm/default.nix b/user/wm/default.nix deleted file mode 100644 index dc9c394..0000000 --- a/user/wm/default.nix +++ /dev/null @@ -1,18 +0,0 @@ -{ config, pkgs, ... }: -{ - imports = [ - ./foot.nix - ./fuzzel.nix - ./librewolf.nix - ./niri - ]; - - fonts.fontconfig.enable = true; - home.packages = with pkgs; [ - brightnessctl - fira-code - keepassxc - krita - xwayland-satellite - ]; -} diff --git a/user/wm/foot.nix b/user/wm/foot.nix deleted file mode 100644 index cfccffd..0000000 --- a/user/wm/foot.nix +++ /dev/null @@ -1,46 +0,0 @@ -{ config, ... }: -{ - programs.foot = { - enable = true; - settings = { - bell.urgent = "yes"; - colors = { - alpha = 0.75; - background = "1e1e2e"; - bright0 = "585b70"; - bright1 = "f38ba8"; - bright2 = "a6e3a1"; - bright3 = "f9e2af"; - bright4 = "89b4fa"; - bright5 = "f5c2e7"; - bright6 = "94e2d5"; - bright7 = "a6adc8"; - "16" = "fab387"; - "17" = "f5e0dc"; - cursor = "11111b f5e0dc"; - foreground = "cdd6f4"; - jump-labels = "11111b fab387"; - regular0 = "45475a"; - regular1 = "f38ba8"; - regular2 = "a6e3a1"; - regular3 = "f9e2af"; - regular4 = "89b4fa"; - regular5 = "f5c2e7"; - regular6 = "94e2d5"; - regular7 = "bac2de"; - search-box-match = "cdd6f4 313244"; - search-box-no-match = "11111b f38ba8"; - selection-background = "414356"; - selection-foreground = "cdd6f4"; - urls = "89b4fa"; - }; - - main = { - dpi-aware = "yes"; - font = "Fira Code:size=11"; - }; - - mouse.hide-when-typing = "yes"; - }; - }; -} diff --git a/user/wm/fuzzel.nix b/user/wm/fuzzel.nix deleted file mode 100644 index 1063f04..0000000 --- a/user/wm/fuzzel.nix +++ /dev/null @@ -1,32 +0,0 @@ -{ config, ... }: -{ - programs.fuzzel = { - enable = true; - settings = { - border = { - radius = 0; - width = 2; - }; - - colors = { - background = "1e1e2eff"; - border = "f5c2e7ff"; - counter = "7f849cff"; - input = "cdd6f4ff"; - match = "f5c2e7ff"; - placeholder = "7f849cff"; - prompt = "bac2deff"; - selection = "585b70ff"; - selection-match = "f5c2e7ff"; - selection-text = "cdd6f4ff"; - text = "cdd6f4ff"; - }; - - main = { - font = "Fira Code:size=11"; - terminal = "foot {cmd}"; - use-bold = "yes"; - }; - }; - }; -} diff --git a/user/wm/librewolf.nix b/user/wm/librewolf.nix deleted file mode 100644 index d596716..0000000 --- a/user/wm/librewolf.nix +++ /dev/null @@ -1,27 +0,0 @@ -{ config, lib, ... }: -{ - programs.librewolf = { - enable = true; - profiles = { - default = { - settings = { - "browser.sessionstore.resume_from_crash" = false; - "browser.uidensity" = 1; - "sidebar.verticalTabs" = true; - "sidebar.visibility" = "hide-sidebar"; - }; - }; - - noRFP = { - id = 1; - name = "RFP Disabled"; - settings = lib.mkMerge [ - config.programs.librewolf.profiles.default.settings - { - "privacy.resistFingerprinting" = false; - } - ]; - }; - }; - }; -} diff --git a/user/wm/niri/config.kdl b/user/wm/niri/config.kdl deleted file mode 100644 index f65d813..0000000 --- a/user/wm/niri/config.kdl +++ /dev/null @@ -1,149 +0,0 @@ -binds { - Mod+Alt+Equal { set-window-height "+10%"; } - Mod+Alt+L { spawn "swaylock"; } - Mod+Alt+Minus { set-window-height "-10%"; } - 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 -} - -environment { - QT_QPA_PLATFORM "wayland" -} - -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; } // window takes up whole display by default - focus-ring { - active-gradient angle=45 from="#f5c2e7" to="#f9e2af" relative-to="workspace-view" - inactive-color "#bac2de" - urgent-color "#f38ba8" - width 2 - } - - gaps 8 - preset-column-widths { - proportion 0.5; - proportion 0.66667; - proportion 1.0; - } - - shadow { - on - } - - tab-indicator { - gap 4 - gaps-between-tabs 4 - 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 "#1e1e2e" -} - -prefer-no-csd -recent-windows { - off -} - -screenshot-path "~/Pictures/screenshots/%Y-%m-%d_%H.%M.%S.png" -spawn-sh-at-startup "swaybg -i ~/Pictures/wallpaper.png" diff --git a/user/wm/niri/default.nix b/user/wm/niri/default.nix deleted file mode 100644 index 22a487e..0000000 --- a/user/wm/niri/default.nix +++ /dev/null @@ -1,9 +0,0 @@ -{ config, pkgs, ... }: -{ - #home.file."Pictures/wallpaper.png".source = ../wallpaper.jpeg; - home.packages = with pkgs; [ - swaybg - ]; - - xdg.configFile."niri/config.kdl".text = builtins.readFile ./config.kdl; -} |
