Compare commits

..

No commits in common. "a37bdf6c60b6af9d88a48eb70a4ea0806e4d8d9e" and "8998c1078b91af0b96e683b73fc8eaffb89b7e60" have entirely different histories.

42 changed files with 218 additions and 298 deletions

43
.vscode/settings.json vendored
View File

@ -1,43 +0,0 @@
{
// Nix settings
"nix.enableLanguageServer": true,
"nix.serverPath": "nixd",
"nix.serverSettings": {
"nil": {
"formatting": {
"command": ["nix fmt"]
},
"nix": {
"flake": {
"maxMemoryMB": 16384,
"autoEvalInputs": true,
"nixpkgsInputName": "nixpkgs"
}
}
},
"nixd": {
"nixpkgs": {
"expr": "import (builtins.getFlake (builtins.toString ./.)).inputs.nixpkgs { }"
},
"formatting": {
"command": [
"nix fmt"
]
},
"options": {
"nixos": {
"expr": "(builtins.getFlake (builtins.toString ./.)).nixosConfigurations.nixos.options"
},
"nixos-home-manager": {
"expr": "(builtins.getFlake (builtins.toString ./.)).nixosConfigurations.nixos.options.home-manager.users.type.getSubOptions []"
},
// "home-manager": {
// "expr": "(builtins.getFlake (builtins.toString ./)).homeConfigurations.<name>.options"
// }
}
}
},
"nixEnvSelector.useFlakes": true,
"nixEnvSelector.suggestion": true,
"nixEnvSelector.nixFile": "${workspaceFolder}/flake.nix",
}

View File

@ -16,16 +16,3 @@ https://gist.github.com/FlakM/0535b8aa7efec56906c5ab5e32580adf
# Building NixOS ISO # Building NixOS ISO
`nix build .#nixosConfigurations.live.config.system.build.isoImage` `nix build .#nixosConfigurations.live.config.system.build.isoImage`
# Misc
## Garbage collection
`nix-collect-garbage -d`
## Fonts
### Checking installed fonts
`fc-list`
### Debugging kitty fonts
`kitty --debug-font-fallback`
## SDDM virtual keyboard ??ZZ
- https://unix.stackexchange.com/questions/43976/list-all-valid-kbd-layouts-variants-and-toggle-options-to-use-with-setxkbmap
- https://github.com/NixOS/nixpkgs/issues/254523

View File

@ -18,20 +18,12 @@
}; };
}; };
outputs = outputs = { nixpkgs, home-manager, install-system, ... } @ inputs: let
{
nixpkgs,
home-manager,
install-system,
...
}@inputs:
let
system = "x86_64-linux"; system = "x86_64-linux";
host = "vm"; host = "vm";
profile = "vm"; profile = "vm";
username = "josh"; username = "josh";
in in {
{
nixosConfigurations = { nixosConfigurations = {
nixos = nixpkgs.lib.nixosSystem { nixos = nixpkgs.lib.nixosSystem {
inherit system; inherit system;
@ -74,14 +66,5 @@
]; ];
}; };
}; };
devShell.${system} = nixpkgs.legacyPackages.${system}.pkgs.mkShell {
packages = with nixpkgs.legacyPackages.${system}.pkgs; [
nil
nixd
];
};
formatter.${system} = nixpkgs.legacyPackages.${system}.nixfmt-tree;
}; };
} }

View File

@ -14,13 +14,8 @@ in
}; };
# Add wayland screensharing support if PipeWire is enabled # Add wayland screensharing support if PipeWire is enabled
environment.systemPackages = environment.systemPackages = with pkgs; []
with pkgs; ++ (if pipewireCfg.enable
[ ] then [ (wrapFirefox (firefox-unwrapped.override { pipewireSupport = true; }) {}) ]
++ ( else [ firefox ]);
if pipewireCfg.enable then
[ (wrapFirefox (firefox-unwrapped.override { pipewireSupport = true; }) { }) ]
else
[ firefox ]
);
} }

View File

@ -6,14 +6,13 @@
{ {
fonts = { fonts = {
fontconfig.enable = true; fontconfig.enable = true;
packages = packages = with pkgs; [
with pkgs;
[
font-awesome font-awesome
montserrat montserrat
nerd-fonts.jetbrains-mono nerd-fonts.jetbrains-mono
noto-fonts-emoji noto-fonts-emoji
] ] ++ (if config.modules.zsh.enable
++ (if config.modules.zsh.enable then [ nerd-fonts.meslo-lg ] else [ ]); then [ nerd-fonts.meslo-lg ]
else []);
}; };
} }

View File

@ -1,4 +1,5 @@
{ {
config,
host, host,
pkgs, pkgs,
... ...

View File

@ -1,4 +1,5 @@
{ {
config,
pkgs, pkgs,
... ...
}: }:

View File

@ -18,8 +18,6 @@ in
}; };
# To prevent getting stuck at shutdown # To prevent getting stuck at shutdown
systemd.settings.Manager = { systemd.extraConfig = "DefaultTimeoutStopSec=10s";
DefaultTimeoutStopSec = "10s";
};
}; };
} }

View File

@ -1,7 +1,9 @@
{ {
config, config,
lib,
... ...
}: }:
with lib;
let let
cfg = config.system; cfg = config.system;
in in

View File

@ -2,11 +2,13 @@
config, config,
host, host,
inputs, inputs,
lib,
pkgs, pkgs,
profile, profile,
username, username,
... ...
}: }:
with lib;
let let
shellCfg = config.modules.shell; shellCfg = config.modules.shell;
in in
@ -16,14 +18,7 @@ in
useUserPackages = true; useUserPackages = true;
useGlobalPkgs = false; useGlobalPkgs = false;
backupFileExtension = "backup"; backupFileExtension = "backup";
extraSpecialArgs = { extraSpecialArgs = { inherit host inputs profile username; };
inherit
host
inputs
profile
username
;
};
users.${username} = { users.${username} = {
imports = [ ./../home ]; imports = [ ./../home ];
home = { home = {
@ -44,13 +39,10 @@ in
]; ];
shell = pkgs.${shellCfg.defaultShell}; shell = pkgs.${shellCfg.defaultShell};
ignoreShellProgramCheck = true; ignoreShellProgramCheck = true;
packages = with pkgs; [
fzf
];
}; };
# Set /etc/shells so GDM will show our user when ZSH is selected # Set /etc/shells so GDM will show our user when ZSH is selected
environment.shells = [ pkgs.${shellCfg.defaultShell} ]; environment.shells = with pkgs; [ pkgs.${shellCfg.defaultShell} ];
nix.settings.allowed-users = [ "${username}" ]; nix.settings.allowed-users = [ "${username}" ];
} }

View File

@ -1,6 +1,7 @@
{ {
config, config,
lib, lib,
pkgs,
... ...
}: }:
with lib; with lib;

View File

@ -1,4 +1,5 @@
{ {
host,
... ...
}: }:
{ {

View File

@ -1,7 +1,9 @@
{ {
lib,
osConfig, osConfig,
... ...
}: }:
with lib;
let let
cfg = osConfig.modules.hyprland; cfg = osConfig.modules.hyprland;
in in

View File

@ -1,4 +1,5 @@
{ {
host,
lib, lib,
osConfig, osConfig,
pkgs, pkgs,

View File

@ -1,4 +1,5 @@
{ {
config,
lib, lib,
osConfig, osConfig,
pkgs, pkgs,

View File

@ -1,8 +1,10 @@
{ {
lib,
osConfig, osConfig,
pkgs, pkgs,
... ...
}: }:
with lib;
let let
hyprlandCfg = osConfig.modules.hyprland; hyprlandCfg = osConfig.modules.hyprland;
pipewireCfg = osConfig.modules.pipewire; pipewireCfg = osConfig.modules.pipewire;
@ -15,31 +17,27 @@ in
mimeApps.enable = true; mimeApps.enable = true;
portal = { portal = {
enable = true; enable = true;
extraPortals = extraPortals = []
[ ] ++ (if hyprlandCfg.enable
++ (if hyprlandCfg.enable then [ pkgs.xdg-desktop-portal-hyprland ] else [ ]) then [ pkgs.xdg-desktop-portal-hyprland ]
++ ( else [])
if pipewireCfg.enable then ++ (if pipewireCfg.enable
[ then [
pkgs.xdg-desktop-portal-wlr pkgs.xdg-desktop-portal-wlr
pkgs.xdg-desktop-portal-gtk pkgs.xdg-desktop-portal-gtk
] ]
else else [])
[ ] ++ (if plasmaCfg.enable
) then [ pkgs.kdePackages.xdg-desktop-portal-kde ]
++ (if plasmaCfg.enable then [ pkgs.kdePackages.xdg-desktop-portal-kde ] else [ ]); else []);
configPackages = configPackages = []
[ ] ++ (if hyprlandCfg.enable
++ (if hyprlandCfg.enable then [ pkgs.hyprland ] else [ ]) then [ pkgs.hyprland ]
++ ( else [])
if ++ (if plasmaCfg.enable
plasmaCfg.enable
# TODO: use the correct packages or config # TODO: use the correct packages or config
then then [ pkgs.kdePackages.kde-gtk-config ]
[ pkgs.kdePackages.kde-gtk-config ] else []);
else
[ ]
);
}; };
}; };
} }

View File

@ -1,9 +1,12 @@
{ {
config, config,
lib,
osConfig, osConfig,
pkgs, pkgs,
profile,
... ...
}: }:
with lib;
let let
cfg = osConfig.modules.zsh; cfg = osConfig.modules.zsh;
xdgCfg = config.xdg; xdgCfg = config.xdg;
@ -16,8 +19,7 @@ in
programs.zsh = { programs.zsh = {
enable = cfg.enable; enable = cfg.enable;
dotDir = "${xdgCfg.configHome}/zsh"; dotDir = "${xdgCfg.configHome}/zsh";
autosuggestion.enable = false; autosuggestion.enable = true;
enableCompletion = true;
syntaxHighlighting = { syntaxHighlighting = {
enable = true; enable = true;
highlighters = [ highlighters = [
@ -29,13 +31,9 @@ in
}; };
historySubstringSearch.enable = true; historySubstringSearch.enable = true;
history = { history = {
append = true;
ignoreDups = false; ignoreDups = false;
ignoreSpace = true;
save = 100000; save = 100000;
share = true;
size = 100000; size = 100000;
extended = true;
}; };
initContent = '' initContent = ''
@ -50,16 +48,6 @@ in
# Tab to accept current selection # Tab to accept current selection
bind-key -M menuselect '^I' accept-and-infer-next-history bind-key -M menuselect '^I' accept-and-infer-next-history
# Control arrow keys
bindkey '^[[1;5C' forward-word
bindkey '^[[1;5D' backward-word
# Load fzf keybindings
if [ -n "''${commands[fzf-share]}" ]; then
source "$(fzf-share)/key-bindings.zsh";
source "$(fzf-share)/completion.zsh";
fi
''; '';
shellAliases = { shellAliases = {

View File

@ -2,6 +2,7 @@
config, config,
lib, lib,
osConfig, osConfig,
pkgs,
... ...
}: }:
with lib; with lib;

View File

@ -1,8 +1,12 @@
{ {
config,
lib, lib,
... ...
}: }:
with lib; with lib;
let
cfg = config.modules.displayManager;
in
{ {
options.modules.displayManager = { options.modules.displayManager = {
displayManager = mkOption { displayManager = mkOption {

View File

@ -1,8 +1,12 @@
{ {
config,
lib, lib,
... ...
}: }:
with lib; with lib;
let
cfg = config.modules.hyprland;
in
{ {
options.modules.hyprland = { options.modules.hyprland = {
enable = mkEnableOption { enable = mkEnableOption {

View File

@ -1,8 +1,12 @@
{ {
config,
lib, lib,
... ...
}: }:
with lib; with lib;
let
cfg = config.modules.pipewire;
in
{ {
options.modules.pipewire = { options.modules.pipewire = {
enable = mkEnableOption { enable = mkEnableOption {

View File

@ -1,8 +1,12 @@
{ {
config,
lib, lib,
... ...
}: }:
with lib; with lib;
let
cfg = config.modules.plasma;
in
{ {
options.modules.plasma = { options.modules.plasma = {
enable = mkEnableOption { enable = mkEnableOption {

View File

@ -22,17 +22,11 @@ in
}; };
}; };
config.assertions = config.assertions = []
[ ] ++ (if cfg.defaultShell == "zsh"
++ ( then [{
if cfg.defaultShell == "zsh" then
[
{
assertion = zshCfg.enable; assertion = zshCfg.enable;
message = "You have selected zsh as the default shell, but you haven't enabled it in your configuration.\n\nPlease enable it by adding `modules.zsh.enable = true`."; message = "You have selected zsh as the default shell, but you haven't enabled it in your configuration.\n\nPlease enable it by adding `modules.zsh.enable = true`.";
} }]
] else []);
else
[ ]
);
} }

View File

@ -1,8 +1,12 @@
{ {
config,
lib, lib,
... ...
}: }:
with lib; with lib;
let
cfg = config.system;
in
{ {
options.system = { options.system = {
locale = mkOption { locale = mkOption {

View File

@ -1,8 +1,12 @@
{ {
config,
lib, lib,
... ...
}: }:
with lib; with lib;
let
cfg = config.modules.zsh;
in
{ {
options.modules.zsh = { options.modules.zsh = {
enable = mkEnableOption { enable = mkEnableOption {

View File

@ -5,9 +5,7 @@
nixpkgs.url = "github:nixos/nixpkgs/nixos-25.05"; nixpkgs.url = "github:nixos/nixpkgs/nixos-25.05";
}; };
outputs = outputs = { self, nixpkgs, ... }: let
{ nixpkgs, ... }:
let
system = "x86_64-linux"; system = "x86_64-linux";
pkgs = nixpkgs.legacyPackages.${system}.pkgs; pkgs = nixpkgs.legacyPackages.${system}.pkgs;
name = builtins.baseNameOf (builtins.toString ./.); name = builtins.baseNameOf (builtins.toString ./.);
@ -22,8 +20,7 @@
unixtools.column unixtools.column
]; ];
}; };
in in {
{
packages.${system}.default = shellApplication; packages.${system}.default = shellApplication;
devShells.${system}.default = pkgs.mkShell { devShells.${system}.default = pkgs.mkShell {

View File

@ -5,9 +5,7 @@
nixpkgs.url = "github:nixos/nixpkgs/nixos-25.05"; nixpkgs.url = "github:nixos/nixpkgs/nixos-25.05";
}; };
outputs = outputs = { self, nixpkgs, ... }: let
{ nixpkgs, ... }:
let
pkgs = nixpkgs.legacyPackages.x86_64-linux.pkgs; pkgs = nixpkgs.legacyPackages.x86_64-linux.pkgs;
name = builtins.baseNameOf (builtins.toString ./.); name = builtins.baseNameOf (builtins.toString ./.);
shellApplication = pkgs.writeShellApplication { shellApplication = pkgs.writeShellApplication {
@ -21,8 +19,7 @@
unixtools.column unixtools.column
]; ];
}; };
in in {
{
packages.x86_64-linux.default = shellApplication; packages.x86_64-linux.default = shellApplication;
devShells.x86_64-linux.default = pkgs.mkShell { devShells.x86_64-linux.default = pkgs.mkShell {