flake revamp
This commit is contained in:
parent
4b252ef608
commit
435628dc4a
7 changed files with 106 additions and 126 deletions
49
flake.nix
49
flake.nix
|
|
@ -4,10 +4,8 @@
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-26.05";
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-26.05";
|
||||||
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
|
nixpkgs-unstable.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||||
home-manager = {
|
home-manager.url = "github:nix-community/home-manager/release-26.05";
|
||||||
url = "github:nix-community/home-manager/release-26.05";
|
home-manager.inputs.nixpkgs.follows = "nixpkgs";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = inputs @ {
|
outputs = inputs @ {
|
||||||
|
|
@ -16,41 +14,22 @@
|
||||||
nixpkgs-unstable,
|
nixpkgs-unstable,
|
||||||
home-manager,
|
home-manager,
|
||||||
...
|
...
|
||||||
}: let
|
}: {
|
||||||
system = "x86_64-linux";
|
nixosConfigurations.phostron = nixpkgs.lib.nixosSystem {
|
||||||
in {
|
|
||||||
nixosConfigurations = {
|
|
||||||
phostron = nixpkgs.lib.nixosSystem {
|
|
||||||
specialArgs = {inherit inputs;};
|
specialArgs = {inherit inputs;};
|
||||||
modules = [
|
modules = [
|
||||||
({
|
./nixos/configuration.nix
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
nixpkgs = {
|
|
||||||
hostPlatform = system;
|
|
||||||
config.allowUnfree = true;
|
|
||||||
overlays = [
|
|
||||||
(final: prev: {
|
|
||||||
unstable = import nixpkgs-unstable {
|
|
||||||
system = prev.stdenv.hostPlatform.system;
|
|
||||||
config.allowUnfree = true;
|
|
||||||
};
|
|
||||||
})
|
|
||||||
];
|
|
||||||
};
|
|
||||||
})
|
|
||||||
./hosts/phostron/configuration.nix
|
./hosts/phostron/configuration.nix
|
||||||
];
|
./profiles/desktops/kde.nix
|
||||||
};
|
./users/coyote/configuration.nix
|
||||||
};
|
home-manager.nixosModules.home-manager {
|
||||||
|
home-manager = {
|
||||||
homeConfigurations.coyote = home-manager.lib.homeManagerConfiguration {
|
useGlobalPkgs = true;
|
||||||
pkgs = nixpkgs.legacyPackages.${system};
|
useUserPackages = true;
|
||||||
extraSpecialArgs = {inherit inputs;};
|
extraSpecialArgs = {inherit inputs;};
|
||||||
modules = [
|
users.coyote.imports = [./users/coyote/home.nix];
|
||||||
./users/coyote/home.nix
|
};
|
||||||
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,8 @@
|
||||||
{...}: {
|
{...}: {
|
||||||
imports = [
|
imports = [./hardware-configuration.nix];
|
||||||
./hardware-configuration.nix
|
|
||||||
../../configuration.nix
|
|
||||||
../../profiles/kde.nix
|
|
||||||
../../users/coyote/configuration.nix
|
|
||||||
];
|
|
||||||
|
|
||||||
system.stateVersion = "26.05"; # I hope you know what you're doing. :)
|
system.stateVersion = "26.05"; # I hope you know what you're doing. :)
|
||||||
|
nixpkgs.hostPlatform = "x86_64-linux";
|
||||||
|
|
||||||
services.displayManager.sddm.settings = {
|
services.displayManager.sddm.settings = {
|
||||||
Theme = {
|
Theme = {
|
||||||
|
|
|
||||||
170
nixos/configuration.nix
Normal file
170
nixos/configuration.nix
Normal file
|
|
@ -0,0 +1,170 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
inputs,
|
||||||
|
...}: {
|
||||||
|
boot = {
|
||||||
|
loader.systemd-boot = {
|
||||||
|
enable = true;
|
||||||
|
configurationLimit = 10;
|
||||||
|
efi.canTouchEfiVariables = true;
|
||||||
|
};
|
||||||
|
timeout = 2;
|
||||||
|
kernelParams = [
|
||||||
|
"quiet"
|
||||||
|
"rd.udev.log_level=3"
|
||||||
|
"rd.systemd.show_status=auto"
|
||||||
|
];
|
||||||
|
initrd.verbose = false;
|
||||||
|
consoleLogLevel = 3;
|
||||||
|
kernelPackages = pkgs.linuxPackages;
|
||||||
|
};
|
||||||
|
|
||||||
|
time.timeZone = "Asia/Jakarta";
|
||||||
|
i18n.defaultLocale = "en_GB.UTF-8";
|
||||||
|
|
||||||
|
services = {
|
||||||
|
fwupd.enable = true;
|
||||||
|
xserver.xkb.layout = "us";
|
||||||
|
locate.enable = true;
|
||||||
|
printing.enable = true;
|
||||||
|
openssh.enable = false;
|
||||||
|
pulseaudio.enable = false;
|
||||||
|
pipewire = {
|
||||||
|
enable = true;
|
||||||
|
alsa.enable = true;
|
||||||
|
alsa.support32Bit = true;
|
||||||
|
pulse.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
security.rtkit.enable = true;
|
||||||
|
|
||||||
|
nix.settings = {
|
||||||
|
experimental-features = ["nix-command" "flakes"];
|
||||||
|
auto-optimise-store = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
nixpkgs = {
|
||||||
|
config.allowUnfree = true;
|
||||||
|
overlays = [
|
||||||
|
(final: prev: {
|
||||||
|
unstable = import inputs.nixpkgs-unstable {
|
||||||
|
system = prev.stdenv.hostPlatform.system;
|
||||||
|
config.allowUnfree = true;
|
||||||
|
};
|
||||||
|
})
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
environment = {
|
||||||
|
systemPackages = with pkgs; [
|
||||||
|
# Nix
|
||||||
|
nh
|
||||||
|
alejandra
|
||||||
|
# system devel
|
||||||
|
python3
|
||||||
|
gcc
|
||||||
|
clang
|
||||||
|
# system utils
|
||||||
|
firmware-updater
|
||||||
|
mtr
|
||||||
|
gnupg
|
||||||
|
ddate
|
||||||
|
testdisk
|
||||||
|
tree
|
||||||
|
wget
|
||||||
|
btop
|
||||||
|
dysk
|
||||||
|
plocate
|
||||||
|
traceroute
|
||||||
|
rlwrap
|
||||||
|
entr
|
||||||
|
unzip
|
||||||
|
ffmpeg
|
||||||
|
imagemagick
|
||||||
|
# extra utils
|
||||||
|
fd
|
||||||
|
bat
|
||||||
|
xh
|
||||||
|
tlrc
|
||||||
|
dust
|
||||||
|
hyperfine
|
||||||
|
ripgrep
|
||||||
|
fzf
|
||||||
|
eza
|
||||||
|
];
|
||||||
|
shellAliases = {
|
||||||
|
l = "eza --long --all";
|
||||||
|
ll = "eza --long";
|
||||||
|
ls = "eza --long";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
programs = {
|
||||||
|
fish.enable = true;
|
||||||
|
starship.enable = true;
|
||||||
|
atuin = {
|
||||||
|
enable = true;
|
||||||
|
settings.sync_address = "https://api.atuin.sh";
|
||||||
|
};
|
||||||
|
nix-ld = {
|
||||||
|
enable = true;
|
||||||
|
libraries = with pkgs; [
|
||||||
|
fuse
|
||||||
|
e2fsprogs
|
||||||
|
];
|
||||||
|
};
|
||||||
|
tmux = {
|
||||||
|
enable = true;
|
||||||
|
clock24 = true;
|
||||||
|
baseIndex = 1;
|
||||||
|
shortcut = "a";
|
||||||
|
keyMode = "vi";
|
||||||
|
terminal = "screen-256color";
|
||||||
|
escapeTime = 0;
|
||||||
|
extraConfig = ''
|
||||||
|
set -g pane-base-index 1
|
||||||
|
set-window-option -g pane-base-index 1
|
||||||
|
set-option -g renumber-windows on
|
||||||
|
set-option -g status-right "\"#W\""
|
||||||
|
set -ga terminal-overrides ",*:RGB"
|
||||||
|
set -g mouse on
|
||||||
|
set -g set-clipboard on
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
fonts = {
|
||||||
|
packages = with pkgs; [
|
||||||
|
# GUI fonts
|
||||||
|
inter
|
||||||
|
corefonts
|
||||||
|
vista-fonts
|
||||||
|
roboto
|
||||||
|
cantarell-fonts
|
||||||
|
# fonts for i18n
|
||||||
|
noto-fonts
|
||||||
|
noto-fonts-cjk-sans
|
||||||
|
noto-fonts-cjk-serif
|
||||||
|
noto-fonts-color-emoji
|
||||||
|
noto-fonts-monochrome-emoji
|
||||||
|
unifont
|
||||||
|
unifont_upper
|
||||||
|
unifont-csur
|
||||||
|
# terminal fonts
|
||||||
|
nerd-fonts.iosevka
|
||||||
|
];
|
||||||
|
fontconfig = {
|
||||||
|
antialias = true;
|
||||||
|
subpixel.rgba = "rgb";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
xdg.portal = {
|
||||||
|
enable = true;
|
||||||
|
config.common.default = ["gtk"];
|
||||||
|
extraPortals = with pkgs; [xdg-desktop-portal-wlr];
|
||||||
|
};
|
||||||
|
}
|
||||||
8
nixos/nixpkgs.nix
Normal file
8
nixos/nixpkgs.nix
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
inputs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
}
|
||||||
20
profiles/desktops/kde.nix
Normal file
20
profiles/desktops/kde.nix
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
{pkgs, ...}: {
|
||||||
|
services = {
|
||||||
|
displayManager.sddm.enable = true;
|
||||||
|
desktopManager.plasma6.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
environment = {
|
||||||
|
systemPackages = with pkgs.kdePackages; [
|
||||||
|
kate
|
||||||
|
bluez-qt
|
||||||
|
kalk
|
||||||
|
filelight
|
||||||
|
kamoso
|
||||||
|
konversation
|
||||||
|
kmail
|
||||||
|
ktorrent
|
||||||
|
];
|
||||||
|
plasma6.excludePackages = with pkgs.kdePackages; [discover];
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -16,65 +16,7 @@ in {
|
||||||
defaultUserShell = pkgs.unstable.fish;
|
defaultUserShell = pkgs.unstable.fish;
|
||||||
};
|
};
|
||||||
|
|
||||||
environment = {
|
environment.sessionVariables.SSH_AUTH_SOCK = "/run/user/${builtins.toString USER_ID}/ssh-agent";
|
||||||
systemPackages = with pkgs; [
|
|
||||||
# utils
|
|
||||||
ghostscript
|
|
||||||
tectonic
|
|
||||||
# lisps
|
|
||||||
chicken
|
|
||||||
guile
|
|
||||||
sbcl
|
|
||||||
unstable.racket
|
|
||||||
# devel
|
|
||||||
ast-grep
|
|
||||||
nodejs
|
|
||||||
lua
|
|
||||||
luarocks
|
|
||||||
stylua
|
|
||||||
mermaid-cli
|
|
||||||
unstable.lazygit
|
|
||||||
# LSPs
|
|
||||||
ty
|
|
||||||
nil
|
|
||||||
marksman
|
|
||||||
systemd-lsp
|
|
||||||
bash-language-server
|
|
||||||
];
|
|
||||||
sessionVariables.SSH_AUTH_SOCK = "/run/user/${builtins.toString USER_ID}/ssh-agent";
|
|
||||||
};
|
|
||||||
|
|
||||||
programs = {
|
|
||||||
starship = {
|
|
||||||
package = pkgs.unstable.starship;
|
|
||||||
transientPrompt.enable = true;
|
|
||||||
transientPrompt.left = "starship module character";
|
|
||||||
settings = {
|
|
||||||
"$schema" = "https://starship.rs/config-schema.json";
|
|
||||||
"git_status" = {
|
|
||||||
ahead = ">";
|
|
||||||
behind = "<";
|
|
||||||
diverged = "<>";
|
|
||||||
renamed = "r";
|
|
||||||
deleted = "x";
|
|
||||||
};
|
|
||||||
character = {
|
|
||||||
success_symbol = "[λ](bold green)";
|
|
||||||
error_symbol = "[λ](bold red)";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
ssh.startAgent = true;
|
|
||||||
obs-studio = {
|
|
||||||
enable = true;
|
|
||||||
enableVirtualCamera = true;
|
|
||||||
plugins = with pkgs.obs-studio-plugins; [
|
|
||||||
input-overlay
|
|
||||||
droidcam-obs
|
|
||||||
wlrobs
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
systemd.user.services.ssh-add-key = {
|
systemd.user.services.ssh-add-key = {
|
||||||
wantedBy = ["default.target"];
|
wantedBy = ["default.target"];
|
||||||
|
|
@ -89,4 +31,11 @@ in {
|
||||||
RestartSec = 1;
|
RestartSec = 1;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
programs = {
|
||||||
|
obs-studio.enableVirtualCamera = true;
|
||||||
|
ssh.startAgent = true;
|
||||||
|
starship.transientPrompt.enable = true;
|
||||||
|
starship.transientPrompt.left = "starship module character";
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,12 @@
|
||||||
{pkgs, ...}: let
|
{pkgs, ...}: {
|
||||||
|
imports = let
|
||||||
programsDir = ./programs;
|
programsDir = ./programs;
|
||||||
programsImports = map (name: programsDir + "/${name}") (
|
programsImports = map (name: programsDir + "/${name}") (
|
||||||
builtins.filter
|
builtins.filter
|
||||||
(name: builtins.match ".*\\.nix" name != null)
|
(name: builtins.match ".*\\.nix" name != null)
|
||||||
(builtins.attrNames (builtins.readDir programsDir))
|
(builtins.attrNames (builtins.readDir programsDir))
|
||||||
);
|
);
|
||||||
in {
|
in programsImports;
|
||||||
imports = programsImports;
|
|
||||||
|
|
||||||
home = {
|
home = {
|
||||||
stateVersion = "26.05"; # I hope you know what you're doing. :)
|
stateVersion = "26.05"; # I hope you know what you're doing. :)
|
||||||
|
|
@ -36,6 +36,13 @@ in {
|
||||||
osu-lazer-bin
|
osu-lazer-bin
|
||||||
# emulation
|
# emulation
|
||||||
(unstable.bottles.override {removeWarningPopup = true;})
|
(unstable.bottles.override {removeWarningPopup = true;})
|
||||||
|
# lisps
|
||||||
|
chicken
|
||||||
|
guile
|
||||||
|
sbcl
|
||||||
|
unstable.racket
|
||||||
|
# devel
|
||||||
|
unstable.lazygit
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -65,5 +72,30 @@ in {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs.unstable.yt-dlp;
|
package = pkgs.unstable.yt-dlp;
|
||||||
};
|
};
|
||||||
|
starship = {
|
||||||
|
package = pkgs.unstable.starship;
|
||||||
|
settings = {
|
||||||
|
"$schema" = "https://starship.rs/config-schema.json";
|
||||||
|
"git_status" = {
|
||||||
|
ahead = ">";
|
||||||
|
behind = "<";
|
||||||
|
diverged = "<>";
|
||||||
|
renamed = "r";
|
||||||
|
deleted = "x";
|
||||||
|
};
|
||||||
|
character = {
|
||||||
|
success_symbol = "[λ](bold green)";
|
||||||
|
error_symbol = "[λ](bold red)";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
obs-studio = {
|
||||||
|
enable = true;
|
||||||
|
plugins = with pkgs.obs-studio-plugins; [
|
||||||
|
input-overlay
|
||||||
|
droidcam-obs
|
||||||
|
wlrobs
|
||||||
|
];
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Reference in a new issue