forked from auxolotl/templates
Initial work on creating sensible templates
Available templates include the following: - system: flake based system similar to the default when starting nix. - darwin: flake based darwin system with ajusted nixpkgs and modules to better suit it. - home-manager: flake and home manager for non darwin systems. Co-Authored-by: isabelroses <isabel@isabelroses.com> Co-Authored-by: Skyler Grey <minion@clicks.codes> Co-Authored-by: Sigmanificient <edhyjox@gmail.com> Co-Authored-by: AxelSilverdew <7677954+AxelSilverdew@users.noreply.github.com>
This commit is contained in:
commit
3f3ac4306b
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
|
@ -0,0 +1 @@
|
||||||
|
.direnv/
|
24
darwin/core.nix
Normal file
24
darwin/core.nix
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
{
|
||||||
|
# Auto upgrade nix package and the daemon service.
|
||||||
|
services.nix-daemon.enable = true;
|
||||||
|
|
||||||
|
nix.settings = {
|
||||||
|
# We need this to be able to use the nix-command and flakes features.
|
||||||
|
# these are essential to use this system configuration as a flake.
|
||||||
|
experimental-features = [
|
||||||
|
"nix-command"
|
||||||
|
"flakes"
|
||||||
|
];
|
||||||
|
|
||||||
|
# this allows the system builder to use substitutes
|
||||||
|
builders-use-substitutes = true;
|
||||||
|
|
||||||
|
# we want these beacuse we don't have to build every package from source
|
||||||
|
substituters = [ "https://nix-community.cachix.org" ];
|
||||||
|
trusted-public-keys = [ "nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=" ];
|
||||||
|
|
||||||
|
# We also want to add our user, in this case "axel" to the trusted users
|
||||||
|
# this is important so that we can use the substituters with no issues
|
||||||
|
trusted-users = [ "axel" ];
|
||||||
|
};
|
||||||
|
}
|
79
darwin/flake.nix
Normal file
79
darwin/flake.nix
Normal file
|
@ -0,0 +1,79 @@
|
||||||
|
{
|
||||||
|
description = "A simple darwin flake using Aux and home-manager";
|
||||||
|
|
||||||
|
inputs = {
|
||||||
|
# nixpkgs is the input that we use for this flake the end section `nixpkgs-unstable` refers to the branch
|
||||||
|
# of nixpkgs that we want to use. This can be changed to any branch or commit hash.
|
||||||
|
nixpkgs.url = "github:auxolotl/nixpkgs/nixpkgs-unstable";
|
||||||
|
|
||||||
|
home-manager = {
|
||||||
|
url = "github:nix-community/home-manager";
|
||||||
|
|
||||||
|
# The `follows` keyword in inputs is used for inheritance.
|
||||||
|
# we do this in order to prevent duplication of the nixpkgs input, and potential
|
||||||
|
# issues with diffrent versions of given packages.
|
||||||
|
# However, it should be noted that this can lead to having to rebuild packages from source.
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
|
||||||
|
darwin = {
|
||||||
|
url = "github:lnl7/nix-darwin";
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs =
|
||||||
|
inputs@{
|
||||||
|
self,
|
||||||
|
nixpkgs,
|
||||||
|
darwin,
|
||||||
|
home-manager,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
# we can use the `let` and `in` syntax to define variables
|
||||||
|
# and use them in the rest of the expression
|
||||||
|
let
|
||||||
|
# this can be either aarch64-darwin or x86_64-darwin
|
||||||
|
# if your using a M1 or later your going to need to use aarch64-darwin
|
||||||
|
# otherwise you can use x86_64-darwin
|
||||||
|
system = builtins.abort "You need to fill in your system";
|
||||||
|
|
||||||
|
# here we define our username and hostname to reuse them later
|
||||||
|
username = builtins.abort "You need to fill in your username"; # Set this variable equal to your username
|
||||||
|
hostname = builtins.abort "You need to fill in your hostname"; # Set this variable equal to your hostname
|
||||||
|
|
||||||
|
# the specialArgs are used to pass the inputs to the system configuration and home-manager configuration
|
||||||
|
specialArgs = {
|
||||||
|
inherit inputs username hostname;
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
# here the hostname is being set to "reservoir" but you can change that to your needs
|
||||||
|
# it is important that you use darwin.lib.darwinSystem as this is the builder that allow
|
||||||
|
# for the configuration of the darwin system
|
||||||
|
darwinConfigurations.${hostname} = darwin.lib.darwinSystem {
|
||||||
|
|
||||||
|
# The specialArgs are used to pass the inputs to the system configuration
|
||||||
|
inherit specialArgs;
|
||||||
|
|
||||||
|
modules = [
|
||||||
|
./homebrew.nix
|
||||||
|
./users.nix
|
||||||
|
|
||||||
|
# The home-manager module is used to configure home-manager
|
||||||
|
# to read more about this please see ../home-manager
|
||||||
|
home-manager.darwinModules.home-manager
|
||||||
|
{
|
||||||
|
home-manager.useGlobalPkgs = true;
|
||||||
|
home-manager.useUserPackages = true;
|
||||||
|
|
||||||
|
# extraSpecialArgs is used to pass the inputs to the home-manager configuration
|
||||||
|
home-manager.extraSpecialArgs = specialArgs;
|
||||||
|
|
||||||
|
# Here we have assume that the use is called "axel" but you can change that to your needs
|
||||||
|
home-manager.users.${username} = import ./home.nix;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
23
darwin/home.nix
Normal file
23
darwin/home.nix
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
{ username, ... }:
|
||||||
|
{
|
||||||
|
# Home Manager needs a bit of information about you and the
|
||||||
|
# paths it should manage.
|
||||||
|
home = {
|
||||||
|
# rember we set this in our flake.nix file
|
||||||
|
username = username;
|
||||||
|
homeDirectory = "/Users/${username}";
|
||||||
|
|
||||||
|
# This value determines the Home Manager release that your
|
||||||
|
# configuration is compatible with. This helps avoid breakage
|
||||||
|
# when a new Home Manager release introduces backwards
|
||||||
|
# incompatible changes.
|
||||||
|
#
|
||||||
|
# You can update Home Manager without changing this value. See
|
||||||
|
# the Home Manager release notes for a list of state version
|
||||||
|
# changes in each release.
|
||||||
|
stateVersion = "23.11";
|
||||||
|
};
|
||||||
|
|
||||||
|
# Let Home Manager install and manage itself.
|
||||||
|
programs.home-manager.enable = true;
|
||||||
|
}
|
53
darwin/homebrew.nix
Normal file
53
darwin/homebrew.nix
Normal file
|
@ -0,0 +1,53 @@
|
||||||
|
{
|
||||||
|
config = {
|
||||||
|
environment = {
|
||||||
|
# You can configure your usual shell environment for homebrew here.
|
||||||
|
variables = {
|
||||||
|
HOMEBREW_NO_ANALYTICS = "1";
|
||||||
|
HOMEBREW_NO_INSECURE_REDIRECT = "1";
|
||||||
|
HOMEBREW_NO_EMOJI = "1";
|
||||||
|
HOMEBREW_NO_ENV_HINTS = "0";
|
||||||
|
};
|
||||||
|
|
||||||
|
# This is included so that the homebrew packages are available in the PATH.
|
||||||
|
systemPath = [ config.homebrew.brewPrefix ];
|
||||||
|
};
|
||||||
|
|
||||||
|
# homebrew need to be installed manually, see https://brew.sh
|
||||||
|
# The apps installed by homebrew are not managed by nix, and not reproducible!
|
||||||
|
homebrew = {
|
||||||
|
enable = true;
|
||||||
|
caskArgs.require_sha = true;
|
||||||
|
|
||||||
|
onActivation = {
|
||||||
|
autoUpdate = true;
|
||||||
|
upgrade = true;
|
||||||
|
# 'zap': uninstalls all formulae(and related files) not listed here.
|
||||||
|
cleanup = "zap";
|
||||||
|
};
|
||||||
|
|
||||||
|
# Applications to install from Mac App Store using mas.
|
||||||
|
# You need to install all these Apps manually first so that your apple account have records for them.
|
||||||
|
# otherwise Apple Store will refuse to install them.
|
||||||
|
# For details, see https://github.com/mas-cli/mas
|
||||||
|
masApps = { };
|
||||||
|
|
||||||
|
taps = [ "homebrew/bundle" ];
|
||||||
|
|
||||||
|
# This is the equivalent of running `brew install`
|
||||||
|
brews = [
|
||||||
|
"curl"
|
||||||
|
"openjdk"
|
||||||
|
];
|
||||||
|
|
||||||
|
# This is the equivalent of running `brew install --cask`
|
||||||
|
casks = [
|
||||||
|
"arc" # browser
|
||||||
|
"zed" # text editor
|
||||||
|
"raycast" # app launcher, and clipboard manager
|
||||||
|
"obsidian" # note taking
|
||||||
|
"inkscape" # vector graphics editor
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
12
darwin/system.nix
Normal file
12
darwin/system.nix
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
# This section apply settings to the system configuration only available on macOS
|
||||||
|
# see <https://daiderd.com/nix-darwin/manual/index.html#sec-options> for more options
|
||||||
|
{
|
||||||
|
system = {
|
||||||
|
# Add ability to used TouchID for sudo authentication
|
||||||
|
security.pam.enableSudoTouchIdAuth = true;
|
||||||
|
|
||||||
|
# Create /etc/zshrc that loads the nix-darwin environment.
|
||||||
|
# this is required if you want to use darwin's default shell - zsh
|
||||||
|
programs.zsh.enable = true;
|
||||||
|
};
|
||||||
|
}
|
9
darwin/users.nix
Normal file
9
darwin/users.nix
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
{ username, hostname, ... }:
|
||||||
|
{
|
||||||
|
# remember to set the hostname in the kernel command line
|
||||||
|
networking.hostName = hostname;
|
||||||
|
networking.computerName = hostname;
|
||||||
|
system.defaults.smb.NetBIOSName = hostname;
|
||||||
|
|
||||||
|
users.users."${username}".home = "/Users/${username}";
|
||||||
|
}
|
27
flake.lock
Normal file
27
flake.lock
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
{
|
||||||
|
"nodes": {
|
||||||
|
"resevoir": {
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1714562304,
|
||||||
|
"narHash": "sha256-Mr3U37Rh6tH0FbaDFu0aZDwk9mPAe7ASaqDOGgLqqLU=",
|
||||||
|
"owner": "auxolotl",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"rev": "bcd44e224fd68ce7d269b4f44d24c2220fd821e7",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "auxolotl",
|
||||||
|
"ref": "nixpkgs-unstable",
|
||||||
|
"repo": "nixpkgs",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": {
|
||||||
|
"inputs": {
|
||||||
|
"resevoir": "resevoir"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"root": "root",
|
||||||
|
"version": 7
|
||||||
|
}
|
36
flake.nix
Normal file
36
flake.nix
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
{
|
||||||
|
description = "Templates for getting started with Aux";
|
||||||
|
|
||||||
|
inputs.nixpkgs.url = "github:auxolotl/nixpkgs/nixpkgs-unstable";
|
||||||
|
|
||||||
|
outputs =
|
||||||
|
{ self, nixpkgs }:
|
||||||
|
let
|
||||||
|
forAllSystems =
|
||||||
|
function:
|
||||||
|
nixpkgs.lib.genAttrs [
|
||||||
|
"x86_64-linux"
|
||||||
|
"aarch64-linux"
|
||||||
|
"x86_64-darwin"
|
||||||
|
"aarch64-darwin"
|
||||||
|
] (system: function system);
|
||||||
|
in
|
||||||
|
{
|
||||||
|
templates = {
|
||||||
|
default = self.templates.direnv;
|
||||||
|
system = {
|
||||||
|
path = ./system;
|
||||||
|
description = "";
|
||||||
|
};
|
||||||
|
home-manager = {
|
||||||
|
path = ./home-manager;
|
||||||
|
description = "";
|
||||||
|
};
|
||||||
|
darwin = {
|
||||||
|
path = ./darwin;
|
||||||
|
description = "";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
formatter = forAllSystems (system: nixpkgs.legacyPackages.${system}.nixfmt-rfc-style);
|
||||||
|
};
|
||||||
|
}
|
40
home-manager/flake.nix
Normal file
40
home-manager/flake.nix
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
{
|
||||||
|
description = "A simple home-manager flake using Aux";
|
||||||
|
|
||||||
|
inputs = {
|
||||||
|
nixpkgs.url = "github:auxolotl/nixkpkgs/nixpkgs-unstable";
|
||||||
|
|
||||||
|
home-manager = {
|
||||||
|
url = "github:nix-community/home-manager";
|
||||||
|
|
||||||
|
# The `follows` keyword in inputs is used for inheritance.
|
||||||
|
# we do this in order to prevent duplication of the nixpkgs input, and potential
|
||||||
|
# issues with diffrent versions of given packages.
|
||||||
|
# However, it should be noted that this can lead to having to rebuild packages from source.
|
||||||
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
outputs =
|
||||||
|
{ nixpkgs, home-manager, ... }:
|
||||||
|
let
|
||||||
|
system = "x86_64-linux";
|
||||||
|
pkgs = nixpkgs.legacyPackages.${system};
|
||||||
|
username = builtins.abort "You need to fill in your username"; # Set this variable equal to your username
|
||||||
|
in
|
||||||
|
{
|
||||||
|
homeConfigurations.${username} = home-manager.lib.homeManagerConfiguration {
|
||||||
|
inherit pkgs;
|
||||||
|
|
||||||
|
# Specify your home configuration modules here, for example,
|
||||||
|
# the path to your home.nix.
|
||||||
|
modules = [ ./home.nix ];
|
||||||
|
|
||||||
|
extraSpecialArgs = {
|
||||||
|
inherit username pkgs; # We inherit pkgs
|
||||||
|
};
|
||||||
|
# Optionally use extraSpecialArgs
|
||||||
|
# to pass through arguments to home.nix
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
81
home-manager/home.nix
Normal file
81
home-manager/home.nix
Normal file
|
@ -0,0 +1,81 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
username,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
{
|
||||||
|
# Home Manager needs a bit of information about you and the paths it should
|
||||||
|
# manage.
|
||||||
|
home = {
|
||||||
|
inherit username;
|
||||||
|
homeDirectory = "/home/${username}";
|
||||||
|
|
||||||
|
# This value determines the Home Manager release that your configuration is
|
||||||
|
# compatible with. This helps avoid breakage when a new Home Manager release
|
||||||
|
# introduces backwards incompatible changes.
|
||||||
|
#
|
||||||
|
# You should not change this value, even if you update Home Manager. If you do
|
||||||
|
# want to update the value, then make sure to first check the Home Manager
|
||||||
|
# release notes.
|
||||||
|
stateVersion = "23.11"; # Please read the comment before changing.
|
||||||
|
|
||||||
|
# The home.packages option allows you to install Nix packages into your
|
||||||
|
# environment.
|
||||||
|
packages = [
|
||||||
|
# # Adds the 'hello' command to your environment. It prints a friendly
|
||||||
|
# # "Hello, world!" when run.
|
||||||
|
# pkgs.hello
|
||||||
|
|
||||||
|
# # It is sometimes useful to fine-tune packages, for example, by applying
|
||||||
|
# # overrides. You can do that directly here, just don't forget the
|
||||||
|
# # parentheses. Maybe you want to install Nerd Fonts with a limited number of
|
||||||
|
# # fonts?
|
||||||
|
# (pkgs.nerdfonts.override { fonts = [ "FantasqueSansMono" ]; })
|
||||||
|
|
||||||
|
# # You can also create simple shell scripts directly inside your
|
||||||
|
# # configuration. For example, this adds a command 'my-hello' to your
|
||||||
|
# # environment:
|
||||||
|
# (pkgs.writeShellScriptBin "my-hello" ''
|
||||||
|
# echo "Hello, ${config.home.username}!"
|
||||||
|
# '')
|
||||||
|
];
|
||||||
|
|
||||||
|
# Home Manager is pretty good at managing dotfiles. The primary way to manage
|
||||||
|
# plain files is through 'home.file'.
|
||||||
|
file = {
|
||||||
|
# # Building this configuration will create a copy of 'dotfiles/screenrc' in
|
||||||
|
# # the Nix store. Activating the configuration will then make '~/.screenrc' a
|
||||||
|
# # symlink to the Nix store copy.
|
||||||
|
# ".screenrc".source = dotfiles/screenrc;
|
||||||
|
|
||||||
|
# # You can also set the file content immediately.
|
||||||
|
# ".gradle/gradle.properties".text = ''
|
||||||
|
# org.gradle.console=verbose
|
||||||
|
# org.gradle.daemon.idletimeout=3600000
|
||||||
|
# '';
|
||||||
|
};
|
||||||
|
|
||||||
|
# Home Manager can also manage your environment variables through
|
||||||
|
# 'home.sessionVariables'. If you don't want to manage your shell through Home
|
||||||
|
# Manager then you have to manually source 'hm-session-vars.sh' located at
|
||||||
|
# either
|
||||||
|
#
|
||||||
|
# ~/.nix-profile/etc/profile.d/hm-session-vars.sh
|
||||||
|
#
|
||||||
|
# or
|
||||||
|
#
|
||||||
|
# ~/.local/state/nix/profiles/profile/etc/profile.d/hm-session-vars.sh
|
||||||
|
#
|
||||||
|
# or
|
||||||
|
#
|
||||||
|
# /etc/profiles/per-user/abhiram/etc/profile.d/hm-session-vars.sh
|
||||||
|
#
|
||||||
|
sessionVariables = {
|
||||||
|
# EDITOR = "emacs";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Let Home Manager install and manage itself.
|
||||||
|
programs.home-manager.enable = true;
|
||||||
|
}
|
138
system/configuration.nix
Normal file
138
system/configuration.nix
Normal file
|
@ -0,0 +1,138 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
username,
|
||||||
|
hostName,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
# Include the results of the hardware scan.
|
||||||
|
./hardware-configuration.nix
|
||||||
|
];
|
||||||
|
|
||||||
|
# Use the systemd-boot EFI boot loader.
|
||||||
|
boot.loader.systemd-boot.enable = true;
|
||||||
|
boot.loader.efi.canTouchEfiVariables = true;
|
||||||
|
|
||||||
|
networking.hostName = hostName; # 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.
|
||||||
|
# time.timeZone = "Europe/Amsterdam";
|
||||||
|
|
||||||
|
# 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;
|
||||||
|
|
||||||
|
# Configure keymap in X11
|
||||||
|
# services.xserver.xkb.layout = "us";
|
||||||
|
# services.xserver.xkb.options = "eurosign:e,caps:escape";
|
||||||
|
|
||||||
|
# Enable CUPS to print documents.
|
||||||
|
# services.printing.enable = true;
|
||||||
|
|
||||||
|
# Enable sound.
|
||||||
|
# hardware.pulseaudio.enable = true;
|
||||||
|
# OR
|
||||||
|
# services.pipewire = {
|
||||||
|
# enable = true;
|
||||||
|
# pulse.enable = true;
|
||||||
|
# };
|
||||||
|
|
||||||
|
# Enable touchpad support (enabled default in most desktopManager).
|
||||||
|
# services.xserver.libinput.enable = true;
|
||||||
|
|
||||||
|
# Define a user account. Don't forget to set a password with ‘passwd’.
|
||||||
|
users.users.${username} = {
|
||||||
|
isNormalUser = true;
|
||||||
|
extraGroups = [ "wheel" ]; # Enable ‘sudo’ for the user.
|
||||||
|
packages = with pkgs; [ firefox ];
|
||||||
|
};
|
||||||
|
|
||||||
|
# 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
|
||||||
|
# ];
|
||||||
|
|
||||||
|
# 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;
|
||||||
|
|
||||||
|
# Open ports in the firewall.
|
||||||
|
# networking.firewall.allowedTCPPorts = [ ... ];
|
||||||
|
# networking.firewall.allowedUDPPorts = [ ... ];
|
||||||
|
# Or disable the firewall altogether.
|
||||||
|
# networking.firewall.enable = false;
|
||||||
|
|
||||||
|
# Copy the NixOS configuration file and link it from the resulting system
|
||||||
|
# (/run/current-system/configuration.nix). This is useful in case you
|
||||||
|
# accidentally delete configuration.nix.
|
||||||
|
# system.copySystemConfiguration = true;
|
||||||
|
|
||||||
|
# This option allows you to use some features (flakes and the new Nix CLI) which have not yet been stabilized.
|
||||||
|
# Although they aren't yet stabilized, many Nix users use them and simple workflows are unlikely to break
|
||||||
|
nix.settings.experimental-features = [
|
||||||
|
"nix-command"
|
||||||
|
"flakes"
|
||||||
|
];
|
||||||
|
|
||||||
|
nix.registry.nixpkgs = {
|
||||||
|
from = {
|
||||||
|
id = "nixpkgs";
|
||||||
|
type = "indirect";
|
||||||
|
};
|
||||||
|
to = {
|
||||||
|
owner = "auxolotl";
|
||||||
|
repo = "nixpkgs";
|
||||||
|
type = "github";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
nix.gc.automatic = true;
|
||||||
|
|
||||||
|
# This option defines the first version of NixOS you have installed on this particular machine,
|
||||||
|
# and is used to maintain compatibility with application data (e.g. databases) created on older NixOS versions.
|
||||||
|
#
|
||||||
|
# Most users should NEVER change this value after the initial install, for any reason,
|
||||||
|
# even if you've upgraded your system to a new NixOS release.
|
||||||
|
#
|
||||||
|
# This value does NOT affect the Nixpkgs version your packages and OS are pulled from,
|
||||||
|
# so changing it will NOT upgrade your system - see https://nixos.org/manual/nixos/stable/#sec-upgrading for how
|
||||||
|
# to actually do that.
|
||||||
|
#
|
||||||
|
# This value being lower than the current NixOS release does NOT mean your system is
|
||||||
|
# out of date, out of support, or vulnerable.
|
||||||
|
#
|
||||||
|
# Do NOT change this value unless you have manually inspected all the changes it would make to your configuration,
|
||||||
|
# and migrated your data accordingly.
|
||||||
|
#
|
||||||
|
# For more information, see `man configuration.nix` or https://nixos.org/manual/nixos/stable/options#opt-system.stateVersion .
|
||||||
|
system.stateVersion = "24.05"; # Did you read the comment?
|
||||||
|
}
|
23
system/flake.nix
Normal file
23
system/flake.nix
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
{
|
||||||
|
description = "A simple system flake using some Aux defaults";
|
||||||
|
|
||||||
|
inputs.nixpkgs.url = "github:auxolotl/nixpkgs/nixpkgs-unstable";
|
||||||
|
|
||||||
|
outputs =
|
||||||
|
{ nixpkgs, ... }:
|
||||||
|
let
|
||||||
|
system = "x86_64-linux";
|
||||||
|
pkgs = nixpkgs.legacyPackages.${system};
|
||||||
|
hostName = builtins.abort "You need to fill in your hostName"; # Set this variable equal to your hostName
|
||||||
|
username = builtins.abort "You need to fill in your username"; # Set this variable equal to your username
|
||||||
|
in
|
||||||
|
{
|
||||||
|
nixosConfigurations.${hostName} = nixpkgs.lib.nixosSystem {
|
||||||
|
inherit system;
|
||||||
|
modules = [ ./configuration.nix ];
|
||||||
|
specialArgs = {
|
||||||
|
inherit inputs;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
1
system/hardware-configuration.nix
Normal file
1
system/hardware-configuration.nix
Normal file
|
@ -0,0 +1 @@
|
||||||
|
builtins.abort "Please run 'nixos-generate-config --show-hardware-config' and copy the output into hardware-configuration.nix"
|
Loading…
Reference in a new issue