Compare commits

...

4 commits

Author SHA1 Message Date
49dc0ecc50
cleanup
Some checks failed
CI / formatting (push) Failing after 9m23s
CI / nix_flake_check (push) Failing after 9m24s
2025-12-09 14:35:23 +01:00
083adeee17
Remove backup configuration file 2025-12-08 17:57:20 +01:00
23f115760d
Fix deprecated option warnings in desktop.nix 2025-12-08 17:57:05 +01:00
b2dfb94ec9
Modularize and clean up NixOS configuration 2025-12-08 17:56:11 +01:00
27 changed files with 2219 additions and 653 deletions

View file

@ -0,0 +1 @@
3.11

0
direnvs/python/README.md Normal file
View file

6
direnvs/python/main.py Normal file
View file

@ -0,0 +1,6 @@
def main():
print("Hello from python!")
if __name__ == "__main__":
main()

View file

@ -0,0 +1,9 @@
[project]
name = "python"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.11"
dependencies = [
"jupyter>=1.1.1",
]

1654
direnvs/python/uv.lock generated Normal file

File diff suppressed because it is too large Load diff

548
flake.lock generated
View file

@ -1,322 +1,236 @@
{ {
"nodes": { "nodes": {
"blueprint": { "blueprint": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
"nix-ai-tools", "nix-ai-tools",
"nixpkgs" "nixpkgs"
], ],
"systems": "systems_2" "systems": "systems_2"
}, },
"locked": { "locked": {
"lastModified": 1763308703, "lastModified": 1763308703,
"narHash": "sha256-O9Y+Wer8wOh+N+4kcCK5p/VLrXyX+ktk0/s3HdZvJzk=", "narHash": "sha256-O9Y+Wer8wOh+N+4kcCK5p/VLrXyX+ktk0/s3HdZvJzk=",
"owner": "numtide", "owner": "numtide",
"repo": "blueprint", "repo": "blueprint",
"rev": "5a9bba070f801d63e2af3c9ef00b86b212429f4f", "rev": "5a9bba070f801d63e2af3c9ef00b86b212429f4f",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "numtide", "owner": "numtide",
"repo": "blueprint", "repo": "blueprint",
"type": "github" "type": "github"
} }
}, },
"flake-parts": { "flake-parts": {
"inputs": { "inputs": {
"nixpkgs-lib": [ "nixpkgs-lib": [
"nixvim", "nixvim",
"nixpkgs" "nixpkgs"
] ]
}, },
"locked": { "locked": {
"lastModified": 1754091436, "lastModified": 1763759067,
"narHash": "sha256-XKqDMN1/Qj1DKivQvscI4vmHfDfvYR2pfuFOJiCeewM=", "narHash": "sha256-LlLt2Jo/gMNYAwOgdRQBrsRoOz7BPRkzvNaI/fzXi2Q=",
"owner": "hercules-ci", "owner": "hercules-ci",
"repo": "flake-parts", "repo": "flake-parts",
"rev": "67df8c627c2c39c41dbec76a1f201929929ab0bd", "rev": "2cccadc7357c0ba201788ae99c4dfa90728ef5e0",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "hercules-ci", "owner": "hercules-ci",
"repo": "flake-parts", "repo": "flake-parts",
"type": "github" "type": "github"
} }
}, },
"flake-utils": { "flake-utils": {
"inputs": { "inputs": {
"systems": "systems" "systems": "systems"
}, },
"locked": { "locked": {
"lastModified": 1731533236, "lastModified": 1731533236,
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=",
"owner": "numtide", "owner": "numtide",
"repo": "flake-utils", "repo": "flake-utils",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "numtide", "owner": "numtide",
"repo": "flake-utils", "repo": "flake-utils",
"type": "github" "type": "github"
} }
}, },
"flake-utils_2": { "home-manager": {
"inputs": { "inputs": {
"systems": "systems_3" "nixpkgs": [
}, "nixpkgs"
"locked": { ]
"lastModified": 1731533236, },
"narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", "locked": {
"owner": "numtide", "lastModified": 1765202646,
"repo": "flake-utils", "narHash": "sha256-Cgceqa+xPgI8JiS1fMaviGw4dthTeW2RqE6RUR4OcS8=",
"rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", "owner": "nix-community",
"type": "github" "repo": "home-manager",
}, "rev": "caa47b637d877124ac891a64abc14de09fce1675",
"original": { "type": "github"
"owner": "numtide", },
"repo": "flake-utils", "original": {
"type": "github" "owner": "nix-community",
} "repo": "home-manager",
}, "type": "github"
"home-manager": { }
"inputs": { },
"nixpkgs": [ "nix-ai-tools": {
"nixpkgs" "inputs": {
] "blueprint": "blueprint",
}, "nixpkgs": "nixpkgs",
"locked": { "treefmt-nix": "treefmt-nix"
"lastModified": 1755442500, },
"narHash": "sha256-RHK4H6SWzkAtW/5WBHsyugaXJX25yr5y7FAZznxcBJs=", "locked": {
"owner": "nix-community", "lastModified": 1765203591,
"repo": "home-manager", "narHash": "sha256-LAWxwGYTM6bZqTode/bHmR2tX96X4u0JQDOaHxUSNkA=",
"rev": "d2ffdedfc39c591367b1ddf22b4ce107f029dcc3", "owner": "numtide",
"type": "github" "repo": "nix-ai-tools",
}, "rev": "edfd764a49e2440fd2169c9e14d8fd6b7df11135",
"original": { "type": "github"
"owner": "nix-community", },
"repo": "home-manager", "original": {
"type": "github" "owner": "numtide",
} "repo": "nix-ai-tools",
}, "type": "github"
"ixx": { }
"inputs": { },
"flake-utils": [ "nixpkgs": {
"nixvim", "locked": {
"nuschtosSearch", "lastModified": 1764947035,
"flake-utils" "narHash": "sha256-EYHSjVM4Ox4lvCXUMiKKs2vETUSL5mx+J2FfutM7T9w=",
], "owner": "NixOS",
"nixpkgs": [ "repo": "nixpkgs",
"nixvim", "rev": "a672be65651c80d3f592a89b3945466584a22069",
"nuschtosSearch", "type": "github"
"nixpkgs" },
] "original": {
}, "owner": "NixOS",
"locked": { "ref": "nixpkgs-unstable",
"lastModified": 1748294338, "repo": "nixpkgs",
"narHash": "sha256-FVO01jdmUNArzBS7NmaktLdGA5qA3lUMJ4B7a05Iynw=", "type": "github"
"owner": "NuschtOS", }
"repo": "ixx", },
"rev": "cc5f390f7caf265461d4aab37e98d2292ebbdb85", "nixpkgs_2": {
"type": "github" "locked": {
}, "lastModified": 1764950072,
"original": { "narHash": "sha256-BmPWzogsG2GsXZtlT+MTcAWeDK5hkbGRZTeZNW42fwA=",
"owner": "NuschtOS", "owner": "NixOS",
"ref": "v0.0.8", "repo": "nixpkgs",
"repo": "ixx", "rev": "f61125a668a320878494449750330ca58b78c557",
"type": "github" "type": "github"
} },
}, "original": {
"nix-ai-tools": { "owner": "NixOS",
"inputs": { "ref": "nixos-unstable",
"blueprint": "blueprint", "repo": "nixpkgs",
"nixpkgs": "nixpkgs", "type": "github"
"treefmt-nix": "treefmt-nix" }
}, },
"locked": { "nixvim": {
"lastModified": 1764903547, "inputs": {
"narHash": "sha256-ZAkVNnHrjp4lLtcpA0bLk7IoR4UuxeR/X3vD/G2nX8o=", "flake-parts": "flake-parts",
"owner": "numtide", "nixpkgs": [
"repo": "nix-ai-tools", "nixpkgs"
"rev": "a5eb2131473bdaaa6081db3d17eb1b2a98b5e781", ],
"type": "github" "systems": "systems_3"
}, },
"original": { "locked": {
"owner": "numtide", "lastModified": 1765210697,
"repo": "nix-ai-tools", "narHash": "sha256-Gq6/MRmBhNjGdMDFvZBcnPcfuw/j/dk6N1Y9R+HSA7Q=",
"type": "github" "owner": "nix-community",
} "repo": "nixvim",
}, "rev": "05c57f2e74d39e87ef0696e450b7e817dde5378d",
"nixpkgs": { "type": "github"
"locked": { },
"lastModified": 1764856222, "original": {
"narHash": "sha256-yEJmtoFu4cJre1NuU4fb8q57Oux+NTbocnALtJ64aEI=", "owner": "nix-community",
"owner": "NixOS", "repo": "nixvim",
"repo": "nixpkgs", "type": "github"
"rev": "ece6e266caf1effab32eceef0403b797b4330373", }
"type": "github" },
}, "root": {
"original": { "inputs": {
"owner": "NixOS", "flake-utils": "flake-utils",
"ref": "nixpkgs-unstable", "home-manager": "home-manager",
"repo": "nixpkgs", "nix-ai-tools": "nix-ai-tools",
"type": "github" "nixpkgs": "nixpkgs_2",
} "nixvim": "nixvim"
}, }
"nixpkgs_2": { },
"locked": { "systems": {
"lastModified": 1755186698, "locked": {
"narHash": "sha256-wNO3+Ks2jZJ4nTHMuks+cxAiVBGNuEBXsT29Bz6HASo=", "lastModified": 1681028828,
"owner": "NixOS", "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"repo": "nixpkgs", "owner": "nix-systems",
"rev": "fbcf476f790d8a217c3eab4e12033dc4a0f6d23c", "repo": "default",
"type": "github" "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
}, "type": "github"
"original": { },
"owner": "NixOS", "original": {
"ref": "nixos-unstable", "owner": "nix-systems",
"repo": "nixpkgs", "repo": "default",
"type": "github" "type": "github"
} }
}, },
"nixvim": { "systems_2": {
"inputs": { "locked": {
"flake-parts": "flake-parts", "lastModified": 1681028828,
"nixpkgs": [ "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"nixpkgs" "owner": "nix-systems",
], "repo": "default",
"nuschtosSearch": "nuschtosSearch", "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"systems": "systems_4" "type": "github"
}, },
"locked": { "original": {
"lastModified": 1754262585, "owner": "nix-systems",
"narHash": "sha256-Yz5dJ0VzGRzSRHdHldsWQbuFYmtP3NWNreCvPfCi9CI=", "repo": "default",
"owner": "nix-community", "type": "github"
"repo": "nixvim", }
"rev": "ab1b5962e1ca90b42de47e1172e0d24ca80e6256", },
"type": "github" "systems_3": {
}, "locked": {
"original": { "lastModified": 1681028828,
"owner": "nix-community", "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"ref": "nixos-25.05", "owner": "nix-systems",
"repo": "nixvim", "repo": "default",
"type": "github" "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
} "type": "github"
}, },
"nuschtosSearch": { "original": {
"inputs": { "owner": "nix-systems",
"flake-utils": "flake-utils_2", "repo": "default",
"ixx": "ixx", "type": "github"
"nixpkgs": [ }
"nixvim", },
"nixpkgs" "treefmt-nix": {
] "inputs": {
}, "nixpkgs": [
"locked": { "nix-ai-tools",
"lastModified": 1753771532, "nixpkgs"
"narHash": "sha256-Pmpke0JtLRzgdlwDC5a+aiLVZ11JPUO5Bcqkj0nHE/k=", ]
"owner": "NuschtOS", },
"repo": "search", "locked": {
"rev": "2a65adaf2c0c428efb0f4a2bc406aab466e96a06", "lastModified": 1762938485,
"type": "github" "narHash": "sha256-AlEObg0syDl+Spi4LsZIBrjw+snSVU4T8MOeuZJUJjM=",
}, "owner": "numtide",
"original": { "repo": "treefmt-nix",
"owner": "NuschtOS", "rev": "5b4ee75aeefd1e2d5a1cc43cf6ba65eba75e83e4",
"repo": "search", "type": "github"
"type": "github" },
} "original": {
}, "owner": "numtide",
"root": { "repo": "treefmt-nix",
"inputs": { "type": "github"
"flake-utils": "flake-utils", }
"home-manager": "home-manager", }
"nix-ai-tools": "nix-ai-tools",
"nixpkgs": "nixpkgs_2",
"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"
}
},
"systems_3": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"systems_4": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
},
"treefmt-nix": {
"inputs": {
"nixpkgs": [
"nix-ai-tools",
"nixpkgs"
]
},
"locked": {
"lastModified": 1762938485,
"narHash": "sha256-AlEObg0syDl+Spi4LsZIBrjw+snSVU4T8MOeuZJUJjM=",
"owner": "numtide",
"repo": "treefmt-nix",
"rev": "5b4ee75aeefd1e2d5a1cc43cf6ba65eba75e83e4",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "treefmt-nix",
"type": "github"
}
}
}, },
"root": "root", "root": "root",
"version": 7 "version": 7
} }

View file

@ -9,7 +9,7 @@
}; };
flake-utils.url = "github:numtide/flake-utils"; flake-utils.url = "github:numtide/flake-utils";
nixvim = { nixvim = {
url = "github:nix-community/nixvim/nixos-25.05"; url = "github:nix-community/nixvim";
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
}; };
@ -18,42 +18,32 @@
}; };
outputs = { self, nixpkgs, home-manager, flake-utils, nixvim, nix-ai-tools } @ inputs: { outputs = { self, nixpkgs, home-manager, flake-utils, nixvim, nix-ai-tools } @ inputs: {
# Reusable modules
homeManagerModules.copilot-cli = import ./modules/home-manager/copilot-cli.nix;
nixosModules.auto-upgrade = import ./modules/nixos/auto-upgrade.nix;
# Host configurations
homeManagerModules.copilot-cli = { lib, pkgs, config, inputs, ... }: {
options.programs.copilot-cli.enable = lib.mkEnableOption "";
config = lib.mkIf config.programs.copilot-cli.enable {
home.packages = [
(
inputs.nix-ai-tools.packages.${pkgs.system}.copilot-cli or
(inputs.nixpkgs.legacyPackages.${pkgs.system}.fetchgit {
url = "github:numtide/nix-ai-tools";
ref = "main";
}).packages.${pkgs.system}.copilot-cli
)
];
};
};
nixosConfigurations.nxs = nixpkgs.lib.nixosSystem { nixosConfigurations.nxs = nixpkgs.lib.nixosSystem {
system = "x86_64-linux"; system = "x86_64-linux";
specialArgs = { inherit inputs; };
modules = [ modules = [
./hosts/nxs/configuration.nix ./hosts/nxs/configuration.nix
./hosts/nxs/hardware-configuration.nix ./hosts/nxs/hardware-configuration.nix
self.nixosModules.auto-upgrade
home-manager.nixosModules.home-manager home-manager.nixosModules.home-manager
{ {
home-manager.useGlobalPkgs = true; home-manager = {
home-manager.useUserPackages = true; useGlobalPkgs = true;
home-manager.extraSpecialArgs = { inherit inputs; }; useUserPackages = true;
home-manager.users.narrator = import ./hosts/nxs/home.nix; extraSpecialArgs = { inherit inputs; };
system.autoUpgrade = { users.narrator = import ./hosts/nxs/home.nix;
sharedModules = [
self.homeManagerModules.copilot-cli
];
};
nixos.autoUpgrade = {
enable = true; enable = true;
flake = self.outPath; # <<< here use self.outPath directly, NOT inputs.self flakePath = self.outPath;
flags = [ "-L" ];
dates = "02:00";
randomizedDelaySec = "45min";
operation = "switch";
}; };
} }
]; ];

View file

@ -1,136 +1,47 @@
# Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page, on
# https://search.nixos.org/options and in the NixOS manual (`nixos-help`).
{ config, lib, pkgs, ... }: { config, lib, pkgs, ... }:
{ {
imports = imports = [
[ ./hardware-configuration.nix
./hardware-configuration.nix ./modules/nixos/boot.nix
]; ./modules/nixos/hardware.nix
./modules/nixos/desktop.nix
nix.settings.experimental-features = [ "nix-command" "flakes" ]; ./modules/nixos/power-management.nix
fileSystems."/home" = {
device = "/dev/disk/by-uuid/31dbc3a8-dfdc-4177-8d3e-2b6e294e7daf";
fsType = "btrfs";
};
swapDevices = [
{ device = "/dev/disk/by-uuid/f9da6980-510f-4cce-bff5-50a791346c07"; }
]; ];
# System settings
nix.settings.experimental-features = [ "nix-command" "flakes" ];
nixpkgs.config.allowUnfree = true; nixpkgs.config.allowUnfree = true;
# Use the systemd-boot EFI boot loader. system.stateVersion = "25.05";
#boot.loader.systemd-boot.enable = true;
#boot.loader.efi.canTouchEfiVariables = true;
boot.loader.grub.enable = true;
boot.loader.grub.efiSupport = true;
boot.loader.efi.efiSysMountPoint = "/boot/efi";
boot.loader.grub.device = "nodev";
boot.loader.grub.useOSProber = true;
boot.loader.grub.configurationLimit = 5;
boot.loader.efi.canTouchEfiVariables = true;
#boot.loader.grub.efiInstallAsRemovable = true;
boot.loader.grub.extraConfig = ''
GRUB_DISABLE_OS_PROBER=false
GRUB_TERMINAL_OUTPUT=console
'';
boot.loader.grub.gfxmodeBios = "1280x720"; # for BIOS, or # Networking
boot.loader.grub.gfxmodeEfi = "1280x720"; # for EFI networking = {
boot.loader.grub.gfxpayloadBios = "keep"; hostName = "nxs";
# Use latest kernel. networkmanager.enable = true;
boot.kernelPackages = pkgs.linuxPackages_latest; firewall.enable = true;
boot.kernelParams = [ "nvidia-drm.modeset=1" "nvidia.NVreg_PreserveVideoMemoryAllocations=1" ]; };
networking.hostName = "nxs"; # Define your hostname.
# Pick only one of the below networking options.
# networking.wireless.enable = true; # Enables wireless support via wpa_supplicant.
networking.networkmanager.enable = true; # Easiest to use and most distros use this by default.
# Set your time zone. # Localization
time.timeZone = "Europe/Rome"; time.timeZone = "Europe/Rome";
virtualisation.docker.enable = true;
# optional but sane: # Virtualization
virtualisation.docker.enableOnBoot = true; virtualisation.docker = {
# Configure network proxy if necessary
# networking.proxy.default = "http://user:password@proxy:port/";
# networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain";
# Select internationalisation properties.
# i18n.defaultLocale = "en_US.UTF-8";
# console = {
# font = "Lat2-Terminus16";
# keyMap = "us";
# useXkbConfig = true; # use xkb.options in tty.
# };
# Enable the X11 windowing system.
services.xserver = {
enable = true; enable = true;
enableOnBoot = true;
libinput = {
enable = true;
touchpad = {
naturalScrolling = true;
tapping = true;
disableWhileTyping = true;
clickMethod = "clickfinger";
};
};
displayManager.lightdm = {
enable = true;
autoLogin.enable = true;
autoLogin.user = "narrator";
};
windowManager.i3.enable = true;
videoDrivers = [ "amdgpu" "nvidia" ];
deviceSection = ''
BusID "PCI:1:0:0"
Driver "nvidia"
'';
}; };
# Configure keymap in X11 # Users
# services.xserver.xkb.layout = "us";
# services.xserver.xkb.options = "eurosign:e,caps:escape";
# Enable CUPS to print documents.
# services.printing.enable = true;
# Enable sound.
# services.pulseaudio.enable = true;
# OR
security.rtkit.enable = true;
services.pipewire = {
alsa.enable = true;
enable = true;
pulse.enable = true;
};
# Enable touchpad support (enabled default in most desktopManager).
# services.libinput.enable = true;
# Define a user account. Don't forget to set a password with passwd.
programs.fish.enable = true; programs.fish.enable = true;
users.users.narrator = { users.users.narrator = {
isNormalUser = true; isNormalUser = true;
extraGroups = [ "wheel" "docker" ]; # Enable sudo for the user. extraGroups = [ "wheel" "docker" ];
shell = pkgs.fish; shell = pkgs.fish;
packages = with pkgs; [ packages = with pkgs; [ tree ];
tree
];
}; };
programs.firefox.enable = true; # System packages
# List packages installed in system profile.
# You can use https://search.nixos.org/ to find more packages (and options).
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default. vim
gnupg gnupg
wget wget
cryptsetup cryptsetup
@ -143,119 +54,28 @@
git git
pinentry-curses pinentry-curses
lightdm lightdm
i3-gaps i3
awesome awesome
blueman blueman
]; ];
fonts.packages = with pkgs; [
nerd-fonts.fira-code
nerd-fonts.droid-sans-mono
nerd-fonts.symbols-only
];
services.logind = {
lidSwitch = "ignore"; # Services
lidSwitchDocked = "ignore"; services = {
lidSwitchExternalPower = "lock"; openssh.enable = true;
extraConfig = '' timesyncd.enable = true;
IdleAction=ignore pcscd.enable = true;
HandleSuspendKey=ignore
HandleLidSwitch=ignore
HandleLidSwitchDocked=ignore
SuspendKeyIgnoreInhibited=yes
LidSwitchIgnoreInhibited=yes
HandlePowerKey=poweroff
HandleSuspendKey=hibernate
'';
}; };
systemd.sleep.extraConfig = ''
AllowSuspend=no
AllowHibernation=no
AllowHybridSleep=no
AllowSuspendThenHibernate=no
'';
# firewall bc duh
networking.firewall.enable = true;
documentation.man.generateCaches = false;
# time sync
services.timesyncd.enable = true;
# bluetooth
hardware.bluetooth.enable = true;
services.blueman.enable = true;
# enable printing
services.printing.enable = true;
# enable openssh for remote access
services.openssh.enable = true;
programs.ssh.startAgent = true;
# Programs
programs = {
firefox.enable = true;
ssh.startAgent = true;
gnupg.agent.enable = true;
};
# Security
security.sudo.wheelNeedsPassword = false; security.sudo.wheelNeedsPassword = false;
system.stateVersion = "25.05"; # Did you read the comment?
# GnuPG
programs.gnupg.agent = {
enable = true;
};
services.pcscd.enable = true;
systemd.services."getty@tty2".enable = true;
systemd.services."getty@tty3".enable = true;
hardware.graphics = {
enable = true;
};
# Load nvidia driver for Xorg and Wayland
hardware.nvidia = {
# Modesetting is required.
modesetting.enable = true;
# Nvidia power management. Experimental, and can cause sleep/suspend to fail.
# Enable this if you have graphical corruption issues or application crashes after waking
# up from sleep. This fixes it by saving the entire VRAM memory to /tmp/ instead
# of just the bare essentials.
powerManagement.enable = true;
# Fine-grained power management. Turns off GPU when not in use.
# Experimental and only works on modern Nvidia GPUs (Turing or newer).
#powerManagement.finegrained = true;
# Use the NVidia open source kernel module (not to be confused with the
# independent third-party "nouveau" open source driver).
# Support is limited to the Turing and later architectures. Full list of
# supported GPUs is at:
# https://github.com/NVIDIA/open-gpu-kernel-modules#compatible-gpus
# Only available from driver 515.43.04+
open = true;
# Enable the Nvidia settings menu,
# accessible via `nvidia-settings`.
nvidiaSettings = true;
# Optionally, you may need to select the appropriate driver version for your specific GPU.
package = config.boot.kernelPackages.nvidiaPackages.stable;
# SSH config:
};
hardware.nvidia.forceFullCompositionPipeline = true;
systemd.services = {
systemd-suspend.environment.SYSTEMD_SLEEP_FREEZE_USER_SESSIONS = "false";
systemd-hibernate.environment.SYSTEMD_SLEEP_FREEZE_USER_SESSIONS = "false"; # if u care
};
hardware.nvidia.prime = {
offload.enable = true;
amdgpuBusId = "PCI:7:0:0";
nvidiaBusId = "PCI:1:0:0";
#amdgpuBusId = "PCI:54:0:0"; # If you have an AMD iGPU
};
# Documentation
documentation.man.generateCaches = false;
} }

View file

@ -1,101 +1,101 @@
{ config, lib, pkgs, inputs, ... }: { config, lib, pkgs, inputs, ... }:
{ {
imports = [ imports = [
inputs.nixvim.homeManagerModules.nixvim inputs.nixvim.homeManagerModules.nixvim
inputs.self.homeManagerModules.copilot-cli ./modules/home-manager/i3.nix
./i3.nix ./modules/home-manager/i3blocks.nix
./i3blocks.nix ./modules/home-manager/neovim.nix
./modules/neovim.nix ./modules/home-manager/fish.nix
./modules/fish.nix ./modules/home-manager/tmux.nix
./modules/tmux.nix
]; ];
home.username = "narrator";
home.homeDirectory = "/home/narrator"; # Home Manager settings
home.stateVersion = "25.05"; home = {
programs.home-manager.enable = true; username = "narrator";
programs.ssh = { homeDirectory = "/home/narrator";
enable = true; stateVersion = "25.05";
forwardAgent = true;
addKeysToAgent = "yes"; packages = with pkgs; [
matchBlocks = { ssh-to-age
"git.unime.it" = { pinentry-curses
hostname = "git.unime.it"; cryptsetup
port = 42000; # e.g. 2222 grc
}; nix-prefetch-github
}; gemini-cli
extraConfig = '' gh-copilot
Host git.nonaxiomatic.systems picard
ControlMaster no chromaprint
''; xorg.xmodmap
pavucontrol
mumble
kiwix
kiwix-tools
aria2
git
nicotine-plus
sl
firefox
i3blocks
strawberry
iproute2
gawk
inetutils
gnugrep
wireplumber
lm_sensors
btop
flameshot
xclip
psmisc
dmenu
picom
telegram-desktop
feh
alacritty
i3
lsd
polybar
tmux
zoxide
fortune
nixpkgs-fmt
rofi
pipewire
lshw
age
notepad-next
];
}; };
programs = {
home-manager.enable = true;
copilot-cli.enable = true;
direnv = {
enable = true;
nix-direnv.enable = true;
};
ssh = {
enable = true;
forwardAgent = true;
addKeysToAgent = "yes";
matchBlocks = {
"git.unime.it" = {
hostname = "git.unime.it";
port = 42000;
};
};
extraConfig = ''
Host git.nonaxiomatic.systems
ControlMaster no
'';
};
};
services.gpg-agent = { services.gpg-agent = {
enable = true; enable = true;
defaultCacheTtl = 28800; defaultCacheTtl = 28800;
defaultCacheTtlSsh = 28800; defaultCacheTtlSsh = 28800;
sshKeys = [ ]; # auto-populates from gpg keys sshKeys = [ ];
}; };
programs.copilot-cli.enable = true;
home.packages = with pkgs; [
ssh-to-age
pinentry-curses
cryptsetup
grc
nix-prefetch-github
gemini-cli
gh-copilot
picard
chromaprint
xorg.xmodmap
pavucontrol
mumble
kiwix
kiwix-tools
aria2
teamspeak3
git
nicotine-plus
sl
firefox
i3blocks
strawberry
iproute2
gawk
inetutils
gnugrep
wireplumber
lm_sensors
btop
flameshot
xclip
psmisc
dmenu
picom
telegram-desktop
feh
alacritty
i3-gaps
lsd
polybar
tmux
zoxide
fortune
nixpkgs-fmt
rofi
pipewire
lshw
age
notepad-next
];
programs.direnv = {
enable = true;
nix-direnv.enable = true;
};
} }

View file

@ -0,0 +1,40 @@
{ config, lib, pkgs, ... }:
{
boot = {
loader = {
grub = {
enable = true;
efiSupport = true;
device = "nodev";
useOSProber = true;
configurationLimit = 5;
gfxmodeBios = "1280x720";
gfxmodeEfi = "1280x720";
gfxpayloadBios = "keep";
extraConfig = ''
GRUB_DISABLE_OS_PROBER=false
GRUB_TERMINAL_OUTPUT=console
'';
};
efi = {
efiSysMountPoint = "/boot/efi";
canTouchEfiVariables = true;
};
};
kernelPackages = pkgs.linuxPackages_latest;
kernelParams = [
"nvidia-drm.modeset=1"
"nvidia.NVreg_PreserveVideoMemoryAllocations=1"
];
};
fileSystems."/home" = {
device = "/dev/disk/by-uuid/31dbc3a8-dfdc-4177-8d3e-2b6e294e7daf";
fsType = "btrfs";
};
swapDevices = [
{ device = "/dev/disk/by-uuid/f9da6980-510f-4cce-bff5-50a791346c07"; }
];
}

View file

@ -0,0 +1,39 @@
{ config, lib, pkgs, ... }:
{
services.xserver.enable = true;
services.libinput = {
enable = true;
touchpad = {
naturalScrolling = true;
tapping = true;
disableWhileTyping = true;
clickMethod = "clickfinger";
};
};
services.displayManager.autoLogin = {
enable = true;
user = "narrator";
};
services.xserver.displayManager.lightdm.enable = true;
services.xserver.windowManager.i3.enable = true;
security.rtkit.enable = true;
services.pipewire = {
enable = true;
alsa.enable = true;
pulse.enable = true;
};
services.blueman.enable = true;
services.printing.enable = true;
fonts.packages = with pkgs; [
nerd-fonts.fira-code
nerd-fonts.droid-sans-mono
nerd-fonts.symbols-only
];
}

View file

@ -0,0 +1,31 @@
{ config, lib, pkgs, ... }:
{
hardware = {
graphics.enable = true;
bluetooth.enable = true;
nvidia = {
modesetting.enable = true;
powerManagement.enable = true;
open = true;
nvidiaSettings = true;
package = config.boot.kernelPackages.nvidiaPackages.beta;
forceFullCompositionPipeline = true;
prime = {
offload.enable = true;
amdgpuBusId = "PCI:7:0:0";
nvidiaBusId = "PCI:1:0:0";
};
};
};
services.xserver = {
videoDrivers = [ "amdgpu" "nvidia" ];
deviceSection = ''
BusID "PCI:1:0:0"
Driver "nvidia"
'';
};
}

View file

@ -0,0 +1,23 @@
{ config, lib, pkgs, ... }:
{
services.logind = {
lidSwitch = "ignore";
lidSwitchDocked = "ignore";
lidSwitchExternalPower = "lock";
};
systemd.sleep.extraConfig = ''
AllowSuspend=no
AllowHibernation=no
AllowHybridSleep=no
AllowSuspendThenHibernate=no
'';
systemd.services = {
systemd-suspend.environment.SYSTEMD_SLEEP_FREEZE_USER_SESSIONS = "false";
systemd-hibernate.environment.SYSTEMD_SLEEP_FREEZE_USER_SESSIONS = "false";
"getty@tty2".enable = true;
"getty@tty3".enable = true;
};
}

View file

@ -0,0 +1,17 @@
{ lib, pkgs, config, inputs, ... }:
{
options.programs.copilot-cli.enable = lib.mkEnableOption "GitHub Copilot CLI";
config = lib.mkIf config.programs.copilot-cli.enable {
home.packages = [
(
inputs.nix-ai-tools.packages.${pkgs.system}.copilot-cli or
(inputs.nixpkgs.legacyPackages.${pkgs.system}.fetchgit {
url = "github:numtide/nix-ai-tools";
ref = "main";
}).packages.${pkgs.system}.copilot-cli
)
];
};
}

View file

@ -0,0 +1,22 @@
{ config, lib, ... }:
{
options.nixos.autoUpgrade = {
enable = lib.mkEnableOption "automatic NixOS upgrades";
flakePath = lib.mkOption {
type = lib.types.str;
description = "Path to the flake for auto-upgrade";
};
};
config = lib.mkIf config.nixos.autoUpgrade.enable {
system.autoUpgrade = {
enable = true;
flake = config.nixos.autoUpgrade.flakePath;
flags = [ "-L" ];
dates = "02:00";
randomizedDelaySec = "45min";
operation = "switch";
};
};
}