Update config

This commit is contained in:
Gabriel Arazas 2021-11-27 16:04:01 +08:00
parent f038f48464
commit a34674f672
10 changed files with 363 additions and 15 deletions

261
flake.lock generated
View File

@ -20,7 +20,167 @@
"type": "github" "type": "github"
} }
}, },
"blank": {
"locked": {
"lastModified": 1625557891,
"narHash": "sha256-O8/MWsPBGhhyPoPLHZAuoZiiHo9q6FLlEeIDEXuj6T4=",
"owner": "divnix",
"repo": "blank",
"rev": "5a5d2684073d9f563072ed07c871d577a6c614a8",
"type": "github"
},
"original": {
"owner": "divnix",
"repo": "blank",
"type": "github"
}
},
"deploy": {
"inputs": {
"flake-compat": "flake-compat",
"nixpkgs": [
"digga",
"latest"
],
"utils": [
"digga",
"flake-utils"
]
},
"locked": {
"lastModified": 1632822684,
"narHash": "sha256-lt7eayYmgsD5OQwpb1XYfHpxttn43bWo7G7hIJs+zJw=",
"owner": "serokell",
"repo": "deploy-rs",
"rev": "9a02de4373e0ec272d08a417b269a28ac8b961b4",
"type": "github"
},
"original": {
"owner": "serokell",
"repo": "deploy-rs",
"type": "github"
}
},
"devshell": {
"locked": {
"lastModified": 1632436039,
"narHash": "sha256-OtITeVWcKXn1SpVEnImpTGH91FycCskGBPqmlxiykv4=",
"owner": "numtide",
"repo": "devshell",
"rev": "7a7a7aa0adebe5488e5abaec688fd9ae0f8ea9c6",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "devshell",
"type": "github"
}
},
"digga": {
"inputs": {
"blank": "blank",
"deploy": "deploy",
"devshell": "devshell",
"flake-utils": "flake-utils",
"flake-utils-plus": "flake-utils-plus",
"home-manager": "home-manager",
"latest": "latest",
"nix": "nix",
"nixlib": [
"digga",
"nixpkgs"
],
"nixos-generators": "nixos-generators",
"nixpkgs": "nixpkgs"
},
"locked": {
"lastModified": 1634161492,
"narHash": "sha256-7OZz7DqAhO+3axY68xsMXAyD+b5gJgVXuKjslTSCM3Y=",
"owner": "divnix",
"repo": "digga",
"rev": "a55450a16d362b6e1c50bb4025aaa604b385d3ba",
"type": "github"
},
"original": {
"owner": "divnix",
"repo": "digga",
"type": "github"
}
},
"flake-compat": {
"flake": false,
"locked": {
"lastModified": 1627913399,
"narHash": "sha256-hY8g6H2KFL8ownSiFeMOjwPC8P0ueXpCVEbxgda3pko=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "12c64ca55c1014cdc1b16ed5a804aa8576601ff2",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"flake-utils": {
"locked": {
"lastModified": 1623875721,
"narHash": "sha256-A8BU7bjS5GirpAUv4QA+QnJ4CceLHkcXdRp4xITDB0s=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "f7e004a55b120c02ecb6219596820fcd32ca8772",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
}
},
"flake-utils-plus": {
"inputs": {
"flake-utils": [
"digga",
"flake-utils"
]
},
"locked": {
"lastModified": 1630859749,
"narHash": "sha256-qkoU2rIbbP2+T0dfcqXW35GCWNsi0Y1IgN9BELmt4Zo=",
"owner": "divnix",
"repo": "flake-utils-plus",
"rev": "a4e267e3fc87e60c5029c6c3855935ff1ff3018e",
"type": "github"
},
"original": {
"owner": "divnix",
"repo": "flake-utils-plus",
"type": "github"
}
},
"home-manager": { "home-manager": {
"inputs": {
"nixpkgs": [
"digga",
"nixlib"
]
},
"locked": {
"lastModified": 1629347633,
"narHash": "sha256-FGZJ7lmTAMIkjdrh6dIPck5HuB4KMT2GgDV5ZjiCWoc=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "bf6b85136b47ab1a76df4a90ea4850871147494a",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "home-manager",
"type": "github"
}
},
"home-manager_2": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
"nixpkgs" "nixpkgs"
@ -40,7 +200,103 @@
"type": "github" "type": "github"
} }
}, },
"latest": {
"locked": {
"lastModified": 1632660378,
"narHash": "sha256-sjA8eQlnyDjDLyAyq3XlJmN0nqW0ftl/pb7VnMg86L0=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "31ffc50c571e6683e9ecc9dbcbd4a8e9914b4497",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"lowdown-src": {
"flake": false,
"locked": {
"lastModified": 1617481909,
"narHash": "sha256-SqnfOFuLuVRRNeVJr1yeEPJue/qWoCp5N6o5Kr///p4=",
"owner": "kristapsdz",
"repo": "lowdown",
"rev": "148f9b2f586c41b7e36e73009db43ea68c7a1a4d",
"type": "github"
},
"original": {
"owner": "kristapsdz",
"ref": "VERSION_0_8_4",
"repo": "lowdown",
"type": "github"
}
},
"nix": {
"inputs": {
"lowdown-src": "lowdown-src",
"nixpkgs": [
"digga",
"nixpkgs"
]
},
"locked": {
"lastModified": 1630335771,
"narHash": "sha256-eljjEPJdLK3aDskF7qX4YM/6KCq+w9nr+IKhrKW/AIQ=",
"owner": "nixos",
"repo": "nix",
"rev": "50a35860ee9237d341948437c5f70a7f0987d393",
"type": "github"
},
"original": {
"owner": "nixos",
"repo": "nix",
"type": "github"
}
},
"nixos-generators": {
"inputs": {
"nixlib": [
"digga",
"nixlib"
],
"nixpkgs": [
"digga",
"blank"
]
},
"locked": {
"lastModified": 1624973746,
"narHash": "sha256-11JbJRduNwyf556gndGErR5/12ceyHOHBfEuha5Vws4=",
"owner": "nix-community",
"repo": "nixos-generators",
"rev": "022ef440af8dc237ab1f59fa363cb1e25783ec3e",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "nixos-generators",
"type": "github"
}
},
"nixpkgs": { "nixpkgs": {
"locked": {
"lastModified": 1628203131,
"narHash": "sha256-jQgXeJ9NQQS0Eobb/qQOvS+RRULkqRikAeXkkFKOPDA=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "178da37860823d35e801c7df2f73d7866d3d598a",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "release-21.05",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_2": {
"locked": { "locked": {
"lastModified": 1637593665, "lastModified": 1637593665,
"narHash": "sha256-R7jKS7A+0tZS8qD5pBr1UFcMiTdsw5bfoxgXbYsoWhM=", "narHash": "sha256-R7jKS7A+0tZS8qD5pBr1UFcMiTdsw5bfoxgXbYsoWhM=",
@ -59,8 +315,9 @@
"root": { "root": {
"inputs": { "inputs": {
"agenix": "agenix", "agenix": "agenix",
"home-manager": "home-manager", "digga": "digga",
"nixpkgs": "nixpkgs" "home-manager": "home-manager_2",
"nixpkgs": "nixpkgs_2"
} }
} }
}, },

View File

@ -8,11 +8,13 @@
agenix.url = "github:ryantm/agenix"; agenix.url = "github:ryantm/agenix";
agenix.inputs.nixpkgs.follows = "nixpkgs"; agenix.inputs.nixpkgs.follows = "nixpkgs";
digga.url = "github:divnix/digga";
}; };
outputs = inputs@{ self, nixpkgs, ... }: outputs = inputs@{ self, nixpkgs, ... }:
let let
lib = nixpkgs.lib.extend libExtended = nixpkgs.lib.extend
(final: prev: (import ./lib { inherit inputs; lib = final; })); (final: prev: (import ./lib { inherit inputs; lib = final; }));
hostDefaultConfig = { hostDefaultConfig = {
@ -36,16 +38,17 @@
''; '';
}; };
in { in {
inherit lib; # Exposes only my library with the custom functions to make it easier to include in other flakes.
lib = import ./lib { inherit inputs; lib = nixpkgs.lib; };
# A list of NixOS configurations from the `./hosts` folder. # A list of NixOS configurations from the `./hosts` folder.
# It also has some sensible default configurations. # It also has some sensible default configurations.
nixosConfigurations = nixosConfigurations =
lib.mapAttrs (host: path: lib.mkHost path hostDefaultConfig) (lib.filesToAttr ./hosts); libExtended.mapAttrs (host: path: libExtended.mkHost path hostDefaultConfig) (libExtended.filesToAttr ./hosts);
# We're going to make our custom modules available for our flake. Whether # We're going to make our custom modules available for our flake. Whether
# or not this is a good thing is debatable, I just want to test it. # or not this is a good thing is debatable, I just want to test it.
nixosModules = nixosModules =
lib.mapAttrs (_: path: import path) (lib.filesToAttr ./modules); libExtended.mapAttrs (_: path: import path) (libExtended.filesToAttr ./modules);
}; };
} }

View File

@ -26,12 +26,12 @@
neovim.enable = true; neovim.enable = true;
}; };
themes.a-happy-gnome.enable = true; themes.a-happy-gnome.enable = true;
users.users = [ "foo-dogsquared" ];
}; };
# Use the systemd-boot EFI boot loader. # Use the systemd-boot EFI boot loader.
boot.loader.systemd-boot.enable = true; boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true; boot.loader.efi.canTouchEfiVariables = true;
# Set your time zone. # Set your time zone.
time.timeZone = "Asia/Manila"; time.timeZone = "Asia/Manila";
@ -54,12 +54,6 @@
# Enable touchpad support (enabled default in most desktopManager). # Enable touchpad support (enabled default in most desktopManager).
hardware.opentabletdriver.enable = true; hardware.opentabletdriver.enable = true;
# Define a user account. Don't forget to set a password with passwd.
users.users.foo-dogsquared = {
isNormalUser = true;
extraGroups = [ "wheel" ]; # Enable sudo for the user.
};
# List packages installed in system profile. To search, run: # List packages installed in system profile. To search, run:
# $ nix search wget # $ nix search wget
environment.systemPackages = with pkgs; [ git wget brave lf fd ripgrep ]; environment.systemPackages = with pkgs; [ git wget brave lf fd ripgrep ];

View File

@ -8,6 +8,14 @@ in rec {
inside of a directory. While it can recurse into directories, it will inside of a directory. While it can recurse into directories, it will
stop once it detects `default.nix` inside. stop once it detects `default.nix` inside.
Signature:
path -> attrset
Where:
- `path` is the starting point.
Returns:
An attribute set. The keys are the basename of the file or the directory
and the values are the filepath to the Nix file.
!!! Implementation detail is based from !!! Implementation detail is based from
https://github.com/divnix/digga/blob/main/src/importers.nix looking at it https://github.com/divnix/digga/blob/main/src/importers.nix looking at it
multiple times for the purpose of familiarizing myself to coding in Nix multiple times for the purpose of familiarizing myself to coding in Nix
@ -42,6 +50,14 @@ in rec {
This is only suitable if you intend to use all of the modules in a given This is only suitable if you intend to use all of the modules in a given
directory. directory.
Signature:
path -> attrset
Where:
- `path` is the starting point of the scan.
Returns:
An attribute set. The keys are the basename for each Nix file/directory
and the values are the path to the file.
Examples: Examples:
filesToAttrRec ./modules filesToAttrRec ./modules
=> { agenix = /home/foo-dogsquared/nixos-config/modules/agenix.nix; archiving = /home/foo-dogsquared/nixos-config/modules/archiving.nix; desktop = /home/foo-dogsquared/nixos-config/modules/desktop.nix; dev = /home/foo-dogsquared/nixos-config/modules/dev.nix; editors = /home/foo-dogsquared/nixos-config/modules/editors.nix; themes = { a-happy-gnome = /home/foo-dogsquared/nixos-config/modules/themes/a-happy-gnome; default = /home/foo-dogsquared/nixos-config/modules/themes/default.nix; }; } => { agenix = /home/foo-dogsquared/nixos-config/modules/agenix.nix; archiving = /home/foo-dogsquared/nixos-config/modules/archiving.nix; desktop = /home/foo-dogsquared/nixos-config/modules/desktop.nix; dev = /home/foo-dogsquared/nixos-config/modules/dev.nix; editors = /home/foo-dogsquared/nixos-config/modules/editors.nix; themes = { a-happy-gnome = /home/foo-dogsquared/nixos-config/modules/themes/a-happy-gnome; default = /home/foo-dogsquared/nixos-config/modules/themes/default.nix; }; }
@ -64,6 +80,15 @@ in rec {
It will automate some of the things such as making the last component It will automate some of the things such as making the last component
of the path as the hostname. of the path as the hostname.
Signature:
path -> attrset -> NixOS configuration
Where:
- `path` is a path to a Nix file for the host; the basename of the file
is also used as the hostname
- `attrset` is the attribute set to be included in the host configuration
Returns:
An attribute set from the `lib.nixosSystem` from `nixpkgs` flake.
Example: Example:
mkHost ./hosts/june {} mkHost ./hosts/june {}
=> { ... } # NixOS configuration attrset => { ... } # NixOS configuration attrset

View File

@ -56,11 +56,35 @@ in {
fontconfig = { fontconfig = {
enable = true; enable = true;
includeUserConf = true; includeUserConf = true;
defaultFonts = {
monospace = [ "Iosevka" "Source Code Pro" ];
sansSerif = [ "Source Sans Pro" "Noto Sans" ];
serif = [ "Source Serif Pro" "Noto Serif" ];
};
}; };
fonts = with pkgs; fonts = with pkgs;
[ [
iosevka
# Noto font family
noto-fonts
noto-fonts-cjk
noto-fonts-extra
noto-fonts-emoji
# Adobe Source font family
source-code-pro
source-sans-pro
source-han-sans
source-serif-pro
source-han-serif
source-han-mono
# Math fonts
stix-two
xits-math
]; ];
}; };
}) })

View File

@ -20,6 +20,7 @@ in {
git git
ripgrep ripgrep
gnutls gnutls
emacs-all-the-icons-fonts
# Optional dependencies. # Optional dependencies.
fd fd

View File

@ -15,6 +15,9 @@ in
services.gnome.chrome-gnome-shell.enable = true; services.gnome.chrome-gnome-shell.enable = true;
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
# It is required for custom menus in extensions.
gnome-menus
gnomeExtensions.arcmenu gnomeExtensions.arcmenu
gnomeExtensions.x11-gestures gnomeExtensions.x11-gestures
gnomeExtensions.gsconnect gnomeExtensions.gsconnect

26
modules/users.nix Normal file
View File

@ -0,0 +1,26 @@
{ inputs, config, options, lib, ... }:
let
cfg = config.modules.users;
users = lib.attrNames (lib.filesToAttr ../users);
nonexistentUsers = lib.filter (name: !lib.elem name users) cfg.users;
in
{
options.modules.users = {
users = lib.mkOption {
default = [];
type = with lib.types; listOf str;
description = "A list of users from the `./users` directory to be included in the NixOS config.";
};
};
imports = [ inputs.home-manager.nixosModules.home-manager ];
config = lib.mkMerge [
({
assertions = [{
assertion = (builtins.length nonexistentUsers) > 1;
message = "${lib.concatStringsSep "," users} ${lib.concatStringsSep "," nonexistentUsers} is not found in the directory.";
}];
})
];
}

5
users/README.adoc Normal file
View File

@ -0,0 +1,5 @@
= Users
:toc:
This is where user-specific configurations comes in.
Ideally,

View File

@ -0,0 +1,10 @@
{
# Define a user account. Don't forget to set a password with passwd.
users.users.foo-dogsquared = {
isNormalUser = true;
extraGroups = [ "wheel" ]; # Enable sudo for the user.
};
home-manager.useUserPackages = true;
home-manager.useGlobalPkgs = true;
}