Merge branch 'module-test'

This commit is contained in:
xunuwu 2024-09-03 21:42:13 +02:00
commit a1a5c34747
Signed by: xun
SSH key fingerprint: SHA256:Uot/1WoAjWAeqLOHA5vYy4phhVydsH7jCPmBjaPZfgI
23 changed files with 445 additions and 48 deletions

View file

@ -8,6 +8,7 @@
./home/profiles
./hosts
./modules
./home-modules
];
flake = {
};

5
home-modules/default.nix Normal file
View file

@ -0,0 +1,5 @@
{
flake.homeManagerModules = {
xun = import ./xun;
};
}

View file

@ -0,0 +1,8 @@
{
imports = [
./develop
./gaming
./programs
./desktop
];
}

View file

@ -0,0 +1,39 @@
{
config,
lib,
pkgs,
...
}: let
cfg = config.xun.desktop;
in {
options.xun.desktop = {
xdg.enable = lib.mkEnableOption "xdg env vars";
};
config = lib.mkMerge [
(lib.mkIf cfg.xdg.enable {
xdg = let
home = config.home.homeDirectory;
in {
enable = true;
cacheHome = config.home.homeDirectory + "/.local/cache";
userDirs = {
enable = true;
desktop = home + "/desktop";
documents = home + "/docs";
download = home + "/down";
music = home + "/music";
pictures = home + "/pics";
publicShare = home + "/share";
videos = home + "/vids";
extraConfig = {
XDG_SCREENSHOTS_DIR = config.xdg.userDirs.pictures + "/screenshots";
};
};
};
home.packages = [pkgs.xdg-utils];
})
];
}

View file

@ -0,0 +1,62 @@
{
pkgs,
config,
lib,
...
}: let
cfg = config.xun.develop;
in {
options.xun.develop = let
enableOption = name: default: lib.mkEnableOption name // {inherit default;};
in {
enable = enableOption "develop" false;
git.enable = enableOption "git" true;
nix.enable = enableOption "nix" true;
tools.enable = enableOption "tools" true;
docs.enable = enableOption "man caches" false;
lsp.c.enable = enableOption "clangd" false;
};
config = lib.mkIf cfg.enable (
lib.mkMerge [
(lib.mkIf cfg.nix.enable {
home.packages = with pkgs; [nil alejandra];
})
(lib.mkIf cfg.tools.enable {
home.packages = with pkgs; [tokei];
})
(lib.mkIf cfg.git.enable {
home.packages = with pkgs; [lazygit];
programs.gh.enable = true;
programs.gh-dash.enable = true;
programs.git = {
enable = true;
delta.enable = true;
lfs.enable = true;
ignores = ["*~" ".direnv"];
signing = {
key = "${config.home.homeDirectory}/.ssh/id_ed25519";
signByDefault = true;
};
extraConfig = {
gpg.format = "ssh";
push.autoSetupRemote = true;
};
userEmail = "xunuwu@gmail.com";
userName = "xunuwu";
};
})
(lib.mkIf cfg.lsp.c.enable {
home.packages = with pkgs; [clang-tools];
})
(lib.mkIf cfg.docs.enable {
programs.man.generateCaches = true;
})
]
);
}

View file

@ -0,0 +1,26 @@
{
pkgs,
config,
lib,
self,
...
}: let
cfg = config.xun.gaming;
in {
options.xun.gaming = {
krunker.enable = lib.mkEnableOption "krunker";
roblox.sobercookie.enable = lib.mkEnableOption "sobercookie";
};
config = lib.mkMerge [
(lib.mkIf cfg.krunker.enable {
home.packages = [
self.packages.${pkgs.system}.krunker
];
})
(lib.mkIf cfg.roblox.sobercookie.enable {
home.packages = [
self.packages.${pkgs.system}.sobercookie
];
})
];
}

View file

@ -0,0 +1,5 @@
{
imports = [
./terminal
];
}

View file

@ -0,0 +1,132 @@
{
config,
lib,
inputs,
...
}: let
cfg = config.xun.programs.terminal;
in {
imports = [
inputs.nix-index-database.hmModules.nix-index
];
options.xun.programs.terminal = {
direnv.enable = lib.mkEnableOption "direnv";
comma.enable = lib.mkEnableOption "comma";
tmux.enable = lib.mkEnableOption "tmux";
irssi.enable = lib.mkEnableOption "irssi";
shell.zsh = {
enable = lib.mkEnableOption "zsh";
};
};
config = lib.mkMerge [
(lib.mkIf cfg.shell.zsh.enable {
programs.fzf.enable = true;
programs.zsh = {
enable = true;
autocd = true;
enableCompletion = true;
autosuggestion.enable = true;
dotDir = ".config/zsh";
defaultKeymap = "emacs";
history = {
expireDuplicatesFirst = true;
path = "${config.xdg.dataHome}/zsh_history";
};
initExtra = ''
unsetopt beep
## KEYBINDS ##
bindkey "^[[1;5D" backward-word
bindkey "^[[1;5C" forward-word
# improve ^w behaviour
WORDCHARS=
# pretty completion menu
zstyle ':completion:*' menu select
# shift-tab in completion menu
bindkey '^[[Z' reverse-menu-complete
zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}' # Case insensitive completion
## MISC ##
setopt extendedglob
# Show completion categories
zstyle ':completion:*:*:*:*:descriptions' format '%F{magenta}<-%d->%f'
## PROMPT ##
autoload -Uz vcs_info
precmd_vcs_info() { vcs_info }
precmd_functions+=( precmd_vcs_info )
zstyle ':vcs_info:git:*' formats ' %b '
setopt prompt_subst
PROMPT="%F{blue}[%F{magenta}%n%F{blue}@%F{magenta}%M%F{blue}] %~%f %F{green}\$vcs_info_msg_0_%f%(?..%F{red}| %? )%#%f "
'';
};
})
(lib.mkIf cfg.direnv.enable {
programs.direnv = {
enable = true;
enableZshIntegration = true;
nix-direnv.enable = true;
};
})
(lib.mkIf cfg.comma.enable {
programs.nix-index-database.comma.enable = true;
programs.nix-index = {
enableBashIntegration = false;
enableFishIntegration = false;
enableZshIntegration = false;
};
})
(lib.mkIf cfg.tmux.enable {
programs.tmux = {
enable = true;
baseIndex = 1;
clock24 = true;
mouse = true;
escapeTime = 0;
extraConfig = ''
bind '"' split-window -c "#{pane_current_path}"
bind % split-window -h -c "#{pane_current_path}"
bind c new-window -c "#{pane_current_path}";
set -g status-style bg=default
setw -g window-status-current-style fg=#be95ff
set -g status-justify absolute-centre
set -g status-interval 5
set -g status-right "#[fg=#25be6a]#(free -h | awk 'NR==2{print $3\"/\"$2}')"
set -ag status-right "#[fg=default] %a %d %b %H:%M"
'';
};
})
(lib.mkIf cfg.irssi.enable {
# TODO: make more customizable maybe
programs.irssi = {
enable = true;
networks = {
liberachat = {
nick = "wheat";
server = {
address = "irc.libera.chat";
port = 6697;
autoConnect = true;
};
channels = {
nixos.autoJoin = false;
};
};
};
};
})
];
}

View file

@ -10,7 +10,7 @@
"xun@kidney" = [
../.
./kidney
inputs.nix-index-database.hmModules.nix-index
# inputs.nix-index-database.hmModules.nix-index
{
programs.nix-index = {
enableBashIntegration = false;
@ -23,17 +23,9 @@
"xun@nixdesk" = [
../.
./nixdesk
inputs.nix-index-database.hmModules.nix-index
inputs.sops-nix.homeManagerModules.sops
inputs.nur.hmModules.nur
{
programs.nix-index = {
enableBashIntegration = false;
enableFishIntegration = false;
enableZshIntegration = false;
};
home.stateVersion = "23.11";
}
{home.stateVersion = "23.11";}
];
"xun@hopper" = [
../.

View file

@ -1,19 +1,37 @@
{inputs, ...}: {
{
inputs,
self,
...
}: {
imports = [
self.homeManagerModules.xun
inputs.small-nvim.homeManagerModules.small-nvim
../../terminal/shell/zsh.nix
../../terminal/programs
../../terminal/programs/lazygit.nix
../../develop
../../develop/small-misc.nix
# ../../terminal/shell/zsh.nix
# ../../terminal/programs
# ../../terminal/programs/lazygit.nix
# ../../develop
# ../../develop/small-misc.nix
];
xun.small-nvim = {
enable = true;
colorscheme = {
name = "dayfox";
package = "EdenEast/nightfox.nvim";
xun = {
small-nvim = {
enable = true;
colorscheme = {
name = "dayfox";
package = "EdenEast/nightfox.nvim";
};
wakatime.enable = false;
};
develop.enable = true;
desktop = {
xdg.enable = true;
};
programs.terminal = {
shell.zsh.enable = true;
direnv.enable = true;
comma.enable = true;
tmux.enable = true;
irssi.enable = true;
};
wakatime.enable = false;
};
}

View file

@ -1,14 +1,19 @@
{inputs, ...}: {
{
inputs,
self,
...
}: {
imports = [
self.homeManagerModules.xun
inputs.small-nvim.homeManagerModules.small-nvim
./kanshi.nix
./defaults.nix
../../secrets
../../terminal
# ../../terminal
../../terminal/programs/zellij.nix
../../terminal/programs/irssi.nix
# ../../terminal/programs/irssi.nix
../../terminal/programs/lazygit.nix
../../terminal/programs/beets.nix
../../editors/emacs.nix
@ -28,8 +33,8 @@
../../programs/desktop/sway
# development
../../develop
../../develop/small-misc.nix
#../../develop
#../../develop/small-misc.nix
# programs
../../programs/misc/keepassxc.nix
@ -58,12 +63,29 @@
../../services/system/polkit-agent.nix
../../services/system/udiskie.nix # although i dont need this for usb memory, it is quite convenient for flashing qmk
];
xun.small-nvim = {
enable = true;
colorscheme = {
name = "carbonfox";
package = "EdenEast/nightfox.nvim";
xun = {
small-nvim = {
enable = true;
colorscheme = {
name = "carbonfox";
package = "EdenEast/nightfox.nvim";
};
wakatime.enable = true;
};
desktop.xdg.enable = true;
programs.terminal = {
shell.zsh.enable = true;
direnv.enable = true;
comma.enable = true;
tmux.enable = true;
irssi.enable = true;
};
develop = {
enable = true;
docs.enable = true;
lsp = {
c.enable = true;
};
};
wakatime.enable = true;
};
}

View file

@ -139,7 +139,7 @@
"Google".metaData.alias = "@go";
"DuckDuckGo".metaData.alias = "@ddg";
"Wikipedia".metaData.alias = "@wiki";
"Bind".metaData.hidden = true;
"Bing".metaData.hidden = true;
};
};
userChrome = builtins.readFile ./userChrome.css;

View file

@ -1,4 +1,4 @@
{
{pkgs, ...}: {
programs.mpv = {
enable = true;
config = {
@ -29,5 +29,8 @@
user-agent = "Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/116.0";
};
};
scripts = with pkgs.mpvScripts; [
cutter
];
};
}

View file

@ -1,3 +1,4 @@
# TODO: move this somewhere more reasonable
{
config,
pkgs,

View file

@ -43,10 +43,15 @@ in {
(modulePaths [
"core/tools.nix"
"core/users.nix"
"core/locale.nix"
"programs/tools.nix"
"programs/zsh.nix"
"programs/home-manager.nix"
"hardware/graphics.nix"
"services/flatpak.nix"
"services/xdg-portals.nix"
"nix"
"nix/gc.nix"
@ -83,9 +88,9 @@ in {
#"services/ollama.nix"
"desktop/x11/nosleep.nix"
"programs/gamemode.nix"
"programs/gamescope.nix"
"programs/steam.nix"
# "programs/gamemode.nix" # TEMP: TODO
# "programs/gamescope.nix" # TEMP: TODO
# "programs/steam.nix" # TEMP: TODO
"programs/RE"
])

View file

@ -2,6 +2,7 @@
imports = [
./hardware.nix
./hibernate-boot.nix
./testing.nix
];
networking.hostName = "nixdesk";

11
hosts/nixdesk/testing.nix Normal file
View file

@ -0,0 +1,11 @@
{self, ...}: {
imports = [
self.nixosModules.xun
];
xun.gaming = {
enable = true;
steam.enable = true;
gamescope.enable = true;
gamemode.enable = true;
};
}

View file

@ -1,5 +1,6 @@
{
flake.nixosModules = {
#name = import ./name;
xun = import ./xun;
};
}

5
modules/xun/default.nix Normal file
View file

@ -0,0 +1,5 @@
{
imports = [
./gaming
];
}

View file

@ -0,0 +1,47 @@
{
pkgs,
config,
lib,
...
}: let
cfg = config.xun.gaming;
in {
options.xun.gaming = {
enable = lib.mkEnableOption "gaming";
steam.enable = lib.mkEnableOption "steam";
gamemode.enable = lib.mkEnableOption "gamemode";
gamescope.enable = lib.mkEnableOption "gamescope";
};
config = lib.mkIf cfg.enable ({
programs.gamescope = lib.mkIf cfg.gamescope.enable {
enable = true;
capSysNice = false; # doesnt work with steam & heroic
};
programs.gamemode.enable = cfg.gamemode.enable;
}
// lib.mkIf cfg.steam.enable {
# TODO: protontricks & steamtinkerlaunch
programs.steam = {
enable = true;
remotePlay.openFirewall = true;
localNetworkGameTransfers.openFirewall = true;
extraCompatPackages = with pkgs; [
proton-ge-bin
];
## Fixes gamescope (NOTE: no clue what this means)
extraPackages = with pkgs; [
xorg.libXcursor
xorg.libXi
xorg.libXinerama
xorg.libXScrnSaver
libpng
libpulseaudio
libvorbis
stdenv.cc.cc.lib
libkrb5
keyutils
];
};
});
}

View file

@ -3,17 +3,8 @@
./security.nix
./users.nix
./ssh.nix
./locale.nix
../nix
../programs/zsh.nix
];
i18n = {
defaultLocale = "en_US.UTF-8";
supportedLocales = [
"en_US.UTF-8/UTF-8"
];
};
services.xserver.xkb.layout = "eu";
time.timeZone = lib.mkDefault "Europe/Berlin";
}

11
system/core/locale.nix Normal file
View file

@ -0,0 +1,11 @@
{lib, ...}: {
i18n = {
defaultLocale = "en_US.UTF-8";
supportedLocales = [
"en_US.UTF-8/UTF-8"
];
};
services.xserver.xkb.layout = "eu";
time.timeZone = lib.mkDefault "Europe/Berlin";
}

View file

@ -0,0 +1,11 @@
{pkgs, ...}: {
xdg.portal = {
enable = true;
extraPortals = with pkgs; [
xdg-desktop-portal-gtk
];
config = {
common.default = ["gtk"];
};
};
}