This commit is contained in:
Hadi 2024-03-11 19:36:05 +01:00
commit dc9c7c8461
48 changed files with 1952 additions and 0 deletions

306
flake.lock Normal file
View File

@ -0,0 +1,306 @@
{
"nodes": {
"devshell": {
"inputs": {
"flake-utils": "flake-utils",
"nixpkgs": [
"nixvim",
"nixpkgs"
]
},
"locked": {
"lastModified": 1708939976,
"narHash": "sha256-O5+nFozxz2Vubpdl1YZtPrilcIXPcRAjqNdNE8oCRoA=",
"owner": "numtide",
"repo": "devshell",
"rev": "5ddecd67edbd568ebe0a55905273e56cc82aabe3",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "devshell",
"type": "github"
}
},
"flake-compat": {
"locked": {
"lastModified": 1696426674,
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
"revCount": 57,
"type": "tarball",
"url": "https://api.flakehub.com/f/pinned/edolstra/flake-compat/1.0.1/018afb31-abd1-7bff-a5e4-cff7e18efb7a/source.tar.gz"
},
"original": {
"type": "tarball",
"url": "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz"
}
},
"flake-compat_2": {
"flake": false,
"locked": {
"lastModified": 1696426674,
"narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "0f9255e01c2351cc7d116c072cb317785dd33b33",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"flake-parts": {
"inputs": {
"nixpkgs-lib": [
"nixvim",
"nixpkgs"
]
},
"locked": {
"lastModified": 1709336216,
"narHash": "sha256-Dt/wOWeW6Sqm11Yh+2+t0dfEWxoMxGBvv3JpIocFl9E=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "f7b3c975cf067e56e7cda6cb098ebe3fb4d74ca2",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "flake-parts",
"type": "github"
}
},
"flake-utils": {
"inputs": {
"systems": "systems"
},
"locked": {
"lastModified": 1701680307,
"narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "4022d587cbbfd70fe950c1e2083a02621806a725",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flake-utils_2": {
"inputs": {
"systems": "systems_2"
},
"locked": {
"lastModified": 1701680307,
"narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "4022d587cbbfd70fe950c1e2083a02621806a725",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"gitignore": {
"inputs": {
"nixpkgs": [
"nixvim",
"pre-commit-hooks",
"nixpkgs"
]
},
"locked": {
"lastModified": 1703887061,
"narHash": "sha256-gGPa9qWNc6eCXT/+Z5/zMkyYOuRZqeFZBDbopNZQkuY=",
"owner": "hercules-ci",
"repo": "gitignore.nix",
"rev": "43e1aa1308018f37118e34d3a9cb4f5e75dc11d5",
"type": "github"
},
"original": {
"owner": "hercules-ci",
"repo": "gitignore.nix",
"type": "github"
}
},
"home-manager": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1710062421,
"narHash": "sha256-FiCNRfyUgJOLYIokLiFsfI7B+Zn9HDnOzFR3uVr5qsQ=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "36f873dfc8e2b6b89936ff3e2b74803d50447e0a",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "home-manager",
"type": "github"
}
},
"home-manager_2": {
"inputs": {
"nixpkgs": [
"nixvim",
"nixpkgs"
]
},
"locked": {
"lastModified": 1709988192,
"narHash": "sha256-qxwIkl85P0I1/EyTT+NJwzbXdOv86vgZxcv4UKicjK8=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "b0b0c3d94345050a7f86d1ebc6c56eea4389d030",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "home-manager",
"type": "github"
}
},
"nix-darwin": {
"inputs": {
"nixpkgs": [
"nixvim",
"nixpkgs"
]
},
"locked": {
"lastModified": 1709771483,
"narHash": "sha256-Hjzu9nCknHLQvhdaRFfCEprH0o15KcaNu1QDr3J88DI=",
"owner": "lnl7",
"repo": "nix-darwin",
"rev": "550340062c16d7ef8c2cc20a3d2b97bcd3c6b6f6",
"type": "github"
},
"original": {
"owner": "lnl7",
"repo": "nix-darwin",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1709961763,
"narHash": "sha256-6H95HGJHhEZtyYA3rIQpvamMKAGoa8Yh2rFV29QnuGw=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "3030f185ba6a4bf4f18b87f345f104e6a6961f34",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixvim": {
"inputs": {
"devshell": "devshell",
"flake-compat": "flake-compat",
"flake-parts": "flake-parts",
"home-manager": "home-manager_2",
"nix-darwin": "nix-darwin",
"nixpkgs": [
"nixpkgs"
],
"pre-commit-hooks": "pre-commit-hooks"
},
"locked": {
"lastModified": 1710016565,
"narHash": "sha256-GoNm8bTT2YjZwdS0jcF0u2mTb8TYDDVyl8vgGICaS8I=",
"owner": "nix-community",
"repo": "nixvim",
"rev": "fb897e22e31f4d29766d94cea3df4aaf008c095e",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nixvim",
"type": "github"
}
},
"pre-commit-hooks": {
"inputs": {
"flake-compat": "flake-compat_2",
"flake-utils": "flake-utils_2",
"gitignore": "gitignore",
"nixpkgs": [
"nixvim",
"nixpkgs"
],
"nixpkgs-stable": [
"nixvim",
"nixpkgs"
]
},
"locked": {
"lastModified": 1708018599,
"narHash": "sha256-M+Ng6+SePmA8g06CmUZWi1AjG2tFBX9WCXElBHEKnyM=",
"owner": "cachix",
"repo": "pre-commit-hooks.nix",
"rev": "5df5a70ad7575f6601d91f0efec95dd9bc619431",
"type": "github"
},
"original": {
"owner": "cachix",
"repo": "pre-commit-hooks.nix",
"type": "github"
}
},
"root": {
"inputs": {
"home-manager": "home-manager",
"nixpkgs": "nixpkgs",
"nixvim": "nixvim"
}
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"systems_2": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
}
},
"root": "root",
"version": 7
}

35
flake.nix Normal file
View File

@ -0,0 +1,35 @@
{
description = "NixOS configuration";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
nixvim = {
url = "github:nix-community/nixvim";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = inputs@{ nixpkgs, home-manager, nixvim, ... }: {
nixosConfigurations = {
hadi = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
./nixos/configuration.nix
./hadi
./hosts
home-manager.nixosModules.home-manager
{
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
home-manager.users.hadi = import ./home/home.nix;
home-manager.extraSpecialArgs = { inherit inputs; };
}
];
};
};
};
}

18
hadi/app.nix Normal file
View File

@ -0,0 +1,18 @@
{ pkgs, ... }: {
environment.systemPackages = with pkgs; [
firefox
nextcloud-client
obsidian
chromium
swappy
hyprpicker
discord
imv
spotify
];
programs.thunar.enable = true;
nixpkgs.overlays = [
(final: prev: { qutebrowser = prev.qutebrowser.override { enableWideVine = true; }; })
];
}

10
hadi/cli.nix Normal file
View File

@ -0,0 +1,10 @@
{ pkgs, ... }: {
environment.systemPackages = with pkgs; [
ranger
fd
lazygit
tree-sitter
btop
bitwarden-cli
];
}

9
hadi/default.nix Normal file
View File

@ -0,0 +1,9 @@
{
imports = [
./app.nix
./cli.nix
./dev.nix
./utils.nix
./font.nix
];
}

14
hadi/dev.nix Normal file
View File

@ -0,0 +1,14 @@
{ pkgs, ... }: {
environment.systemPackages = with pkgs; [
go
cargo
nodejs
python3
];
programs.nix-ld.enable = true;
programs.nix-ld.libraries = with pkgs; [
stylua
lua-language-server
];
}

9
hadi/font.nix Normal file
View File

@ -0,0 +1,9 @@
{ pkgs, ... }: {
fonts.packages = with pkgs; [
(nerdfonts.override { fonts = [ "FiraCode" ]; })
#inputs.apple-fonts.packages.${pkgs.system}.sf-pro-nerd
#inputs.apple-fonts.packages.${pkgs.system}.sf-mono-nerd
];
}

17
hadi/utils.nix Normal file
View File

@ -0,0 +1,17 @@
{ pkgs, ... }: {
environment.systemPackages = with pkgs; [
unzip
ripgrep
wget
libva
qt5ct
stow
blueman
gcc
peaclock
alejandra
libnotify
xdg_utils
tldr
];
}

76
home/dunst/default.nix Normal file
View File

@ -0,0 +1,76 @@
{ config, lib, pkgs, ... }:
{
services.dunst = {
enable = true;
iconTheme = {
name = "Papirus-Dark";
package = pkgs.papirus-icon-theme;
};
settings = {
global = {
rounded = "yes";
origin = "top-right";
monitor = "0";
alignment = "left";
vertical_alignment = "center";
width = "400";
height = "400";
scale = 0;
gap_size = 0;
progress_bar = true;
transparency = 0;
text_icon_padding = 0;
separator_color = "frame";
sort = "yes";
idle_threshold = 120;
line_height = 0;
markup = "full";
show_age_threshold = 60;
ellipsize = "middle";
ignore_newline = "no";
stack_duplicates = true;
sticky_history = "yes";
history_length = 20;
always_run_script = true;
corner_radius = 10;
follow = "mouse";
font = "Source Sans Pro 10";
format = "<b>%s</b>\\n%b"; #format = "<span foreground='#f3f4f5'><b>%s %p</b></span>\n%b"
frame_color = "#232323";
frame_width = 1;
offset = "15x15";
horizontal_padding = 10;
icon_position = "left";
indicate_hidden = "yes";
min_icon_size = 0;
max_icon_size = 64;
mouse_left_click = "do_action, close_current";
mouse_middle_click = "close_current";
mouse_right_click = "close_all";
padding = 10;
plain_text = "no";
separator_height = 2;
show_indicators = "yes";
shrink = "no";
word_wrap = "yes";
browser = "/usr/bin/env librewolf -new-tab";
};
fullscreen_delay_everything = {fullscreen = "delay";};
urgency_critical = {
background = "#d64e4e";
foreground = "#f0e0e0";
};
urgency_low = {
background = "#232323";
foreground = "#2596be";
};
urgency_normal = {
background = "#1e1e2a";
foreground = "#2596be";
};
};
};
}

12
home/git/default.nix Normal file
View File

@ -0,0 +1,12 @@
{
programs.git = {
enable = true;
userName = "Hadi";
userEmail = "112569860+anotherhadi@users.noreply.github.com";
extraConfig = {
init.defaultBranch = "main";
# Automatically track remote branch
push.autoSetupRemote = true;
};
};
}

25
home/home.nix Normal file
View File

@ -0,0 +1,25 @@
{ config, pkgs, ...}: {
home.username = "hadi";
home.homeDirectory = "/home/hadi";
home.packages = with pkgs; [
vscode
];
home.stateVersion = "23.11";
programs.home-manager.enable = true;
imports = [
./hyprland
./nvim
./waybar
./kitty
./dunst
./wlogout
./wofi
./qutebrowser
./git
./shell
./misc
];
}

96
home/hyprland/default.nix Normal file
View File

@ -0,0 +1,96 @@
{pkgs, ...}:{
home.packages = with pkgs; [
xdg-desktop-portal-hyprland
wlr-randr
swww
wl-clipboard
brightnessctl
gnome.gnome-themes-extra
adwaita-qt
adwaita-qt6
gnome.adwaita-icon-theme
wlsunset
xwayland
xdg-desktop-portal-gtk
wlroots
wayland-utils
wayland-protocols
meson
];
wayland.windowManager.hyprland = {
enable = true;
xwayland.enable = true;
settings = {
"$mod" = "SUPER";
"$menu" = "~/scripts/menu.sh";
"$powermenu" = "${pkgs.wlogout}/bin/wlogout";
monitor = [
"eDP-2,highres,0x0,1"
"desc:AOC U34G2G1 0x00000E06,highrr,2560x0,1"
",prefered,auto,1"
];
bind = [
"$mod, RETURN, exec, kitty"
"$mod, Q, killactive,"
"$mod, E, exec, thunar"
"$mod, T, togglefloating,"
"$mod, F, fullscreen"
"$mod, B, exec, firefox"
"$mod, C, exec, kitty --class floating peaclock"
"$mod, L, exec, hyprlock"
"$mod, SPACE, exec, $menu"
"$mod, X, exec, $powermenu"
]++ (
builtins.concatLists (builtins.genList (i:
let ws = i + 1;
in [
"$mod, code:1${toString i}, workspace, ${toString ws}"
"$mod SHIFT, code:1${toString i}, movetoworkspace, ${toString ws}"
]) 9));
env = [
"XCURSOR_SIZE,24"
"LIBVA_DRIVER_NAME,nvidia"
"XDG_SESSION_TYPE,wayland"
"__GLX_VENDOR_LIBRARY_NAME,nvidia"
"WLR_NO_HARDWARE_CURSORS,1"
"QT_QPA_PLATFORMTHEME,qt5ct"
"SWWW_TRANSITION,wipe"
"XDG_CURRENT_DESKTOP,Hyprland"
"XDG_SESSION_TYPE,wayland"
"XDG_SESSION_DESKTOP,Hyprland"
"QT_AUTO_SCREEN_SCALE_FACTOR,1"
"QT_QPA_PLATFORM=wayland,xcb"
"QT_WAYLAND_DISABLE_WINDOWDECORATION,1"
"T_QPA_PLATFORMTHEME,qt5ct"
"WLR_DRM_DEVICES,/dev/dri/card0:/dev/dri/card1"
"GTK_THEME,Adwaita:dark"
"GTK2_RC_FILES,/usr/share/themes/Adwaita-dark/gtk-2.0/gtkrc"
"QT_STYLE_OVERRIDE,Adwaita-Dark"
];
input = {
kb_layout="fr";
kb_options = "caps:escape";
follow_mouse = 1;
sensitivity = 0.5;
repeat_delay = 300;
repeat_rate = 50;
numlock_by_default=true;
touchpad ={
natural_scroll = true;
clickfinger_behavior= true;
};
};
};
};
}

67
home/kitty/default.nix Normal file
View File

@ -0,0 +1,67 @@
{
programs.kitty = {
enable = true;
settings = {
scrollback_lines = 10000;
enable_audio_bell = false;
update_check_interval = 0;
font_family = "FiraCode Nerd Font";
font_size = 13;
cursor_shape = "Underline";
cursor_underline_thickness = 1;
window_padding_width = 10;
url_style = "curly";
confirm_os_window_close = "0";
remember_window_size = "no";
disable_ligatures = "never";
shell = "zsh";
initial_window_width = 1000;
initial_window_height = 600;
# Special
background = "#090914";
url_color = "#9978F8";
# Black
color0 = "#414868";
color8 = "#515878";
# Red
color1 = "#f7768e";
color9 = "#f7869e";
# Green
color2 = "#73daca";
color10 = "#83eada";
# Yellow
color3 = "#e0af68";
color11 = "#f0bf78";
# Blue
color4 = "#7aa2f7";
color12 = "#8ab2f7";
# Magenta
color5 = "#9978F8";
color13 = "#A988F8";
# Cyan
color6 = "#7dcfff";
color14 = "#8ddfff";
# White
color7 = "#E4E5E7";
color15 = "#f4f5f7";
# Cursor
cursor = "#FBFBFB";
cursor_text_color = "#090914";
# Selection highlight
selection_foreground = "#9978F8";
selection_background = "#28344a";
};
};
}

14
home/misc/default.nix Normal file
View File

@ -0,0 +1,14 @@
{
home.file = {
".ssh/config" = {
text = ''
Host github.com
User git
Hostname github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/github
'';
executable = false;
};
};
}

1
home/nvim/auto-pairs.nix Normal file
View File

@ -0,0 +1 @@
{ programs.nixvim.plugins.nvim-autopairs = { enable = true; }; }

1
home/nvim/bufferline.nix Normal file
View File

@ -0,0 +1 @@
{ programs.nixvim.plugins.bufferline = { enable = true; }; }

112
home/nvim/cmp.nix Normal file
View File

@ -0,0 +1,112 @@
{
programs.nixvim.plugins = {
luasnip.enable = true;
cmp-buffer = { enable = true; };
cmp-emoji = { enable = true; };
cmp-nvim-lsp = { enable = true; };
cmp-path = { enable = true; };
cmp_luasnip = { enable = true; };
cmp = {
enable = true;
settings = {
snippet.expand = "function(args) require('luasnip').lsp_expand(args.body) end";
sources = [
{ name = "nvim_lsp"; }
{ name = "luasnip"; }
{ name = "buffer"; }
{ name = "nvim_lua"; }
{ name = "path"; }
];
formatting = {
fields = [ "abbr" "kind" "menu" ];
format =
# lua
''
function(_, item)
local icons = {
Namespace = "󰌗",
Text = "󰉿",
Method = "󰆧",
Function = "󰆧",
Constructor = "",
Field = "󰜢",
Variable = "󰀫",
Class = "󰠱",
Interface = "",
Module = "",
Property = "󰜢",
Unit = "󰑭",
Value = "󰎠",
Enum = "",
Keyword = "󰌋",
Snippet = "",
Color = "󰏘",
File = "󰈚",
Reference = "󰈇",
Folder = "󰉋",
EnumMember = "",
Constant = "󰏿",
Struct = "󰙅",
Event = "",
Operator = "󰆕",
TypeParameter = "󰊄",
Table = "",
Object = "󰅩",
Tag = "",
Array = "[]",
Boolean = "",
Number = "",
Null = "󰟢",
String = "󰉿",
Calendar = "",
Watch = "󰥔",
Package = "",
Copilot = "",
Codeium = "",
TabNine = "",
}
local icon = icons[item.kind] or ""
item.kind = string.format("%s %s", icon, item.kind or "")
return item
end
'';
};
window = {
completion = {
winhighlight =
"FloatBorder:CmpBorder,Normal:CmpPmenu,CursorLine:CmpSel,Search:PmenuSel";
scrollbar = false;
sidePadding = 0;
border = [ "" "" "" "" "" "" "" "" ];
};
documentation = {
border = [ "" "" "" "" "" "" "" "" ];
winhighlight =
"FloatBorder:CmpBorder,Normal:CmpPmenu,CursorLine:CmpSel,Search:PmenuSel";
};
};
mapping = {
"<C-n>" = "cmp.mapping.select_next_item()";
"<C-p>" = "cmp.mapping.select_prev_item()";
"<Down>" = "cmp.mapping.select_next_item()";
"<Up>" = "cmp.mapping.select_prev_item()";
"<C-j>" = "cmp.mapping.select_next_item()";
"<C-k>" = "cmp.mapping.select_prev_item()";
"<C-d>" = "cmp.mapping.scroll_docs(-4)";
"<C-f>" = "cmp.mapping.scroll_docs(4)";
"<C-Space>" = "cmp.mapping.complete()";
"<C-e>" = "cmp.mapping.close()";
"<CR>" =
"cmp.mapping.confirm({ behavior = cmp.ConfirmBehavior.Insert, select = true })";
};
};
};
};
}

51
home/nvim/default.nix Normal file
View File

@ -0,0 +1,51 @@
{ pkgs, inputs, ... }:
{
imports = [
inputs.nixvim.homeManagerModules.nixvim
./auto-pairs.nix
./options.nix
./bufferline.nix
./telescope.nix
./nvim-tree.nix
./lightline.nix
./git.nix
./cmp.nix
./none-ls.nix
./wilder.nix
./lsp.nix
./treesitter.nix
./toggleterm.nix
];
programs.nixvim = {
enable = true;
colorschemes.catppuccin.enable = true;
keymaps = [
# Global Mappings
# Default mode is "" which means normal-visual-op
{
# Toggle NvimTree
key = "<leader>e";
action = "<CMD>Neotree toggle<CR>";
}
{
# Format file
key = "<space>fm";
action = "<CMD>lua vim.lsp.buf.format()<CR>";
}
# Terminal Mappings
{
# Escape terminal mode using ESC
mode = "t";
key = "<esc>";
action = "<C-\\><C-n>";
}
];
};
}

6
home/nvim/git.nix Normal file
View File

@ -0,0 +1,6 @@
{
programs.nixvim.plugins.gitsigns = {
enable = true;
currentLineBlame = true;
};
}

1
home/nvim/lightline.nix Normal file
View File

@ -0,0 +1 @@
{ programs.nixvim.plugins.lualine = { enable = true; }; }

18
home/nvim/lsp.nix Normal file
View File

@ -0,0 +1,18 @@
{
programs.nixvim.plugins.lsp = {
enable = true;
servers = {
bashls.enable = true;
clangd.enable = true;
gopls.enable = true;
nixd.enable = true;
};
keymaps.lspBuf = {
"gd" = "definition";
"gD" = "references";
"gt" = "type_definition";
"gi" = "implementation";
"K" = "hover";
};
};
}

18
home/nvim/none-ls.nix Normal file
View File

@ -0,0 +1,18 @@
{
programs.nixvim.plugins.none-ls = {
enable = true;
sources = {
diagnostics = {
golangci_lint.enable = true;
statix.enable = true;
};
formatting = {
fantomas.enable = true;
gofmt.enable = true;
goimports.enable = true;
nixfmt.enable = true;
markdownlint.enable = true;
};
};
};
}

5
home/nvim/nvim-tree.nix Normal file
View File

@ -0,0 +1,5 @@
{
programs.nixvim.plugins.neo-tree = {
enable = true;
};
}

25
home/nvim/options.nix Normal file
View File

@ -0,0 +1,25 @@
{
programs.nixvim.globals.mapleader = " ";
programs.nixvim.options = {
updatetime = 100; # Faster completion
number = true;
relativenumber = true;
autoindent = true;
clipboard = "unnamedplus";
expandtab = true;
shiftwidth = 2;
smartindent = true;
tabstop = 2;
ignorecase = true;
incsearch = true;
smartcase = true;
wildmode = "list:longest";
swapfile = false;
undofile = true; # Build-in persistent undo
};
}

13
home/nvim/telescope.nix Normal file
View File

@ -0,0 +1,13 @@
{
programs.nixvim.plugins.telescope = {
enable = true;
keymaps = {
"<leader>fg" = "live_grep";
"<C-p>" = {
action = "git_files";
desc = "Telescope Git Files";
};
};
extensions.fzf-native = { enable = true; };
};
}

7
home/nvim/toggleterm.nix Normal file
View File

@ -0,0 +1,7 @@
{
programs.nixvim.plugins.toggleterm = {
enable = true;
openMapping = "<C-t>";
direction = "horizontal";
};
}

11
home/nvim/treesitter.nix Normal file
View File

@ -0,0 +1,11 @@
{
programs.nixvim.plugins = {
treesitter = {
enable = true;
nixGrammars = true;
indent = true;
};
treesitter-context.enable = true;
rainbow-delimiters.enable = true;
};
}

6
home/nvim/wilder.nix Normal file
View File

@ -0,0 +1,6 @@
{
programs.nixvim.plugins.wilder = {
enable = true;
modes = [ ":" "/" "?" ];
};
}

View File

@ -0,0 +1,269 @@
{
programs.qutebrowser = {
enable = true;
searchEngines = {
"DEFAULT" = "https://google.com/search?q={}";
"yt" = "https://youtube.com/results?search_query={}";
"nixo" = "https://search.nixos.org/options?channel=unstable&query={}";
"nixp" = "https://search.nixos.org/packages?channel=unstable&query={}";
};
settings = {
colors = {
tabs = {
odd.bg = "#000000";
odd.fg = "#FFFFFF";
even.bg = "#000000";
even.fg = "#FFFFFF";
selected.odd.bg = "#101012";
selected.odd.fg = "#FFFFFF";
selected.even.bg = "#101012";
selected.even.fg = "#FFFFFF";
indicator.error = "#101012";
indicator.start = "#101012";
indicator.stop = "#101012";
};
hints = {
bg = "#101012";
fg = "#FFFFFF";
match.fg = "#E2E2E2";
};
completion = {
category.bg = "#101012";
category.fg = "#FFFFFF";
category.border.top = "#101012";
category.border.bottom = "#101012";
odd.bg = "#101012";
even.bg = "#101012";
fg = [ "#FFFFFF" "#FFFFFF" "#FFFFFF" ];
match.fg = "#FF0000";
item.selected.bg = "#FF0000";
item.selected.border.top = "#FF0000";
item.selected.border.bottom = "#FF0000";
item.selected.fg = "#FBFBFB";
item.selected.match.fg = "#FBFBFB";
};
# statusbar = {
# normal.bg = colors.statusbar.bg;
# normal.fg = colors.statusbar.fg;
# private.bg = colors.statusbar.private.bg;
# private.fg = colors.statusbar.private.fg;
# command = {
# bg = colors.statusbar.bg;
# fg = colors.statusbar.fg;
# private.bg = colors.statusbar.private.bg;
# private.fg = colors.statusbar.private.fg;
# };
# };
#
# messages = {
# info = {
# bg = colors.statusbar.bg;
# fg = colors.statusbar.fg;
# border = colors.statusbar.bg;
# };
#
# error = {
# bg = colors.messages.error.bg;
# fg = colors.messages.error.fg;
# border = colors.messages.error.bg;
# };
# };
};
completion = {
height = "30%";
open_categories = [ "history" ];
scrollbar = {
padding = 0;
width = 0;
};
show = "always";
shrink = true;
timestamp_format = "";
web_history.max_items = 7;
};
content = {
autoplay = false;
javascript.clipboard = "access";
pdfjs = true;
};
downloads = {
position = "bottom";
remove_finished = 0;
};
fileselect = {
handler = "external";
multiple_files.command = [
"alacritty"
"--embed"
"$(xdotool getactivewindow)"
"-e"
"lf"
"-selection-path"
"{}"
];
single_file.command = [
"alacritty"
"--embed"
"$(xdotool getactivewindow)"
"-e"
"lf"
"-selection-path"
"{}"
];
};
hints = {
border = "none";
radius = 1;
};
scrolling = {
bar = "never";
smooth = true;
};
statusbar = {
show = "never";
widgets = [ ];
};
tabs = {
show = "multiple";
last_close = "close";
mode_on_change = "restore";
close_mouse_button = "right";
};
url = {
default_page = "https://duckduckgo.com";
start_pages = [ "https://duckduckgo.com" ];
};
zoom.default = "130%";
};
keyMappings = {
"<Super-l>" = "o";
"<Super-t>" = "O";
};
keyBindings = {
normal = {
",p" = "tab-move -";
",n" = "tab-move +";
"<Super-r>" = "config-source";
"<Super-c>" = "fake-key <Ctrl-c>";
"<Super-Up>" = "scroll-to-perc 0";
"<Super-Down>" = "scroll-to-perc";
"<Super-Left>" = "back";
"<Super-Right>" = "forward";
"<Super-n>" = "open -w";
"<Super-Shift-p>" = "open -p";
"<Super-w>" = "tab-close";
"<Super-1>" = "tab-focus 1";
"<Super-2>" = "tab-focus 2";
"<Super-3>" = "tab-focus 3";
"<Super-4>" = "tab-focus 4";
"<Super-5>" = "tab-focus 5";
"<Super-6>" = "tab-focus 6";
"<Super-7>" = "tab-focus 7";
"<Super-8>" = "tab-focus 8";
"<Super-9>" = "tab-focus 9";
"<Super-0>" = "tab-focus 10";
"gtb" = "open https://github.com/noib3";
"ttb" = "open -t https://github.com/noib3";
"gma" = "open https://mail.protonmail.com/inbox";
"tma" = "open -t https://mail.protonmail.com/inbox";
"gkp" = "open https://keep.google.com";
"tkp" = "open -t https://keep.google.com";
"grhm" =
"open https://github.com/nix-community/home-manager/find/master";
"trhm" =
"open -t https://github.com/nix-community/home-manager/find/master";
"gnv" = "open https://github.com/neovim/neovim/tree/master/src/nvim";
"tnv" = "open -t https://github.com/neovim/neovim/tree/master/src/nvim";
"gbg" = "open https://rarbgunblocked.org/torrents.php";
"tbg" = "open -t https://rarbgunblocked.org/torrents.php";
"g12ft" = "open https://12ft.io/";
"t12ft" = "open -t https://12ft.io/";
"gtra" = "open http://localhost:9091/transmission/web/";
"ttra" = "open -t http://localhost:9091/transmission/web/";
};
command = {
"<Super-w>" = "tab-close";
"<Super-c>" = "completion-item-yank";
"<Super-v>" = "fake-key --global <Ctrl-v>";
"<Super-Left>" = "rl-beginning-of-line";
"<Super-Right>" = "rl-end-of-line";
"<Alt-Backspace>" = "rl-backward-kill-word";
"<Super-Backspace>" = "rl-unix-line-discard";
};
insert = {
"<Super-w>" = "tab-close";
"<Super-c>" = "fake-key <Ctrl-c>";
"<Super-v>" = "fake-key <Ctrl-v>";
"<Super-x>" = "fake-key <Ctrl-x>";
"<Super-z>" = "fake-key <Ctrl-z>";
"<Super-Left>" = "fake-key <Home>";
"<Super-Right>" = "fake-key <End>";
"<Alt-Backspace>" = "fake-key <Ctrl-Backspace>";
"<Super-Backspace>" = "fake-key <Shift-Home><Delete>";
"<Super-1>" = "tab-focus 1";
"<Super-2>" = "tab-focus 2";
"<Super-3>" = "tab-focus 3";
"<Super-4>" = "tab-focus 4";
"<Super-5>" = "tab-focus 5";
"<Super-6>" = "tab-focus 6";
"<Super-7>" = "tab-focus 7";
"<Super-8>" = "tab-focus 8";
"<Super-9>" = "tab-focus 9";
"<Super-0>" = "tab-focus 10";
};
};
extraConfig = ''
config.unbind("gm")
config.unbind("gd")
config.unbind("gb")
config.unbind("tl")
config.unbind("gt")
c.tabs.padding = {"bottom": 0, "left": 7, "right": 7, "top": 0}
config.load_autoconfig(True)
'';
};
}

8
home/shell/default.nix Normal file
View File

@ -0,0 +1,8 @@
{
imports = [
./fzf.nix
./zsh.nix
./starship.nix
./zoxide.nix
];
}

6
home/shell/fzf.nix Normal file
View File

@ -0,0 +1,6 @@
{
programs.fzf = {
enable = true;
enableZshIntegration = true;
};
}

5
home/shell/starship.nix Normal file
View File

@ -0,0 +1,5 @@
{
programs.starship = {
enable = true;
};
}

6
home/shell/zoxide.nix Normal file
View File

@ -0,0 +1,6 @@
{
programs.zoxide = {
enable= true;
enableZshIntegration = true;
};
}

35
home/shell/zsh.nix Normal file
View File

@ -0,0 +1,35 @@
{ pkgs, lib, config, ... }: {
home.packages = with pkgs; [ eza bat ripgrep tldr ];
programs.zsh = {
enable = true;
enableAutosuggestions = true;
enableCompletion = true;
syntaxHighlighting.enable = true;
history = {
ignoreDups = true;
save = 1000000;
size = 1000000;
};
profileExtra = lib.optionalString (config.home.sessionPath != [ ]) ''
export PATH="$PATH''${PATH:+:}${lib.concatStringsSep ":" config.home.sessionPath}"
'';
shellAliases = {
vim = "nvim";
v = "nvim";
c = "clear";
clera = "clear";
celar = "clear";
e = "exit";
cd = "z";
ls = "eza --icons";
open = "xdg-open";
icat = "kitty +kitten icat";
};
};
}

244
home/waybar/default.nix Normal file
View File

@ -0,0 +1,244 @@
{
services = {
blueman-applet.enable = true;
network-manager-applet.enable = true;
};
programs.waybar = {
enable = true;
systemd.enable = true;
settings = {
mainBar = {
layer = "top";
position = "top";
spacing = 0;
"margin-top" = 15;
"margin-left" = 15;
"margin-right" = 15;
height = 40;
modules-left = [ "custom/logo" "hyprland/window" ];
modules-center = [ "hyprland/workspaces" ];
modules-right =
[ "tray" "backlight" "pulseaudio" "battery" "clock" "custom/power" ];
"wlr/taskbar" = {
format = "{icon}";
"on-click" = "activate";
"on-click-right" = "fullscreen";
"icon-theme" = "WhiteSur";
"icon-size" = 25;
"tooltip-format" = "{title}";
};
"hyprland/workspaces" = {
"on-click" = "activate";
format = "{icon}";
"format-icons" = {
"default" = "";
"1" = "1";
"2" = "2";
"3" = "3";
"4" = "4";
"5" = "5";
"6" = "6";
"7" = "7";
"8" = "8";
"9" = "9";
"active" = "󱓻";
"urgent" = "󱓻";
};
"persistent_workspaces" = {
"1" = [ ];
"2" = [ ];
"3" = [ ];
"4" = [ ];
"5" = [ ];
};
};
tray = { spacing = 16; };
clock = {
"tooltip-format" = "<tt>{calendar}</tt>";
"format-alt" = " {:%a, %d %b %Y}";
format = "󰥔 {:%I:%M %p}";
};
pulseaudio = {
format = "{icon}";
"format-bluetooth" = "󰂰";
nospacing = 1;
"tooltip-format" = "Volume : {volume}%";
"format-muted" = "󰝟";
"format-icons" = {
"headphone" = "";
"default" = [ "󰖀" "󰕾" "" ];
};
"on-click" = "pamixer -t";
"scroll-step" = 1;
};
"custom/logo" = {
format = " ";
tooltip = false;
"on-click" = "~/scripts/menu.sh";
};
battery = {
format = "{capacity}% {icon}";
"format-icons" = {
"charging" = [ "󰢜" "󰂆" "󰂇" "󰂈" "󰢝" "󰂉" "󰢞" "󰂊" "󰂋" "󰂅" ];
"default" = [ "󰁺" "󰁻" "󰁼" "󰁽" "󰁾" "󰁿" "󰂀" "󰂁" "󰂂" "󰁹" ];
};
"format-full" = "󰁹 ";
interval = 10;
states = {
warning = 20;
critical = 10;
};
tooltip = false;
};
"custom/power" = {
format = "󰤆";
tooltip = false;
"on-click" = "wlogout";
};
backlight = {
device = "nvidia_0";
format = "{icon}";
"format-icons" = [ " " " " "" "" "" "" "" "" "" ];
};
};
};
style = ''
* {
border: none;
border-radius: 0;
min-height: 0;
font-family: "SFProDisplay Nerd Font Bold";
}
window#waybar {
background-color: #090914;
transition-property: background-color;
transition-duration: 0.5s;
border-radius: 15px;
font-size: 13px;
}
window#waybar.hidden {
opacity: 0.5;
}
#workspaces {
background-color: transparent;
}
#workspaces button {
all: initial; /* Remove GTK theme values (waybar #1351) */
min-width: 0; /* Fix weird spacing in materia (waybar #450) */
box-shadow: inset 0 -3px transparent; /* Use box-shadow instead of border so the text isn't offset */
padding: 6px 18px;
margin: 6px 3px;
border-radius: 4px;
background-color: #1e1e2e;
color: #cdd6f4;
}
#workspaces button.active {
color: #1e1e2e;
background-color: #cdd6f4;
}
#workspaces button:hover {
box-shadow: inherit;
text-shadow: inherit;
color: #1e1e2e;
background-color: #cdd6f4;
}
#workspaces button.urgent {
background-color: #f38ba8;
}
#memory,
#custom-power,
#battery,
#backlight,
#pulseaudio,
#network,
#clock,
#tray,
#backlight{
border-radius: 9px;
margin: 6px 3px;
padding: 6px 12px;
background-color: #1e1e2e;
color: #FBFBFB;
}
#tray menu {
background-color: #1e1e2e;
color: #FBFBFB;
}
#custom-power {
margin-right: 6px;
}
#custom-logo {
padding-right: 7px;
padding-left: 7px;
margin-left: 5px;
font-size: 15px;
border-radius: 8px 0px 0px 8px;
color: #9978F8;
}
@keyframes blink {
to {
background-color: #f38ba8;
color: #181825;
}
}
#battery.warning,
#battery.critical,
#battery.urgent {
background-color: #ff0048;
color: #181825;
animation-name: blink;
animation-duration: 0.5s;
animation-timing-function: linear;
animation-iteration-count: infinite;
animation-direction: alternate;
}
#battery.charging {
background-color: #1E1E2E;
color: #FBFBFB;
animation: none;
}
#custom-power {
background-color: #9978F8;
color: #0C0C0C;
margin-right: 7px;
}
tooltip {
border-radius: 8px;
padding: 15px;
background-color: #1E1E2E;
}
tooltip label {
padding: 5px;
background-color: #1E1E2E;
}
'';
};
}

125
home/wlogout/default.nix Normal file
View File

@ -0,0 +1,125 @@
{
programs.wlogout = {
enable = true;
layout = [
{
label = "lock";
action = "sleep 1; hyprlock";
text = "Lock";
keybind = "l";
}
{
label = "hibernate";
action = "sleep 1; systemctl hibernate";
text = "Hibernate";
keybind = "h";
}
{
label = "logout";
action = "sleep 1; killall -9 Hyprland sleep 2";
text = "Exit";
keybind = "e";
}
{
label = "shutdown";
action = "sleep 1; systemctl poweroff";
text = "Shutdown";
keybind = "s";
}
{
label = "suspend";
action = "sleep 1; systemctl suspend";
text = "Suspend";
keybind = "u";
}
{
label = "reboot";
action = "sleep 1; systemctl reboot";
text = "Reboot";
keybind = "r";
}
];
style = ''
* {
font-family: "Fira Sans Semibold";
background-image: none;
transition: 20ms;
}
window {
background-color: rgba(12, 12, 12, 0.5);
}
button {
color: #FFFFFF;
font-size:20px;
background-repeat: no-repeat;
background-position: center;
background-size: 25%;
border-style: solid;
background-color: rgba(12, 12, 12, 0.5);
border: 3px solid #FFFFFF;
box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
}
button:focus,
button:active,
button:hover {
color: #9978F8;
background-color: rgba(12, 12, 12, 0.8);
border: 3px solid #9978F8;
}
/*
-----------------------------------------------------
Buttons
-----------------------------------------------------
*/
#lock {
margin: 10px;
border-radius: 20px;
background-image: image(url("icons/lock.png"));
}
#logout {
margin: 10px;
border-radius: 20px;
background-image: image(url("icons/logout.png"));
}
#suspend {
margin: 10px;
border-radius: 20px;
background-image: image(url("icons/suspend.png"));
}
#hibernate {
margin: 10px;
border-radius: 20px;
background-image: image(url("icons/hibernate.png"));
}
#shutdown {
margin: 10px;
border-radius: 20px;
background-image: image(url("icons/shutdown.png"));
}
#reboot {
margin: 10px;
border-radius: 20px;
background-image: image(url("icons/reboot.png"));
}
'';
};
xdg.configFile."wlogout/icons" = {
recursive = false;
source = ./icons;
};
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

BIN
home/wlogout/icons/lock.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

95
home/wofi/default.nix Normal file
View File

@ -0,0 +1,95 @@
{
programs.wofi = {
enable = true;
settings = {
allow_markup = true;
width = 250;
show = "drun";
prompt = "Apps";
normal_window = true;
layer = "top";
term = "foot";
height = "305px";
orientation = "vertical";
halign = "fill";
line_wrap = "off";
dynamic_lines = false;
allow_images = true;
image_size = 24;
exec_search = false;
hide_search = false;
parse_search = false;
insensitive = true;
hide_scroll = true;
no_actions = true;
sort_order = "default";
gtk_dark = true;
filter_rate = 100;
key_expand = "Tab";
key_exit = "Escape";
};
style = ''
/** ********** Fonts ********** **/
* {
font-family: "SFProDisplay Nerd Font Bold", archcraft, sans-serif;
font-size: 12px;
}
#window {
background-color: #0B0B13;
color: #D9E0EE;
border: 2px solid #1B1B23;
border-radius: 0px;
}
#outer-box {
padding: 20px;
}
#input {
background-color: #1B1B23;
border: 0px solid #B4BEFE;
padding: 8px 12px;
}
#scroll {
margin-top: 20px;
}
#inner-box {}
#img {
padding-right: 8px;
}
#text {
color: #D9E0EE;
}
#text:selected {
color: #0B0B13;
}
#entry {
padding: 6px;
}
#entry:selected {
background-color: #B4BEFE;
color: #0B0B13;
}
#unselected {}
#selected {}
#input,
#entry:selected {
border-radius: 4px;
}
'';
};
}

3
hosts/default.nix Normal file
View File

@ -0,0 +1,3 @@
{
imports = [ ./tuigreet ];
}

View File

@ -0,0 +1,30 @@
{pkgs, ...}: {
services.greetd = {
enable = true;
settings = {
default_session = {
command = "${pkgs.greetd.tuigreet}/bin/tuigreet --remember --time --time-format '%I:%M %p | %a %h | %F' --cmd Hyprland";
user = "greeter";
};
};
};
environment.systemPackages = with pkgs; [
greetd.tuigreet
];
# this is a life saver.
# literally no documentation about this anywhere.
# might be good to write about this...
# https://www.reddit.com/r/NixOS/comments/u0cdpi/tuigreet_with_xmonad_how/
systemd.services.greetd.serviceConfig = {
Type = "idle";
StandardInput = "tty";
StandardOutput = "tty";
StandardError = "journal"; # Without this errors will spam on screen
# Without these bootlogs will spam on screen
TTYReset = true;
TTYVHangup = true;
TTYVTDisallocate = true;
};
}

101
nixos/configuration.nix Normal file
View File

@ -0,0 +1,101 @@
{ pkgs, ... }: {
imports = [ ./hardware-configuration.nix ];
# Bootloader.
boot.loader.efi.canTouchEfiVariables = true;
boot.loader.systemd-boot = {
enable = true;
consoleMode = "auto";
};
networking.hostName = "hadi";
# Enable networking
networking.networkmanager.enable = true;
# Set your time zone.
time.timeZone = "Europe/Paris";
i18n.defaultLocale = "en_US.UTF-8";
i18n.extraLocaleSettings = {
LC_ADDRESS = "fr_FR.UTF-8";
LC_IDENTIFICATION = "fr_FR.UTF-8";
LC_MEASUREMENT = "fr_FR.UTF-8";
LC_MONETARY = "fr_FR.UTF-8";
LC_NAME = "fr_FR.UTF-8";
LC_NUMERIC = "fr_FR.UTF-8";
LC_PAPER = "fr_FR.UTF-8";
LC_TELEPHONE = "fr_FR.UTF-8";
LC_TIME = "fr_FR.UTF-8";
};
# Configure keymap in X11
services.xserver = {
xkb.layout = "fr";
xkb.variant = "";
};
console.keyMap = "fr";
nix.settings.experimental-features = [ "nix-command" "flakes" ];
programs.zsh.enable = true;
users.defaultUserShell = pkgs.zsh;
users.users.hadi = {
isNormalUser = true;
description = "hadi";
extraGroups = [ "networkmanager" "wheel" ];
};
# Allow unfree packages
nixpkgs.config.allowUnfree = true;
environment.systemPackages = with pkgs; [ networkmanagerapplet ];
nixpkgs.config.permittedInsecurePackages = [ "electron-25.9.0" "nix-2.16.2" ];
hardware.opengl = {
enable = true;
driSupport = true;
driSupport32Bit = true;
};
services.xserver.videoDrivers = [ "nvidia" ];
services.gnome.gnome-keyring.enable = true;
hardware.nvidia = {
modesetting.enable = true;
powerManagement.enable = true;
powerManagement.finegrained = false;
open = false;
nvidiaSettings = true;
};
hardware.bluetooth.enable = true;
# Set environment variables
environment.variables = {
XDG_DATA_HOME = "$HOME/.local/share";
PASSWORD_STORE_DIR = "$HOME/.local/share/password-store";
MOZ_ENABLE_WAYLAND = "1";
EDITOR = "nvim";
ANKI_WAYLAND = "1";
DISABLE_QT5_COMPAT = "0";
NIXOS_OZONE_WL = "1";
};
# Sound
sound = { enable = true; };
security.rtkit.enable = true;
hardware.pulseaudio.enable = false;
services.pipewire = {
enable = true;
alsa.enable = true;
alsa.support32Bit = true;
pulse.enable = true;
jack.enable = true;
wireplumber.enable = true;
};
system.stateVersion = "23.11";
}

View File

@ -0,0 +1,42 @@
# 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" "usb_storage" "sd_mod"];
boot.initrd.kernelModules = [];
boot.kernelModules = ["kvm-amd"];
boot.extraModulePackages = [];
fileSystems."/" = {
device = "/dev/disk/by-uuid/6c2487ec-20ff-4ce3-9396-281c2094aba1";
fsType = "ext4";
};
fileSystems."/boot" = {
device = "/dev/disk/by-uuid/B4EA-C54F";
fsType = "vfat";
};
swapDevices = [];
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's
# still possible to use this option, but it's recommended to use it in conjunction
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
networking.useDHCP = lib.mkDefault true;
# networking.interfaces.eno1.useDHCP = lib.mkDefault true;
# networking.interfaces.wlo1.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}