This commit is contained in:
tulg 2025-10-19 19:40:13 +03:00
parent 510db0f1d4
commit 6810e6bb0f
6 changed files with 452 additions and 79 deletions

72
flake.lock generated
View file

@ -16,6 +16,26 @@
"type": "github" "type": "github"
} }
}, },
"disko": {
"inputs": {
"nixpkgs": [
"nixpkgs"
]
},
"locked": {
"lastModified": 1760701190,
"narHash": "sha256-y7UhnWlER8r776JsySqsbTUh2Txf7K30smfHlqdaIQw=",
"owner": "nix-community",
"repo": "disko",
"rev": "3a9450b26e69dcb6f8de6e2b07b3fc1c288d85f5",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "disko",
"type": "github"
}
},
"home-manager": { "home-manager": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@ -107,65 +127,15 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs_2": {
"locked": {
"lastModified": 1760038930,
"narHash": "sha256-Oncbh0UmHjSlxO7ErQDM3KM0A5/Znfofj2BSzlHLeVw=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "0b4defa2584313f3b781240b29d61f6f9f7e0df3",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"root": { "root": {
"inputs": { "inputs": {
"disko": "disko",
"home-manager": "home-manager", "home-manager": "home-manager",
"nix-colors": "nix-colors", "nix-colors": "nix-colors",
"nixpkgs": "nixpkgs", "nixpkgs": "nixpkgs",
"spicetify-nix": "spicetify-nix",
"zen-browser": "zen-browser" "zen-browser": "zen-browser"
} }
}, },
"spicetify-nix": {
"inputs": {
"nixpkgs": "nixpkgs_2",
"systems": "systems"
},
"locked": {
"lastModified": 1760243311,
"narHash": "sha256-LNrok211+WWlMGWqpGPpnGcnWhyo5SfvMv62uDiLzoI=",
"owner": "Gerg-L",
"repo": "spicetify-nix",
"rev": "93f1d45e48191a0b24c5c15e5cf369566ff75be9",
"type": "github"
},
"original": {
"owner": "Gerg-L",
"repo": "spicetify-nix",
"type": "github"
}
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"zen-browser": { "zen-browser": {
"inputs": { "inputs": {
"home-manager": "home-manager_2", "home-manager": "home-manager_2",

View file

@ -1,52 +1,56 @@
{ {
description = "NixOS configuration"; description = "Tulga's multi-device NixOS configuration (no global modules)";
inputs = { inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
spicetify-nix.url = "github:Gerg-L/spicetify-nix";
home-manager = { home-manager = {
url = "github:nix-community/home-manager"; url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
nix-colors.url = "github:misterio77/nix-colors"; nix-colors.url = "github:misterio77/nix-colors";
zen-browser = { zen-browser = {
url = "github:0xc000022070/zen-browser-flake"; url = "github:0xc000022070/zen-browser-flake";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
disko = {
url = "github:nix-community/disko";
inputs.nixpkgs.follows = "nixpkgs";
};
}; };
outputs = { self, nixpkgs, home-manager, nix-colors, ... } @ inputs: outputs = { self, nixpkgs, home-manager, nix-colors, zen-browser, disko, ... }:
let let
system = "x86_64-linux"; system = "x86_64-linux";
pkgs = import nixpkgs {
inherit system;
config.allowUnfree = true;
};
in { in {
#
nixosConfigurations.virgil = nixpkgs.lib.nixosSystem { nixosConfigurations.virgil = nixpkgs.lib.nixosSystem {
inherit system; inherit system;
specialArgs = { inherit inputs; };
modules = [ modules = [
./configuration.nix ./hosts/virgil/configuration.nix
home-manager.nixosModules.home-manager home-manager.nixosModules.home-manager
];
{ specialArgs = { inherit home-manager; };
home-manager = {
useGlobalPkgs = true;
useUserPackages = true;
# Pass additional inputs to home-manager modules
extraSpecialArgs = { inherit inputs nix-colors; };
backupFileExtension = "backup";
users.tulg = {
imports = [ ./home.nix ];
}; };
};
} #
nixosConfigurations.archangel = nixpkgs.lib.nixosSystem {
inherit system;
modules = [
./hosts/archangel/configuration.nix
home-manager.nixosModules.home-manager
]; ];
}; };
# placeholder
#nixosConfigurations.server = nixpkgs.lib.nixosSystem {
# inherit system;
# modules = [
# ./hosts/server/configuration.nix
# ];
# };
}; };
} }

60
flake.old Normal file
View file

@ -0,0 +1,60 @@
{
description = "NixOS configuration";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
spicetify-nix.url = "github:Gerg-L/spicetify-nix";
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
nix-colors.url = "github:misterio77/nix-colors";
zen-browser = {
url = "github:0xc000022070/zen-browser-flake";
inputs.nixpkgs.follows = "nixpkgs";
};
disko = {
url = "github:nix-community/disko";
inputs.nixpkgs.follows = "nixpkgs";
};
};
#};
# };
outputs = { self, nixpkgs, home-manager, nix-colors, disko, ... } @ inputs:
let
system = "x86_64-linux";
pkgs = import nixpkgs {
inherit system;
config.allowUnfree = true;
};
in {
nixosConfigurations.virgil = nixpkgs.lib.nixosSystem {
inherit system;
specialArgs = { inherit inputs; };
modules = [
./configuration.nix
home-manager.nixosModules.home-manager
inputs.disko.nixosModules.disko
{
home-manager = {
useGlobalPkgs = true;
useUserPackages = true;
# Pass additional inputs to home-manager modules
extraSpecialArgs = { inherit inputs nix-colors; };
backupFileExtension = "backup";
users.tulg = {
imports = [ ./home.nix ];
};
};
}
];
};
};
}

View file

@ -0,0 +1,142 @@
# Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running nixos-help).
{ config, pkgs, home-manager, ... }:
{
imports =
[ # Include the results of the hardware scan.
./hardware-configuration.nix
home-manager.nixosModules.home-manager
];
home-manager.users.tulg = import ../../modules/home.nix;
# Bootloader.
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
networking = {
hostName = "virgil";
nameservers = ["127.0.0.1" "::1"];
};
services.dnscrypt-proxy2 = {
enable = true;
settings = {
listen_addresses = ["127.0.0.1:53" "[::1]:53"];
};
};
services.zapret = {
enable = true;
params = [
"--dpi-desync=fake"
"--dpi-desync-ttl=8"
];
};
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
# Configure network proxy if necessary
# networking.proxy.default = "http://user:password@proxy:port/";
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
# Enable networking
networking.networkmanager.enable = true;
# Set your time zone.
time.timeZone = "Europe/Istanbul";
# Select internationalisation properties.
services.getty.autologinUser = "tulg";
programs.hyprland = {
enable = true;
xwayland.enable = true;
};
# Define a user account. Don't forget to set a password with passwd.
users.users.tulg = {
isNormalUser = true;
description = "Tulga";
extraGroups = [ "networkmanager" "wheel" ];
packages = with pkgs; [];
};
# Allow unfree packages
nixpkgs.config.allowUnfree = true;
# List packages installed in system profile. To search, run:
# $ nix search wget
environment.systemPackages = with pkgs; [
# vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
# wget
git
rose-pine-gtk-theme
];
# Some programs need SUID wrappers, can be configured further or are
# started in user sessions.
# programs.mtr.enable = true;
# programs.gnupg.agent = {
# enable = true;
# enableSSHSupport = true;
# };
# List services that you want to enable:
# Enable the OpenSSH daemon.
services.openssh = {
enable = true;
settings = {
PasswordAuthentication = true;
PermitRootLogin = "yes";
};
};
fonts = {
packages = with pkgs; [
noto-fonts
noto-fonts-cjk-sans
noto-fonts-emoji
nerd-fonts.symbols-only
liberation_ttf
font-awesome
fira
fira-sans
fira-code
fira-code-symbols
];
enableDefaultPackages = true;
fontconfig = {
enable = true;
defaultFonts = {
sansSerif = [ "Fira Sans Regular" ];
serif = [ "Fira Sans Regular" ];
monospace = [ "Fira Mono Regular" ];
};
};
};
# Open ports in the firewall.
# networking.firewall.allowedTCPPorts = [ ... ];
# networking.firewall.allowedUDPPorts = [ ... ];
# Or disable the firewall altogether.
# networking.firewall.enable = false;
users.users."root".openssh.authorizedKeys.keys = [
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDIefprdYz4gFgBqGlrkycWcTYxFttQHRjDQmREtQTiGyqK1gQiB4z4Cbiayt7Emq224sbaobQPlNSyhlBCSo/Wf0bmZMz8NwNdwhFSkDnyD6LPaHg8fv9FXnWW0wBMl4oSD2wfGbMQBrecjgHXfJ64UiHyyhDllDDtWGgoY75wwfWHzX/NiGaEi0LHCQ8dsgp7H+BhssTkJPZbv6BJcA34yfb6dISjvW2S/QGKMwgYr9ArfGLUTWPbj+EbL7Bf9VsTFe9nP+FnYqEu4+oBIbY2heXWA+FCi0zxmMY4oYJxT5cJi1nffVOxboKLm4kIT93gv1WdcDiQDVdy5sJ1q0gJyiRt1HfJW4l8jn36VJ0FvdGmRliOTzSfeER0gbIsOcxeArHRV3ff/CoSocnSs0To5vFKgjlGwhdE8sJsqILgZnIoKwVvOXuDOz/RhbdBPpVsG7upk7bLJtLv9P5h0h/gUIWA1iktaYBSDL0UofjSrfNhZH6M0P+soIuooanSlVGivTlASw1pd+gjvebbc9ksvGZVqPQT0XegIvZkwfu8moERZUqv/xhNcyWTEGfFKoeHt5ub8Ac0LOe9Ak6N+p8xDjTdkmUgte5J/CNL1JL3JA/iqocAo+VvmIbPatbrOwUNcROOS3WeFg8MfNrbDyYCVNbZWAyM6wwfLB2fIUB2jw== tulg@highcommand" # content of authorized_keys file
];
users.users."tulg".openssh.authorizedKeys.keys = [
"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDIefprdYz4gFgBqGlrkycWcTYxFttQHRjDQmREtQTiGyqK1gQiB4z4Cbiayt7Emq224sbaobQPlNSyhlBCSo/Wf0bmZMz8NwNdwhFSkDnyD6LPaHg8fv9FXnWW0wBMl4oSD2wfGbMQBrecjgHXfJ64UiHyyhDllDDtWGgoY75wwfWHzX/NiGaEi0LHCQ8dsgp7H+BhssTkJPZbv6BJcA34yfb6dISjvW2S/QGKMwgYr9ArfGLUTWPbj+EbL7Bf9VsTFe9nP+FnYqEu4+oBIbY2heXWA+FCi0zxmMY4oYJxT5cJi1nffVOxboKLm4kIT93gv1WdcDiQDVdy5sJ1q0gJyiRt1HfJW4l8jn36VJ0FvdGmRliOTzSfeER0gbIsOcxeArHRV3ff/CoSocnSs0To5vFKgjlGwhdE8sJsqILgZnIoKwVvOXuDOz/RhbdBPpVsG7upk7bLJtLv9P5h0h/gUIWA1iktaYBSDL0UofjSrfNhZH6M0P+soIuooanSlVGivTlASw1pd+gjvebbc9ksvGZVqPQT0XegIvZkwfu8moERZUqv/xhNcyWTEGfFKoeHt5ub8Ac0LOe9Ak6N+p8xDjTdkmUgte5J/CNL1JL3JA/iqocAo+VvmIbPatbrOwUNcROOS3WeFg8MfNrbDyYCVNbZWAyM6wwfLB2fIUB2jw== tulg@highcommand" # content of authorized_keys file
];
# This value determines the NixOS release from which the default
# settings for stateful data, like file locations and database versions
# on your system were taken. Its perfectly fine and recommended to leave
# this value at the release version of the first install of this system.
# Before changing this value read the documentation for this option
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
nix.settings.experimental-features = [ "nix-command" "flakes"];
services.displayManager.ly.enable = true;
system.stateVersion = "25.05"; # Did you read the comment?
}

View file

@ -0,0 +1,37 @@
# 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 + "/profiles/qemu-guest.nix")
];
boot.initrd.availableKernelModules = [ "ahci" "xhci_pci" "virtio_pci" "virtio_scsi" "sr_mod" "virtio_blk" ];
boot.initrd.kernelModules = [ ];
boot.kernelModules = [ "kvm-amd" ];
boot.extraModulePackages = [ ];
fileSystems."/" =
{ device = "/dev/disk/by-uuid/10d6e759-3b2a-4593-b7c8-21b78352781d";
fsType = "ext4";
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/3639-959D";
fsType = "vfat";
options = [ "fmask=0022" "dmask=0022" ];
};
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.enp1s0.useDHCP = lib.mkDefault true;
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
}

160
modules/home.nix Normal file
View file

@ -0,0 +1,160 @@
{ config, lib, pkgs, inputs, nix-colors, ... }:
let
dots = "${config.home.homeDirectory}/nixdots/config";
symlink = path: config.lib.file.mkOutOfStoreSymlink path;
spicePkgs = inputs.spicetify-nix.legacyPackages.${pkgs.stdenv.system};
in
{
imports = [
inputs.zen-browser.homeModules.twilight
inputs.spicetify-nix.homeManagerModules.default
];
home.username = "tulg";
home.homeDirectory = "/home/tulg";
home.stateVersion = "25.05";
home.packages = with pkgs; [
networkmanagerapplet
wdisplays
nwg-look
rose-pine-gtk-theme
xfce.thunar
arc-theme
tmux
fastfetch
btop
# spotify
pavucontrol
wl-clipboard
hyprcursor
parsec-bin
file-roller
hyprpolkitagent
swww
grim
slurp
lf
pistol
waybar
wofi
mako
kitty
vesktop
libsForQt5.qtstyleplugin-kvantum
libsForQt5.qt5ct
rose-pine-kvantum
];
programs.vscode.enable = true;
programs.zen-browser.enable = true;
programs.zen-browser.policies = {
DisableAppUpdate = true;
DisableTelemetry = true;
};
programs.spicetify = {
enable = true;
theme = spicePkgs.themes.ziro;
colorScheme = "rose-pine-moon";
};
xdg.configFile."hypr" = {
source = symlink "${dots}/hypr";
recursive = true;
};
xdg.configFile."waybar" = {
source = symlink "${dots}/waybar";
recursive = true;
};
xdg.configFile."kitty" = {
source = symlink "${dots}/kitty";
recursive = true;
};
xdg.configFile."wofi" = {
source = symlink "${dots}/wofi";
recursive = true;
};
xdg.configFile."mako" = {
source = symlink "${dots}/mako";
recursive = true;
};
xdg.configFile."lf" = {
source = symlink "${dots}/lf";
recursive = true;
};
programs.firefox.enable = true;
programs.bash = {
enable = true;
shellAliases = {
a = "echo ids";
};
bashrcExtra = ''
PS1="\[\e[38;5;177m\]\u\[\e[38;5;220m\]@\[\e[38;5;1m\]\h \[\e[38;5;33m\]\w \[\033[0m\]\$ "
'';
};
programs.git = {
enable = true;
userName = "tulg";
userEmail = "tulg@protonmail.ch";
};
gtk = {
enable = true;
theme = {
name = "Nordic-darker";
package = pkgs.nordic;
};
iconTheme = {
name = "Papirus-Dark";
package = pkgs.papirus-icon-theme;
};
};
home.pointerCursor = {
gtk.enable = true;
x11.enable = true;
package = pkgs.bibata-cursors;
name = "Bibata-Modern-Classic";
size = 16;
};
nixpkgs.config.qt5 = {
enable = true;
platformTheme = "qt5ct";
style = {
package = pkgs.rose-pine-kvantum;
name = "Rose-pine";
};
};
#
#
home.sessionVariables = {
NIXOS_OZONE_WL = "1"; # hint Electron apps to use Wayland
GTK_THEME = "rose-pine";
QT_QPA_PLATFORMTHEME = "qt5ct";
QT_QPA_PLATFORM = "wayland";
# PS1="\[\e[38;5;177m\]\u\[\e[38;5;220m\]@\[\e[38;5;1m\]\h \[\e[38;5;33m\]\w \[\033[0m\]$ ";
};
xdg.portal = {
enable = true;
config.common.default = "*";
xdgOpenUsePortal = true;
extraPortals = [
pkgs.xdg-desktop-portal-hyprland
pkgs.xdg-desktop-portal-gtk
];
};
}