Restructured the project setup

I've also added a little module for version control systems now that I'm finding myself often packaging software.
This commit is contained in:
Gabriel Arazas 2020-09-06 04:50:16 +08:00
parent 4085fce69c
commit d01e597918
29 changed files with 103 additions and 69 deletions

View File

@ -41,3 +41,6 @@ upgrade: update switch
rollback:
@sudo nix-env --rollback
test:
@nixos-rebuild $(FLAGS) test

View File

@ -92,7 +92,7 @@ In this case, it is my https://github.com/foo-dogsquared/dotflies[dotfiles] dire
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.
See the <<Hosts>> section for more details.
* The `packages/` folder is my custom packages either the new ones that haven't made into nixpkgs yet or packages with overrides.
* Though my custom packages are now placed in my https://github.com/foo-dogsquared/nur-packages[NUR repo], the `packages/` folder still exists here intended for "private" packages.
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].
See the <<Packages>> section for more information.

View File

@ -98,6 +98,7 @@
racket.enable = true;
};
rust.enable = true;
vcs.enable = true;
};
editors = {
@ -155,10 +156,16 @@
maim
(tesseract.override { enableLanguages = [ "eng" ]; })
slop
virt-manager
xclip
xdg-user-dirs
xorg.xwininfo
zbar
# My custom packages.
# fds-nur.brl-cad
# fds-nur.hypermail
# fds-nur.wikiman
];
# Setting up the shell environment.
@ -168,7 +175,15 @@
READ = "zathura";
SUDO_ASKPASS = <config/bin/askpass>;
};
my.alias.dots = "USER=${config.my.username} make -C /etc/dotfiles";
# foo-dogsquared is my only alias.
my.alias = {
# Convenience alias for my NixOS config.
dots = "USER=${config.my.username} make -C /etc/dotfiles";
# Assume you've installed Doom Emacs.
org-capture = "$XDG_CONFIG_HOME/emacs/bin/org-capture";
};
# Set your time zone.
time.timeZone = "Asia/Manila";
@ -212,4 +227,6 @@
};
};
};
my.user.extraGroups = [ "docker" ];
}

View File

@ -15,6 +15,7 @@ with lib;
freecad # FREE AS A BIRD, FREE AS A ALL-YOU-CAN-EAT BUFFER!
kicad # The CAD for ki which is a form of energy found everywhere.
leocad # A CAD for leos, a well-known brand of toys.
openscad # A programmable CAD for programmers.
];
};
}

View File

@ -28,6 +28,11 @@ in {
udiskie # An automounter for external devices with authentication.
];
# Enable peer-to-peer synchro summoning service.
my.home.services = {
syncthing.enable = true;
};
# Clean 'yer home!
my.env = {
RECOLL_CONFDIR = "$XDG_DATA_HOME/recoll";

View File

@ -12,6 +12,7 @@ in {
type = types.bool;
default = bool;
}; in {
programmable.enable = mkBoolDefault false;
raster.enable = mkBoolDefault false;
vector.enable = mkBoolDefault false;
_3d.enable = mkBoolDefault false;
@ -22,8 +23,13 @@ in {
[
font-manager # Self-explanatory name is self-explanatory.
imagemagick # A command-line tool for manipulating images.
graphviz # The biz central for graphical flowcharts.
] ++
(if cfg.programmable.enable then [
processing # A visually-oriented language with an energertic train conductor as the mascot.
] else []) ++
(if cfg.raster.enable then [
gimp # Adobe Photoshop replacement.
krita # A good painting program useful for "pure" digital arts.

View File

@ -12,13 +12,15 @@ with lib;
config = mkIf config.modules.dev.android.enable {
my.packages = with pkgs; [
android-studio # The apartment for Android development.
dart # It's JavaScript except saner and slimmer.
unstable.android-studio # The apartment for Android development.
unstable.dart # It's JavaScript 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.
programs.adb.enable = true;
my.user.extraGroups = [ "adbusers" ];
};
}

View File

@ -13,6 +13,7 @@ with lib;
config = mkIf config.modules.dev.base.enable {
my.packages = with pkgs; [
caddy2 # THE ULTIMATE HTTPS/2 SERVER FOR 'YER GOLFIN' SESSIONS!!!
cmake # Yo, I heard you like Makefiles.
cookiecutter # A project scaffolding tool.
gnumake # Make your life easier with GNU Make.
hyperfine # You shouldn't be feel just fine with your programs...

View File

@ -13,5 +13,6 @@
./math.nix
./perl.nix
./rust.nix
./vcs.nix
];
}

View File

@ -33,10 +33,13 @@ in
hugo # An SSG for your DDD (documentation-driven development) workflow.
languagetool # A grammar checker with a HUGE data set.
pandoc # The Swiss army knife for document conversion.
R # Rated G for accessibility.
vale # The customizable linter for your intended writings.
# TODO: Make Neuron its own package.
(let neuronSrc = builtins.fetchTarball "https://github.com/srid/neuron/archive/master.tar.gz";
(let
neuronRev = "3c46adea8cfa2262ac2d50d3d9b1a96cb13a512d";
neuronSrc = builtins.fetchTarball "https://github.com/srid/neuron/archive/${neuronRev}.tar.gz";
in import neuronSrc {}) # Neurons and zettels are good for the brain.
] ++

View File

@ -13,6 +13,7 @@ in
type = types.bool;
default = bool;
}; in {
defold.enable = mkBoolOption false;
godot.enable = mkBoolOption false;
unity3d.enable = mkBoolOption false;
};
@ -23,6 +24,10 @@ in
godot # The Godot, not to be confused with a certain prosecutor.
] else []) ++
(if cfg.defold.enable then [
defold
] else []) ++
(if cfg.unity3d.enable then [
unstable.unity3d # The Unity, not to be confused with a certain ideal.
unstable.unityhub # The ideal hub for your Unity projects.

View File

@ -2,7 +2,15 @@
{ config, options, lib, pkgs, ... }:
with lib;
{
let
perlWithPackages = pkgs.perl.withPackages (p: with pkgs.perlPackages;
[
ModernBuild
ModuleInfo
ModuleInstall
ModernPerl
]);
in {
options.modules.dev.perl = {
enable = mkOption {
type = types.bool;
@ -11,12 +19,6 @@ with lib;
};
config = mkIf config.modules.dev.perl.enable {
my.packages = with pkgs; [
perl
perlPackages.ModernPerl
perlPackages.ModuleBuild
perlPackages.ModuleInfo
perlPackages.ModuleInstall
];
my.packages = perlWithPackages;
};
}

20
modules/dev/vcs.nix Normal file
View File

@ -0,0 +1,20 @@
# All of the version control systems are here!
{ config, options, lib, pkgs, ... }:
with lib;
{
options.modules.dev.vcs = {
enable = mkOption {
type = types.bool;
default = false;
};
};
config = mkIf config.modules.dev.vcs.enable {
my.packages = with pkgs; [
git
mercurial
subversion
];
};
}

View File

@ -32,8 +32,8 @@ with lib;
# Optional depedencies
fd # faster projectile
imagemagick # image-dired
# (lib.mkIf (config.programs.gnupg.agent.enable)
# pinentry_emacs) # gnupg-emacs
(lib.mkIf (config.programs.gnupg.agent.enable)
pinentry_emacs) # gnupg-emacs
zstd # for undo-fu-sessions
# Module dependencies

View File

@ -15,7 +15,7 @@ with lib;
aria2 # The sequel to aria(1).
aspell # Hunt down a spelling bee champion to come to your shell.
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.
fd # find(1) after a cognitive behavioral therapy.
fzf # A fuzzy finder that enables fuzzy finding not furry finding, a common misconception.
@ -23,6 +23,7 @@ with lib;
hledger # Do your accountancy thing ON THE COMMAND LINE, sure why not!
httpie # Want a piece of the HTTP pie.
gopass # The improved version of Password Store which is a password manager for hipsters.
graphviz # The biz central for graphical flowcharts.
maim # A command-line interface for parsing screenshots.
jq # A command-line interface for parsing JSON.
pup # A command-line interface for parsing HTML.

View File

@ -31,6 +31,21 @@ with lib;
RPROMPT=\"[%D %*]\"
";
interactiveShellInit = ''
# Use lf to switch directories and bind it to ctrl-o
lfcd () {
tmp="$(mktemp)"
lf -last-dir-path="$tmp" "$@"
if [ -f "$tmp" ]; then
dir="$(cat "$tmp")"
rm -f "$tmp" >/dev/null
[ -d "$dir" ] && [ "$dir" != "$(pwd)" ] && cd "$dir"
fi
}
bindkey -s '^o' 'lfcd\n'
'';
ohMyZsh.plugins = [ "history-substring-search" ];
syntaxHighlighting.enable = true;
};

View File

@ -1,6 +1,9 @@
[
(self: super: with super; {
# defold = (callPackage ./defold.nix {});
nur-foo-dogsquared = import (
fetchTarball "https://github.com/foo-dogsquared/nix-expressions/archive/master.tar.gz") { };
);
);
# Add packages from the unstable channel with `pkgs.unstable.$PKG`.
unstable = import <nixpkgs-unstable> { inherit config; };

View File

@ -1,51 +0,0 @@
# https://defold.com/open/
# It'sa game engine for cross-platform development.
{ stdenv, fetchFromGitHub,
autoconf,
automake,
cmake,
curl,
freeglut,
git,
jdk11,
libtool,
libuuid,
mesa_glu,
openalSoft,
python2,
rpm,
valgrind,
waf,
xorgproto,
libXi,
libXext,
}:
stdenv.mkDerivation rec {
pname = "defold";
version = "1.2.171";
src = fetchFromGitHub {
owner = "defold";
repo = "defold";
rev = "v1.2.171";
sha256 = "1anpwxgai1qk6c97zslfvj5b6s66fyk459cfnxnqm7d8sq9d0qg2";
};
buildPhase = ''
./scripts/build.py shell --platform=${stdenv.system}
./scripts/build.py install_ext --platform=${stdenv.system}
./scripts/build.py build_engine --platform=${stdenv.system}
'';
enableParallelBuilding = true;
doCheck = true;
meta = with stdenv.lib; {
description = "A free and open-source game engine for cross-platform development.";
homepage = "https://defold.com/";
license = licenses.free;
maintainers = [ maintainers.foo-dogsquared ];
platforms = [ "i686-linux" "x86_64-linux" ];
};
}