nixos_config/flake.nix

353 lines
12 KiB
Nix
Raw Normal View History

2024-05-07 15:37:50 -04:00
{
description = "Whovian9369's WSL NixOS Config";
inputs = {
2024-05-07 15:37:50 -04:00
### Basically required
nixpkgs = {
url = "github:NixOS/nixpkgs/nixos-unstable";
};
nixos-wsl = {
url = "github:nix-community/NixOS-WSL/main";
inputs.nixpkgs.follows = "nixpkgs";
inputs.flake-utils.follows = "flake-utils";
2024-05-07 15:37:50 -04:00
};
### My extra inputs
agenix = {
url = "github:ryantm/agenix";
inputs.nixpkgs.follows = "nixpkgs";
# Optional, not necessary for the module
2024-05-07 22:55:55 -04:00
inputs.darwin.follows = "";
# Optionally choose not to download darwin deps
2024-05-07 22:55:55 -04:00
# (saves some resources on Linux)
inputs.systems.follows = "nix-systems_default";
inputs.home-manager.follows = "home-manager";
2024-05-07 15:37:50 -04:00
};
home-manager = {
url = "github:nix-community/home-manager";
inputs.nixpkgs.follows = "nixpkgs";
};
2024-05-07 22:55:55 -04:00
xil = {
url = "github:Qyriad/Xil";
inputs.nixpkgs.follows = "nixpkgs";
inputs.flake-utils.follows = "flake-utils";
};
2024-05-08 15:35:46 -04:00
nix-index-database = {
url = "github:nix-community/nix-index-database";
inputs.nixpkgs.follows = "nixpkgs";
};
aaru = {
url = "github:Whovian9369/aaru-nix-flake";
inputs.nixpkgs.follows = "nixpkgs";
};
2024-05-29 21:46:22 -04:00
### Lix! Lix! Lix!
2024-05-18 19:32:04 -04:00
lix = {
url = "git+https://git@git.lix.systems/lix-project/lix";
/*
Future me, the pattern for using Forgejo URLs is:
git+https://git@${domain}/${user_org}/${repo}?ref=refs/tags/${TAG}
git+https://git@${domain}/${user_org}/${repo}?rev=${commitHash}
*/
2024-05-18 19:32:04 -04:00
flake = false;
};
lix-module = {
url = "git+https://git.lix.systems/lix-project/nixos-module";
/*
Future me, the pattern for using Forgejo URLs is:
git+https://git@${domain}/${user_org}/${repo}?ref=refs/tags/${TAG}
git+https://git@${domain}/${user_org}/${repo}?rev=${commitHash}
*/
2024-05-18 19:32:04 -04:00
inputs.lix.follows = "lix";
inputs.nixpkgs.follows = "nixpkgs";
inputs.flake-utils.follows = "flake-utils";
};
#########
# Extra inputs that I am adding just to make my life easier,
# but don't like that they're included >:(
#########
# I don't like `flake-utils`, but so many things use it that I might as
# well only keep a single version of it.
flake-utils = {
url = "github:numtide/flake-utils";
inputs.systems.follows = "nix-systems_default";
2024-05-07 22:55:55 -04:00
};
# Ditto to github:nix-systems/default
nix-systems_default = {
url = "github:nix-systems/default";
};
2024-05-07 15:37:50 -04:00
}; # inputs
2024-05-08 15:35:46 -04:00
outputs = {
# Needed
self, nixpkgs, nixos-wsl,
2024-05-18 19:32:04 -04:00
# Lix
lix-module,
# Added by me
agenix, home-manager, nix-index-database, xil, aaru, ... }:
2024-05-18 03:34:23 -04:00
let
pkgs = import nixpkgs {
system = "x86_64-linux";
config.allowUnfree = true;
};
inherit (import ./system/sshKeys.nix) mySSHKeys;
2024-05-18 03:34:23 -04:00
in
2024-05-07 15:37:50 -04:00
{
2024-06-15 02:59:06 -04:00
# Notes
/*
$ nix build .#nixosConfigurations.<hostname>.config.system.build.toplevel
should let me build the system config without calling "nixos-rebuild"
$ nix build .#nixosConfigurations.nixos-wsl.config.system.build.toplevel
should let me build the "nixos-wsl" system config.
How to build ISO:
Building .#nixosConfigurations.isoimage-pc.config.system.build.isoImage
should build ISO to "result" (or other set) symlink.
Alternatively, use:
- nix build -L .#packages.x86_64-linux.build_isoimage-pc
- nix build -L .#build_isoimage-pc
*/
2024-05-07 15:37:50 -04:00
nixosConfigurations = {
nixos-wsl = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
./system/nixos-wsl/configuration.nix
# ./system/dotnet_os_codename-workaround.nix
# Source of this fix file is
# https://github.com/nazarewk-iac/nix-configs
# /modules/ascii-workaround.nix
2024-05-18 19:32:04 -04:00
./system/nix_lix.nix
./system/users.nix
2024-05-07 15:37:50 -04:00
nixos-wsl.nixosModules.wsl
2024-05-18 19:32:04 -04:00
lix-module.nixosModules.default
2024-05-07 15:37:50 -04:00
home-manager.nixosModules.home-manager
{
system.configurationRevision = self.shortRev or self.dirtyShortRev or "dirty";
2024-05-08 04:44:30 -04:00
users.users.whovian = {
openssh.authorizedKeys.keys = mySSHKeys;
};
environment.shells = [
2024-06-17 17:33:46 -04:00
pkgs.zsh
];
2024-05-07 15:37:50 -04:00
home-manager = {
useGlobalPkgs = true;
useUserPackages = true;
2024-05-07 15:37:50 -04:00
2024-05-19 15:52:30 -04:00
users = {
whovian = {
imports = [
./home/home.nix
agenix.homeManagerModules.default
nix-index-database.hmModules.nix-index
];
};
};
2024-05-07 15:37:50 -04:00
# Optionally, use home-manager.extraSpecialArgs to pass arguments
# to home.nix
2024-05-07 15:37:50 -04:00
extraSpecialArgs = {
system = "x86_64-linux";
inherit aaru;
2024-05-07 22:55:55 -04:00
inherit xil;
inherit nixpkgs;
pkgs = import nixpkgs {
system = "x86_64-linux";
config.allowUnfree = true;
};
inherit agenix;
2024-05-07 15:37:50 -04:00
};
};
}
];
};
isoimage-pc = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
"${nixpkgs}/nixos/modules/installer/cd-dvd/installation-cd-graphical-gnome.nix"
{
/*
isoImage = {
# Defaults
isoName = "nixos-24.11.20240607.051f920-x86_64-linux.iso";
# "iso-image.nix" says that it defaults to
# "${config.isoImage.isoBaseName}.iso"
# "installation-cd-base.nix" seems to default it as
# "${config.isoImage.isoBaseName}-${config.system.nixos.label}-${pkgs.stdenv.hostPlatform.system}.iso"
# "installation-cd-base.nix" seems to be the canonical here.
isoBaseName = "nixos";
# Defaults to config.system.nixos.distroId
# config.system.nixos.distroId = "nixos"
edition = "gnome";
# Defaults to an empty string
# "gnome" is set due to using
# "installation-cd-graphical-gnome.nix"
volumeID = "nixos-gnome-24.11-x86_64";
# Defaults to "nixos${optionalString (config.isoImage.edition != "") "-${config.isoImage.edition}"}-${config.system.nixos.release}-${pkgs.stdenv.hostPlatform.uname.processor}";
prependToMenuLabel = "";
# Defaults to an empty string
appendToMenuLabel = "";
# Defaults to an empty string
};
*/
isoImage = {
isoBaseName = "Whovian-nixos";
# Defaults to config.system.nixos.distroId
# config.system.nixos.distroId simply output... "nixos" lol
# I'm adding "Whovian-" in front because I like marking that
# it's a custom image.
};
environment.systemPackages = [
pkgs._7zz
pkgs.bat
pkgs.dhex
pkgs.fd
pkgs.file
pkgs.git
pkgs.lynx
pkgs.ncdu
pkgs.progress
pkgs.ripgrep
pkgs.sshfs
pkgs.wget
pkgs.xxd
pkgs.yq
xil.packages.x86_64-linux.xil
];
nix.extraOptions = ''
experimental-features = nix-command flakes
'';
programs = {
nano.enable = true;
screen.enable = true;
zsh = {
enable = true;
shellInit = '' zsh-newuser-install () {} '';
/*
Disable "zsh/newuser" since this is a Live-DVD!
I just want a working shell to use, please.
See https://www.zsh.org/mla/users/2007/msg00396.html for
some conversation about this unchanged feature! ...
17 years later!
*/
# Honestly unsure if I should be using `programs.zsh.envExtra`
# or `programs.zsh.localVariables` here.
/*
localVariables = {
DISABLE_MAGIC_FUNCTIONS = true;
};
*/
ohMyZsh = {
enable = true;
theme = "bira";
};
};
};
users = {
defaultUserShell = pkgs.zsh;
users.root.openssh.authorizedKeys.keys = mySSHKeys;
users.nixos.openssh.authorizedKeys.keys = mySSHKeys;
};
services.openssh = {
enable = true;
settings = {
PasswordAuthentication = false;
KbdInteractiveAuthentication = false;
};
};
}
];
};
/*
nixps = nixpkgs.lib.nixosSystem {
system = "x86_64-linux";
modules = [
./system/xps/configuration.nix
# ./system/xps/users.nix
home-manager.nixosModules.home-manager
{
system.configurationRevision = self.shortRev or self.dirtyShortRev or "dirty";
home-manager = {
useGlobalPkgs = true;
useUserPackages = true;
users = {
whovian = {
imports = [
./home/home.nix
agenix.homeManagerModules.default
nix-index-database.hmModules.nix-index
];
};
};
# Optionally, use home-manager.extraSpecialArgs to pass arguments to home.nix
extraSpecialArgs = {
system = "x86_64-linux";
inherit xil;
inherit nixpkgs;
pkgs = import nixpkgs {
system = "x86_64-linux";
config.allowUnfree = true;
};
inherit agenix;
};
};
}
];
};
*/
2024-05-07 15:37:50 -04:00
};
packages.x86_64-linux = {
hactoolnet-bin = pkgs.callPackage ./home/packages/hactoolnet-bin/package.nix {};
2024-05-18 03:34:23 -04:00
irdkit = pkgs.callPackage ./home/packages/irdkit/package.nix {};
ird_tools = pkgs.callPackage ./home/packages/ird_tools/package.nix {};
2024-07-06 03:59:17 -04:00
nxtik = pkgs.callPackage ./home/packages/nxtik/package.nix {};
2024-05-18 05:44:36 -04:00
ps3dec = pkgs.callPackage ./home/packages/ps3dec/package.nix {};
sabretools = pkgs.callPackage ./home/packages/sabretools/package.nix {};
rom-properties = pkgs.callPackage ./home/packages/rom-properties/package.nix {};
rom-properties_ninja = pkgs.callPackage ./home/packages/rom-properties/package.nix { useNinja = true; };
rom-properties_gtracker = pkgs.callPackage ./home/packages/rom-properties/package.nix { useTracker = true; };
rom-properties_ninja_gtracker = pkgs.callPackage ./home/packages/rom-properties/package.nix { useNinja = true; useTracker = true; };
2024-06-15 02:58:42 -04:00
binaryobjectscanner = pkgs.callPackage ./home/packages/binaryobjectscanner/package.nix {};
new_rclone = pkgs.rclone.overrideAttrs (
oldAttrs: {
patches = [ ./home/packages/new_rclone/patches/rclone_8ffe3e462cbf5688c37c54009db09d8dcb486860.diff ];
}
);
build_isoimage-pc = self.nixosConfigurations.isoimage-pc.config.system.build.isoImage;
external_xil = xil.packages.x86_64-linux.xil;
};
2024-05-07 15:37:50 -04:00
};
}