Update the config to use the stable versions of nixpkgs separated with the unstable branch

This commit is contained in:
Gabriel Arazas 2020-08-19 00:48:02 +08:00
parent e67a74485a
commit 75a04804a6
19 changed files with 102 additions and 85 deletions

View File

@ -13,9 +13,12 @@ FLAGS := -I "config=$$(pwd)/config" \
config: $(NIXOS_PREFIX)/configuration.nix config: $(NIXOS_PREFIX)/configuration.nix
home: $(HOME)/dotfiles home: $(HOME)/dotfiles
# The channels will be used on certain modules like in `packages/default.nix` where it will be referred to install certain packages from the unstable channel.
channels: channels:
@sudo nix-channel --add "https://nixos.org/channels/nixos-unstable" nixos @sudo nix-channel --add "https://nixos.org/channels/nixos-${NIXOS_VERSION}" nixos
@sudo nix-channel --add "https://github.com/rycee/home-manager/archive/master.tar.gz" home-manager @sudo nix-channel --add "https://nixos.org/channels/nixos-unstable" nixos-unstable
@sudo nix-channel --add "https://github.com/rycee/home-manager/archive/release-${NIXOS_VERSION}.tar.gz" home-manager
@sudo nix-channel --add "https://nixos.org/channels/nixpkgs-unstable" nixpkgs-unstable
update: update:
@sudo nix-channel --update @sudo nix-channel --update
@ -24,7 +27,8 @@ switch:
@sudo nixos-rebuild $(FLAGS) switch @sudo nixos-rebuild $(FLAGS) switch
install: channels update install: channels update
@echo "import "$(DOTS)" \"$${HOST:-$$(hostname)}\" \"$${USER}\"" | sudo tee "${NIXOS_PREFIX}/configuration.nix" @sudo nixos-generate-config --root "$(PREFIX)" && sudo cp --update "$(NIXOS_PREFIX)/hardware-configuration.nix" "$$(pwd)/hosts/$(HOST)/hardware-configuration.nix"
@echo "import \"$(DOTS)\" \"$(HOST)\" \"$${USER}\"" | sudo tee "${NIXOS_PREFIX}/configuration.nix"
@sudo nixos-install --root "$(PREFIX)" $(FLAGS) @sudo nixos-install --root "$(PREFIX)" $(FLAGS)
@sudo rm -r "$(PREFIX)/etc/dotfiles" && sudo cp -r "$(DOTS)" "$(PREFIX)/etc/dotfiles" @sudo rm -r "$(PREFIX)/etc/dotfiles" && sudo cp -r "$(DOTS)" "$(PREFIX)/etc/dotfiles"
@sudo nixos-enter --root "$(PREFIX)" -c chown $(USER):users $(DOTS) @sudo nixos-enter --root "$(PREFIX)" -c chown $(USER):users $(DOTS)

View File

@ -30,9 +30,10 @@ For more information, simply inspect the Makefile.
Assuming you did install, your project will have the following stuff. Assuming you did install, your project will have the following stuff.
- Uses the nixpkgs unstable channel as `nixos` (i.e., `nix-channels --update https://nixos.org/channels/nixos-unstable`). - Add the nixpkgs unstable channel as `nixpkgs-unstable` (i.e., `nix-channels --update https://nixos.org/channels/nixos-unstable`).
- Have the https://github.com/rycee/home-manager[home-manager] installed with the unstable release. - Have the https://github.com/rycee/home-manager[home-manager] installed with the stable release.
- You start with the TTY and nothing else is installed (i.e., bare installation similar in spirit to Arch Linux). - You start with the TTY and nothing else is installed (i.e., bare installation similar in spirit to Arch Linux).
To setup your graphical installation, see the <<Themes>> section.
=== Precautions === Precautions
@ -80,7 +81,7 @@ Each folder inside of this directory represents one machine.
It is also used on the installation phase (from `make install`) by setting the `HOST` variable (i.e., `HOST=zilch make -C /etc/install`) with the folder name as the argument. It is also used on the installation phase (from `make install`) by setting the `HOST` variable (i.e., `HOST=zilch make -C /etc/install`) with the folder name as the argument.
* The `packages/` folder is my custom packages either the new ones that haven't made into nixpkgs yet or packages with overrides. * The `packages/` folder is my custom packages either the new ones that haven't made into nixpkgs yet or packages with overrides.
Also contains third-party package repositories and overlays such as the NUR or the unstable branch of Emacs. Also contains third-party package repositories and overlays such as the https://github.com/nix-community/NUR[NUR], https://github.com/nix-community/emacs-overlay[unstable branch of Emacs], or the unstable branch of https://github.com/NixOS/nixpkgs/[nixpkgs].
@ -126,5 +127,6 @@ A wallpaper can be placed at `config/wallpaper` for convenience.
This is where you can add certain packages, enable certain settings, setup your files to the home directory, and pass the theme metadata. This is where you can add certain packages, enable certain settings, setup your files to the home directory, and pass the theme metadata.
* For convenience, you should make the NixOS theme module as a https://github.com/cookiecutter/cookiecutter[Cookiecutter template] to easily replace the color schemes, fonts, and what-have-you. * For convenience, you should make the NixOS theme module as a https://github.com/cookiecutter/cookiecutter[Cookiecutter template] to easily replace the color schemes, fonts, and what-have-you.
I have my theme templates stored in link:./templates[`./templates`]. Then, edit `modules/themes/default.nix` to add the theme to the selection.
I have my theme templates stored in link:./templates[`./templates`] as an example.

View File

@ -8,6 +8,7 @@
device: username: device: username:
{ pkgs, options, lib, config, ... }: { pkgs, options, lib, config, ... }:
{ {
networking.hostName = lib.mkDefault device; networking.hostName = lib.mkDefault device;
my.username = username; my.username = username;
@ -21,7 +22,12 @@ device: username:
/etc/nixos/hardware-configuration.nix /etc/nixos/hardware-configuration.nix
] else []); ] else []);
### NixOS # GARBAGE DAY!
nix.gc = {
automatic = true;
dates = "daily";
options = "--delete-older-than 3d";
};
nix.autoOptimiseStore = true; nix.autoOptimiseStore = true;
nix.nixPath = options.nix.nixPath.default ++ [ nix.nixPath = options.nix.nixPath.default ++ [
# So we can use absolute import paths # So we can use absolute import paths
@ -33,7 +39,7 @@ device: username:
nixpkgs.overlays = import ./packages; nixpkgs.overlays = import ./packages;
nixpkgs.config.allowUnfree = true; # forgive me Stallman senpai nixpkgs.config.allowUnfree = true; # forgive me Stallman senpai
# These are the things I want installed on all my systems # These are the things I want installed on all my systems.
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
# Just the bear necessities~ # Just the bear necessities~
coreutils coreutils
@ -52,8 +58,8 @@ device: username:
cachix # less time buildin' mo time nixin' cachix # less time buildin' mo time nixin'
]; ];
# Default settings for primary user account. `my` is defined in # Default settings for primary user account.
# modules/default.nix # `my` is defined in 'modules/default.nix'.
my.user = { my.user = {
isNormalUser = true; isNormalUser = true;
uid = 1000; uid = 1000;

15
hosts/zilch/README.adoc Normal file
View File

@ -0,0 +1,15 @@
= Zilch, the main workstation
This is Zilch, the main machine (and only desktop as of 2020-08-16).
As such, it contains muh games and other stuff I attempt to bring over to Linux such as my music production workflow (I'm also learning how to compose music __properly__) and computer-aided designing with computers.
Just to make this note seem more important, I'll just list the games I'm currently into:
- https://play0ad.com/[0 A.D.]
- https://wesnoth.org/[Battle for Wesnoth]
- http://www.bay12games.com/dwarves/[Dwarf Fortress]
- https://endless-sky.github.io/[Endless Sky]
- https://www.minetest.net/[Minetest]
- https://openmw.org/en/[OpenMW]
- https://veloren.net/[Veloren]

View File

@ -1,12 +1,12 @@
# My desktop search settings. # My desktop search settings.
# The main directories to create an index. # The main directories to create an index.
topdirs = ~/writings # My writings on stuff. topdirs = ~/writings
~/projects # My projects on stuff. ~/projects
~/library # Personal library which contains my references, documents, and movies. ~/library
~/Documents # The ol' hangout for gamesaves. ~/Documents
~/Videos # XDG Video directory. ~/Videos
~/Pictures # Muh screenshots. ~/Pictures
# A list of wildcards to be ignored during index scanning. # A list of wildcards to be ignored during index scanning.
skippedNames = #* CVS Cache cache* .cache caughtspam tmp \ skippedNames = #* CVS Cache cache* .cache caughtspam tmp \

View File

@ -71,8 +71,13 @@
base.enable = true; base.enable = true;
documentation = { documentation = {
enable = true; enable = true;
jupyter.enable = true;
latex.enable = true; latex.enable = true;
}; };
gamedev = {
godot.enable = true;
unity3d.enable = true;
};
java.enable = true; java.enable = true;
javascript = { javascript = {
deno.enable = true; deno.enable = true;
@ -98,7 +103,6 @@
shell = { shell = {
base.enable = true; base.enable = true;
git.enable = true;
lf.enable = true; lf.enable = true;
zsh.enable = true; zsh.enable = true;
}; };
@ -112,10 +116,16 @@
# defold # defold
nim # Jack the nimble, jack jumped over the nightstick, and got over not being the best pick. nim # Jack the nimble, jack jumped over the nightstick, and got over not being the best pick.
python # *insert Monty Python quote here* python # *insert Monty Python quote here*
];
my.packages = with pkgs; [
# Muh games. # Muh games.
zeroad unstable.dwarf-fortress # Losing is fun!
wesnoth unstable.endless-sky # Losing is meh!
unstable.minetest # Losing?! What's that?
unstable.openmw # Losing is even more meh1
unstable.wesnoth # Losing is frustrating!
unstable.zeroad # Losing is fun and frustrating!
]; ];
my.env = { my.env = {
@ -130,25 +140,27 @@
time.timeZone = "Asia/Manila"; time.timeZone = "Asia/Manila";
services.openssh.enable = true; services.openssh.enable = true;
services.lorri.enable = true; services.lorri.enable = true;
# Setup GnuPG.
programs.gnupg.agent = { programs.gnupg.agent = {
enable = true; enable = true;
enableSSHSupport = true; enableSSHSupport = true;
pinentryFlavor = "gnome3"; pinentryFlavor = "gnome3";
}; };
# Install a proprietary Nvidia graphics driver.
services.xserver.videoDrivers = [ "nvidiaLegacy390" ];
# Enable sound. # Enable sound.
sound.enable = true; sound.enable = true;
hardware.pulseaudio.enable = true; hardware.pulseaudio.enable = true;
# Additional host-specific program configurations.
my.home.programs = { my.home.programs = {
# My personal Git config. # My personal Git config.
git = { git = {
enable = true; enable = true;
# Enable the syntax highlighter with Delta.
# https://github.com/dandavison/delta
delta.enable = true;
# Enable Large File Storage. # Enable Large File Storage.
lfs.enable = true; lfs.enable = true;
@ -160,29 +172,13 @@
}; };
}; };
my.home.services = { # Moving all of the host-specific configurations into its appropriate place.
# Unison backup strat. my.home.xdg.dataFile =
unison = { let insertXDGDataFolder = name: {
enable = true; source = ./config + "/${name}";
recursive = true;
pairs.mainbackup = }; in {
let "recoll" = insertXDGDataFolder "recoll";
homeDirectory = "/home/${config.my.username}"; "unison" = insertXDGDataFolder "unison";
backupDrive = "/run/media/${config.my.username}/Seagate Backup Plus Drive";
in {
roots = [
homeDirectory
backupDrive
];
commandOptions = {
# Unison may delete the entire stuff so indicate that the other is a mount point.
mountpoint = backupDrive;
force = homeDirectory;
# My GnuPG keys.
path = ".gnupg .password-store";
};
};
};
}; };
} }

View File

@ -63,6 +63,7 @@ in {
config = { config = {
# Convenience aliases # Convenience aliases
home-manager.users.${config.my.username} = mkAliasDefinitions options.my.home; home-manager.users.${config.my.username} = mkAliasDefinitions options.my.home;
home-manager.useGlobalPkgs = true;
users.users.${config.my.username} = mkAliasDefinitions options.my.user; users.users.${config.my.username} = mkAliasDefinitions options.my.user;
my.user.packages = config.my.packages; my.user.packages = config.my.packages;
@ -80,14 +81,14 @@ in {
''; '';
my.home.xdg.configFile = { my.home.xdg.configFile = {
"zsh/extra.zshrc".text = "zsh/.zshrc".text =
let aliasLines = mapAttrsToList (key: value: "alias ${key}=\"${value}\"") config.my.alias; let aliasLines = mapAttrsToList (key: value: "alias ${key}=\"${value}\"") config.my.alias;
in '' in ''
# This file is autogenerated, do not edit it! # This file is autogenerated, do not edit it!
${concatStringsSep "\n" aliasLines} ${concatStringsSep "\n" aliasLines}
${config.my.zsh.rc} ${config.my.zsh.rc}
''; '';
"zsh/extra.zshenv".text = '' "zsh/.zshenv".text = ''
# This file is autogenerated, please do not edit it! # This file is autogenerated, please do not edit it!
${config.my.zsh.env} ${config.my.zsh.env}
''; '';

View File

@ -15,6 +15,8 @@ with lib;
hexchat # The ultimate IRC client for neckbeards. hexchat # The ultimate IRC client for neckbeards.
mpv # The ultimate media player for hipsters. mpv # The ultimate media player for hipsters.
newsboat # The ultimate RSS aggregator for some person. newsboat # The ultimate RSS aggregator for some person.
obs-studio # Open Broadcasting Studio Studio, the reliable recording workflow.
obs-linuxbrowser # OBS plugin for browser source.
openshot-qt # A decent video editor. openshot-qt # A decent video editor.
thunderbird # The ultimate email client for dumbasses like me. thunderbird # The ultimate email client for dumbasses like me.
zathura # The ultimate PDF viewer for run-of-the-mill ricing. zathura # The ultimate PDF viewer for run-of-the-mill ricing.

View File

@ -31,7 +31,7 @@ in {
fluidsynth # Synth for fluid sounds. fluidsynth # Synth for fluid sounds.
helm # A great synthesizer plugin. helm # A great synthesizer plugin.
hydrogen # Them drum beats composition will get good. hydrogen # Them drum beats composition will get good.
polyphone # Edit your fonts for sound. unstable.polyphone # Edit your fonts for sound.
zynaddsubfx # Ze most advanced synthesizer I've seen so far (aside from the upcoming Vital syntehsizer). zynaddsubfx # Ze most advanced synthesizer I've seen so far (aside from the upcoming Vital syntehsizer).
# As of 2020-07-03, lmms has some trouble regarding Qt or something so at least use the "unstable" channel just to be safe. # As of 2020-07-03, lmms has some trouble regarding Qt or something so at least use the "unstable" channel just to be safe.

View File

@ -14,8 +14,8 @@ with lib;
my.packages = with pkgs; [ my.packages = with pkgs; [
android-studio # The apartment for Android development. android-studio # The apartment for Android development.
dart # It's JavaScript except saner and slimmer. dart # It's JavaScript except saner and slimmer.
flutter # It's Electron except saner and slimmer. unstable.flutter # It's Electron except saner and slimmer.
kotlin # It's Java except saner and slimmer. unstable.kotlin # It's Java except saner and slimmer.
]; ];
# Enable Android Debug Bridge for some device debugging. # Enable Android Debug Bridge for some device debugging.

View File

@ -14,10 +14,16 @@ with lib;
my.packages = with pkgs; [ my.packages = with pkgs; [
caddy2 # THE ULTIMATE HTTPS/2 SERVER FOR 'YER GOLFIN' SESSIONS!!! caddy2 # THE ULTIMATE HTTPS/2 SERVER FOR 'YER GOLFIN' SESSIONS!!!
cookiecutter # A project scaffolding tool. cookiecutter # A project scaffolding tool.
direnv # Augment your shell with automatic environment variables loading and unloading.
gnumake # Make your life easier with GNU Make. gnumake # Make your life easier with GNU Make.
stow # Build your symlink farm.
tldr # What manuals should include. tldr # What manuals should include.
universal-ctags # Enable fast traveling to your code (assuming written in a supported language). universal-ctags # Enable fast traveling to your code (assuming written in a supported language).
]; ];
# Augment your shell with automatic environment variables loading and unloading.
my.home.programs = {
direnv.enable = true;
fish.enable = true;
};
}; };
} }

View File

@ -11,6 +11,7 @@
./javascript.nix ./javascript.nix
./lisp.nix ./lisp.nix
./math.nix ./math.nix
./perl.nix
./rust.nix ./rust.nix
]; ];
} }

View File

@ -21,7 +21,7 @@ in
config = { config = {
my.packages = with pkgs; my.packages = with pkgs;
(if cfg.deno.enable then [ (if cfg.deno.enable then [
deno # The Deltarune of Node. unstable.deno # The Deltarune of Node.
] else []) ++ ] else []) ++
(if cfg.node.enable then [ (if cfg.node.enable then [

View File

@ -15,7 +15,7 @@ with lib;
# Just make sure the unstable version of Emacs is available as a package by creating an overlay. # Just make sure the unstable version of Emacs is available as a package by creating an overlay.
pkg = mkOption { pkg = mkOption {
type = types.package; type = types.package;
default = pkgs.emacsUnstable; default = pkgs.emacs;
}; };
}; };

View File

@ -14,7 +14,7 @@ with lib;
my.packages = with pkgs; [ my.packages = with pkgs; [
aspell # Hunt down a spelling bee champion to come to your shell. aspell # Hunt down a spelling bee champion to come to your shell.
bat # cat(1) with wings. bat # cat(1) with wings.
buku # A developer-oriented browser-independent bookmark manager. # buku # A developer-oriented browser-independent bookmark manager.
exa # ls(1) after an exodus. exa # ls(1) after an exodus.
fd # find(1) after a cognitive behavioral therapy. fd # find(1) after a cognitive behavioral therapy.
fzf # A fuzzy finder that enables fuzzy finding not furry finding, a common misconception. fzf # A fuzzy finder that enables fuzzy finding not furry finding, a common misconception.

View File

@ -5,7 +5,6 @@ with lib;
{ {
imports = [ imports = [
./base.nix ./base.nix
./git.nix
./lf.nix ./lf.nix
./zsh.nix ./zsh.nix
]; ];

View File

@ -1,22 +0,0 @@
# modules/shell/git.nix
# Git is great, Git is good, and it is not made out of wood.
# A version control system with the description of the closet furry behind the Linux kernel as the name.
{ config, options, lib, pkgs, ... }:
with lib;
{
options.modules.shell.git = {
enable = mkOption {
type = types.bool;
default = false;
};
config = mkOption {
type = types.submodule;
};
};
config = mkIf config.modules.shell.git.enable {
modules.shell.git.config = mkAliasDefinitions options.programs.git;
};
}

View File

@ -17,9 +17,6 @@ with lib;
enableCompletion = true; enableCompletion = true;
autosuggestions.enable = true; autosuggestions.enable = true;
histFile = "\$XDG_DATA_HOME/zsh/history"; histFile = "\$XDG_DATA_HOME/zsh/history";
loginShellInit = "
export ZDOTDIR=\"\$XDG_CONFIG_HOME/zsh\"
";
# Adding basic version control support to the zsh prompt. # Adding basic version control support to the zsh prompt.
# https://git-scm.com/book/en/v2/Appendix-A%3A-Git-in-Other-Environments-Git-in-Zsh # https://git-scm.com/book/en/v2/Appendix-A%3A-Git-in-Other-Environments-Git-in-Zsh
@ -36,5 +33,11 @@ with lib;
syntaxHighlighting.enable = true; syntaxHighlighting.enable = true;
}; };
my.home.home.file = {
".zshenv".text = ''
export ZDOTDIR="$XDG_CONFIG_HOME/zsh"
'';
};
}; };
} }

View File

@ -1,7 +1,11 @@
[ [
(self: super: with super; { (self: super: with super; {
# defold = (callPackage ./defold.nix {}); # defold = (callPackage ./defold.nix {});
# Add packages from the unstable channel with `pkgs.unstable.$PKG`.
unstable = import <nixpkgs-unstable> { inherit config; };
}) })
(import (builtins.fetchTarball https://github.com/nix-community/emacs-overlay/archive/master.tar.gz)) # The unstable branch of Emacs.
# (import (builtins.fetchTarball https://github.com/nix-community/emacs-overlay/archive/master.tar.gz))
] ]