NixOS dotfiles

๐ŸŽ‰ Init repository

+1377
+83
flake.lock
··· 1 + { 2 + "nodes": { 3 + "home-manager": { 4 + "inputs": { 5 + "nixpkgs": [ 6 + "nixpkgs" 7 + ] 8 + }, 9 + "locked": { 10 + "lastModified": 1768997641, 11 + "narHash": "sha256-7vT8oS6ra/dJaZ6ShvZiPtlZ40XI7CTSb2PmuNPMiXE=", 12 + "owner": "nix-community", 13 + "repo": "home-manager", 14 + "rev": "27b60942b7285824937f8c2c05021370f6fc5904", 15 + "type": "github" 16 + }, 17 + "original": { 18 + "owner": "nix-community", 19 + "repo": "home-manager", 20 + "type": "github" 21 + } 22 + }, 23 + "minegrub-theme": { 24 + "inputs": { 25 + "nixpkgs": "nixpkgs" 26 + }, 27 + "locked": { 28 + "lastModified": 1762539883, 29 + "narHash": "sha256-GvlAAIpM/iZtl/EtI+LTzEsQ2qlUkex9i4xRUZXmadM=", 30 + "owner": "Lxtharia", 31 + "repo": "minegrub-theme", 32 + "rev": "2fa2012472fbfcfea17b82655dd27456fa507ee7", 33 + "type": "github" 34 + }, 35 + "original": { 36 + "owner": "Lxtharia", 37 + "repo": "minegrub-theme", 38 + "type": "github" 39 + } 40 + }, 41 + "nixpkgs": { 42 + "locked": { 43 + "lastModified": 1689850295, 44 + "narHash": "sha256-fUYf6WdQlhd2H+3aR8jST5dhFH1d0eE22aes8fNIfyk=", 45 + "owner": "NixOS", 46 + "repo": "nixpkgs", 47 + "rev": "5df4d78d54f7a34e9ea1f84a22b4fd9baebc68d0", 48 + "type": "github" 49 + }, 50 + "original": { 51 + "owner": "NixOS", 52 + "ref": "nixos-unstable", 53 + "repo": "nixpkgs", 54 + "type": "github" 55 + } 56 + }, 57 + "nixpkgs_2": { 58 + "locked": { 59 + "lastModified": 1768886240, 60 + "narHash": "sha256-C2TjvwYZ2VDxYWeqvvJ5XPPp6U7H66zeJlRaErJKoEM=", 61 + "owner": "NixOS", 62 + "repo": "nixpkgs", 63 + "rev": "80e4adbcf8992d3fd27ad4964fbb84907f9478b0", 64 + "type": "github" 65 + }, 66 + "original": { 67 + "owner": "NixOS", 68 + "ref": "nixos-unstable", 69 + "repo": "nixpkgs", 70 + "type": "github" 71 + } 72 + }, 73 + "root": { 74 + "inputs": { 75 + "home-manager": "home-manager", 76 + "minegrub-theme": "minegrub-theme", 77 + "nixpkgs": "nixpkgs_2" 78 + } 79 + } 80 + }, 81 + "root": "root", 82 + "version": 7 83 + }
+47
flake.nix
··· 1 + { 2 + description = "NixOS configuration for the Fox"; 3 + 4 + inputs = { 5 + nixpkgs.url = "github:NixOS/nixpkgs?ref=nixos-unstable"; 6 + home-manager.url = "github:nix-community/home-manager"; 7 + home-manager.inputs.nixpkgs.follows = "nixpkgs"; 8 + 9 + minegrub-theme.url = "github:Lxtharia/minegrub-theme"; 10 + }; 11 + 12 + outputs = 13 + { 14 + self, 15 + nixpkgs, 16 + home-manager, 17 + minegrub-theme, 18 + ... 19 + }: 20 + let 21 + system = "x86_64-linux"; 22 + globals = { 23 + UserName = "fantomitechno"; 24 + HostName = "fantomitechno-nixos"; 25 + GitName = "Simon R. - fantomitechno"; 26 + GitEmail = "me@fantomitechno.dev"; 27 + }; 28 + 29 + in 30 + { 31 + nixosConfigurations.laptop = nixpkgs.lib.nixosSystem { 32 + inherit system; 33 + specialArgs = { inherit globals; }; 34 + modules = [ 35 + ./hosts/laptop/configuration.nix 36 + home-manager.nixosModules.home-manager 37 + { 38 + home-manager.useGlobalPkgs = true; 39 + home-manager.useUserPackages = true; 40 + home-manager.extraSpecialArgs = { inherit globals; }; 41 + home-manager.users.${globals.UserName} = import ./home/home.nix; 42 + } 43 + minegrub-theme.nixosModules.default 44 + ]; 45 + }; 46 + }; 47 + }
+6
home/bw.nix
··· 1 + { globals, ... }: 2 + 3 + { 4 + services.bitwarden-directory-connector-cli.domain = globals.Bwserver; 5 + services.bitwarden-directory-connector-cli.enable = true; 6 + }
+29
home/codium.nix
··· 1 + { pkgs, ... }: 2 + { 3 + programs.vscode = { 4 + enable = true; 5 + package = pkgs.vscodium; 6 + profiles.default.extensions = with pkgs.vscode-extensions; [ 7 + catppuccin.catppuccin-vsc 8 + catppuccin.catppuccin-vsc-icons 9 + detachhead.basedpyright 10 + esbenp.prettier-vscode 11 + github.copilot 12 + jnoortheen.nix-ide 13 + leonardssh.vscord 14 + # minecraftcommands.syntax-mcfunction 15 + # misodee.vscode-nbt 16 + ms-dotnettools.vscode-dotnet-runtime 17 + ms-dotnettools.csharp 18 + ms-dotnettools.csdevkit 19 + ms-python.python 20 + ms-python.debugpy 21 + prisma.prisma 22 + # qwtel.sqlite-viewer 23 + seatonjiang.gitmoji-vscode 24 + # spgoding.datapack-language-server 25 + # superant.mc-dp-icons 26 + svelte.svelte-vscode 27 + ]; 28 + }; 29 + }
+10
home/config/codium/keybindings.json
··· 1 + [ 2 + { 3 + "key": "ctrl+s", 4 + "command": "-workbench.action.files.save" 5 + }, 6 + { 7 + "key": "ctrl+s", 8 + "command": "workbench.action.files.saveAll" 9 + } 10 + ]
+8
home/config/codium/settings.json
··· 1 + { 2 + "workbench.colorTheme": "Catppuccin Mocha", 3 + "workbench.iconTheme": "catppuccin-mocha", 4 + "editor.tabSize": 2, 5 + "nix.enableLanguageServer": true, 6 + "explorer.confirmDelete": false, 7 + "editor.formatOnSave": true 8 + }
+20
home/config/default.nix
··· 1 + { 2 + config, 3 + pkgs, 4 + globals, 5 + ... 6 + }: 7 + let 8 + dotfileFolder = "${config.home.homeDirectory}/dotfile"; 9 + configFolder = "${dotfileFolder}/home/config"; 10 + in 11 + { 12 + xdg.configFile."waypaper/config.ini".source = 13 + config.lib.file.mkOutOfStoreSymlink "${configFolder}/waypaper.ini"; 14 + home.file."Pictures/Wallpaper".source = 15 + config.lib.file.mkOutOfStoreSymlink "${configFolder}/wallpapers"; 16 + xdg.configFile."VSCodium/User/settings.json".source = 17 + config.lib.file.mkOutOfStoreSymlink "${configFolder}/codium/settings.json"; 18 + xdg.configFile."VSCodium/User/keybindings.json".source = 19 + config.lib.file.mkOutOfStoreSymlink "${configFolder}/codium/keybindings.json"; 20 + }
home/config/wallpapers/09_Troposphere.jpg

This is a binary file and will not be displayed.

home/config/wallpapers/12_paint.jpg

This is a binary file and will not be displayed.

home/config/wallpapers/18_AGiftFromtheStars.jpg

This is a binary file and will not be displayed.

home/config/wallpapers/L01_Oceanfront.jpg

This is a binary file and will not be displayed.

home/config/wallpapers/L03_PinwheelBay.jpg

This is a binary file and will not be displayed.

home/config/wallpapers/event_act1_1intro3.png

This is a binary file and will not be displayed.

home/config/wallpapers/event_act5_falling_reso_5.png

This is a binary file and will not be displayed.

home/config/wallpapers/falling_1920x1080.png

This is a binary file and will not be displayed.

home/config/wallpapers/folly_wlalaper.png

This is a binary file and will not be displayed.

home/config/wallpapers/lux_walpapere_v1.png

This is a binary file and will not be displayed.

home/config/wallpapers/lux_walpapere_v2.png

This is a binary file and will not be displayed.

home/config/wallpapers/madeline_bed.png

This is a binary file and will not be displayed.

home/config/wallpapers/red_and_yellow.jpg

This is a binary file and will not be displayed.

home/config/wallpapers/resolution_1920x1080.png

This is a binary file and will not be displayed.

home/config/wallpapers/sifintro_1_1920x1080.png

This is a binary file and will not be displayed.

home/config/wallpapers/sifintro_2_1920x1080.png

This is a binary file and will not be displayed.

home/config/wallpapers/sifintro_3_1920x1080.png

This is a binary file and will not be displayed.

home/config/wallpapers/sol_rue.jpg

This is a binary file and will not be displayed.

home/config/wallpapers/undertale_yellow.png

This is a binary file and will not be displayed.

+27
home/config/waypaper.ini
··· 1 + [Settings] 2 + language = en 3 + folder = ~/Pictures/Wallpaper 4 + wallpaper = ~/Pictures/Wallpaper/wallpapers/sifintro_2_1920x1080.png 5 + backend = swww 6 + monitors = All 7 + subfolders = True 8 + all_subfolders = True 9 + show_path_in_tooltip = True 10 + fill = fill 11 + sort = name 12 + color = #ffffff 13 + show_hidden = False 14 + show_gifs_only = False 15 + zen_mode = False 16 + post_command = 17 + number_of_columns = 3 18 + swww_transition_type = any 19 + swww_transition_step = 63 20 + swww_transition_angle = 0 21 + swww_transition_duration = 2 22 + swww_transition_fps = 60 23 + mpvpaper_sound = False 24 + mpvpaper_options = 25 + use_xdg_state = False 26 + stylesheet = /home/fantomitechno/.config/waypaper/style.css 27 +
+114
home/fastfetch/config/config.jsonc
··· 1 + { 2 + "$schema": "https://github.com/fastfetch-cli/fastfetch/raw/dev/doc/json_schema.json", 3 + "logo": { 4 + "source": "~/.config/fastfetch/logo/me_irl_but_foxboy.png", 5 + "height": 18 6 + }, 7 + "display": { 8 + "separator": " : " 9 + }, 10 + "modules": [ 11 + { 12 + "type": "custom", 13 + "format": "โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”" 14 + }, 15 + { 16 + "type": "chassis", 17 + "key": " ๓ฐ‡บ Chassis", 18 + "format": "{1} {2} {3}" 19 + }, 20 + { 21 + "type": "os", 22 + "key": " ๓ฐฃ‡ OS", 23 + "format": "{2}", 24 + "keyColor": "red" 25 + }, 26 + { 27 + "type": "kernel", 28 + "key": " ๎‰ฒ Kernel", 29 + "format": "{2}", 30 + "keyColor": "red" 31 + }, 32 + { 33 + "type": "packages", 34 + "key": " ๓ฐ— Packages", 35 + "keyColor": "green" 36 + }, 37 + { 38 + "type": "display", 39 + "key": " ๓ฐน Display", 40 + "format": "{1}x{2} @ {3}Hz [{7}]", 41 + "keyColor": "green" 42 + }, 43 + { 44 + "type": "terminal", 45 + "key": " ๏„  Terminal", 46 + "keyColor": "yellow" 47 + }, 48 + { 49 + "type": "wm", 50 + "key": " ๓ฑ—ƒ WM", 51 + "format": "{2}", 52 + "keyColor": "yellow" 53 + }, 54 + { 55 + "type": "custom", 56 + "format": "โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜" 57 + }, 58 + "break", 59 + { 60 + "type": "title", 61 + "key": " ๎ท…", 62 + "format": "{6} {7} {8}" 63 + }, 64 + { 65 + "type": "custom", 66 + "format": "โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”" 67 + }, 68 + { 69 + "type": "cpu", 70 + "format": "{1} @ {7}", 71 + "key": " ๏’ผ CPU", 72 + "keyColor": "blue" 73 + }, 74 + { 75 + "type": "gpu", 76 + "format": "{1} {2}", 77 + "key": " ๓ฐŠด GPU", 78 + "keyColor": "blue" 79 + }, 80 + { 81 + "type": "gpu", 82 + "format": "{3}", 83 + "key": " ๏€ฉ GPU Driver", 84 + "keyColor": "magenta" 85 + }, 86 + { 87 + "type": "memory", 88 + "key": " ๏‡€ Memory ", 89 + "keyColor": "magenta" 90 + }, 91 + { 92 + "type": "disk", 93 + "key": " ๓ฑฆŸ OS Age ", 94 + "folders": "/", 95 + "keyColor": "red", 96 + "format": "{days} days" 97 + }, 98 + { 99 + "type": "uptime", 100 + "key": " ๓ฑซ Uptime ", 101 + "keyColor": "red" 102 + }, 103 + { 104 + "type": "custom", 105 + "format": "โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜" 106 + }, 107 + { 108 + "type": "colors", 109 + "paddingLeft": 2, 110 + "symbol": "circle" 111 + }, 112 + "break" 113 + ] 114 + }
home/fastfetch/config/logo/foxboy_fac_chant.png

This is a binary file and will not be displayed.

home/fastfetch/config/logo/foxboy_in_da_forest.png

This is a binary file and will not be displayed.

home/fastfetch/config/logo/foxboy_in_the_sunset.png

This is a binary file and will not be displayed.

home/fastfetch/config/logo/foxboy_pan2.png

This is a binary file and will not be displayed.

home/fastfetch/config/logo/me_and_nalo.png

This is a binary file and will not be displayed.

home/fastfetch/config/logo/me_girl.png

This is a binary file and will not be displayed.

home/fastfetch/config/logo/me_girl3.png

This is a binary file and will not be displayed.

home/fastfetch/config/logo/me_irl_but_foxboy.png

This is a binary file and will not be displayed.

home/fastfetch/config/logo/me_irl_but_maid1.png

This is a binary file and will not be displayed.

+7
home/fastfetch/default.nix
··· 1 + { config, pkgs, globals, ... }: 2 + let 3 + dotfileFolder = "${config.home.homeDirectory}/dotfile"; 4 + fastfetchFolder = "${dotfileFolder}/home/fastfetch"; 5 + in { 6 + xdg.configFile."fastfetch".source = config.lib.file.mkOutOfStoreSymlink "${fastfetchFolder}/config"; 7 + }
+14
home/git.nix
··· 1 + { globals, ... }: 2 + 3 + { 4 + programs.git = { 5 + enable = true; 6 + settings = { 7 + user.name = globals.GitName; 8 + user.email = globals.GitEmail; 9 + init.defaultBranch = "main"; 10 + pull.rebase = true; 11 + color.ui = "auto"; 12 + }; 13 + }; 14 + }
+61
home/home.nix
··· 1 + { 2 + config, 3 + pkgs, 4 + globals, 5 + ... 6 + }: 7 + 8 + { 9 + home.stateVersion = "25.05"; 10 + home.homeDirectory = "/home/${globals.UserName}"; 11 + 12 + imports = [ 13 + ./config 14 + ./fastfetch 15 + ./niri 16 + ./waybar 17 + 18 + ./codium.nix 19 + ./git.nix 20 + ./terminal.nix 21 + ./wofi.nix 22 + ./zsh.nix 23 + ]; 24 + 25 + dconf.settings = { 26 + "org/gnome/desktop/interface" = { 27 + color-scheme = "prefer-dark"; 28 + }; 29 + }; 30 + gtk = { 31 + enable = true; 32 + theme.name = "Adwaita"; 33 + 34 + colorScheme = "dark"; 35 + }; 36 + qt = { 37 + enable = true; 38 + style.name = "adwaita"; 39 + }; 40 + home.pointerCursor = { 41 + enable = true; 42 + gtk.enable = true; 43 + package = pkgs.bibata-cursors; 44 + name = "Bibata-Modern-Amber"; 45 + size = 12; 46 + }; 47 + 48 + programs = { 49 + home-manager.enable = true; 50 + go.enable = true; 51 + zsh.enable = true; 52 + zoxide.enable = true; 53 + obs-studio.enable = true; 54 + obs-studio.plugins = [ pkgs.obs-studio-plugins.wlrobs ]; 55 + 56 + }; 57 + 58 + services.swww.enable = true; 59 + services.swaync.enable = true; 60 + 61 + }
+95
home/niri/config/config.kdl
··· 1 + include "input.kdl" 2 + include "window-rules.kdl" 3 + 4 + input { 5 + keyboard { 6 + xkb { 7 + layout "fr,us,es" 8 + } 9 + numlock 10 + } 11 + touchpad { 12 + tap 13 + disabled-on-external-mouse 14 + } 15 + 16 + mouse { 17 + } 18 + trackpoint { 19 + off 20 + } 21 + warp-mouse-to-focus 22 + focus-follows-mouse max-scroll-amount="15%" 23 + } 24 + 25 + output "eDP-1" { 26 + mode "1920x1080@60.049" 27 + scale 1 28 + } 29 + 30 + overview { 31 + zoom 0.25 32 + } 33 + 34 + layout { 35 + // Set gaps around windows in logical pixels. 36 + gaps 5 37 + 38 + focus-ring { 39 + // off 40 + width 1 41 + 42 + // active-color "#7fc8ff" 43 + // inactive-color "#505050" 44 + 45 + active-gradient from="#d06005" to="#9a09ba" angle=45 46 + inactive-gradient from="#505050" to="#808080" angle=45 relative-to="workspace-view" 47 + } 48 + 49 + // You can also add a border. It's similar to the focus ring, but always visible. 50 + border { 51 + off 52 + } 53 + 54 + // You can enable drop shadows for windows. 55 + shadow { 56 + on 57 + draw-behind-window true 58 + softness 50 59 + spread 5 60 + offset x=0 y=5 61 + color "#0007" 62 + } 63 + background-color "transparent" 64 + } 65 + 66 + hotkey-overlay { 67 + skip-at-startup 68 + } 69 + 70 + screenshot-path "~/Pictures/Screenshots/Screenshot from %Y-%m-%d %H-%M-%S.png" 71 + 72 + animations { 73 + // off 74 + } 75 + 76 + workspace "dsc" 77 + workspace "brow" 78 + workspace "term" 79 + workspace "4" 80 + workspace "5" 81 + workspace "6" 82 + workspace "stm" 83 + workspace "obs" 84 + workspace "oss" 85 + 86 + // This line starts waybar, a commonly used bar for Wayland compositors. 87 + spawn-at-startup "waybar" 88 + spawn-sh-at-startup "nm-applet --indicator" 89 + spawn-sh-at-startup "waypaper --random" 90 + spawn-sh-at-startup "swayidle -w timeout 600 'swaylock -f' timeout 900 'niri msg output power off' resume 'niri msg output power on' before-sleep 'swaylock -f'" 91 + 92 + layer-rule { 93 + place-within-backdrop true 94 + } 95 +
+129
home/niri/config/input.kdl
··· 1 + binds { 2 + Mod+Shift+Comma { show-hotkey-overlay; } 3 + Mod+Shift+O hotkey-overlay-title="toggle opacity" { toggle-window-rule-opacity; } 4 + Mod+Shift+W hotkey-overlay-title="random wallpaper" { spawn-sh "waypaper --random"; } 5 + 6 + Mod+W hotkey-overlay-title="toggle waybar" repeat=false { spawn-sh "pkill waybar || waybar"; } 7 + 8 + // Suggested binds for running programs: terminal, app launcher, screen locker. 9 + Mod+T hotkey-overlay-title="Open a Terminal " { spawn "kitty"; } 10 + Mod+B hotkey-overlay-title="Open a Browser " { spawn "brave"; } 11 + Mod+D hotkey-overlay-title="Open a Browser " { spawn "vesktop"; } 12 + Mod+E hotkey-overlay-title="Open a FileManager " { spawn "nautilus"; } 13 + Mod+M hotkey-overlay-title="Open Tidal " { spawn "tidal-hifi"; } 14 + Mod+C hotkey-overlay-title="Open a Text Editor " { spawn "codium"; } 15 + Mod+S hotkey-overlay-title="Open Steam " { spawn "steam"; } 16 + 17 + Mod+A hotkey-overlay-title="Run an Application" { spawn-sh "wofi --show drun"; } 18 + Super+L hotkey-overlay-title="Lock the Screen: swaylock" { spawn-sh "swaylock "; } 19 + 20 + // Example volume keys mappings for PipeWire & WirePlumber. 21 + // The allow-when-locked=true property makes them work even when the session is locked. 22 + // Using spawn-sh allows to pass multiple arguments together with the command. 23 + XF86AudioRaiseVolume allow-when-locked=true { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.05+"; } 24 + XF86AudioLowerVolume allow-when-locked=true { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.05-"; } 25 + XF86AudioMute allow-when-locked=true { spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"; } 26 + XF86AudioMicMute allow-when-locked=true { spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"; } 27 + F12 allow-when-locked=true { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.05+"; } 28 + F11 allow-when-locked=true { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.05-"; } 29 + F10 allow-when-locked=true { spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"; } 30 + F9 allow-when-locked=true { spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"; } 31 + 32 + // Media control keys using playerctl 33 + XF86AudioPlay allow-when-locked=true { spawn-sh "playerctl play-pause"; } 34 + XF86AudioNext allow-when-locked=true { spawn-sh "playerctl next"; } 35 + XF86AudioPrev allow-when-locked=true { spawn-sh "playerctl previous"; } 36 + XF86AudioStop allow-when-locked=true { spawn-sh "playerctl stop"; } 37 + 38 + XF86MonBrightnessUp allow-when-locked=true { spawn "brightnessctl" "--class=backlight" "set" "+10%"; } 39 + XF86MonBrightnessDown allow-when-locked=true { spawn "brightnessctl" "--class=backlight" "set" "10%-"; } 40 + 41 + Mod+TAB repeat=false { toggle-overview; } 42 + // custom window selector with dmenu TODO 43 + Mod+Shift+TAB repeat=false { spawn "~/.local/bin/nws.sh"; } 44 + 45 + Mod+Q repeat=false { close-window; } 46 + 47 + Mod+Left { focus-column-left; } 48 + Mod+Down { focus-window-or-workspace-down; } 49 + Mod+Up { focus-window-or-workspace-up; } 50 + Mod+Right { focus-column-right; } 51 + 52 + Mod+Ctrl+Left { move-column-left; } 53 + Mod+Ctrl+Down { move-window-down-or-to-workspace-down; } 54 + Mod+Ctrl+Up { move-window-up-or-to-workspace-up; } 55 + Mod+Ctrl+Right { move-column-right; } 56 + Mod+Ctrl+H { move-column-left; } 57 + Mod+Ctrl+L { move-column-right; } 58 + 59 + 60 + // Alternatively, there are commands to move just a single window: 61 + // Mod+Shift+Ctrl+Left { move-window-to-monitor-left; } 62 + // ... 63 + 64 + // And you can also move a whole workspace to another monitor: 65 + // Mod+Shift+Ctrl+Left { move-workspace-to-monitor-left; } 66 + // ... 67 + 68 + Mod+Page_Down { focus-workspace-down; } 69 + Mod+Page_Up { focus-workspace-up; } 70 + Mod+Ctrl+Page_Down { move-column-to-workspace-down; } 71 + Mod+Ctrl+Page_Up { move-column-to-workspace-up; } 72 + 73 + // The following binds move the focused window in and out of a column. 74 + // If the window is alone, they will consume it into the nearby column to the side. 75 + // If the window is already in a column, they will expel it out. 76 + Mod+Alt+Left { consume-or-expel-window-left; } 77 + Mod+Alt+Right { consume-or-expel-window-right; } 78 + Mod+Alt+Down { consume-window-into-column; } 79 + Mod+Alt+Up { expel-window-from-column; } 80 + 81 + Mod+R { switch-preset-column-width; } 82 + // Cycling through the presets in reverse order is also possible. 83 + // Mod+R { switch-preset-column-width-back; } 84 + Mod+Shift+R { switch-preset-window-height; } 85 + Mod+Ctrl+R { reset-window-height; } 86 + Mod+F { maximize-column; } 87 + Mod+Shift+F { fullscreen-window; } 88 + 89 + // Expand the focused column to space not taken up by other fully visible columns. 90 + // Makes the column "fill the rest of the space". 91 + Mod+Ctrl+F { expand-column-to-available-width; } 92 + 93 + Mod+Shift+C { center-column; } 94 + 95 + // Center all fully visible columns on screen. 96 + Mod+Ctrl+C { center-visible-columns; } 97 + 98 + // Finer width adjustments. 99 + // This command can also: 100 + // * set width in pixels: "1000" 101 + // * adjust width in pixels: "-5" or "+5" 102 + // * set width as a percentage of screen width: "25%" 103 + // * adjust width as a percentage of screen width: "-10%" or "+10%" 104 + // Pixel sizes use logical, or scaled, pixels. I.e. on an output with scale 2.0, 105 + // set-column-width "100" will make the column occupy 200 physical screen pixels. 106 + Mod+Shift+Equal { set-column-width "-10%"; } 107 + Mod+Equal { set-column-width "+10%"; } 108 + 109 + Mod+V { toggle-window-floating; } 110 + 111 + Print { screenshot; } 112 + Ctrl+Print { screenshot-screen; } 113 + Alt+Print { screenshot-window; } 114 + 115 + // Applications such as remote-desktop clients and software KVM switches may 116 + // request that niri stops processing the keyboard shortcuts defined here 117 + // so they may, for example, forward the key presses as-is to a remote machine. 118 + // It's a good idea to bind an escape hatch to toggle the inhibitor, 119 + // so a buggy application can't hold your session hostage. 120 + // 121 + // The allow-inhibiting=false property can be applied to other binds as well, 122 + // which ensures niri always processes them, even when an inhibitor is active. 123 + // Mod+Escape allow-inhibiting=false { toggle-keyboard-shortcuts-inhibit; } 124 + 125 + Mod+Shift+E { quit; } 126 + Ctrl+Alt+Delete { quit; } 127 + Mod+Escape { spawn-sh "wlogout"; } 128 + Mod+Shift+P { power-off-monitors; } 129 + }
+64
home/niri/config/window-rules.kdl
··· 1 + window-rule { 2 + match title="Picture in picture" 3 + open-floating true 4 + default-floating-position x=100 y=100 relative-to="bottom-right" 5 + tiled-state true 6 + } 7 + 8 + window-rule { 9 + match app-id=r#"obs"# 10 + open-on-workspace "obs" 11 + open-maximized true 12 + } 13 + 14 + window-rule { 15 + match app-id=r#"steam"# 16 + open-on-workspace "stm" 17 + } 18 + 19 + window-rule { 20 + match app-id=r#"tidal"# 21 + open-on-workspace "oss" 22 + } 23 + 24 + window-rule { 25 + match app-id=r#"^vesktop$"# 26 + open-on-workspace "dsc" 27 + open-maximized true 28 + } 29 + 30 + window-rule { 31 + match app-id=r#"brave"# 32 + open-maximized true 33 + open-on-workspace "brow" 34 + } 35 + 36 + window-rule { 37 + match app-id="codium" 38 + open-maximized true 39 + } 40 + 41 + window-rule { 42 + match app-id=r#"kitty"# 43 + open-maximized true 44 + opacity 0.65 45 + open-on-workspace "term" 46 + } 47 + 48 + window-rule { 49 + match app-id="nm-connection-editor" 50 + open-floating true 51 + default-floating-position x=660 y=335 52 + } 53 + 54 + window-rule { 55 + match app-id="org.pulseaudio.pavucontrol" 56 + open-floating true 57 + default-column-width { fixed 702; } 58 + default-window-height { fixed 496; } 59 + } 60 + 61 + window-rule { 62 + geometry-corner-radius 6 63 + clip-to-geometry true 64 + }
+9
home/niri/default.nix
··· 1 + { config, pkgs, globals, ... }: 2 + let 3 + dotfileFolder = "${config.home.homeDirectory}/dotfile"; 4 + niriFolder = "${dotfileFolder}/home/niri"; 5 + in { 6 + xdg.configFile."niri".source = config.lib.file.mkOutOfStoreSymlink "${niriFolder}/config"; 7 + xdg.configFile."swaylock/config".source = config.lib.file.mkOutOfStoreSymlink "${niriFolder}/swaylock.conf"; 8 + home.file.".local/bin/nws.sh".source = config.lib.file.mkOutOfStoreSymlink "${niriFolder}/nws.sh"; 9 + }
+15
home/niri/nws.sh
··· 1 + #!/usr/bin/env bash 2 + 3 + # Query windows, sort by app_id, and format for wofi with icons 4 + win=$(niri msg -j windows | jq -r '.[] | "\(.app_id)\t\(.title)\t\(.id)"' \ 5 + | sort -k1,1 \ 6 + | awk -F'\t' '{print $1 " - " $2}' \ 7 + | wofi -d --prompt "Switch window:") 8 + 9 + # Extract ID (second tab field) 10 + id=$(echo "$win" | awk -F'\t' '{print $2}') 11 + 12 + # Focus window 13 + if [ -n "$id" ]; then 14 + niri msg action focus-window --id "$id" 15 + fi
+38
home/niri/swaylock.conf
··· 1 + daemonize 2 + show-failed-attempts 3 + clock 4 + screenshot 5 + effect-blur=13x13 6 + effect-vignette=0.5:0.5 7 + color=6272A4 8 + font="Inter" 9 + indicator 10 + indicator-radius=200 11 + indicator-thickness=20 12 + line-color=282A36 13 + ring-color=BD93F9 14 + inside-color=282A36 15 + key-hl-color=50FA7B 16 + separator-color=00000000 17 + text-color=F8F8F2 18 + text-caps-lock-color="" 19 + line-ver-color=BD93F9 20 + ring-ver-color=BD93F9 21 + inside-ver-color=282A36 22 + text-ver-color=8BE9FD 23 + ring-wrong-color=FF5555 24 + text-wrong-color=FF5555 25 + inside-wrong-color=282A36 26 + inside-clear-color=282A36 27 + text-clear-color=8BE9FD 28 + ring-clear-color=8BE9FD 29 + line-clear-color=8BE9FD 30 + line-wrong-color=282A36 31 + bs-hl-color=8BE9FD 32 + grace=2 33 + grace-no-mouse 34 + grace-no-touch 35 + datestr=%a, %B %e 36 + timestr=%I:%M %p 37 + fade-in=0.4 38 + ignore-empty-password
+5
home/terminal.nix
··· 1 + { 2 + programs.kitty = { 3 + enable = true; 4 + }; 5 + }
+217
home/waybar/config/config
··· 1 + { 2 + "layer": "top", 3 + "position": "top", 4 + 5 + "modules-left": [ 6 + "niri/workspaces", 7 + "niri/window", 8 + ], 9 + 10 + "modules-center": [ 11 + "clock", 12 + ], 13 + 14 + "modules-right": [ 15 + "mpris", 16 + "group/tray-expander", 17 + "battery", 18 + "custom/exit" 19 + ], 20 + 21 + "group/tray-expander": { 22 + "orientation": "inherit", 23 + "drawer": { 24 + "click-to-reveal": true, 25 + "transition-right-to-left": true, 26 + "transition-duration": 600, 27 + "children-class": "tray-group-item" 28 + }, 29 + "modules": [ 30 + "custom/expand-icon", 31 + "pulseaudio", 32 + "disk", 33 + "memory", 34 + "cpu", 35 + "network", 36 + "tray", 37 + "custom/notification", 38 + ] 39 + }, 40 + "niri/workspaces": { 41 + "format": "{name}", 42 + "current-only": true, 43 + }, 44 + "wlr/taskbar": { 45 + "tooltip-format": "{title} | {app_id}", 46 + }, 47 + 48 + "clock": { 49 + "format": "{:%I:%M %p} ๏€— ", 50 + "interval": 1, 51 + "format-alt": "{:%a %m/%d/%y | %I:%M:%S %p} ๏€— ", 52 + "tooltip-format": "<tt><small>{calendar}</small></tt>", 53 + "calendar": { 54 + "mode" : "year", 55 + "mode-mon-col" : 3, 56 + "on-scroll" : 1, 57 + "format": { 58 + "months": "<span color='#ffead3'><b>{}</b></span>", 59 + "days": "<span color='#ecc6d9'><b>{}</b></span>", 60 + "weeks": "<span color='#99ffdd'><b>W{}</b></span>", 61 + "weekdays": "<span color='#ffcc66'><b>{}</b></span>", 62 + "today": "<span color='#ff6699'><b><u>{}</u></b></span>" 63 + } 64 + }, 65 + "actions": { 66 + "on-click-right": "mode", 67 + "on-scroll-up": "tz_up", 68 + "on-scroll-down": "tz_down", 69 + "on-scroll-up": "shift_up", 70 + "on-scroll-down": "shift_down" 71 + } 72 + }, 73 + 74 + "niri/window": { 75 + "separate-outputs": false 76 + }, 77 + 78 + "memory": { 79 + "interval": 5, 80 + "format": "๏‡€ {}%", 81 + "format-alt": "๏‡€ {used:0.1f}G/{total:0.1f}G ๏ƒ‰", 82 + "tooltip": true 83 + }, 84 + 85 + "cpu": { 86 + "interval": 5, 87 + "format": "๏‹› {usage:2}%", 88 + "tooltip": true, 89 + "on-click": "kitty -e btop" 90 + }, 91 + 92 + "disk": { 93 + "format": "๏€™ {free}", 94 + "tooltip": true 95 + // "on-click": "kitty -e sh -c df -h ; read" 96 + }, 97 + 98 + "network": { 99 + "format-icons": [ 100 + "๓ฐคฏ", 101 + "๓ฐคŸ", 102 + "๓ฐคข", 103 + "๓ฐคฅ", 104 + "๓ฐคจ" 105 + ], 106 + "format-ethernet": "๏ฃ {bandwidthDownBits}", 107 + "format-wifi": "๏ฃ {bandwidthDownBits}", 108 + "format-disconnected": "๓ฐคฎ", 109 + "tooltip": false 110 + }, 111 + 112 + 113 + 114 + "custom/expand-icon": { 115 + "format": "๏‚‹", 116 + "tooltip": false 117 + }, 118 + 119 + "tray": { 120 + "icon-size": 12, 121 + "spacing": 12 122 + }, 123 + 124 + "pulseaudio": { 125 + "format": "{icon} {volume}% {format_source}", 126 + "format-bluetooth": "{volume}% {icon}๏Š” {format_source}", 127 + "format-bluetooth-muted": "๏šฉ {icon}๏Š” {format_source}", 128 + "format-muted": "๏šฉ {format_source}", 129 + "format-source": "๏„ฐ {volume}%", 130 + "format-source-muted": "๏„ฑ", 131 + "format-icons": { 132 + "headphone": "๏€ฅ", 133 + "hands-free": "๏–", 134 + "headset": "๏–", 135 + "phone": "๏‚•", 136 + "portable": "๏‚•", 137 + "car": "๏†น", 138 + "default": [ 139 + "๏€ฆ", 140 + "๏€ง", 141 + "๏€จ" 142 + ] 143 + }, 144 + "on-click": "pavucontrol" 145 + }, 146 + 147 + "custom/exit": { 148 + "tooltip": false, 149 + "format": "โป", 150 + "on-click": "sleep 0.1 && wlogout" 151 + }, 152 + 153 + "custom/startmenu": { 154 + "tooltip": false, 155 + "format": "๏‹œ", 156 + "on-click": "wofi --show drun" 157 + }, 158 + 159 + "custom/notification": { 160 + "tooltip": false, 161 + "format": "{icon}", 162 + "format-icons": { 163 + "notification": "๏ƒณ<span foreground='red'><sup>๏‘„</sup></span>", 164 + "none": "๏ƒณ", 165 + "dnd-notification": "๏‡ถ<span foreground='red'><sup>๏‘„</sup></span>", 166 + "dnd-none": "๏‡ถ", 167 + "inhibited-notification": "๏ƒณ<span foreground='red'><sup>๏‘„</sup></span>", 168 + "inhibited-none": "๏ƒณ", 169 + "dnd-inhibited-notification": "๏‡ถ<span foreground='red'><sup>๏‘„</sup></span>", 170 + "dnd-inhibited-none": "๏‡ถ" 171 + }, 172 + "return-type": "json", 173 + "exec-if": "which swaync-client", 174 + "exec": "swaync-client -swb", 175 + "on-click": "swaync-client -t -sw", 176 + "on-click-right": "swaync-client -d -sw", 177 + "escape": true 178 + }, 179 + 180 + "battery": { 181 + "states": { 182 + "warning": 30, 183 + "critical": 15 184 + }, 185 + "format": "{icon} {capacity}%", 186 + "format-charging": "๓ฐ‚„ {capacity}%", 187 + "format-plugged": "๓ฑ˜– {capacity}%", 188 + "format-icons": [ 189 + "๓ฐบ", 190 + "๓ฐป", 191 + "๓ฐผ", 192 + "๓ฐฝ", 193 + "๓ฐพ", 194 + "๓ฐฟ", 195 + "๓ฐ‚€", 196 + "๓ฐ‚", 197 + "๓ฐ‚‚", 198 + "๓ฐน" 199 + ], 200 + "on-click": "", 201 + "tooltip": false 202 + }, 203 + 204 + "mpris": { 205 + "format": "{player_icon} {dynamic}", 206 + "format-paused": "{status_icon} <i>{dynamic}</i>", 207 + "player-icons": { 208 + "default": "โ–ถ", 209 + "mpv": "๐ŸŽต" 210 + }, 211 + "status-icons": { 212 + "paused": "โธ" 213 + }, 214 + "ignored-players": [ "chromium" ], 215 + "max-length": 60 216 + } 217 + }
+70
home/waybar/config/style.css
··· 1 + /* === Global Styles === */ 2 + * { 3 + font-size: 12px; 4 + font-family: "JetBrainsMono Nerd Font Propo"; 5 + font-weight: bold; 6 + } 7 + 8 + /* === Waybar Window === */ 9 + window#waybar { 10 + background: rgba(26, 27, 38, 0); 11 + color: #E6B673; 12 + } 13 + 14 + #workspaces button { 15 + margin: 0px 3px; 16 + padding: 0px 3px; 17 + border: 0; 18 + border-radius: 10px; 19 + } 20 + 21 + #workspaces button:hover, 22 + #workspaces button.active { 23 + border: 1px solid transparent; 24 + color: #E6E1CF; 25 + } 26 + 27 + /* === Module Defaults === */ 28 + #workspaces, 29 + #window, 30 + #memory, 31 + #clock, 32 + #idle_inhibitor, 33 + #cpu, 34 + #disk, 35 + #battery, 36 + #network, 37 + #tray, 38 + #pulseaudio, 39 + #custom-notification, 40 + #custom-startmenu, 41 + #custom-exit, 42 + #group-tray-expander, 43 + #custom-expand-icon, 44 + #mpris { 45 + border-radius: 6px; 46 + margin: 0px 1px; 47 + padding: 0px 6px; 48 + background: #000000; 49 + } 50 + 51 + /* === Individual Modules === */ 52 + #memory { color: #E6B673; } 53 + #clock { color: #B8CC52; } 54 + #cpu { color: #F3F4F5; } 55 + #disk { color: #E6B673; } 56 + #network { color: #FF8F40; } 57 + #tray { color: #E6E1CF; } 58 + #pulseaudio { color: #59C2FF; } 59 + #custom-notification { color: #95E6CB; } 60 + #custom-startmenu { color: #D2A6FF; } 61 + #custom-expand-icon { color: #59C2FF; } 62 + #mpris { color: #FF8F40; } 63 + #idle_inhibitor { color: #FF8F40; } 64 + #battery { color: #F07178; } 65 + #custom-exit { color: #D2A6FF; } 66 + 67 + /* === Tray === */ 68 + .tray-group-item { 69 + padding: 0 4px; 70 + }
+7
home/waybar/default.nix
··· 1 + { config, pkgs, lib, ... }: 2 + let 3 + dotfileFolder = "${config.home.homeDirectory}/dotfile"; 4 + waybarFolder = "${dotfileFolder}/home/waybar"; 5 + in { 6 + xdg.configFile."waybar".source = config.lib.file.mkOutOfStoreSymlink "${waybarFolder}/config"; 7 + }
+71
home/wofi.nix
··· 1 + { config, pkgs, ... }: 2 + 3 + { 4 + programs.wofi = { 5 + enable = true; 6 + settings = { 7 + content_halign = "fill"; 8 + insensitive = true; 9 + allow_images = true; 10 + image_size = 30; 11 + allow_markup = true; 12 + width = 400; 13 + term = "kitty"; 14 + dmenu-parse_action=true; 15 + }; 16 + style = '' 17 + window { 18 + margin: 0px; 19 + border: 1px solid #005bf8ff; 20 + background-color: #282a36; 21 + } 22 + 23 + #input { 24 + margin: 5px; 25 + border: none; 26 + color: #f8f8f2; 27 + background-color: #44475a; 28 + } 29 + 30 + #inner-box { 31 + margin: 5px; 32 + border: none; 33 + background-color: #282a36; 34 + } 35 + 36 + #outer-box { 37 + margin: 5px; 38 + border: none; 39 + background-color: #282a36; 40 + } 41 + 42 + #scroll { 43 + margin: 0px; 44 + border: none; 45 + } 46 + 47 + #text { 48 + margin: 5px; 49 + border: none; 50 + color: #f8f8f2; 51 + } 52 + 53 + #entry.activatable #text { 54 + color: #282a36; 55 + } 56 + 57 + #entry > * { 58 + color: #f8f8f2; 59 + } 60 + 61 + #entry:selected { 62 + background-color: #44475a; 63 + } 64 + 65 + #entry:selected #text { 66 + font-weight: bold; 67 + } 68 + 69 + ''; 70 + }; 71 + }
+21
home/zsh.nix
··· 1 + { config, pkgs, ... }: 2 + 3 + { 4 + programs.zsh = { 5 + enable = true; 6 + enableCompletion = true; 7 + 8 + shellAliases = { 9 + grep = "grep --color=auto"; 10 + cat = "bat"; 11 + }; 12 + 13 + initContent = '' 14 + export PATH="$HOME/.local/bin:$PATH" 15 + export GOPATH=$HOME/go 16 + export PATH="$PATH:$HOME/go/bin" 17 + eval "$(starship init zsh)" 18 + eval "fastfetch" 19 + ''; 20 + }; 21 + }
+103
hosts/common/packages.nix
··· 1 + { pkgs, ... }: 2 + 3 + { 4 + environment.systemPackages = with pkgs; [ 5 + # terminal stuff 6 + kitty 7 + fastfetch 8 + btop 9 + starship 10 + wget 11 + curl 12 + bat 13 + git 14 + glib 15 + lazygit 16 + lazydocker 17 + go 18 + fastfetch 19 + docker 20 + docker-compose 21 + gcc 22 + gnumake 23 + duf 24 + 25 + # media 26 + ffmpeg 27 + playerctl 28 + obs-studio 29 + tidal-hifi 30 + vlc 31 + 32 + # DE stuff 33 + waybar-mpris 34 + waypaper 35 + swww 36 + waybar 37 + networkmanagerapplet 38 + swaylock-effects 39 + swayidle 40 + swaynotificationcenter 41 + wl-clipboard-rs 42 + wlogout 43 + wofi 44 + adw-gtk3 45 + papirus-icon-theme 46 + ly 47 + grub2 48 + xwayland 49 + xwayland-satellite 50 + jq 51 + xdg-desktop-portal-wlr 52 + 53 + # apps 54 + vesktop 55 + nautilus 56 + steam 57 + bitwarden-desktop 58 + proton-pass 59 + 60 + # network :3 61 + openvpn 62 + tailscale 63 + 64 + # idk I'll find out later 65 + nh 66 + gopls 67 + musl 68 + pavucontrol 69 + polkit 70 + nixfmt 71 + ]; 72 + 73 + xdg.portal.wlr.enable = true; 74 + 75 + fonts = { 76 + fontconfig.enable = true; 77 + packages = with pkgs; [ 78 + nerd-fonts.jetbrains-mono 79 + noto-fonts-cjk-sans 80 + ]; 81 + }; 82 + 83 + services = { 84 + displayManager.enable = true; 85 + displayManager.ly.enable = true; 86 + # services.openssh.enable = true; 87 + tailscale.enable = true; 88 + }; 89 + 90 + programs = { 91 + nix-ld.enable = true; 92 + niri.enable = true; 93 + xwayland.enable = true; 94 + zsh.enable = true; 95 + 96 + steam = { 97 + enable = true; 98 + remotePlay.openFirewall = true; 99 + dedicatedServer.openFirewall = true; 100 + }; 101 + gamemode.enable = true; 102 + }; 103 + }
+82
hosts/laptop/configuration.nix
··· 1 + { 2 + config, 3 + pkgs, 4 + globals, 5 + inputs, 6 + ... 7 + }: 8 + 9 + { 10 + imports = [ 11 + ./hardware-configuration.nix 12 + ../common/packages.nix 13 + ]; 14 + 15 + nixpkgs.config.allowUnfree = true; 16 + 17 + # Bootloader 18 + boot.loader = { 19 + systemd-boot.enable = false; 20 + grub.enable = true; 21 + grub.device = "/dev/nvme0n1"; 22 + grub.minegrub-theme = { 23 + enable = true; 24 + splash = "NixOS for the win!"; 25 + }; 26 + grub.useOSProber = true; 27 + efi.canTouchEfiVariables = true; 28 + }; 29 + boot.kernelPackages = pkgs.linuxPackages; 30 + 31 + networking = { 32 + nameservers = [ "1.1.1.1" "9.9.9.9" ]; 33 + hostName = globals.HostName; 34 + networkmanager.enable = true; 35 + }; 36 + 37 + time.timeZone = "Europe/Paris"; 38 + i18n.defaultLocale = "en_US.UTF-8"; 39 + 40 + services.xserver.xkb = { 41 + layout = "fr"; 42 + variant = ""; 43 + }; 44 + 45 + # Configure console keymap 46 + console.keyMap = "fr"; 47 + 48 + users.users.${globals.UserName} = { 49 + isNormalUser = true; 50 + description = "Simon Renoux"; 51 + extraGroups = [ 52 + "wheel" 53 + "networkmanager" 54 + "wireshark" 55 + "docker" 56 + ]; 57 + packages = with pkgs; [ 58 + brave 59 + ]; 60 + shell = pkgs.zsh; 61 + }; 62 + 63 + security.polkit.enable = true; 64 + virtualisation.docker.enable = true; 65 + 66 + environment.variables = { 67 + LD_LIBRARY_PATH = "/run/opengl-driver/lib"; 68 + ELECTRON_OZONE_PLATFORM_HINT = "wayland"; 69 + OZONE_PLATFORM = "wayland"; 70 + GDK_BACKEND = "wayland"; 71 + }; 72 + 73 + nix.settings.experimental-features = [ 74 + "nix-command" 75 + "flakes" 76 + ]; 77 + 78 + # networking.firewall.allowedTCPPorts = [ ... ]; 79 + # networking.firewall.allowedUDPPorts = [ ... ]; 80 + # networking.firewall.enable = false; 81 + system.stateVersion = "25.11"; 82 + }
+25
hosts/laptop/hardware-configuration.nix
··· 1 + # Do not modify this file! It was generated by โ€˜nixos-generate-configโ€™ 2 + # and may be overwritten by future invocations. Please make changes 3 + # to /etc/nixos/configuration.nix instead. 4 + { config, lib, pkgs, modulesPath, ... }: 5 + 6 + { 7 + imports = 8 + [ (modulesPath + "/installer/scan/not-detected.nix") 9 + ]; 10 + 11 + boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usb_storage" "sd_mod" "rtsx_pci_sdmmc" ]; 12 + boot.initrd.kernelModules = [ ]; 13 + boot.kernelModules = [ "kvm-intel" ]; 14 + boot.extraModulePackages = [ ]; 15 + 16 + fileSystems."/" = 17 + { device = "/dev/disk/by-uuid/7f4fa576-9bed-4a84-9088-9ff55c839f94"; 18 + fsType = "ext4"; 19 + }; 20 + 21 + swapDevices = [ ]; 22 + 23 + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; 24 + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; 25 + }